| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
|/
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
When building emulator-ui, build fails complaining that android_startOpenglesRenderer
implementation doesn't match routine declaration. Fixing that.
Change-Id: I5f3f588969c1b4c9a59035f8abddb63cc6c917ad
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|\
| |
| |
| |
| | |
* commit '9d26d64c356817e2f320e8aee958012ee6c5bed5':
Emulator64-mips segfaults, disable it for now.
|
| |
| |
| |
| |
| |
| | |
Signed-off-by: Duane Sand <duanes@mips.com>
Change-Id: I17fe688d19e3cd7f328721e6363bacd6e6689ca2
|
|/
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| | |
Change-Id: I59c9e58c568a70855783e57514fec80b711d6a64
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
| |
Change-Id: I732fa0d756656ad9976eddd06b16644e208aa512
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: I1be43697ee04f46c5839c4d23e461d54eefc450f
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \
| | |
| | |
| | |
| | | |
* commit 'c135d75d5ae774d7349f1cf346eee03072047179':
Reword -help-gpu text for clarity and accuracy
|
| |/
| |
| |
| | |
Change-Id: If950c52919039e85874fefe3415e59aa8ec02c96
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
| |
Change-Id: I2996197e7ec4c36c7e46b35edab5b10d7f103c10
|
|
|
|
| |
Change-Id: I1fee7e9f70600da4540744aa11f927bfc9c759e1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
In addition, this CL contains some minor tweaks to async-socket, and
async-socket-connector that improve tracebility.
Change-Id: Ib1309b19dcd02e96379155fea7015019d93160e7
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \
| | |
| | |
| | | |
platforms"
|
| | |
| | |
| | |
| | |
| | |
| | | |
Useful for both QA and trouble-shooting
Change-Id: I09eac8b94e29e8a201188bf17d3511c15cfee4b4
|
|\ \ \ |
|
| | | |
| | | |
| | | | |
This reverts commit 2f4361f1d63751f1f72e1a1f953acfb9c05727da
|
|\ \ \ \
| |/ / /
| | | /
| |_|/
|/| | |
|