aboutsummaryrefslogtreecommitdiffstats
path: root/emulator
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Validate glClear mask"bohu2014-11-061-0/+3
|\
| * Validate glClear maskbohu2014-10-281-0/+3
| | | | | | | | | | | | | | The mask should only be a combination of GL_DEPTH_BUFFER_BIT, GL_COLOR_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT Change-Id: Ic448bd33a9bf0dc50db4298a53e96dd128fd110c
* | Merge "Check and return correct error code"bohu2014-11-061-3/+5
|\ \
| * | Check and return correct error codebohu2014-10-291-3/+5
| |/ | | | | | | | | | | | | check and return proper error codes when negative width, height or size or wrong internal texture format is passed in. Change-Id: Ic4ddea55042d8e21f8729a7ca675a44a232b7c7c
* | Merge changes I8cc8fdb0,I750f95f2,Ibab92ab3,Ib11fd06a,I9abc3f9aDavid 'Digit' Turner2014-10-3137-33/+731
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | * 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.
| * | emulator/opengl/emugen: Add new 'flushOnEncode' entry point flag.David 'Digit' Turner2014-10-3122-2/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | emulator/opengl: Fix glShaderSource() signature.David 'Digit' Turner2014-10-3110-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | emulator/opengl: Remove compiler warnings.David 'Digit' Turner2014-10-303-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | emulator/opengl/emugen: Small cleanup of autogenerated sources.David 'Digit' Turner2014-10-307-52/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | emulator/opengl: Add emugen test suite.David 'Digit' Turner2014-10-3022-0/+629
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | validate glBufferData's usage parameterbohu2014-10-293-0/+12
|/ | | | | | | Only GL_STREAM_DRAW, GL_STATIC_DRAW and GL_DYNAMIC_DRAW usages are allowed. Change-Id: I2d6a425363c32330d25272d26884d32610d8dd19
* Merge "Handle empty data parameter in glTexSubImage2D"bohu2014-10-211-1/+1
|\
| * Handle empty data parameter in glTexSubImage2Dbohu2014-10-171-1/+1
| | | | | | | | | | | | | | This commit handles empty data parameter in decoder side to avoid crashing emultor. Change-Id: I1605c328506d1fa1506023ca7b261d210b944d12
* | Merge "Handle empty length parameter on decoder side"bohu2014-10-211-0/+1
|\ \
| * | Handle empty length parameter on decoder sidebohu2014-10-171-0/+1
| |/ | | | | | | | | | | | | OpenGL standard allows empty length parameter and we should handle it properly to avoid crashing emulator. Change-Id: I3bd5da19461da0c1f84138a197ae770091458b57
* | Properly reset source code bufferbohu2014-10-171-0/+1
|/ | | | | | | | | 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
* emulator/opengl/emugen: Use local variables for parameters.David 'Digit' Turner2014-09-251-83/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* emulator/opengl/emugen: Move pointer increment out of case statements.David 'Digit' Turner2014-09-251-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* emulator/opengl/emugen: Introduce helper macros.David 'Digit' Turner2014-09-251-8/+17
| | | | | | | | 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
* emulator/opengl/emugen: Remove accessor functions.David 'Digit' Turner2014-09-254-79/+66
| | | | | | | | 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
* emulator/opengl/emugen: Ensure correct buffer alignment.David 'Digit' Turner2014-09-242-4/+149
| | | | | | | | | | | | | | 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
* emulator/opengl/emgen: Fix debug output of floating point values.David 'Digit' Turner2014-09-171-7/+2
| | | | | | | | | | | | 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
* emulator/opengl: Add UniqueIntegerMap class.David 'Digit' Turner2014-09-163-0/+329
| | | | | | | | 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
* emulator/opengl/emugen: Use templates to read values from stream.David 'Digit' Turner2014-09-162-73/+249
| | | | | | | | | | | | | | 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
* emulator/opengl/emugl: Remove ispointer field from types definitions.David 'Digit' Turner2014-09-134-95/+101
| | | | Change-Id: If8f42a739dce6d1ac4d737ee50c7d2d569004153
* emulator/opengl/emugen: Get rid of VarConverter.David 'Digit' Turner2014-09-132-72/+45
| | | | | | | | 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
* emulator/opengl: Cleanup build files + remove obsolete tests.David 'Digit' Turner2014-08-2762-6756/+84
| | | | | | | | | | | | | | | | | | | | | | 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
* Support dynamic lib name without ".dylib" on MacTina Zhang2014-07-273-4/+44
| | | | | | | | | | 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>
* Merge changes I551e0f3d,I26d84cf5,I27c993d1 into idea133David 'Digit' Turner2014-07-2140-1077/+876
|\ | | | | | | | | | | | | | | | | automerge: 4e42336 * commit '4e4233679d4ef4e25d13fe3b56bd8cdaa3b822cc': emulator/opengl: Remove out-of-process handling code. emulator/opengl: refactor Thread class. emulator/opengl: refactor shared library handling.
| * emulator/opengl: Remove out-of-process handling code.David 'Digit' Turner2014-07-0912-628/+17
| | | | | | | | | | | | | | | | | | | | | | 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
| * emulator/opengl: refactor Thread class.David 'Digit' Turner2014-07-0915-279/+467
| | | | | | | | | | | | + Add unit test. Change-Id: I26d84cf590f6bfff3304be3f42dc0196bcc7f6d2
| * emulator/opengl: refactor shared library handling.David 'Digit' Turner2014-07-0917-174/+396
| | | | | | | | | | | | + Add a unit test. Change-Id: I27c993d1dc819e5bd89fc1e9ae266e11e6ef9a76
* | Merge "emulator/opengl: Add global lock to libOpenglRender." into idea133David 'Digit' Turner2014-07-214-14/+17
|\ \ | |/ | | | | | | | | | | | | automerge: d1dd8ee * commit 'd1dd8ee1e85f60569ddf6ebc7fe1cbde7ebb6f38': emulator/opengl: Add global lock to libOpenglRender. Move SdkVersionInfo from sdk-common to sdklib, part 3.
| * emulator/opengl: Add global lock to libOpenglRender.David 'Digit' Turner2014-07-084-14/+17
| | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "Enable large sd cards." into idea133Xavier Ducrohet2014-06-191-0/+4
|\ \ | |/ | | | | | | | | | | automerge: b554f97 * commit 'b554f97341e9ac128bcf23df74667c53fdafb670': Enable large sd cards.
| * Enable large sd cards.Xavier Ducrohet2014-06-191-0/+4
| | | | | | | | Change-Id: I446336cd4f33bf1959a6bec8803223c8899ef416
* | Merge "Move to custom plugin for native setup." into idea133Xavier Ducrohet2014-06-121-66/+1
|\ \ | |/ | | | | | | | | | | automerge: a6e9f7b * commit 'a6e9f7b2fc87932fdb0bf23c12b6ceb8c7d832eb': Move to custom plugin for native setup.
| * Move to custom plugin for native setup.Xavier Ducrohet2014-06-111-66/+1
| | | | | | | | Change-Id: If7c667b97aa6f1469dae2e4018d792afe951e675
* | Merge "move to prebuilt mingw32." into idea133Xavier Ducrohet2014-06-121-0/+59
|\ \ | |/ | | | | | | | | | | | | automerge: 5952d03 * commit '5952d031979bc67e85c20990fe4d69fbd60a1f34': move to prebuilt mingw32. Win build for mksdcard.
| * move to prebuilt mingw32.Xavier Ducrohet2014-06-111-14/+9
| | | | | | | | Change-Id: I0bfc8be25c5da58659379657f42794b611373f7d
| * Merge "Win build for mksdcard." into idea133Xavier Ducrohet2014-06-111-0/+64
| |\
| | * Win build for mksdcard.Xavier Ducrohet2014-06-111-0/+64
| | | | | | | | | | | | | | | | | | Requires mingw32 in /usr/bin/i586-mingw32msvc-* Change-Id: Ic3028257d42cf1f15aea279da3ed03a4a4ebddc2
* | | Merge "emulator/opengl: Prepare for 64-bit build changes." into idea133David 'Digit' Turner2014-06-1113-22/+24
|\ \ \ | |/ / | | | | | | | | | | | | | | | automerge: 343a78f * commit '343a78fae064d666b02416b56039b86c554fa615': emulator/opengl: Prepare for 64-bit build changes.
| * | emulator/opengl: Prepare for 64-bit build changes.David 'Digit' Turner2014-06-1113-22/+24
| |/ | | | | | | | | | | | | | | | | | | | | 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
* | Merge "emulator/opengl: Fix compilation with Mingw64 toolchain." into idea133David 'Digit' Turner2014-06-101-2/+2
|\ \ | |/ | | | | | | | | | | automerge: 183aa4f * commit '183aa4f4213a03aa4081aec487bec101db64b3f7': emulator/opengl: Fix compilation with Mingw64 toolchain.
| * emulator/opengl: Fix compilation with Mingw64 toolchain.David 'Digit' Turner2014-06-041-2/+2
| | | | | | | | | | | | | | | | | | | | When using the newest Mingw64 toolchain, both the forward declaration and the definition of functions need to use GLAPI / GLAPIENTRY or the compiler will complain. BUG=15402623 Change-Id: Ida9e1cb9b177759e7d6688dc1d883dd856abda04
* | Merge "emulator/opengl: Fix GPU emulation library crash on Windows." into ↵David 'Digit' Turner2014-06-101-2/+2
|\ \ | |/ | | | | | | | | | | | | | | idea133 automerge: 3e92426 * commit '3e924260e43a43057196e98976a5c4643eb7a480': emulator/opengl: Fix GPU emulation library crash on Windows.
| * emulator/opengl: Fix GPU emulation library crash on Windows.David 'Digit' Turner2014-06-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The definitions of two EGL translator functions were missing EGLAPI / EGLAPIENTRY macros. On Windows, these enforces the __stdcall procedure call modifier, which changes the way the stack pointer is modified on function exit. Without this patch, a call to these function will result in a corrupted stack pointer in the caller, quickly followed by a random crash. BUG=15402623 Change-Id: Ia0f7ebef29e1252086fb59ebf2e6f907c2a69487
* | Merge "opengl: rcOpenColorBuffer must be synchronous" into idea133David Turner2014-05-286-13/+24
|\ \ | |/ | | | | | | | | | | automerge: a509402 * commit 'a509402a6b907a871b62f89ea713ff63286c23ae': opengl: rcOpenColorBuffer must be synchronous
| * opengl: rcOpenColorBuffer must be synchronousJesse Hall2014-05-276-13/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | The gralloc register_buffer() function, which calls rcOpenColorBuffer, must actually increment the reference count before returning. Otherwise the buffer allocator may release its reference before the client has obtained one, and the buffer will be freed prematurely. Since rcOpenColorBuffer was just sending a message to the host without waiting for it to be received/processed, this guarantee was not met. Adding a return value makes the call synchronous. Bug: 12988668 Change-Id: I8b2399cfb0f600f99b3387f630343291b59bc9a6