src/libANGLE/capture


Log

Author Commit Date CI Message
Cody Northrop 88dd868f 2022-07-25T06:44:38 FrameCapture: Fix and optimize multi-context reset Follow on to fd89020c This CL: - Fixes missing eglMakeCurrent calls when switching contexts to reset container state - Optimizes when those calls are made, so we only call eglMakeCurrent in Reset when we absolutely have to - Moves MaybeResetContextState to the end, after any per-context reset work has been done Test: Asphalt 9 MEC Bug: angleproject:4599 Bug: angleproject:7507 Change-Id: I52912aa13e3a11735ed3ec93080a21e9cbff113a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3784728 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop fd89020c 2022-07-18T20:26:38 FrameCapture: Reset VertexArray state This change includes three things: - Tracking resources by context - Resetting VertexArray state - Splitting ResetReplay into per-context All three are needed to properly Reset Vertex Array objects. Vertex Arrays are considered container objects, which means they are not shared with other contexts. We've had a hole in Reset where we did not take multiple contexts into account. To address this, we now also track which contextID was used to modify a resource. For objects that need to know which context they are bound to, we track them in a map and return the correct index when getTrackedResource is called. To generate the calls to reset Vertex Array state, we are able to mirror what has been done for other ResourceTypeIDs. In order to properly Reset resources in multiple contexts, we have to bind the correct context before emitting the Reset calls. This has been done for Setup already, so we have a template to follow. With this CL, we now emit multiple functions to Reset state, similar to the following: void ResetReplayContextShared() { // Reset shared objects ... } void ResetReplayContext5() { // Bind the right context eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, context5); // Reset container objects for context5 ... } void ResetReplayContext6() { // Bind the right context eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, context6); // Reset container objects for context6 ... } void ResetReplay() { EGLContext context = eglGetCurrentContext(); ResetReplayContextShared(); ResetReplayContext5(); ResetReplayContext6(); eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, context); } Test: Ni no Kuni MEC Bug: angleproject:4599 Bug: angleproject:7507 Change-Id: Ic585534f07172474aab0ce1d0396b0b064379f88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3761874 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Gert Wollny a3899c53 2022-07-15T08:39:32 Capture/Replay: drop context capture call in EGL capture templ Using the context provided by the thread variable is not correct, it worked only by accident. The only call that uses a context is eglCreateImage and here we have to use the context passed into the call. Bug: angleproject:4964 Change-Id: I78250050cc8f7271be8c91c2d09d99210aaead21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3762458 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Faye Zhang <ffz@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny eb88a2ac 2022-07-11T17:16:49 Capture/Replay: Handle the case when there is no context in eglCreateImageKHR, when target is EGL_NATIVE_BUFFER_ANDROID then the context must be EGL_NO_CONTEXT, so handle this case. Bug: angleproject:4964 Change-Id: I945d2af546f3f3a14be966e5cac795b58aa3c89f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3755785 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Faye Zhang <ffz@google.com>
Geoff Lang 785353fd 2022-05-24T12:40:16 Support Desktop OpenGL context creation in end2end tests Validation of Desktop GL versions and profile masks is unimplemented. Bug: angleproject:7360 Change-Id: Ifae94215b6aada895c2b02318a1d05c9515e9b96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3664916 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 4298a54e 2022-06-23T23:17:12 Clean up OWNERS files Bug: None Change-Id: I93726b8e5226d4c3b40c7d3dc865cb7dbe7c17fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3721567 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Gert Wollny fd9301c1 2022-06-17T12:25:10 Capture/Replay: Capture egl surface related calls Creation from a pbuffer and generalized destruction are implemented, as well as binding and releasing a TexImage and making the context current with explicit draw and read surfaces given. Bug: angleproject:4964 Bug: angleproject:6180 Bug: angleproject:6512 Change-Id: Id8be6486125d45341905f3aabdbae4366cd568b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3711741 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Eddie Hatfield 91976352 2022-06-21T15:41:02 Use C++17 attributes instead of custom macros Bug: angleproject:6747 Change-Id: Iad6c7cd8a18d028e01da49b647c5d01af11e0522 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3718999 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Faye Zhang 714f680f 2022-06-08T16:19:20 Implement GL_EXT_base_instance * Added the validation functions for DrawElementsInstancedBaseVertexBaseInstance(), DrawElementsInstancedBaseInstance(), and DrawArraysInstancedBaseInstance() according to the specs. * Added generic implementation for glDrawElementsInstancedBaseInstance() that can be called by back-ends. * Added flags for back-ends so they can enable the extension. * Added tests for DrawElementsInstancedBaseVertexBaseInstance(), glDrawElementsInstancedBaseInstance(), and DrawArraysInstancedBaseInstance(). * Disabled ES3_D3D11__DynamicDraw tests due to angleproject:7441 bug. Bug: angleproject:6983 Bug: angleproject:7441 Change-Id: Ia664b01c87bc64c05e29adec23a8f80792eaa037 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3697206 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Faye Zhang <ffz@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Gert Wollny 6ca9c55e 2022-06-13T10:32:39 Capture/Replay: Allow capturing of external textures With the support for EGL textures enabled we can actually capture the texture content. Bug: angleproject:5822 Change-Id: I386827456d146a54d9790fdd9eadb39b2a6b87e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3702350 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gert Wollny ea3bd30a 2022-06-13T11:44:45 Capture/Replay: Don't capture tex levels that are out-of-range Bug: angleproject:6334 Change-Id: I01cb1920154b5fba9554180d2edf5be9dea2b7a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3702351 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Constantine Shablya b257d62c 2022-06-15T03:15:56 Add GL_NV_read_depth_stencil Bug: angleproject:4688 Change-Id: I44d5846f1ae5382b8c046e59643da4c0bf38e135 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3702356 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Constantine Shablya <constantine.shablya@collabora.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny fd1317a7 2022-03-22T18:57:30 Capture/Replay: capture GetProgramBinaryOES parameters Bug: angleproject:6631 Change-Id: I0582c585bb2f3d14b10f99fe1b88805b9e629b78 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3543805 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop ce78f5f8 2022-05-10T09:10:30 Capture/Replay: Reset default uniforms Extend resource tracking to include default uniforms. They are tracked per location, per program. Setup for defaulft uniforms is unchanged, but Reset now includes a section like this: glUseProgram(gShaderProgramMap[6]); UpdateCurrentProgram(6); glUniform1uiv(gUniformLocations[gCurrentProgram][0], 1, reinterpret_cast<const GLuint *>(&gBinaryData[30518768])); glUniform1uiv(gUniformLocations[gCurrentProgram][1], 1, reinterpret_cast<const GLuint *>(&gBinaryData[30518784])); glUseProgram(gShaderProgramMap[9]); UpdateCurrentProgram(9); glUniform4fv(gUniformLocations[gCurrentProgram][1], 15, reinterpret_cast<const GLfloat *>(&gBinaryData[30518960])); glUniform4fv(gUniformLocations[gCurrentProgram][16], 3, reinterpret_cast<const GLfloat *>(&gBinaryData[30519200])); glUniformMatrix4fv(gUniformLocations[gCurrentProgram][20], 2, GL_FALSE, reinterpret_cast<const GLfloat *>(&gBinaryData[30519248])); ... Test: Animal Crossing MEC, Star Wars KOTOR MEC Bug: angleproject:7307 Bug: angleproject:7353 Change-Id: Ic344767f5dd4ffc38c15ed6bf81a7d1daf274a7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3657474 Reviewed-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Chris Dalton a894cb94 2022-05-10T21:15:59 Bootstrap pixel local storage This CL creates a very simple prototype that implements pixel local storage in a thin layer on top of ES 3.1 shader images, and adds a single test. Assuming all goes well on the various devices and backends, the next steps will be: * Write many more tests. * Compiler support, switch to API-specific shader images. * Move the thin layer into ANGLE. * Thorough validation and error handling. * Add an implementation that uses render target attachments (e.g., EXT_shader_framebuffer_fetch). * Incremental, backend-specific optimizations as needed. Bug: angleproject:7279 Change-Id: I7f9f0a1fe2d61f570b4105a7380687038ae45f5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645786 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Faye Zhang 06ff0e3c 2022-06-06T15:29:16 Implement GL_EXT_base_instance Added new extension GL_EXT_base_instance to registry_xml.py and auto-generated the entry point function calls for the following functions introduced by the extension: * GL_DrawElementsInstancedBaseVertexBaseInstanceEXT * GL_DrawElementsInstancedBaseInstanceEXT * GL_DrawArraysInstancedBaseInstanceEXT Bug: angleproject:6983 Change-Id: I36167faf3ca98e42acf787dbf09ee7052e15e358 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691952 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Faye Zhang <ffz@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Cody Northrop aac68adc 2022-05-21T22:27:22 Capture/Replay: Track dirty state per EntryPoint for Reset This CL introduces a new concept of tracking whether an entry point has been called. If so, emit Reset calls designed specifically for that entrypoint. This will likely only be useful for one dimensional state binding calls that can easily be tracked and set back. Only support for EntryPoint::GLUseProgram is added at the moment, but any entry point can be added. Reset will now set the active program back to what it was in Setup. For example: void ResetReplay() { ... glUseProgram(gShaderProgramMap[2]); UpdateCurrentProgram(2); } Test: Animal Crossing MEC, Star Wars KOTOR MEC Bug: angleproject:7307 Bug: angleproject:7353 Change-Id: I19d238ca13bbfb619e1cf8ed86f15ed6c4255a61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656827 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Rohit Rao 4b911686 2022-06-06T22:25:37 Converts from sprintf() to snprintf(). sprintf() is deprecated in Xcode 14, so update to safer equivalents in order to keep the compiler happy on iOS and macOS. Bug: chromium:1331345 Change-Id: Id5348088bf69cbd360d9251e6323596cb710666d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3690747 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny bbf67e2e 2022-05-16T12:04:34 Capture/Replay: support capturing eglCreateImage/eglDestroyImage Because we support only a few functions the supporting code is not autogenerated. We don't capture the actual value of the display variable, because we assume that there is only one display, and the actual pointer to it is provided by the EGLWindow. The rest of the capturing works just like with the GLES calls. Bug: angleproject:4964 Bug: angleproject:5822 Bug: angleproject:6180 Bug: angleproject:6286 Bug: angleproject:6578 Bug: angleproject:7111 Change-Id: I385aa9648f93bf74706e9860e2aee5775eeba220 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3636062 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi fea19567 2022-05-17T17:44:06 Vulkan: Remove removeEarlyFragmentTestsOpt flag * Removed removeEarlyFragmentTestsOptimization and the related SPIRV transformation and variables. * Removed mUsesEarlyFragmentTestsOptimization. * Removed SH_EARLY_FRAGMENT_TESTS_OPTIMIZATION. * Merged updateUsesEarlyFragmentTestsOptimization() into updateFragmentInoutRange(). Bug: angleproject:7347 Change-Id: I7299bd4e8ab5363e5cf06eb48419d4f469106e12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3648217 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop 7a243dbe 2022-05-22T19:48:34 Capture/Replay: Allow repeated Gen-on-Bind for resources We aren't clearing items from the map of resource IDs used to track Gen-on-Bind. Before this CL, an app could Gen-on-Bind, delete the resource it genned, then Gen-on-Bind again to trigger this error. The options are to add tracking to remove items from the map when they are deleted, or just remove the error and allow it to happen. Since this happens so rarely, going with the simple approach of removing the error. Test: Star Wars: KOTOR MEC Bug: angleproject:7353 Change-Id: I320771692e1c01e254fc977f5eef99284cc95f67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3659505 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny ea9a2dbe 2022-05-01T17:30:55 Capture/Replay: handle glGetVertexAttrib parameter value Bug: angleproject:7153 Change-Id: I56cbe833268a6d1f6d184c90b7fbe1a345e5f012 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3614518 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny e55990e3 2021-10-20T19:32:59 Capture/Replay: Handle arrays with uniform block indices When we update the uniform block indices we have to take into accountg that there may be arrays and that the indices of array elements can be retrived by querying with an index. Consider a layout layout(std140) uniform Data { vec4 plainData; vec4 arrayData[3]; } buffers; Then the loop for updating the uniform block indices will see [ "plainData", "arrayData", "arrayData", "arrayData" ] and we have to take care to add the array indices if they are greaten than zero, otherwise we would always query the index of the first array element. Bug: angleproject:6180 Change-Id: I21f96ab49c1c33bc4024711b72df961377afea4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Mohan Maiya ea76cb0f 2022-04-21T15:52:39 Vulkan: Add entry points for GL_QCOM_shading_rate Bug: angleproject:7172 Change-Id: I837d2697d95c44f47a2fab7411cfd87a4ec65e90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599873 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Alexey Knyazev 62ca6449 2022-04-13T09:36:40 Reland "Fix BlendStateExt::mMaxColorMask initialization" This is a reland of commit 50d008a7efcab80f34eb742148d05389b2ed247e Besides fixing the BlendStateExt color mask initialization bug, the following changes were made: * All fields were made private with accessor functions. * A new assertion was added that ensures 64-bit storage for factors and equations. This allowed dropping one redundant mask. * Two new helper functions were added. * BlendStateExt::mMaxDrawBuffers was renamed to mDrawBufferCount. * The BlendStateExt class is now aligned to 8 bytes with an assertion. * Expanded test coverage. Also fixed incorrect usage of BlendStateExt fields in: * StateManagerGL::syncBlendFromNativeContext * StateManagerGL::restoreBlendNativeContext Original change's description: > Fix BlendStateExt::mMaxColorMask initialization > > This variable should not have its unused bits set. > > To avoid confusion with other masks of the same class, > the variable was renamed to mAllColorMask. > > Bug: angleproject:7200 > Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:7200 Change-Id: I87a5fe0f9dfbbf5e525b9120f772aa9adb39ce5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3593234 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jamie Madill 2dd13ebb 2022-04-21T11:25:00 Track Surface color & depth/stencil init separately. This clears up some trace testing confusion due when robust resource init is enabled, and the app clears color but not depth on the default surface. Bug: angleproject:7221 Change-Id: Id97871aec32ad831b663aaa9116e04b582ab5a36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600375 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi c5271e8e 2022-04-04T23:28:35 Vulkan: Emulate GL_KHR_blend_equation_advanced Based on a change by Brandon Schade <b.schade@samsung.com> In the translator, when advanced blend is enabled, an input attachment is added. Based on the listed advanced blend equations, emulation code is added that performs those equations' functions. The blend equation itself is passed through a driver uniform. Note that the advanced blend extension only allows a single output to use advanced blend, and that should be at location 0. In the Vulkan backend, when advanced blend is used, the driver uniform to select the equation is updated and normal blending is disabled. Bug: angleproject:3586 Change-Id: Icc42e8be238d34fca149087eb9cfe616a7643a6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3575738 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang 445bf9bd 2022-04-09T08:42:12 Use the real max vertex attrib index instead of MAX_VERTEX_ATTRIBS Bug: chromium:1258869 Change-Id: I7de23353fc6922be9b3201c87d33e0cfdc427569 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3580578 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Steven Noonan fb91e27c 2022-04-03T17:18:44 add GL_ANGLE_robust_resource_initialization extension to xml Bug: angleproject:7165 Change-Id: I17a566714bc3e1a0e19dee4bdea10c7360050172 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3567539 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 808f754c 2022-04-04T17:53:48 Capture/Replay: Use glFramebufferTexture2D for cubes In GLES 3.2, you can use glFramebufferTexture2D or glFramebufferTextureLayer to bind a cube face as an attachment. Not all drivers support glFramebufferTextureLayer because the wording of the spec is confusing. Instead use the more portable glFramebufferTexture2D. Test: Aztec Ruins High MEC Bug: angleproject:7168 Bug: angleproject:7169 Change-Id: Ie1a7d06f817750ddf8e6e707814380e306f5ee29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3570242 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Lubosz Sarnecki f8ddca00 2022-03-03T15:34:15 FrameCapture: Use getCompressedTextImage. Replace retrieveCachedTextureLevel with getCompressedTexImage. Remove compressed texture shadow copy code. Treat GLCopyImageSubData calls as texture updates by handling them in trackTextureUpdate. Bug: angleproject:5592 Bug: angleproject:5604 Bug: angleproject:6104 Bug: angleproject:6177 Bug: b/181797364 Change-Id: Ic6b2a41ce536e3e4b66497048954efdafa556d1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516377 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Cody Northrop 04680183 2022-03-24T11:09:39 Capture/Replay: Fixes for Car Chase This CL contains two fixes: * Add GL_PATCHES to list of PrimitiveMode names * Use FramebufferTextureLayer for 3D and Cube textures Bug: angleproject:3662 Bug: angleproject:7125 Bug: b/218314686 Change-Id: Ia97d8221cb78ef6e895156b5a474483d570d6ab5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3551096 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 3ddb21fd 2022-02-23T14:15:48 Front-end support for KHR_blend_equation_advanced Bug: angleproject:3586 Change-Id: I27086295e7455ce8848db1c6004917fea40202e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484785 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Lubosz Sarnecki ed590dc8 2022-03-11T12:54:44 FrameCapture: Add override for Glsizei* types. Fix capturing glGetSynciv with null lengths on Linux. When calling the default WriteParamValueReplay handler with a nullptr, ostream on Linux will write `(nil)`. This fixes retracing all traces containing glGetSynciv calls with null lengths. Add a NullLength test to FenceSyncTests that used to fail in the capture_replay_tests. Test: capture_replay_tests.py --gtest_filter=FenceSyncTest.NullLength/* Bug: angleproject:7071 Bug: angleproject:6808 Change-Id: I0a2bd4db744ce2a026cd932ba0f2f4747672fcc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3526653 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 70af5ff0 2022-02-18T14:35:59 FrameCapture: Skip invalid VertexAttribPointer calls in MEC. In CaptureVertexArrayState when a non-default VAO is bound and no GL_ARRAY_BUFFER is bound, VertexAttribPointer calls with a non-null offset are invalid and will produce: "Client data cannot be used with a non-default vertex array object." Add a test that leaves a vertex array with an invalid vertex attribute pointer and used to produce an invalid trace with MEC. Test: angle_end2end_tests --gtest_filter="VertexAttributeTestES3.InvalidAttribPointer/*" Bug: angleproject:7042 Bug: angleproject:7098 Change-Id: Iaf91fe7f191c44df79db47bb5455e5df922f2ed5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3475353 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Alexey Knyazev b9b64b15 2022-03-15T06:31:32 Fix typo in DrawElementsInstancedBaseVertexBaseInstanceANGLE Bug: angleproject:3402 Change-Id: I490695e45b4bec31ea9226c6a7df4d426759c53f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3524341 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jamie Madill a956162c 2022-03-01T13:05:29 Vulkan: Expose performance counters via extension. This CL rewrites the Vulkan perf counters test to work in the angle_end2end_test suite using the newly exposed AMD extension. Note that we implement only a subset of the extension. Instead of generating monitors and starting/stopping them we simply read back all performance counter data at once using the special montior value "0". The CL also enables these tests on SwiftShader. Bug: angleproject:4918 Change-Id: I5d8f6eecb1ccff448657cbdb65b51a225dfb90c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497538 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny af2e0c01 2021-12-13T20:47:25 Capture/Replay: Override GL_HALF_FLOAT type for legacy formats Because GL_HALF_FLOAT and GL_HALF_FLOAT_OES have different values, and the format table created by BuildInternalFormatInfoMap() and queried to obtain the readback format uses GL_HALF_FLOAT_OES for legacy formats, we have to override the type in this case. Bug: angleproject:6333 Change-Id: Ibfdcf2ad80ccfb15872ab441c0f22f0851ffe3f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3332721 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Jamie Madill 24c641dc 2022-03-01T11:12:38 Add stubs for AMD_performance_monitor. We can piggy-back on this extension to report internal ANGLE performance counters to the ANGLE tests. Includes a minor variable de-duplication in the EP generator. Bug: angleproject:4918 Change-Id: I4a76aea957b423a36a90349643bd50a4e1905849 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497537 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 7b202392 2022-03-02T17:32:45 Capture/Replay: Fix capture on Linux Need to add support for printing "const GLint *" types. We've been falling into the default handler and getting lucky with how other platforms handle ostream with a null value. We use this extensively with glShaderSource(). Test: MEC of an existing trace on Linux Bug: angleproject:7071 Change-Id: I7e4f1fbf2876dddac49ea6583918dbc534070d75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3501201 Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano b92ebdb7 2022-02-24T12:23:09 EGL: Add code-gen for dmabuf extensions Add code-gen for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers. Bug: angleproject:7065 Change-Id: Ib1bd2a881f11e96b1e7e5128975bdba3bdc41e0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495122 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny 5118002e 2021-11-29T21:01:03 Capture/Replay: test and handle texture gen-on-bind Bug: angleproject:6425 Change-Id: Ieb4c0a7a6ffdbf0690c07c10e001835a0dcbb6e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295620 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny bc20e55b 2021-11-29T21:00:45 Capture/Replay: test and handle renderbuffer gen-on-bind Bug: angleproject:6425 Change-Id: I591bf0fdfe2e7f83d7e02f63c8265234f7b85df6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295618 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny efb951e8 2021-11-29T21:00:02 Capture/Replay: test and handle buffer gen-on-bind Bug: angleproject:6425 Change-Id: If8b573d0d77192befe6db82498158c535bd3b104 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295619 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Cody Northrop c80c7ae3 2022-02-24T10:43:15 Capture/Replay: Merge Deletes in Reset Before this CL, when regenning resources, we would iterate through each resource ID and issue a delete followed by a gen. The delete is required to get resources back to their original state, often caused by applications recreating them during the run. This ran into problems when our resource maps had stale data in them, i.e. a texture that had been deleted by the app but remained in our gTextureMap. We could inadvertently delete a resource we had just genned. For example, in ResetReplay(), say we have two textures to delete: // gTextureMap[1] start with 5 const GLuint glDeleteTextures_texturesPacked_1[] = { gTextureMap[1] }; glDeleteTextures(1, glDeleteTextures_texturesPacked_1); // We just deleted texture 5, now create a new one glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); // The driver returned 15, which was unused at this time UpdateTextureID(1, 0); // gTextureMap[1] now contains 15 ... // gTextureMap[2] happens to start with 15, which was in use in // the trace, but was deleted and is no longer in use. The // deleted value is not cleared from gTextureMap (which is // another possible way to solve this). const GLuint glDeleteTextures_texturesPacked_2[] = { gTextureMap[2] }; glDeleteTextures(1, glDeleteTextures_texturesPacked_2); // Whoops! We just deleted our brand new texture 15, even though // it no longer maps to the original texture. glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(2, 0); // Now gTextureMap[2] contains whatever came back from the driver ... // The first use of gTextureMap[1] will fail on loop because // texture 15 no longer exists! To avoid this problem we delete all resources up front before genning any new ones. const GLuint deleteTextures[] = {gTextureMap[1], gTextureMap[2]}; glDeleteTextures(2, deleteTextures); // Now we no longer have any deletes in the create sequence glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(1, 0); glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(2, 0); This is applied to all the resources we regen right now. This CL: * Merges the deletion of new resources (that didn't exist when the trace starts) with resources that are being regenned. That means there is just one big delete. * Removes Delete from the call sequences we track for each resource since we no longer need to keep them around. * Adds a formatting helper to avoid code duplication. Test: Blade&Soul Revolution MEC (UE4) Bug: angleproject:4599 Bug: angleproject:7053 Change-Id: Ida3b7e1ad5d94c5e9860447d5cf959278f37ad47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3492849 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Gert Wollny 19704a89 2022-02-15T13:21:12 Capture/Replay: Capture GetTexLevelParameterfvANGLE params Bug: angleproject:3565 Change-Id: I940154a4e3ace9a3b8683eebdcd7bbb14402a641 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3461564 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 223a25f0 2022-01-25T11:15:16 Capture/Replay: Allow capturing of multisample texture content It just works. Bug: angleproject:6611 Change-Id: Ia3da2ee0ea3e09889a65910fd101a7daaa99ea56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3413157 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Lubosz Sarnecki d98f4812 2022-02-17T15:22:22 FrameCapture: Capture empty buffer generation. This avoids emitting VertexAttribPointer with non-null offsets when the array buffer is empty and a vertex array is bound in MEC. When no buffer is bound, which was also the case if the buffer was empty, non-null offsets are not allowed in VertexAttribPointer and will result in: "Client data cannot be used with a non-default vertex array object." Add EmptyArrayBuffer test to VertexAttributeTestES3. Test: angle_end2end_tests --gtest_filter="VertexAttributeTestES3.EmptyArrayBuffer/*" Bug: angleproject:7026 Change-Id: I0cb02a5588f5d2bbc85f58b75fd14493b644d52b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3468524 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 00169174 2022-02-17T14:11:01 gl.xml: Remove GL_BLEND_EQUATION_EXT from GetPName. When retrieving the GL_BLEND_EQUATION enum using glGet, FrameCapture incorrectly emitted GL_BLEND_EQUATION_EXT, which is not part of core GL4, GLES 2+3. Add BlendEquationGetInteger test to SimpleOperationTest which failed to compile in the capture/replay tests before this change. Bug: angleproject:7026 Test: angle_end2end_tests --gtest_filter="SimpleOperationTest.BlendEquationGetInteger/*" Change-Id: I886e64ca316754f05ada8e45604bd3aef58a5ba5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3468522 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki bdedf146 2022-01-14T13:35:30 TextureVk: Implement getCompressedTexImage. Extend ImageHelper::readPixels to support compressed formats. Implement readPixelsForCompressedGetImage. Add compression tests to GetImageTest. Implement CaptureGetCompressedTexImageANGLE_pixels in capture_gles_ext_params. Test: angle_end2end_tests --gtest_filter="GetImageTest*.CompressedTexImage*" Bug: angleproject:6177 Change-Id: I6e5b6d746b9c6cc9b885fa44f75a985660d8fb58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3452110 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Cody Northrop 9e323299 2022-02-02T18:09:36 FrameCapture: Regen framebuffers on Reset Regenerate framebuffers that have been deleted and recreated during the run. This required changing the order of how resources are updated during Reset. Textures need to come before framebuffers so they can be regenerated before being bound. Test: MEC of genshin_impact trace frames 2-100 Bug: angleproject:6893 Change-Id: I0d14e09a5e378e7553dec54f4608eefe1bf397dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3435112 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Brandon Schade 38fada35 2022-01-27T18:16:18 Vulkan: Add support for OES_primitive_bounding_box Add OES version of the primitive bound box extension Bug: angleproject:3576 Test: dEQP-GLES31.functional.primitive_bounding_box.* Change-Id: Ie44d952992a68dfffd5c124dda8dd11069f0c1e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3425086 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Lubosz Sarnecki 287057b3 2022-01-25T17:01:43 FrameCapture: Don't track coherent buffers before capture starts. Even though coherent buffer storages were only captured after capture was activated, the buffer tracker was incorrectly initialized with the first call to glMapBufferRange, even though capture was not active. This fixes corrupted rendering in War Planet Online due to all coherent buffer storages being tracked at initialization of the app, when FrameCapture was enabled but not active. Introduce mMidExecutionCaptureActive, which exposes if MEC is currently executed. Bug: angleproject:5857 Bug: angleproject:6774 Change-Id: I4849d6497e8e08aefc60e68bae027915e9b2912f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3416227 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki c5498b95 2022-01-21T13:33:49 FrameCapture: Reset immutable buffers correctly. Restore immutable buffers using UpdateClientBufferData. Regenerate immutable buffers using CaptureBufferStorageEXT. Bug: angleproject:4599 Bug: angleproject:5857 Bug: angleproject:6774 Change-Id: I8e80e9e32633b1303855e5a6ba7ac62941929645 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3406755 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 8474c8e1 2022-01-21T12:30:15 FrameCapture: Add Renderbuffers to mStartingResources. This prevents Renderbuffers being deleted in Reset when they were captured with MEC and added to the Setup function. Bug: angleproject:5857 Bug: angleproject:4599 Change-Id: Ie61f75f69e3a3846877b1e8f5d9c98d5d0cecb2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3406754 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 526c93dd 2022-01-05T17:21:34 FrameCapture: Detect GL_MAP_COHERENT_BIT_EXT correctly. In MEC, look for GL_MAP_COHERENT_BIT_EXT in getStorageExtUsageFlags as it will never occur in getAccessFlags. GL_MAP_COHERENT_BIT_EXT will also never occur in glMapBuffer access flags, so just pass false. Bug: angleproject:5857 Change-Id: I9bc2a5d334d3b90653d33439d4055965593de5b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3406753 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Gert Wollny d7585c22 2021-12-15T13:35:51 Capture/Replay: don't capture MS depth renderbuffer pixels Vulkan can't resolve depth textures and no emulation has been implemented todo so when required, therefore we hit an assertion in ImageHelper::readPixels if we try to read back the MS depth renderbuffer pixels. To work around this problem don't read back the data. Reorder the renderbuffer readback code a bit to make the code easier to follow. Bug: angleproject:6324 Change-Id: I6fb4d0f993b061393b249706efe4b2c9d44a6f96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3340940 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Lubosz Sarnecki 515f60bd 2022-01-20T17:39:48 FrameCapture: Keep MEC Setup resources in Reset. This fixes a regression in Reset when using MEC introduced by 462cdb08e395edbf5bace1408715e35239a0b1fa. Don't call MaybeCaptureUpdateResourceIDs in maybeCapturePostCallUpdates before capture starts, since it's adding resource IDs to mNewResources. Don't add resources to mNewResources if they are already in mStartingResources in CaptureUpdateResourceIDs. Add FrameBuffers to mStartingResources before MaybeCaptureUpdateResourceIDs is called. Add Buffers to mStartingResources before calling MaybeCaptureUpdateResourceIDs. Add VertexArrays to mStartingResources in CaptureMidExecutionSetup. Bug: angleproject:4599 Bug: angleproject:6870 Change-Id: If428cbbdbcfa17c221b9e110a990cf6ebc9107c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3404087 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Jamie Madill 3064920a 2022-01-19T11:48:57 Capture/Replay: Serialize ActiveTexturesCache. Also add group scope to samplers. Bug: angleproject:3570 Change-Id: I616a54d95544af1e3c4eeff196806e5bfb20292e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3402100 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 7dda50fc 2022-01-13T12:09:20 Add frontend for ANDROID_extension_pack_es31a - Add entry to registry_xml file - Add handling in the DirectiveHandler Bug: angleproject:3608 Change-Id: I1cc32a4a97fd9974f65786a9a972b4b541abf658 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388405 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Cody Northrop ae1a56b6 2022-01-06T17:04:41 Vulkan: Turn on GL_EXT_shader_framebuffer_fetch for ARM On ARM, coherent is the default behavior of framebuffer fetch, so we can expose the GL extension. Tests: Dead By Daylight app and trace Bug: b/201764768 Bug: angleproject:6870 Bug: angleproject:6872 Change-Id: I0f98c57e20619d73d1507c4655e7f9bb8c10a53a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3371244 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Tim Van Patten 462cdb08 2022-01-06T18:46:21 Capture/Replay: Reset FBOs, RBOs, VAOs Add resetting framebuffers, renderbuffers, and vertex arrays to MaybeResetResources(). This is required to prevent leaks in app launch traces, such as Angry Birds 2 (com.rovio.baba). Bug: angleproject:4599 Change-Id: I34b45ecb1a1b5144f1e23b6bc56315f7713fed94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3371881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Maksim Sisov beda2459 2021-12-09T14:24:08 Add support for GL_MESA_framebuffer_flip_y 2/* This is a second CL that adds actual implementation for GL_MESA_framebuffer_flip_y extension. Also, some tests are added to verify the functionality. Please note that bots do not support this extension yet, and the tests were verified by running them locally. Bug: chromium:1231934 Change-Id: Iea483aa13a298df6b5cf0b7b5ffb795a4666e3bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3329603 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Maksim Sisov <msisov@igalia.com>
Lubosz Sarnecki c984dad5 2021-12-03T16:02:49 FrameCapture: Don't remove protection from shared pages. Don't remove protection from pages that are shared when a persistent coherent buffer storage is unmapped. The shared page can still be relevant when the the other buffer is kept and written to. Add a PageSharingBuffers test that produces this behaviour. Test: angle_end2end_tests --gtest_filter="BufferStorageTestES3.PageSharingBuffers/*" Bug: angleproject:5857 Change-Id: I6927f25229d2dfe9f68ba9a993e9d3e994bc7ce0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3306623 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Gert Wollny 0a28c6c6 2021-12-15T15:49:33 Capture/Replay: Capture some MultiDrawIndirect parameters It seems some new tests were added that fail Capture/Replay. Bug: angleproject:6180 Change-Id: I26ccc1e9defc7b7d66c7e26538df286230b47def Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3340945 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 5f53268c 2021-11-04T17:56:48 Capture/Replay: Gather Program sources directly from call With CreateShaderProgramv the sources were collected from the attached shaders, wich gave complications, because normally the the shaders were detached right after program linking and a different handling was needed when capture was enabled, handling that let the replay tests fail. To overcome this gather the shader source directly from the call parameters instead of pulling it from the attached shaders. Bug: angleproject:6180 Bug: angleproject:6659 Change-Id: I248c1aa0f58b61519b938fce1a77fb25dc0a7cfc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3262133 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Cody Northrop 2ebd583e 2021-12-22T11:24:43 Android: Remove setenv from common path In Android production stress testing, the setenv call was causing a race condition. To fix, only use setenv in the paths that need it as a performance optimization. Specifically, FrameCapture makes use of it every frame. Bug: angleproject:6822 Change-Id: I452f1ef8607ca9baf15d69246932c47454a3ce46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3353893 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill ab288fea 2021-07-09T13:02:08 Upgrade restricted traces. (Re-land) Includes removing capture to temporary ResourceMaps, and including all source files in the JSON. Bug: angleproject:5133 Change-Id: I0508dd46a9f613a96ca3635f82b6904c0f2523a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3345222 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c1f478fe 2021-12-20T12:37:33 Frame Capture: Allow for no FBO when running MEC. Multi-context captures use the surfaceless context extension. That was crashing MEC because we were assuming the context would have a Framebuffer. Bug: angleproject:5133 Change-Id: I6be12d332f4754f80c088d88973219327eca251a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352084 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill eba2e620 2021-12-15T12:29:12 Capture/Replay: Fix uniform program indexing. We were using the "native" version of the program ID in the update call, which could overflow the bounds of our fixed-size program maps. Instead use the captured (and upper-bounded) version of the ID and only get the mapped ID when calling GetUniformLocation. Bug: angleproject:6431 Bug: angleproject:6816 Change-Id: I807bd07c9dcff6ba5a50991e28b0a58d16f7bc63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3345220 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Maksim Sisov c7446ac4 2021-12-16T16:00:08 Add support for GL_MESA_framebuffer_flip_y 1/* LaCrOS, which is same as ChromeOS, relies on this extension and uses that with WebGL content. However, when LaCrOS uses ANGLE, the extension is not exposed and the WebGL content is y-inverted as direct scanout is always used. There are two bugs - 1) ANGLE should expose the extension so that direct scanout is possible (this CL fixes the issue. 2) LaCrOS shouldn't rely on the extension if it's not available (a bug to be fixed in Chromium). This particular CL consists of autogen files with framebufferParameteriMESA && getFramebufferParameterivMESA in Context marked as UNIMPLEMENTED. And also unimplemented validation. Bug: chromium:1231934 Change-Id: Id617846b0412f579df5b4ace6cb33c1ec6d403df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343492 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Maksim Sisov <msisov@igalia.com>
Jamie Madill 7fc6c07c 2021-09-29T14:02:29 Capture/Replay: Update process for trace upgrading. Includes changes to the retracing script. Also includes documentation on how the process works. Bug: angleproject:5133 Change-Id: I1acfe338f3fe0282a0461c314274c761ed04bd2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193418 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki d4b8cd5e 2021-09-14T16:34:31 FrameCapture: Implement capture of coherent bufferstorages. Track buffers with the GL_MAP_COHERENT_BIT_EXT access flag in a CoherentBufferTracker on a per page basis using the PageFaultHandler and protection functions from system_utils. Check for dirty memory and capture it on draw calls. Bug: angleproject:5857 Change-Id: Ib098f96952db7583d3e6517570c179e7754f54b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3168629 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Jamie Madill f60b152c 2021-12-06T10:19:53 Frame Capture: Merge small frames into single sources. By buffering up the replay functions before writing them out into sources, we can reduce the number of replay files by a large margin. Bug: angleproject:5133 Change-Id: I0a556fd1a3a5f2dcc8a26b761e885c9b7e464cf5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3316200 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e8b186c9 2021-12-09T09:45:20 Frame Capture: Don't unmap regenned buffers in reset. These buffers are deleted and recreated, so unmapping them gives a "resource not mapped" error during replay. Found when working on the "world_war_doh" trace. Bug: angleproject:5133 Change-Id: Id1e6318c44a2a09fa643ef0a72f1d03d8396e5fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3327862 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a24919e7 2021-12-09T10:04:25 Frame Capture: Clear array buffer binding in MEC. This should allow us to properly reset buffer state when capturing vertex attribute pointer state in the per-context (not shared) setup function. Also adds a missing replay state buffer binding update. Fixes a state serialization difference in "badland". Bug: angleproject:5133 Change-Id: I8509dbf7211726ff47f4e7e5ff86a0eb8726d75c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3327861 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Amirali Abdolrashidi 4d0de3d2 2021-12-03T17:09:06 Update the arg types for glMultiDraw*IndirectEXT() * Updated the auto-generated types for arguments "mode" and "type" for glMultiDraw*Indirect and glMultiDrawIndirectEXT functions to PrimitiveMode and DrawElementsType, similar to the other glMultiDraw* functions. Bug: angleproject:6770 Change-Id: If02a66b6fb2f81848ab6e43a6cd406d5956bf331 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3321792 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jamie Madill 9b23be91 2021-12-08T13:55:22 Frame Capture: Fix client buffers in MEC. In some cases we would neglect to reset the currently bound array buffer to "null" before capturing a client array buffer in MEC. Noticed in the "badland" trace context setup. Bug: angleproject:5133 Change-Id: I693edce763b449720a7f2123dcaf460854142e91 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3323683 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d02d6a40 2021-12-06T09:26:14 Frame Capture: Track written files in ReplayWriter. This means we don't need to recreate the list of written files in the JSON where we list the trace files. It will allow for more flexibility when we change what trace files we output. Bug: angleproject:5133 Change-Id: I651b6a281c50040d32361a5a020ba3eaa4241bf0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3316199 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0f09d378 2021-12-07T13:32:39 Frame Capture: Track return value in max resource IDs. This adds handling for return value processing when it comes to maximum resource IDs. Specifically for glCreateShader and glCreateProgram. Fixes MEC with re-capture with the blockman_go and probably other traces that call CreateShader as the final operations during setup. Bug: angleproject:5133 Change-Id: I799dfec776ca8c80a0b89c7f0c7c23423ef3896a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3320887 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki 333e61d3 2021-10-19T16:06:14 trace_fixture: Add UpdateClientBufferData2WithOffset. Adds a function to update buffers with an offset. Bug: angleproject:5857 Change-Id: Iddc0dbcdd123866f31c1382e1eb6fc7e7cb922b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3236997 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Jamie Madill dcadfa87 2021-12-07T10:34:56 Frame Capture: Fix missing header include in shared setup. This could produce undefined string errors in some traces. Bug: angleproject:5133 Bug: angleproject:6772 Change-Id: I336369a035e30fc7d73530084b5e192d60afee1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3320865 Reviewed-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8313ffe2 2021-11-29T15:46:25 FrameCapture: Add ReplayWriter helper class. This centralizes all of the replay file I/O into a single point. Each function is stored separately in this class. Right now there's some small file format changes: - the namespaces for the capture label are gone. these had no functional impact now that each trace was a separate module. - the header is cleaned up into private and public functions. this cleans up a few things like defining non-existent functions. - inline variables are tracked through the replay. they are now global instead of anonymous, and string sets get reused instead of duplicated between frames. There should be no functional changes with the naming of the trace files or the trace behaviour. This change sets the stage for the ReplayWriter buffering multiple frames into a single cpp file on disk, which can potentially reduce the number of object files in the compilation by a great deal. It could also be extended to work with buffered I/O so we don't block and hitch when we're writing large trace files. Bug: angleproject:5133 Change-Id: Ib96685e1202ac8101a4b828fa79642236af2120a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3311940 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6f96a189 2021-12-01T11:14:33 FrameCapture: Clean up 'WriteCppReplayFunctionWithParts'. This function was using two extra temporary streams that it didn't need. Clean this up and remove the extra streams and repeated code. Bug: angleproject:5133 Change-Id: I8065a189211ba9030fee523dc7145dc5daf71d92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3311577 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny 3b6f80b7 2021-11-23T10:07:43 Capture/Replay: eliminate redundant parameters in GenOnBind The template parameter already defines the parameter value name and the parameter value type, so add some traits to simplify the call interface of the function. Bug: angleproject:6425 Change-Id: I037bed8e5cc2e7367d8faa3af5d4fba2bfbb52c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295617 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop ce854632 2021-11-29T10:48:48 FrameCapture: Fix Gen on Bind for MEC The logic for detecting whether a resource has been generated was not accounting for starting resources, which would only be populated if using MEC. We also weren't tracking framebuffer creation correctly in CaptureMidExecutionSetup. Test: Asphalt 9 MEC Bug: angleproject:5883 Bug: angleproject:6425 Change-Id: I8a7dfa4736c4d735dec8cd26ffa329f051927de6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3307778 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 440e5458 2021-11-27T19:55:06 FrameCapture: Integer attribs in MEC If the component type of a vertex attribute is integer, we need to use the appropriate VertexAttribI* functions to set it up. Test: Asphalt 9 MEC Bug: angleproject:5883 Change-Id: I2ab2248e5a36cc6636b081acf6474b5dbe2484db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3305057 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Peng Huang a5e391d7 2021-11-19T17:35:06 Add GL_ANGLE_vulkan_image extension glAcquireTextures & glReleaseTextures are added for sharing texture ownership with an external API. Bug: chromium:1264439 Change-Id: If46d8d230b4f611768b5ff1187674509e42f01e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3293921 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Gert Wollny 1d555687 2021-11-09T11:16:24 Capture/Replay: Set FBO ID when generated on bind GLES allows FBO ID's to be reserved on bind, so if a FBO is bound with and ID that was not yet reserved by a glGenFramebuffers call, update the resource tracking and the resource map to account for this resources that was created on bind. Bug: angleproject:6425 Change-Id: I343fc17bfbbfd9c8c47d6fe207a4f3817acb835d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3190970 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gert Wollny 8d51bd4b 2021-11-19T00:34:22 Capture/Replay: Add default return path for AccessParamValue Some versions of MSVC have a bug that it will not detect when all values of an enum are exhausted in a switch statement, which leads to a warning that not all code path return a value, and since the warning is treated as an error, compilation fails. Bug: angleproject:6721 Change-Id: I4d62191ce83a04ba554dd804f13e7d428afd86a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3291649 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 71bffb8a 2021-11-09T11:16:07 Capture/Replay: Handle newly generated FBOs in tracker Bug: angleproject:6425 Change-Id: I39d22a6770290a0c407ac358b1c059c6a2ddeefa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3269886 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 30c03b56 2021-10-28T12:54:39 Capture/Replay: Capture GetTexLevelParameter return param Bug: angleproject:6180 Change-Id: Ia063d297bab85d6cb559642b9be213cc6f10a9bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3250884 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny fc5fe46d 2021-10-28T12:47:15 Capture/Replay: Capture GetProgramResourceLocation name param Bug: angleproject:6180 Change-Id: I5f27c695c31a32989c579b54e31cccc5b337bd58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3250882 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 95e1d244 2021-10-28T12:24:59 Capture/Replay: Capture GetProgramResource params correctly If a non-nullpointer is passed for length then the the number of param entries that is written is returned in *length. Otherwise, just capture the full buffer size as specified by bufSize. Bug: angleproject:6180 Change-Id: If7c3084e56c990477ddb6e93b8682e27004ba1e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3250881 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Amirali Abdolrashidi ae3f67ab 2021-11-11T20:32:32 Implement GL_EXT_multi_draw_indirect * Auto-generated the code to lay the foundation for the following functions: * multiDrawArraysIndirect() * multiDrawElementsIndirect() Bug: angleproject:6439 Change-Id: I7ab5111692376229515e0d6d9e6148909ce9a8a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276042 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 6fe13477 2021-11-11T00:47:14 Vulkan: Add external's pNext to ANGLE_external_objects_flags ANGLE was chaining VkImageFormatListCreateInfoKHR to VkImageCreateInfo::pNext to support sRGB extensions. For external images, it was unknown whether that was valid because there was no way to know if external used an identical chain of pNexts. This was causing a discrepancy between images created by Chrome and those created by ANGLE as part of an import. This change updates ANGLE_external_objects_flags to take in the pNext chain external has used to create the image so ANGLE could create the image identically. Bug: chromium:1266094 Change-Id: I479b9e7ff39d437425dc91c79834880749766f99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3274177 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jeff Vigil d3e67716 2021-09-21T15:03:15 EGL: EGL_KHR_lock_surface3 Add new extension KHR__lock_surface3 Add new interfaces for locking and unlocking a surface. Test: angle_end2end_test --gtest_filter=EGLLockSurface3Test Bug: angleproject:6062 Change-Id: Ic40708db4db552107025635540a0c62f956d741e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3161447 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny c4921cd8 2021-10-28T12:06:42 Capture/Replay: Capture name in GetProgramResourceIndex Bug: angleproject:6180 Change-Id: I1ee7e49dcfa5df23ff5d81d8ca43dd1843c9b2e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3250880 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
YuxinHu a514df08 2021-10-27T01:25:11 Add detachShader capture calls in MEC This change adds a capture call to detach shader object before deleting the shader object in function GenerateLinkedProgram(), if that is also what the app does. GenerateLinkedProgram() is part of the Mid Execution Capture (MEC), and the purpose of the MEC is to setup a program that more closely mirrors the original app. The game World Cricket Championship2 detaches the shader object before deleting the shader object. With this change, we can follow the same behavior in GenerateLinkedProgram(). This ensures that the Shader Object refcount is decremented to 0 before the CaptureDeleteShader call is applied, and the ShaderProgramID handle assigned to the Shader Object will be released and can be reused for subsequent glCreateShader calls. The total number of ShaderProgramID we need will be consistent between SetupReplayContextShared() and the game uses. We are allocating memory slots for gUniformLocations2 array based on the total number of ShaderProgramID the game uses. Keeping the ShaderProgramID counts the same between trace replay and the game ensures we allocate the right amount of memory for the trace replay. Bug: angleproject:6621 Bug: b/194508692 Change-Id: Ib2810b486a6e9108db2a32f084d650a25f14bebd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3246533 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Lubosz Sarnecki 694c5012 2021-10-14T11:16:29 capture_gles_3_2: Skip capturing debug calls This is analogous to capture_gles_ext. Bug: angleproject:6613 Change-Id: I8917a4cfa060f71ad616ece56038d02bfa12a952 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3237002 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>