aboutsummaryrefslogtreecommitdiffstats
path: root/android
Commit message (Collapse)AuthorAgeFilesLines
* Use a per-process server address for the GLES serverJesse Hall2012-07-113-26/+16
| | | | | | | | | | | | | | | Previously we used a hardcoded address (tcp port, unix pipe path, etc.) for the OpenGLRender system. Multiple emulators would all try to listen on the same address, with the system non-deterministically (?) choosing which one accepted each new connection. This resulted in frames going to the wrong emulator window, one emulator shutting down another's OpenGL system, etc. Now the OpenGLRender server requests an unused tcp port or derives a path from the pid, and reports the address back to the emulator client to use for future connections from the guest. Change-Id: I139d32615200b36b87f2d2ede4abb4060ec02776
* [MIPS] Fix startup segfault in emulator64-mipsDuane Sand2012-06-211-2/+0
| | | | | | | | | Avoid truncation of 64-bit host addresses for 32-bit Mips physaddrs. Revert workaround I17fe688d19e3cd7f328721e6363bacd6e6689ca; allow emulator to again default to emulator64-mips. Change-Id: I0c83d8bf60fc52a758b84d8131b2bad53375aa61 Signed-off-by: Duane Sand <duanes@mips.com>
* [MIPS] Add Goldfish target supportBhanu Chetlapalli2012-06-073-0/+10
| | | | | | | | | | | | | | | | | | | | | | Basic Goldfish support for MIPS. Also, Fix host CPU consumption when guest is idle When the CPU is in wait state, do not wake-up if an interrupt can't be taken. This avoid host CPU running at 100% if a device (e.g. timer) has an interrupt line left enabled. Also factorize code to check if interrupts are enabled in cpu_mips_hw_interrupts_pending(). CPU consumption based on a patch from Edgar E. Iglesias <edgar.iglesias@gmail.com> Change-Id: Ie8371c8d0c9af1e0c8ba4cac419979350de0f5d9 Signed-off-by: yajin <yajin@mips.com.cm> Signed-off-by: Douglas Leung <douglas@mips.com> Signed-off-by: Bhanu Chetlapalli <bhanu@mips.com> Signed-off-by: Chris Dearman <chris@mips.com>
* Merge "Mark gles pipe connected after callback invoked"Andrew Hsieh2012-06-061-2/+16
|\
| * Mark gles pipe connected after callback invokedJiang, Yunhong2012-06-011-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the net pipe is mark connected right after initialization through asyncConnector_run invokation. However, asyncConnector_run is intended only invoked when callback through select. In some extrem situation, this will cause the qemu pipe driver begin send buffer before the connection is setup. Change this to be asyncConnector_run usage correct, and sendBuffer will check the connection status. Change-Id: Ib10e72e56e1ed5017fc3654b0fce8cacf484c8f8 Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
* | Track started and initialized states separatelyJesse Hall2012-06-051-4/+21
|/ | | | | | | | | | | Several OpenGL ES renderer functions are called blindly by the emulator and are supposed to do nothing if the renderer isn't running. They were checking whether the libraries were loaded instead of whether the renderer was started. This causes problems when the renderer is started and then stopped (for stats collection) since the libraries aren't unloaded. Change-Id: Ia6c0d2e5b618ff982b55caf35c38bda9aad30ee1
* Improve FB update protocol.Vladimir Chtchetkine2012-05-153-11/+48
| | | | | | | | | As it turned out, emulator has been sending Fb updates faster than MT handler on the device could process them. This lead to significant screen lag between the emulator and the device. With this CL emulator will not send FB updates to the device until the device has fully proccesed the previous FB update. Change-Id: I9a39e9f358f87d5bd6baaa2617a79e7de59ae99e
* Refresh stale SdkController screen.Vladimir Chtchetkine2012-05-153-1/+24
| | | | | | | | | When MT handler gets deactivated, and then activated again, it shows a stale emulator display, since it didn't have a chance to catch up with emulator display updates. This CL ensures that entire emulator display is pushed to the device when MT handler gets activated. Change-Id: I58c1680f50e2af3e6afa0518f6bcaa3ed087638d
* Catch up with OpenGLES API changes.Vladimir Chtchetkine2012-05-111-0/+13
| | | | | | | | | It turned out, that OpenGLES framebuffer update callback is expensive, and since it's used rather rarely (since multi-touch emulation is usually off), it's a waste to have that callback always active. So OpenGLES has now an ability to enable / disable framebuffer update callback, and emulator needs to catch up with that change. Change-Id: Iee028ed79f1d9472c3f31bbfbcb5676c4716c34c
* Fix --no-gles config, and ease the pain of standalone emulator buildVladimir Chtchetkine2012-05-111-0/+5
| | | | | | | | | | 1. Apparently, emulator build fails when configured with --no-gles option due to missing android_setPostCallback implementation. 2. It's painful to configure standalone emulator build WITH OpenGLES, since it requires explicit using of --gles-include, and --gles-lib when launching android-configure.sh To ease that pain, just use default location for standalone emulator build. Change-Id: I2d9ed56d68a4ab1cb1ec294817f22dca80d33223
* Fix emulator's UI buildVladimir Chtchetkine2012-05-111-1/+1
| | | | | | | When building emulator-ui, build fails complaining that android_startOpenglesRenderer implementation doesn't match routine declaration. Fixing that. Change-Id: I5f3f588969c1b4c9a59035f8abddb63cc6c917ad
* Remove init-time GLES per-frame callbackJesse Hall2012-05-102-8/+17
| | | | | | | | | | The GLES renderer interface now allows the per-frame callback to be registered after initialization. This change updates the emulator to use the new interface. Since reading back completed frames is slow (due to pipeline flush/stall), a future change will enable the callback only while multitouch emulation is actually in use. Change-Id: I7ad23b4bebe1bd3077863da4d50333cc0578519e
* Fixed standalone emulator when ANDROID_BUILD_TOP is presentAndrew Hsieh2012-05-081-7/+5
| | | | | | | | | With ANDROID_BUILD_TOP android-configure.sh searches for prebuilt directories later used for locating ccache. At this moment, ccache is located in different location between AOSP and internal tree. Beside, "prebuilt" is gone in internal tree. Change-Id: Ib14b8c91c9f8026605617f2abf94c3bee9ddadb6
* am 9d26d64c: Merge "Emulator64-mips segfaults, disable it for now."Andrew Hsieh2012-05-061-0/+2
|\ | | | | | | | | * commit '9d26d64c356817e2f320e8aee958012ee6c5bed5': Emulator64-mips segfaults, disable it for now.
| * Emulator64-mips segfaults, disable it for now.Duane Sand2012-05-041-0/+2
| | | | | | | | | | | | Signed-off-by: Duane Sand <duanes@mips.com> Change-Id: I17fe688d19e3cd7f328721e6363bacd6e6689ca2
* | Fixed link-error for standalone emulator when CONFIG_ANDROID_OPENGLES == 0Andrew Hsieh2012-05-041-0/+10
|/ | | | | | | | Added a fake android_getOpenglesHardwareStrings (called in vl-android.c) when CONFIG_ANDROID_OPENGLES is not set or zero. This happens when ./android-configure.sh can't locate GLES include and libs. Change-Id: I1f99644adcc78b9872d7e9c6e1e7bd7b2a654119
* Merge "Provide GL strings from renderer to ddms ping"Jesse Hall2012-05-034-7/+102
|\
| * Provide GL strings from renderer to ddms pingJesse Hall2012-05-014-7/+102
| | | | | | | | Change-Id: I59c9e58c568a70855783e57514fec80b711d6a64
* | Fixed compilation error with new x86_64-w64-mingw32 compilerAndrew Hsieh2012-05-023-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed the following for the new compiler 1. android/camera/camera-capture-windows.c: Added "#include <windows.h>" 2. SetClassLong() is deprecated. GCL_HICON doesn't exist in _WIN64. Replacted it with SetClassLongPtr(h, GCLP_HICON, icon) 3. [v]asprintf now actually exisit in libray. Changed the prototype to match the standard ones but will remove them later for GCC 4.5 and up. 4. Renamed _set_errno to set_errno because it exists in stdlib.h. Renamed _fix_errno to fix_errno for consistency. 5. EAI_NODATA and EAI_NONAME become the same things. 6. ddk/*h don't exisit. tap-win32.c actually only needs winioctl.h which provide constants. I have make sure they got the same constants in both old and new mingw compilers 7. #undef DELETE before redefining it for KEY_CODE in hw-events.h because DELETE is defined to be a constant in standard header. The above don't break the old one (ie. /usr/bin/i586-mingw32msvc-*) Change-Id: Ic7d13fd0fd237d433f923ee01c6ce50f5c02f095
* | Fixed emulator fails to load lib*GL when launched from its own directoryAndrew Hsieh2012-05-021-1/+5
|/ | | | | | | | | When emulator is lunched from its own directory (ie. cd out/*/bin; ./emulator), emulator fails to locate shared libraries lib*GL at out/*/lib because utility function path_parent(".", 1) incorrectly returns NULL instead of "..". Fixed that case. Change-Id: I86f8e5d655107ae8cd2237d59518180ce6e69c53
* Merge "Fix adb client protocol"Vladimir Chtchetkine2012-04-301-9/+35
|\
| * Fix adb client protocolVladimir Chtchetkine2012-04-301-9/+35
| | | | | | | | | | | | | | | | | | | | There are cases when 'accept' message that guest adbd sends via qemu pipe to the emulator get broken into pieces: once 4 bytes are delivered, and then the remaining two. This breaks the protocol, as emulator assumes that all 6 bytes would be delivered in one chunk. This CL adjusts that by accumulating messages in a buffer, and analyzing them only when collected message length reaches certain point. Change-Id: Ice25625f65bbaa2b07677c3285bf75e7bf46fbb7
* | Fix Windows buildVladimir Chtchetkine2012-04-302-2/+6
|/ | | | Change-Id: I732fa0d756656ad9976eddd06b16644e208aa512
* Use new SdkController communication protocol for emulation portsVladimir Chtchetkine2012-04-3015-2754/+1626
| | | | | | | | | | | | | | android/sdk-control-socket.* has replaced android/android-device.* as the back-bone of communicating with SDK controller on the device. The major differences are: - New communication protocol uses just one (async) socket connection to communicate with the device (the old one used two sockets: one sync, and another - async). - New communication protocol connects to one TCP port (1970 in this CL) for all emulation ports. Channel multiplexing is done by using port names, and assigning a separate socket for communication inside each separate port. The old protocol had separate TCP ports for each emulation ports (1968 for sensors, and 1969 for multi-touch) Change-Id: I779fcbdfba2f9b4c433a9d76a567975708b00469
* Add an option to set custom size for cache partitionVladimir Chtchetkine2012-04-303-0/+22
| | | | Change-Id: I1be43697ee04f46c5839c4d23e461d54eefc450f
* Fix standalone emulator build.Jesse Hall2012-04-264-5/+47
| | | | | | | | | | - Allow building with OpenGL ES acceleration disabled, avoiding a dependency on stuff outside the QEMU project. - Allow the standalone configure.sh to provide the include/lib path for the OpenGL ES libraries. - Update the default OpenGL ES include path for standalone builds. Change-Id: I03f4627af4c271783b65a116ceb5934385c68cdc
* Rename a declaration to fix Mac SDK buildJesse Hall2012-04-252-4/+4
| | | | | | | | GCC on OS X is flagging a duplicate declaration error even though GCC on Linux isn't even warning about it. Not sure why. The declaration is duplicated, but identical. Renaming one of the two. Change-Id: I946b5f3a4e410b66e9ab2ae3160ff1bec4e0ddd7
* Merge "Publish and use libOpenglRender interface header"Jesse Hall2012-04-251-31/+25
|\
| * Publish and use libOpenglRender interface headerJesse Hall2012-04-181-31/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The emulator opengles.c file duplicated the function declarations from libOpenglRenderer's render_api.h instead of including it directly. This led to multiple bugs since the declarations didn't actually match, but there was no way for the compiler or dynamic loader to check this. This change makes opengles.c include render_api.h to get function pointer prototypes, and changes the prototypes/implementation as necessary to make both sides actually match. It should be much more difficult to introduce interface mismatch bugs now. Two bugs this change would have prevented: (a) The interface mismatch caused by inconsistent branching which led to GPU acceleration crashing on Windows. With this change, we would have caught the problem at compile time. (b) The emulator verbose log has always been printing "Can't start OpenGLES renderer?" even when the renderer started fine. This is because the renderer was returning a bool (true == success) but the emulator's declaration said it returned int, and the emulator assumed 0 meant success. This difference in return type should now be caught at compile time. Change-Id: I5b3c70c9a40854332d67e37333acd6edb6ad01f6
* | am c135d75d: Merge "Reword -help-gpu text for clarity and accuracy"Jesse Hall2012-04-241-8/+10
|\ \ | | | | | | | | | | | | * commit 'c135d75d5ae774d7349f1cf346eee03072047179': Reword -help-gpu text for clarity and accuracy
| * | Reword -help-gpu text for clarity and accuracyJesse Hall2012-04-181-8/+10
| |/ | | | | | | Change-Id: If950c52919039e85874fefe3415e59aa8ec02c96
* | Merge "Fix skin issue when launching emulator from tree."Xavier Ducrohet2012-04-193-2/+21
|\ \
| * | Fix skin issue when launching emulator from tree.Xavier Ducrohet2012-04-193-2/+21
| |/ | | | | | | | | | | | | | | | | | | | | When launching the emulator with just -skin from the dev tree the fake AVD was not using the hardware.ini config from the skin due to creating it before resolving skinDir and skinName from the command line options. This change updates the AVD after doing so. Change-Id: Ia0912d72775e26f080f763b29629a3691c253c43
* | Increate default partition size to 200MBVladimir Chtchetkine2012-04-191-1/+1
|/ | | | Change-Id: I2996197e7ec4c36c7e46b35edab5b10d7f103c10
* Fixes debug output using an unitialized string buffer.Vladimir Chtchetkine2012-04-121-1/+1
| | | | Change-Id: I1fee7e9f70600da4540744aa11f927bfc9c759e1
* Enable multi-touch emulation with -gpu onVladimir Chtchetkine2012-04-116-34/+131
| | | | | | | | | | | | | | | | This CL implements a callback that gets invoked by OpenGLES emulator on it framebuffer updates. This allows transferring framebuffer changes to the supporting device. Proper implementation of this new callback also required changes to JPEG compression, addressing: 1. OpenGLES framebuffer format is RGBA8889, which required implementing line conversion for this format. 2. OpenGLES framebuffer is (or at least could be) bottom-up arranged. This requires changes to the compressor, so it compresses the FB starting from the bottom, so the resulting image is up-bottom. Change-Id: Icd4efbe4a251c838adfa3518decbfc43a7ef06c8
* Implements SDKCtlSocket that implements communication protocol wih SdkControllerVladimir Chtchetkine2012-04-069-63/+2354
| | | | | | | In addition, this CL contains some minor tweaks to async-socket, and async-socket-connector that improve tracebility. Change-Id: Ib1309b19dcd02e96379155fea7015019d93160e7
* Make all async I/O object referenced.Vladimir Chtchetkine2012-04-036-79/+316
| | | | | | | | | Since it's hard to control lifespan of an object in asynchronous environment, we should make all AsyncXxx objects a referenced objecst, that will self-destruct when its reference count drops to zero, indicating that the last client that used the object has abandoned it. Change-Id: I6f8194aa14e52a23a8772d827583782989654504
* Refactor asynchronous socket APIsVladimir Chtchetkine2012-04-025-437/+527
| | | | | | | | | | | | | | | The initial implementation was a bit too complex in two ways: 1. Each component (the connector, and async socket) had its own set of state and action enums, which was confusing, required value translation, and was not really needed. So, all these enums have been combined into two common enums that are now declared in android/async-io-common.h 2. Too many callbacks, which really complicated implementation of the clients. It is much more efficient to have just two callbacks (one to monitor connection, and another to monitor I/O), letting the client to dispatch on particular event (success/timeout/etc.) This CL fixes these two issues. Change-Id: I545c93dee2e9e9c72c1d25e6cd218c8680933ee3
* Implements asynchronous socket APIVladimir Chtchetkine2012-03-293-0/+1283
| | | | | | | | | | | This is pretty basic API that allows to asynchronously connect to a socket, and perform asynchronous read from / write to the connected socket. Since all the operations (including connection) are asynchronous, all the operation results are reported back to the client of this API via set of callbacks that client supplied to this API. Change-Id: I2a18f5b9c575ab7825c9e5a086f4cd9fb6b130ec
* Fixes bug in qlooptimer_startAbsolute for qemu-looperVladimir Chtchetkine2012-03-281-1/+1
| | | | | | | When setting absolute time, the routine wrongly assumed that qemu_mod_timer takes time in nanosec, while in reality, qemu_mod_timer takes time in millisec. Change-Id: Ife707bb5d236457f65e7dc6ccfb3235e0b93f058
* Merge "Implements an asynchronous socket connector with retries"Vladimir Chtchetkine2012-03-283-0/+481
|\
| * Implements an asynchronous socket connector with retriesVladimir Chtchetkine2012-03-273-0/+481
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The typical usage of the API is as such: 1. The client creates an async connector instance by calling async_socket_connector_new routine, supplying there address of the socket to connect, and a callback to invoke on connection events. 2. The client then proceeds with calling async_socket_connector_connect that would initiate connection attempts. The main job on the client side falls on the client's callback routine that serves the connection events. Once connection has been initiated, the connector will invoke that callback to report current connection status. In general, there are three connection events passed to the callback: 1. Success. 2. Failure. 3. Retry. Typically, when client's callback is called for successful connection, the client will pull connected socket's FD from the connector, and then this FD will be used by the client for I/O on the connected socket. If socket's FD is pulled by the client, it must return ASC_CB_KEEP from the callback. When client's callback is invoked with an error (ASC_CONNECTION_FAILED event), the client has an opportunity to review the error (available in 'errno'), and either abort the connection by returning ASC_CB_ABORT, or schedule a retry by returning ASC_CB_RETRY from the callback. If client returns ASC_CB_ABORT from the callback, the connector will stop connection attempts, and will self-destruct. If ASC_CB_RETRY is returned from the callback, the connector will retry connection attempt after timeout that was set by the caller in the call to async_socket_connector_new routine. When client's callback is invoked with ASC_CONNECTION_RETRY, the client has an opportunity to cancel further connection attempts by returning ASC_CB_ABORT, or it can allow another connection attempt by returning ASC_CB_RETRY. The client has no control over the lifespan of initialized connector instance. It always self-destructs after client's cllback returns with a status other than ASC_CB_RETRY. Change-Id: I39b0057013e45ee10d1ef98905b8a5210656a26c
* | Merge "EmuGL: Add OnPost callback to OpenGL renderer"Jesse Hall2012-03-262-5/+11
|\ \ | |/ |/|
| * EmuGL: Add OnPost callback to OpenGL rendererJesse Hall2012-03-222-5/+11
| | | | | | | | | | | | | | | | | | | | Match the interface changes in the OpenGL renderer that add a per-frame callback. The callback isn't used in this change. This change is co-dependent on Idae3b026d52ed8dd666cbcdc3f3af80175c90ad3 in development/. Change-Id: Idae3b026d52ed8dd666cbcdc3f3af80175c90ad3
* | Merge "New option '-force-32bit' to always use 32-bit emulator on 64-bit ↵Andrew Hsieh2012-03-223-15/+33
|\ \ | | | | | | | | | platforms"
| * | New option '-force-32bit' to always use 32-bit emulator on 64-bit platformsAndrew Hsieh2012-03-223-15/+33
| | | | | | | | | | | | | | | | | | Useful for both QA and trouble-shooting Change-Id: I09eac8b94e29e8a201188bf17d3511c15cfee4b4
* | | Merge "Revert "EmuGL: Add OnPost callback to OpenGL renderer""Jesse Hall2012-03-222-11/+5
|\ \ \
| * | | Revert "EmuGL: Add OnPost callback to OpenGL renderer"Jesse Hall2012-03-222-11/+5
| | | | | | | | | | | | This reverts commit 2f4361f1d63751f1f72e1a1f953acfb9c05727da
* | | | Merge "EmuGL: Add OnPost callback to OpenGL renderer"Jesse Hall2012-03-222-5/+11
|\ \ \ \ | |/ / / | | | / | |_|/ |/| |