| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
All sources were moved to external/qemu/distrib/android-emugl
to make it easier to modify both the emulator and host libraries
at the same time. See:
https://android-review.googlesource.com/#/c/118203/
As such, the sources in this directory are now ignored and can be
safely removed.
Change-Id: I5d143c971f995e2599e5e1d6174030d6803e8080
|
|
|
|
|
|
|
|
| |
When building the host version of the gtest library, always
include -lpthread as part of LOCAL_LDLIBS, otherwise the build
will fail when cross-compiling for Windows on Linux.
Change-Id: I8614f9e6d543dbba910b9495d6c1bd59e7c61004
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this fix, the GLESv1 encoder library will link to the
pixelDataSize() function that is defined in the GLESv2 encoder library,
which results in bugs, like the boot animation now showing with -gpu on.
This patch doesn't change the generated decoder libraries, nor does it
affect the encoder ones until external/qemu/distrib/update-emugl-sources.sh
is called. When the latter script will be run, other changes under
device/generic/goldfish/generic/ will be needed to fix the namespace
of the functions being defined in GLEncoderUtils.cpp and GL2EncoderUtils.cpp
Change-Id: I588659461dd6d73350d150a896494ccf50fbdc7f
|
|
|
|
|
|
|
|
|
|
| |
This patch modifies a few GLESv1 and GLESv2 function declaration
to use the correct constness for the parameters of a few functions.
This fixes build breaks when the generated encoders are used with
recent Khronos headers.
Change-Id: I582d5ab6d85fd18e6d6dce27b9a08f38b026f916
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes the parsing of type declarations and parameter
declarations to:
- Properly recognize complicated types like 'const int* const*'
which previously required omitting spaces (e.g. 'const int*const*')
to be recognized by the parser.
- Normalize the type strings (e.g. 'const char **items' -> 'const char** items')
- Add a unit test program (emugen_unittests) to check emugen's internal
functions. For now this only applies to the new functions introduced
in the new header Parser.h
+ Update emugen test suite accordingly.
Change-Id: Ib1b6bcbae97e1ee7d8b272843dfb5926d2d98fd2
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
For GL_STENCIL_VALUE_MASK and the like, glGetFloatv returns -1
and this is incorrect, according to GLES 2 spec. This commit
does proper casts to get sensible value.
Change-Id: I9c07ddf812458bd2d374189c0c4263c44de0d6da
|
|\ \
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| | |
When deleting a program that is still in use, its delete status
should set to true and the actual deletion should happen later
when the program is not in use.
Change-Id: I821312997d372ed4773033ba373a8c792f6d7ba9
|
|/
|
|
|
|
| |
Fixed a few error codes to be more accurate
Change-Id: Ifad6bf51c399215a9110bd40cfd380309ac6422c
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When deleting a shader that is still attached to program,
it should not be deleted immediately. Instead, it should
be marked for deletion.
When a program is deleted, its shaders should be detached.
When a shader is detached, it should be deleted if it is
marked for deletion.
Change-Id: I481dbfe37e3ad4af454574b75d157bdfeb1c9cdd
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| | |
When a texture or renderbuffer is still attached to framebuffer but
is getting deleted, it should also be detached from framebuffer.
Change-Id: Ide2c2a0e36ca8bf58f9351a17b78b76ebd507c12
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| | |
The mask should only be a combination of GL_DEPTH_BUFFER_BIT,
GL_COLOR_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT
Change-Id: Ic448bd33a9bf0dc50db4298a53e96dd128fd110c
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| | |
check and return proper error codes when negative
width, height or size or wrong internal texture
format is passed in.
Change-Id: Ic4ddea55042d8e21f8729a7ca675a44a232b7c7c
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* changes:
emulator/opengl/emugen: Add new 'flushOnEncode' entry point flag.
emulator/opengl: Fix glShaderSource() signature.
emulator/opengl: Remove compiler warnings.
emulator/opengl/emugen: Small cleanup of autogenerated sources.
emulator/opengl: Add emugen test suite.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This adds a new flag that can be applied to entry points for 'emugen',
named 'flushOnEncode'. When used, the generated encoder will call
stream->flush() just after adding bytes to the stream.
This is needed to match the manual change that was performed in
the renderControl encoder in the following patch:
https://android-review.googlesource.com/#/c/95864/
Change-Id: I8cc8fdb0d38ef27e8ba646c83d717166400babfd
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The glShaderSource() function really takes a 'const GLchar* const*' parameter,
not 'const GLchar**'. This creates issues when compiling the auto-generated
encoders created with the latest version of 'emugen' and the GL2 Khronos
headers.
This patch is used to fix the issue. Note that it requires defining a new type
in gl2.types, as well as fixing the signature of misc functions in the
translator.
Change-Id: I750f95f2e33d83b3b5563642ad7f87e4b8a37f35
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This patch ensures that the auto-generated client_context.h
headers do not generate compiler warnings in the setError()
function.
+ Remove tiny warning for NativeLinuxSubWindow.cpp
Change-Id: Ibab92ab3332fd284589435732b52c011ae21c15f
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This patch ensures the generated sources are cleaned up a little
bit, more specifically:
- Add proper end-ifdef-guard comments.
- Use anonymous C++ namespaces to avoid name conflicts in the encoder.
- Remove extra spaces / empty lines / indent.
- Use 'const' when defining constant tables.
Change-Id: Ib11fd06adb9075d472d1dd2fd6defb0760aaa2c2
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds a small test suite to check the output of the 'emugen'
program. This serves two purposes:
1) To more easily check that modifications to 'emugen' do not
break stuff liberally.
2) To better document how the changes in the generator actually
modify the output.
To run it, simply call the 'run-tests.sh' script with 'emugen' in
your path, or use --emugen=<program> otherwise. See --help for more
details.
NOTE: The test suite currently doesn't check that the generated
sources compile properly, or that they even work as expected.
See the following external/qemu patch to call run-tests.sh during
each android-rebuild.sh run:
https://android-review.googlesource.com/112541
Change-Id: I9abc3f9ae63b0bb753f0f8e07c1b3f0b11a3252f
|
|/
|
|
|
|
|
| |
Only GL_STREAM_DRAW, GL_STATIC_DRAW and GL_DYNAMIC_DRAW
usages are allowed.
Change-Id: I2d6a425363c32330d25272d26884d32610d8dd19
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
This commit handles empty data parameter in decoder side to avoid
crashing emultor.
Change-Id: I1605c328506d1fa1506023ca7b261d210b944d12
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| | |
OpenGL standard allows empty length parameter and we should
handle it properly to avoid crashing emulator.
Change-Id: I3bd5da19461da0c1f84138a197ae770091458b57
|
|/
|
|
|
|
|
|
|
| |
This commit clears m_src of ShaderParser in setSrc()
method before reading new shader source code so that
any previous source code won't be prefixed to new
shader source code.
Change-Id: Iacc98b32aea380d1e4503c37b86f5db55263e667
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Modify the generated decoder to extract paramters from the
stream into local variables, the rules are:
- non-pointer parameters are extracted into local variables
named "var_<name>", where <name> is the parameter name as
it appears in the protocol specification for the entry.
- for input pointers, use "inptr_<name>", as well as
"size_<name>" for the corresponding size in bytes.
- for output pointers, use "outptr_<name>" and "size_<name>"
This makes the generated code easier to understand, for example
the following:
case OP_glBindAttribLocation: {
size_t tmpPtr2Size = (size_t)*(uint32_t *)(ptr + 8 + 4 + 4);
InputBuffer tmpPtr2(ptr + 8 + 4 + 4 + 4, tmpPtr2Size);
DEBUG("gl2(%p): glBindAttribLocation(%u %u %p(%u) )\n", stream,Unpack<GLuint,uint32_t>(ptr + 8), Unpack<GLuint,uint32_t>(ptr + 8 + 4), (const GLchar*)(tmpPtr2.get()), (uint32_t)tmpPtr2Size);
this->glBindAttribLocation(Unpack<GLuint,uint32_t>(ptr + 8), Unpack<GLuint,uint32_t>(ptr + 8 + 4), (const GLchar*)(tmpPtr2.get()));
SET_LASTCALL("glBindAttribLocation");
break;
}
becomes:
case OP_glBindAttribLocation: {
GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
uint32_t size_name = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name);
DEBUG("gl2(%p): glBindAttribLocation(%u %u %p(%u) )\n", stream,var_program, var_index, (const GLchar*)(inptr_name.get()), size_name);
this->glBindAttribLocation(var_program, var_index, (const GLchar*)(inptr_name.get()));
SET_LASTCALL("glBindAttribLocation");
break;
}
Change-Id: Ifa8c73eec85b818d6d8b6371587da9fdfa57de8e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Minor patch that ensures that the pointer/position increment all
happen at one place, instead of being replicated in each case
statement. In other words, the generated code used to look like:
switch (opcode) {
case OP_someOperation1: {
...
ptr += *(uint32_t)(ptr + 4);
pos += *(uint32_t)(ptr + 4);
break;
}
case OP_someOperation2: {
...
ptr += *(uint32_t)(ptr + 4);
pos += *(uint32_t)(ptr + 4);
break;
}
...
default: {
unknownOpcode = true;
}
Now it looks like:
switch (opcode) {
case OP_someOperation1: {
...
break;
}
case OP_someOperation2: {
...
break;
}
...
default: {
unknownOpcode = true;
}
if (!unknownOpcode) {
ptr += packetLen;
pos += packetLen;
}
Which is cleaner. Also change the type of |opcode| and |packetLen|
to uint32_t and size_t respectively. + Minor formatting changes to
indentation.
Change-Id: If0002fe18a24b9ce6691e3e3cd3e102d1e00d4c9
|
|
|
|
|
|
|
|
| |
This patch introduces two helper macros in the generated
decoder to make its source code slightly more readable
(DEBUG and SET_LASCALL).
Change-Id: I6659fe69a5533e5194d8db5f1882abaf1a5daee5
|
|
|
|
|
|
|
|
| |
This patch simplifies the generated encoders and decoders by
getting rid of the accessor functions (e.g. set_glDrawElementsData)
given that all fields are public and can be written to directly.
Change-Id: I15f4caac95e4d5f1e24a1a5838622600c6bc3207
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The decoders generated by emugen pass addresses that come directly
from the stream to EGL/GL functions. Sometimes, these addresses are
not properly padded with regards to the type of data being transfered
and this can crash some implementations (e.g. OSMesa being compiled
with -msse by default, and doesn't build without it).
This patch introduces two helper classes in ProtocolUtils.h, named
InputBuffer and OutputBuffer, which are used to auto-align buffer
pointers, then make the generated decoder code use them.
Change-Id: I345c7eecc230f62310ced5378b6344f419647e06
|
|
|
|
|
|
|
|
|
|
|
|
| |
When calling printf() with a "%f", the value passed must be a double,
not a float, which means we can't just pass a 32-bit value in the stack
and assume printf() will cast it to a float properly. This results in
bogus values printed whenever a GLfloat is used in a function signature,
due to invalid stack offsets used by the printf().
Fix the problem by using Unpack<>() template.
Change-Id: I282d9c07af68457f32af477435e5dc1999267d39
|
|
|
|
|
|
|
|
| |
This helper class will be used by future patches to map arbitraty
opaque 'void*' values (e.g. EGLImage values) to 32-bit unique values
that can be sent through the wire protocol.
Change-Id: I5b17a1f230e5f9f8b905af66ba79b312f3f01e55
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The decoder didn't properly handle GLsizeiptr and GLintptr values, which
are always 32-bit on the wire, but can be 64-bit on the host. I.e. it
did something like that to read them from the stream:
*(GLsizeiptr*)(ptr + offset)
This fixes the issue by using templates to generate host-type-specific
functions that properly read data from the stream and convert it to the
appropriate host type.
Change-Id: I75749bd715456ca143eb1713498f7cf635918801
|
|
|
|
| |
Change-Id: If8f42a739dce6d1ac4d737ee50c7d2d569004153
|
|
|
|
|
|
|
|
| |
This patch simplifies VarType.h a bit, since there is no point
in having a specialized class like VarConverter to essentially
hold what is a size in bytes!
Change-Id: Idbba469a8594d1e964bbe79bbbea65934c42c033
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch cleans up the build files for the GPU emulation libraries
(i.e. there is no need to test for BUILD_EMULATOR_64BITS anymore,
filtering is now handled by the build system directly).
+ Remove a bunch obsolete tests, which were not unit tests, despite
their name beginning with ut_xxxx.
Which includes removing dependency on SDL too.
+ Remove -m64 and -fPIC flags from compilation. These are not
necessary anymore (again, the build system now takes charge of
placing them when necessary), and generated link-time warning
when building Windows executables.
+ Remove a few declarations related to the now-obsolete platform
build (these libraries are only built with the emulator's build
system now).
Change-Id: I27c28979c42cd51f2fe9e30edd4141136e80ee03
|
|
|
|
|
|
|
|
|
|
| |
On Mac, some of the dynamic libs has name without ".dylib". Like,
"System/Library/Frameworks/OpenGL.framework/OpenGL", we need solution
to handle it in the dlopen() API.
Change-Id: Ie513ace5a0d7d154f73e0f13919005d1498901d7
Signed-off-by: Tina Zhang <tina.zhang@intel.com>
Signed-off-by: Chao Qin <chaox.qin@intel.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
automerge: 4e42336
* commit '4e4233679d4ef4e25d13fe3b56bd8cdaa3b822cc':
emulator/opengl: Remove out-of-process handling code.
emulator/opengl: refactor Thread class.
emulator/opengl: refactor shared library handling.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This removes the last pieces of shared/OpenglOsUtils
which were never used since the code in render_api.cpp always
used thread-based rendering, instead of process-based one.
This feature could be re-implemented in the future, if really
desirable.
Change-Id: I551e0f3d6d5a06ff66cb40b007e2b24c295f1dd8
|
| |
| |
| |
| |
| |
| | |
+ Add unit test.
Change-Id: I26d84cf590f6bfff3304be3f42dc0196bcc7f6d2
|
| |
| |
| |
| |
| |
| | |
+ Add a unit test.
Change-Id: I27c993d1dc819e5bd89fc1e9ae266e11e6ef9a76
|
|\ \
| |/
| |
| |
| |
| |
| |
| | |
automerge: d1dd8ee
* commit 'd1dd8ee1e85f60569ddf6ebc7fe1cbde7ebb6f38':
emulator/opengl: Add global lock to libOpenglRender.
Move SdkVersionInfo from sdk-common to sdklib, part 3.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch ensures that all render threads use the same global
lock to synchronize calls to the underlying GLES/EGL libraries.
Original patch from Thomas Knych (thomaswk@google.com)
BUG=9627179
Change-Id: I8ac9a43bc30bba8a9a06f832cf29e72263d946ce
|
|\ \
| |/
| |
| |
| |
| |
| | |
automerge: 343a78f
* commit '343a78fae064d666b02416b56039b86c554fa615':
emulator/opengl: Prepare for 64-bit build changes.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch slightly modifies the build files for the GPU emulation
libraries to prepare for future changes in the emulator-specific
build system that will be necessary to support Win64 binaries.
The main difference is the introduction of 64-bit versions of the
emugl-begin-host-<type> macros, named emugl-begin-host64-<type>.
Change-Id: Ib40c030fa407b0ed951755dd9b007fda85778e03
|