| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Test: Visual inspection
There's no reason that emugen wouldn't compile on the mac, and
turning it off here breaks things.
Change-Id: Icaa6e06a8e69d89a7739b4702a62906767c03d58
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
BUG: 117561734
Test: Local build gets further
Change-Id: I96a0d285b98f97bed38a8f18657b9f12f21e6b47
(cherry picked from commit b647927ff80c6f4f44d07c978d16936f33ff2e61)
|
|\ \ \
| |/ /
|/| |
| | |
| | |
| | | |
BUG: 117514054
Test: TH
Change-Id: I0d6cad419788371ee23c2260d0ddb9b72998812c
|
| |\ \
| | | |
| | | |
| | | | |
Change-Id: Ica0e0b87821f72dac4c14df4cbf61f707b5b4395
|
| |/| |
| | |/
| | |
| | |
| | |
| | | |
am: 246ae79db4
Change-Id: I140001850c11b113306c3394089673096539e83f
|
| |/
| |
| |
| |
| | |
BUG: 117561734
Change-Id: I2a5fb555be55e728fcb24a43244c781179a6b2f4
|
| |
| |
| |
| |
| |
| | |
BUG: 77276633
Change-Id: Ie6b4ddc5010e35bd7940a5c82e84480460ef542a
Test: builds
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Initial implementation of libvirglrenderer for the cuttlefish AVD.
This replaces the host renderer part of the Virgil3D project. Control
messages are replaced with the goldfish-opengl protocol. QEMU needs to
be built with support for libvirglrenderer, then this library can either
replace the system copy of libvirglrenderer, or be LD_PRELOADed.
Code from the goldfish emulator has been extensively reused. The
protocol decoders are identical to those used by the external/qemu
emu-master-dev project. Additionally, the OpenGLESDispatch library
was taken and repurposed to allow an alternative EGL/GLES implementation
to be loaded and utilized by AVDVirglRenderer.
- OpenGL ES 1.1 and OpenGL ES 3.1 are supported.
- OpenGL ES 3.2 support is not planned.
- Vulkan support is not planned.
Bug: 77276633
Change-Id: I981102308113577bccb514d1d7c515a999e6b059
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change also adds a fork of the emugen host tool from external/qemu
799a545 to enable the generation of wrapper code using the emulator
library templates.
To regenerate the wrappers, use the following commands:
$ emugen_cuttlefish -W eglwrapper -i eglwrapper egl
$ emugen_cuttlefish -W eglwrapper -i eglwrapper gles1
$ emugen_cuttlefish -W eglwrapper -i eglwrapper gles3
Bug: 76027192
Bug: 74573450
Bug: 74572414
Bug: 74571771
Bug: 73780279
Test: this change is completely untested
Change-Id: Ib5e26ff824fd073a670971174014ea4c1b86c9f6
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- We passed in the wrong type of parameters to enable asan.
Note: Asan cannot work on gcc4.8-mingw.
Bug: b/80526239
Test: Launch emulator on mac:
==95822==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00010a24ea60 at pc 0x00010c7a7844 bp 0x70000eb11c70 sp 0x70000eb11420
Change-Id: I9ce056733ca93d88440c3c51ed1becc0c34d3dd4
|
| |
| |
| |
| |
| |
| |
| | |
It seems somehow we forget to export it even we've already implemented it.
BUG: 70179880
Change-Id: Ib06ab832ed957a1c176cc37ee5f32ced37b6db6c
|
| |
| |
| |
| |
| |
| |
| |
| | |
We disabled the Windows 32 bit build during the introduction of clang, we now
turn it back on again
Bug: b/73238968
Change-Id: I3ba976b9b7c40bfdd67cbc7a75161aad3a434b88
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- We now use the sanitizer shipped with clang.
- Note: Running with the sanitizer enabled might not always work or
behave as expected. This change merely enables the sanitizer,
it doesn't fix any failures.
Change-Id: Ib58171129ab96c3073402ae22e6af1074ab7bb98
Test: ASAN_SYMBOLIZER_PATH=$PWD/../../prebuilts/clang/host/linux-x86/clang-4053586/bin/llvm-symbolizer ./objs/android_emu64_unittests
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- We no longer include libc++.so on windows
- Fix missing dlls due to toolchain changes.
Bug: b/73547546
Test: Launched emulator on windows
Change-Id: I19dd13b40b1655eac71fb8c9a903d0e836d45ecd
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- We now use libc++ with clang vs. libstdc++ with gcc4.8
- Fixes compiler issues
- Fixes build scripts to use libc.so, set rpath in executables
- Removes libstdc++.so copying
- Deprecrates -use-system-libs
- Fix reporting bug in rebuild.sh
- Run tests on newer versions of wine.
- Remove 32 bit support on windows, cross compilers currently expect
same bitness on host as as target. Clang only produces 64 bit,
breaking the 32 bit build.
Test: Unit tests green, can launch
Test: Runs on Xenial
Bug: b/37075150
Change-Id: Id37a98c36d7e9c0d26d737286e3a2f9e46269cf6
|
| |
| |
| |
| |
| |
| |
| |
| | |
Separate gl vs egl sync namespaces.
bug: 71354060
Change-Id: I50f3c66b6945ffb76da5531cf99496ec63e531a5
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Test: No out of order frames on Antutu
Thought I could get rid of all the glClientWaitSyncs,
but we still need the SyncThread one.
Change-Id: I639b98ddba15618139574895282e70c49c1e280f
|
| |
| |
| |
| |
| |
| |
| | |
- Most eglMakeCurrent calls per frame removed (rest are from the guest OS)
- Client wait sync still necessary (actually even extra ones needed)
Change-Id: I717c924a6efa127c4cff88c3552f1463e2622f7c
|
| |
| |
| |
| |
| |
| |
| | |
We would need to pass buffer size when calling glVertexPointer with a
client data buffer.
Change-Id: I719521b8186fc33467cb55efae963ef686c4c24a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
bug: 68335353
Even if the underlying GPU supports core profile, the
EXT function pointers for FBOs may be missing / incompatible,
or the suffix-less ARB function pointers are missing.
+ Add a fallback to the ARB suffixed functions (for older GPUs),
and log failures to find GL functions.
Change-Id: Iba76262b7da14a84766ed89eb739a90e022f4a45
|
| |
| |
| |
| | |
Change-Id: I4125d83a2753d227ed71b3975202faff8185fff2
|
| |
| |
| |
| |
| |
| |
| |
| | |
glRenderbufferStorageMultisample is used by both GLES1 and GLES2. Move
it from gles3_only.entries to gles_common.entries.
BUG: 64951203
Change-Id: Ifa422eb4336ba1733a697351710ac147e196d254
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
bug: 64131077
- Use context creation trials to determine max GLES version
- Use feature control for compatibility and to prevent making
guests that don't support ES3 run ES3.
- Edit the version string to match, too.
- remove dlsym based dispatch
- filter extensions based on known working set of ES2 extensions if
in ES2 mode
Change-Id: I02c36cb9bcddb0ebba82c98a5ab631bbfe15162e
|
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of duplicating the functionality of it.
+fix build break on Mac due to non-void function with blank return
Change-Id: If3159c23a4957f7cd3418ad1f435d06b7d019bdb
|
| |
| |
| |
| |
| |
| | |
bug: 63908229
Change-Id: I69b832198ae6dd5d58cee842bafa6e3dc5a74fa1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch modifies our GLES2 translator to allow it to mount on top of
ANGLE. Because ANGLE is a GLES2 backend while previously our translator
assumes desktop GL backend, some modifications are required.
The main changes in this patch include:
(1) Pass a flag to GLES translator to tell if it is running on top of
another GLES backend
(2) Desktop GL sometimes assume EXT postfix for some functions while
GLES does not. Modify dispatcher so that it loads func as well funcEXT
and funcOES as alias.
(3) ANGLE does not like GL_RGB8 and GL_RGBA8 texture internal formats.
Change them to GL_RGB and GL_RGBA.
(4) Bypass some texture parameter validations when using ANGLE backend.
(5) Ignore the parsed shader and use orignal shader source when using
ANGLE backend.
Change-Id: I6c5a770a0157c020920a432f3c949e2f8d67e0eb
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Can use variables with both input and output qualities
- Allow readback of complex structures. 3 phases:
- host_pack_tmp_alloc: custom expression to allocate aligned
temporaries for the output structs
- host_pack: custom expression to pack into stream (losing
alignment)
- guest_unpack: custom expression to unpack into object on guest
(regaining alignment)
Change-Id: I9073325efe6847762e8b2d42fd9803d81ff67374
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Fix a set of warnings from the mac build
- Deleted unused variables
- Marked methods as override
Change-Id: I614f0a444b83de6ec978afc017cfb53d9ceafd62
|
| |
| |
| |
| |
| |
| | |
Encoder has custom pack, why not custom unpack as well?
Change-Id: I955e0967dad6ee6e1c46bda51774463b67774744
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
IOStream uses |m_buf| as a buffer pointer and as a flag at the
same time: if it's not set then there's no need to flush.
Previous snapshotting code didn't save this bit of information,
so next time one tried to allocate a buffer from a just loaded
empty IOStream, it thought it's not empty (as |m_buf| was not
nullptr) and tried to flush garbage.
This CL saves this separately, so now |m_buf| after snapshot
loading is exactly in the same state as it was before.
Bug=b/36700704
Change-Id: I7af309bb1d3c16ba20969f7bb3f9bfc067d0051d
|
| |
| |
| |
| | |
Change-Id: Ia1cc789acd1ec4d00b83950e0125de4e7957d097
|
| |
| |
| |
| | |
Change-Id: Id145c7fda144dcca34d9d61c1d6e465edc862535
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch snapshot the translator GLES2 context as it is.
Namespaces and GL objects will be in another patch.
Hardware GPU restore will be in another patch.
Change-Id: I12cd6d0b7174414bce0bd9143fcdf21786f12ba4
|
| |
| |
| |
| |
| |
| |
| |
| | |
The assert was ok for the regular case, but it would fail if
the guest closed the pipe in the middle of processing because of
some logic error
Change-Id: I9d69f8ea6d9cb0e0cca3b1607fa49b7876be6b14
|
| |
| |
| |
| | |
Change-Id: Id135b7e226c0664c3bc2261f0f6b5ab28cb580c6
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch snapshot FrameBuffer and RenderContexts. With this patch,
after from a GPU snapshot, the emulator should not crash but it will
complain about invalid window surface handle.
Next step: snapshot window surfaces
TODO:
call eglMakeCurrent after loading
refactor objectNameManager so that shared groups are indexed by ID
better interface for EglContext::onLoad
clean up the code
Change-Id: I7aa740f215f96c054634f08d5862bbc9534728c1
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- IOStream serializes its internal state first, then calls
derived class' implementation.
- ChannelStream just saves/loads internal buffers
Change-Id: Iccb7302c9cfe1f0f5d2c592376d5498d1b586266
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- sit between udnerlying es driver and guest
- work with any es backend (angle, swiftshader, etc)
- snapshot clear color as a smoke test
TODO
- plug into rest of snapshot
- snapshot minimum set of GL state necessary to get to home screen
Change-Id: Idf2eb9822d62f9308275ff2df8d12f4402e085c3
|
| |
| |
| |
| | |
Change-Id: I2710d1685e19071cdadf0d5eeb1f29fae6f68e9a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This CL moves MyEGL/GLESv2/Dispatch into a more
general location---emugl_common---allowing
us to dispatch underlying GLESv2/EGL libs
from other places in the emulator than qt gl widget,
and introduces code for OpenGL unit tests,
along with a basic context creation unit tests.
We can now do offscreen-rendering type unit tests
with OpenGL. This is very helpful for debugging
host-side OpenGL issues, rather than going through
X11 / WGL from the ground up to repro OpenGL cases.
This should also be useful for testing snapshots.
Usage:
qemu dir -> cwd
DYLD_LIBRARY_PATH (or platform equivalent)=objs/lib64
objs/lib64OpenglRender_unittests --gtest_also_run_disabled_tests
should run at least basic context creation and dispatch.
Change-Id: If89966156bb4978a302fd94a96d77e5ce1552c03
|
| |
| |
| |
| | |
Change-Id: Ibef7263f881c55d9f79c0881bfa24c1f0c46eebf
|
| |
| |
| |
| |
| |
| |
| |
| | |
- ES 3.0 almost conformant (~80 failing tests not having to do w/
compressed texture support)
- ES 3.1 has a first cut, still lots TODO
Change-Id: I3aaafa6f42aba5ba7b1937556529b746d54cfb95
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is an initial pass at GLES 3.x encoding. Some
GLES 3.x functions like mapped buffers need tricky handling.
See gles2.in for documentation of current encoder design
and scoping of 3.x features and issues.
Features:
- Dynamic version detection of GLES 3.x support in both
underlying GLESv2 lib (possibly SwiftShader or ANGLE) and
the host OpenGL underneath the GLESv2 lib. Dynamic detection
is put under feature control (currently off) to allow development
while not breaking CTS.
- Auto-generated translation of GLES 3.x functions
to host OpenGL in android/scripts/gen-entries.py
- Added all GLES 3.x buffer targets.
- Enabled GLSL ES 300 -> GLSL compiler in ANGLE shader translator.
Change-Id: Ib56ca6962466e6c21bfc45cdeb97ffa684c873c6
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We have own code for getopt() that's not used now. But if we
try compiling emugen on platform without native getopt(),
e.g. Windows, we need to use ours. It had a bug where we were
not advancing the |optind| variable if option's value was in
the next |argv| item. This CL fixed it
Change-Id: I4d1f4cf226f22817fdbba28a4fbc6f34ee78ea83
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We use host CFLAGS to build emugen, and it was missing all
flags one needs, including debug info and optimizations.
This CL copies the flags we use for target build.
+ Fix build errors after enabling Werror
Change-Id: I6be85210f3e9e447fb603e48dace074296b59d0e
|
| |
| |
| |
| |
| |
| |
| |
| | |
We've abandoned that mode for a while, but it is a good way to
compare the performance of memcpy() buffers vs pass them through
the pipe without copying
Change-Id: I4a0b1b2332c93fd5484c8e82399e35686247a504
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Doing YV12 conversion in the guest makes gralloc unlock
block for a very long time, which chokes MediaCodec.
Doing YV12 conversion in shader, 1080p60 is achievable
for short bursts, since the conversion is faster by
over 10x (<3ms instead of ~30ms to convert a 1080p
YV12 frame to RGB888).
Still, at 1080p60, there are various stalls/hiccups...
Change-Id: I031c4fd7b1260e89d9bc4398602ea1baea6f5e98
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This set of CLs instantiates the goldfish dma
pipe extension's interface, and uses it to
perform all color buffer updates, making
video playback smoother.
Change-Id: I543ba907fcc948d48d812146fa2e69a86cecb941
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since this is no longer a side-project, move it under android/ where it
logically belong.
distrib/ should now only contains sources and build files related to
third-party libraries used by the emulator.
Change-Id: I012c2d8c875d018b0c97891773fa5e8e2811087e
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch simplifies the RenderChannel interface and its
implementation (a.k.a. RenderChannelImpl). This has several
benefits:
- The interface is now much closer to the one expected by
an AndroidPipe instance, making EmuglPipe easier to implement
(e.g. get rid of atomic variables in it).
- RenderChannelImpl only uses a single lock instead of three,
and doesn't use atomic variables anymore, thanks to the
BufferQueue class. This makes the code a lot less confusing
and removes risks of thread-racy behaviour due to the use
of multiple locks and atomics at the same time.
Performance wise, this seems to be comparable to the current
implementation. The following numbers corresponds to the
frames/s collected when running the Antutu3D 6.0 "Garden" benchmark,
on an Android API level 23/x86 system image, 1920x1080 resultion,
running on an HPz620 (32 cores at 2.7 GHz) with the "performance"
scaling governor set on all CPUs:
Official Current
release Tip-of-tree With this patch
15.07 17.13 17.52
15.35 17.36 17.52
15.06 17.34 17.37
Change-Id: I1f0e998b23c38051c8de519a3cab3f6a961be930
|