src/libANGLE/capture/FrameCapture.cpp


Log

Author Commit Date CI Message
Jamie Madill 16b10a54 2021-05-21T15:35:00 Revert "Capture/Replay: Emit SetupReplay() late" This reverts commit 54ba6f0135715737a55f2dc4fc1cb86874fb98f9. Reason for revert: breaks MEC. Bug: angleproject:5999 Original change's description: > Capture/Replay: Emit SetupReplay() late > > Only emit SetupReplay() after all captured frames have been run, > so that InitializeReplay() is called with values of > readBufferSize and the maxClientArraySize that are sufficiently > large for all frames. > > Bug: angleproject:5965 > Bug: angleproject:5895 > Change-Id: Ic59597dc27f733fb210d7cc5a144a86e54cd2040 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894486 > Commit-Queue: Gert Wollny <gert.wollny@collabora.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> Bug: angleproject:5965 Bug: angleproject:5895 Change-Id: Ia901183b2052fa2b4552ad2e09818a2894fbdf6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911878 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9ba86e06 2021-06-03T13:41:39 Revert "FrameCapture: Write the frame cpp file even if frame is empty" This reverts commit 6619c464e5f6237d7465ec945d24164372aa4196. Reason for revert: breaks MEC. Bug: angleproject:5999 Original change's description: > FrameCapture: Write the frame cpp file even if frame is empty > > The index file will add a reference to this file, and the replay will > also expect that the frame execution function and the context function > exist, so write the file even if the frame is empty > > Bug: angleproject:5939 > Change-Id: I265d061fdae51b86131d145116ad1c0f9ca8c93f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2882581 > Commit-Queue: Gert Wollny <gert.wollny@collabora.com> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5939 Change-Id: I759d44ba847c69faf1caf97a9818836d1be3b058 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2937737 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop a29a64a6 2021-05-26T09:34:52 Capture/Replay: Skip GLGetActiveUniformsiv Test: Genshin Impact MEC Bug: b/181794064 Change-Id: Ib0edfa8d1c063d43c34a65be0144bc5efc4cf19b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2921067 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Gert Wollny 6619c464 2021-05-10T13:00:48 FrameCapture: Write the frame cpp file even if frame is empty The index file will add a reference to this file, and the replay will also expect that the frame execution function and the context function exist, so write the file even if the frame is empty Bug: angleproject:5939 Change-Id: I265d061fdae51b86131d145116ad1c0f9ca8c93f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2882581 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 54ba6f01 2021-05-13T20:33:46 Capture/Replay: Emit SetupReplay() late Only emit SetupReplay() after all captured frames have been run, so that InitializeReplay() is called with values of readBufferSize and the maxClientArraySize that are sufficiently large for all frames. Bug: angleproject:5965 Bug: angleproject:5895 Change-Id: Ic59597dc27f733fb210d7cc5a144a86e54cd2040 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894486 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gert Wollny 421c665c 2021-05-13T21:17:16 Capture: Make writeCppReplayIndexFiles a method of FrameCapture This is useful to not pass a large amount of parameters around. Bug: angleproject:5965 Change-Id: I3890a0ca852729bbf74725fb9e5f4062e20e9158 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894485 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 40f11af8 2021-05-17T23:05:16 Capture/Replay: Ignore delete of non-genned buffers Instead of asserting that the app is calling glDeleteBuffers on buffers we've seen created, ignore buffer names that we haven't seen. This is allowed by the spec: Buffer objects are deleted by calling void DeleteBuffers(sizei n, const uint *buffers); Unused names in buffers are silently ignored, as is the value zero. Test: SAKURA School Simulator MEC Bug: b/188488065 Bug: angleproject:5987 Change-Id: Id4704e544f644dbe3edf6efdf70b5c3ef9ccaba7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2902442 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 4b071880 2021-05-13T16:20:05 Capture/Replay: Add const to string pointer Traces that have shader compiles in the middle of the run are reusing the string pointers on each go through. On some (multiple) platforms, the string pointer is no good on the second run through. This may only happen for large strings. Adding a const qualifier on the pointer itself, not just the string, avoids the issue. This has the effect of changing strings from this: const char *glShaderSource_string_0[] = { const char *glShaderSource_string_1[] = { to this: const char* const glShaderSource_string_0[] = { const char* const glShaderSource_string_1[] = { Test: Pokemon Go MEC Bug: b/188091629 Bug: angleproject:5968 Change-Id: Id6a05c955adb3e1c43d2723450be6b5278d99fba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2895328 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 83d22b66 2021-05-13T16:10:54 Capture/Replay: Skip glGetActiveUniform Apps are querying GL_ACTIVE_UNIFORMS and then walking through them all numerically, calling glGetActiveUniform on each one. Before this CL, our trace would also walk through them all, exactly as the app. But, the active uniform count can vary on different platforms depending on how aggressive the underlying compiler is. We have at least one that does cross stage optimizations eliminating more active uniforms than others. Rather than check each call against the actual number of active uniforms, we can just drop the calls to glGetActiveUniform. We don't actually use any of the results from the call. For example, this is what we generate before this CL: glGetActiveUniform(gShaderProgramMap[144], 31, 1024, reinterpret_cast<GLsizei *>(gReadBuffer), reinterpret_cast<GLint *>(gReadBuffer), reinterpret_cast<GLenum *>(gReadBuffer), glGetActiveUniform_name_30); This has the downside of moving away from reflecting what the app actually sent down. The alternatives are too intrusive though, and we want to stay as close to speed of light as we can. Test: Pokemon Go MEC Bug: b/188091629 Bug: angleproject:5968 Change-Id: I1263f2256c6a964dac54d9997a1c1c2dceac711b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2895327 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 8ea11eb7 2021-05-13T15:54:41 Capture/Replay: Reset programs on loop Apps that create new programs during the run need to have them deleted on loop. This CL handles that. It does not handle programs that have been deleted and need to be recreated, or that have been modified otherwise. An assert has been included to catch that for future needs. With this CL, entries like this will show up in ResetReplay: ... glDeleteProgram(gShaderProgramMap[120]); glDeleteProgram(gShaderProgramMap[121]); ... Test: Pokemon Go MEC Bug: b/188091629 Bug: angleproject:5968 Change-Id: I78c425e8fe95792fc626484641d067613dfae971 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2895326 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 31cd0e98 2021-05-10T10:37:54 Capture/Replay: track robustResourceInit Bug: angleproject:5938 Change-Id: I7c9ab9bebd1ec2dc572a071844a860f99d0befe6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2882580 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Lubosz Sarnecki 51d02ca0 2021-05-06T15:16:16 FrameCapture: Use gl*Separate functions only when required. Use non-separate stencil and blend functions that do not distinguish between front and back buffers or color and alpha, if they apply. This prevents capturing GLES2 functions on GLES1 contexts. Bug: angleproject:5893 Change-Id: I8303ee5b279268ea9c21e2c6465e1b155d1cc54d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2877238 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 4901ac64 2021-05-06T15:15:57 FrameCapture: Capture GLES1 specific states. Implement capturing GLES1 specific state by checking the difference to the default state using getEnableFeature. When getEnableFeature is called from a context version higher than 1 and a GLES1 state is requested, an assertion is hit. Therefore the context version needs to be determined before calling getEnableFeature. Use the available isTextureTargetEnabled function to determine GL_TEXTURE_2D and GL_TEXTURE_CUBE_MAP states in getEnableFeature. Return false in isTextureTargetEnabled when mTextUnitEnables is empty, so the vector is not accessed when not initialized, which was the case for a default state. Bug: angleproject:5893 Change-Id: I66ee41c3bf7a8e1f04a8a4ce0461fddc16f9a013 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2877237 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 83e5bb97 2021-05-06T15:15:42 FrameCapture: Don't capture shader functions on GLES1. Since an internal default shader is created and captured here in the GLES1 case, we need to check for the context version to skip capturing glUseProgram and emit an update call in GLES1 traces. Bug: angleproject:5893 Change-Id: Iac9bc05234fbc87c1f64264b5c12b9b117522bad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2877236 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Lubosz Sarnecki 078ebbcf 2021-05-06T17:07:14 FrameCatpure: Move capturing default vertex attribs to function. Don't capture these on GLES1, due to the unavailability of glVertexAtrrib4fv. Bug: angleproject:5893 Change-Id: Iafbc9219cfc0a0c1d0a55e112ee88d7180ed94f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2877235 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Lubosz Sarnecki e40edf92 2021-05-06T17:06:58 FrameCapture: Add GLES1 support to CaptureVertexArrayData. Implement CaptureVertexPointerES1 that captures specific GLES1 vertex pointer functions depending on the attribute index. Use GLES1 capture functions in CaptureVertexArrayData by detecting the current context version. Implement VertexArrayType function in GLES1Renderer to get a ClientVertexArrayType enum from a vertex attrib index. Bug: angleproject:5893 Change-Id: I442b2e29475ca817860388cafc120db90a0fb9c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2846838 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Lubosz Sarnecki 78fb9314 2021-04-29T18:05:12 FrameCapture: Capture GLES1 vertex buffer pointers. CaptureVertexPointerGLES1 was expecting only client-side vertex arrays and not checking whether a vertex buffer was bound. This patch fixes offsets in vertex buffers for GLES1, which can be seen in apps like Dr. Driving. The mClientVertexArrayMap index is now retrieved by entrypoint name, as the arrayClientPointerIndex is unset in the vertex buffer case. Bug: angleproject:5751 Change-Id: If40cae56bcdbed57885e83c49291cb000a884b0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2859826 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Gert Wollny 39cef942 2021-04-27T08:28:13 Capture/Replay: capture WebGL compatibility With that we can also enable the tests DifferentStencilMasksTest.* Bug: angleproject:5851 Change-Id: If2c992e456716f606320e3992f389823d0af050f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2853584 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 7444466c 2021-04-19T18:44:13 Reland "Capture/Replay: Reset GL Fence Sync objects" This is a reland of 9b4fd5456e3cc8c5412af96212d2840b422208b5 This fixes the original CL by moving where setCaptureActive() is called to allow the first replay source file to be written. Original change's description: > Capture/Replay: Reset GL Fence Sync objects > > Asphalt 9 uses GL Fence Sync objects during rendering, which results in > Fence Sync objects being created during setup and deleted while > replaying frames. When the replay is restarted, the Fence Sync objects > that were created during setup and deleted during the replay need to be > recreated during the reset phase. > > Bug: angleproject:5883 > Bug: angleproject:4599 > Change-Id: I118f2b7208c4d512ab646b10f52b3a0936895089 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2838237 > Commit-Queue: Tim Van Patten <timvp@google.com> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5883 Bug: angleproject:4599 Bug: angleproject:5900 Change-Id: I5e1d901d8875007691699b7b973f3fb7db027337 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2850758 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 3839fa5b 2021-04-26T13:08:15 Revert "Capture/Replay: Reset GL Fence Sync objects" This reverts commit 9b4fd5456e3cc8c5412af96212d2840b422208b5. Reason for revert: Breaks capture: INFO:root:Passed: 0, Comparison Failed: 0, Crashed: 0, CompileFailed 0, Skipped: 745, Timeout: 0 Bug: angleproject:5900 Original change's description: > Capture/Replay: Reset GL Fence Sync objects > > Asphalt 9 uses GL Fence Sync objects during rendering, which results in > Fence Sync objects being created during setup and deleted while > replaying frames. When the replay is restarted, the Fence Sync objects > that were created during setup and deleted during the replay need to be > recreated during the reset phase. > > Bug: angleproject:5883 > Bug: angleproject:4599 > Change-Id: I118f2b7208c4d512ab646b10f52b3a0936895089 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2838237 > Commit-Queue: Tim Van Patten <timvp@google.com> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5883 Bug: angleproject:4599 Change-Id: I56c682e1d90dcdde7b18c941aad976825de3af42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2851057 Reviewed-by: Jamie Madill <jmadill@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 9b4fd545 2021-04-19T18:44:13 Capture/Replay: Reset GL Fence Sync objects Asphalt 9 uses GL Fence Sync objects during rendering, which results in Fence Sync objects being created during setup and deleted while replaying frames. When the replay is restarted, the Fence Sync objects that were created during setup and deleted during the replay need to be recreated during the reset phase. Bug: angleproject:5883 Bug: angleproject:4599 Change-Id: I118f2b7208c4d512ab646b10f52b3a0936895089 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2838237 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gert Wollny 3e1af85a 2021-04-19T18:12:30 Capture/Replay: Handle bindGeneratesResource in trace meta data Bug: angleproject:5844 Change-Id: I0243cab70b5833efd83b0d75a1801f68025ee291 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2835889 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gert Wollny c1da2794 2021-04-19T11:49:41 Capture/Replay: Handle ClientArraysEnabled in trace meta data Bug: angleproject:5848 Change-Id: Ieba325e2b5efa3242b24cafa8363e562c258546c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2835888 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten fbfecbe2 2021-04-07T11:26:13 Capture/Replay: Add PPO/glProgramUniform support Command and Conquer: Rivals requires additional frame capture API support: - Program Pipeline Objects - glProgramUniform* Bug: angleproject:5830 Change-Id: I159086f92d2dfead0a513cd17fadeda7df92f408 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2809891 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop fdfb2b82 2021-04-09T15:42:12 Capture/Replay: Support non-binary GLboolean This CL contains two changes. One to how we print out GLboolean values, and another to how we capture GLbooleans. According to the spec, anything non-zero can be considered GL_TRUE when setting state: When the type of internal state is boolean, zero integer or floating-point values are converted to FALSE and non-zero values are converted to TRUE. Dota Underlords is using 0xFF for GL_TRUE. Before the change, this manifested as: // logcat glColorMask(context = 4, red = kUnknownGLenumString, green = kUnknownGLenumString, blue = kUnknownGLenumString, alpha = GL_FALSE) // trace glColorMask(GL_INVALID_ENUM, GL_INVALID_ENUM, GL_INVALID_ENUM, GL_FALSE); After: // logcat glColorMask(context = 4, red = 0x00FF, green = 0x00FF, blue = 0x00FF, alpha = GL_FALSE) // trace glColorMask(0xFF, 0xFF, 0xFF, GL_FALSE); Test: MEC for Dota Underlords Bug: b/185192780 Bug: angleproject:5857 Change-Id: Ie53aeba8d8a40f91ee375467b325d8e6be053a98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2821947 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 4f723d2c 2021-04-09T15:42:36 Capture/Replay: Support glBufferStorageEXT Add the entrypoint, and when a buffer is immutable, recreate it with glBufferStorageEXT. Test: MEC for Dota Underlords Bug: b/185192780 Bug: angleproject:5857 Change-Id: I29b934bdff4185d19594e49e9387dd79c6031aa5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2821945 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Gert Wollny fb3173b9 2021-04-13T15:05:44 FrameCapture: write the float values with high precision Because values might be the result of calculations that require some accuracy, writing the float values with the default formatting may not be sufficient to replay correctly, therefore format the values so that they carry more digits. In addition, enable the test that are now passing. Bug: angleproject:5846 Bug: angleproject:5847 Change-Id: I305552a1ffa3cded6326df59883912e14c95f5f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2822257 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop d49f7351 2021-04-07T08:46:16 Capture/Replay: Ignore deletes of buffer 0 Per the spec for DeleteBuffers: > Unused names in buffers are silently ignored, as is the value zero. Haven't seen an app delete unknown buffers yet, but just hit one that deletes 0 a lot. Test: MEC for Disney Tsum Tsum Bug: b/184770989 Bug: angleproject:5835 Change-Id: I2070b753d89fdcf390203072cd7ec2c9f915089c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2811643 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki fddbc9c7 2021-03-04T20:45:01 capture: Implement capturing GLES1 vertex pointers. Implement capturing glVertexPointer, glTexCoordPointer, glNormalPointer, glColorPointer and glPointSizePointerOES using a new CaptureVertexPointerGLES1 helper function. This is done by using fixed indices for gClientArrays that are retrieved from the GLES1Renderer. Bug: angleproject:5751 Change-Id: I6c774ff21942ea3422c4c77a615f88299901c0ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2773288 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Jamie Madill 78dde332 2021-03-29T17:31:52 Move restricted traces to CIPD. All traces are now stored as DEPS entries in CIPD. The auto-generation script generates the DEPS entries. Note that we don't include DEPS in the list of generated outputs to simplify other rollers. Also we update auto-generation to include full sources list to allow 'gn analyze' to work successfully. Usees a trace fixture for common code. This will enable a more compact trace without as much repeated code. We must land a set of re-trace traces to avoid breakage. Also includes a python script for uploading new traces to CIPD. The script first checks if traces are already present in the cloud, and if so it skips the upload. It will take a while to complete as the number of traces grows larger as it takes a few seconds per trace. The traces in this patch are also re-traced to use the common fixture code instead of including duplicated code in each trace. They now form a simple common interface and the autogenerated cpp is now simply a list of properties. I've also updated the capture/replay tests to use the simpler common entry point integration. There is less auto-generated glue code now. We now use a new serialized string query extension instead of calling directly into ANGLE's internals. Also includes a docs update. The capture/replay sample is broken and we'll need to update it in a follow-up CL. Also includes a few necessary fixes to the retracing script. Bug: angleproject:5811 Change-Id: I977bc6dc56843c8966377fc445ae97e91e17319a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2797833 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 67e4aff5 2021-04-02T13:17:00 Fix rapidjson build error in Skia. Instead of using defines in the header, use the same approach as we do with frame capture by defining a stub "mock" cpp file. Bug: angleproject:5805 Change-Id: Ief1cb6497ddafc9656bb0e7d6a921eff3610a7fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2801695 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny cee0bfd6 2021-03-15T14:39:30 Capture/Replay: serialize context to JSON Bug: angleproject:5715 Change-Id: Ibc6897d7567fedab4a2ba7bf8d2bd5a7e496bd4b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2760325 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny e0b9d4f7 2021-03-15T11:25:39 libAngle: Add Json context serializer library Bug: angleproject:5715 Change-Id: I42319fe30e42d49d7e817b14c211b5ba82a94a42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2760324 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop a70a6a9d 2021-03-09T10:38:13 Capture/Replay: Fix compressed cube textures We were only tracking one image per level of cube map textures. Instead, we need to track one per face (6). Test: MEC for Extreme Car Driving Simulator Bug: b/180419767 Bug: angleproject:5735 Change-Id: I59e6a5e83a60666a29f44d0a1e1993a1b461e8e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2744293 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Lubosz Sarnecki c11186c2 2021-03-02T14:42:08 capture_replay_tests: Fix MemoryObjectTest. Add gles_ext_params Capture functions for MemoryObjectsEXT. Add case for GLCreateMemoryObjectsEXT to MaybeCaptureUpdateResourceIDs. Don't skip MemoryObjectTest, as it passes now on SwiftShader ES2. Bug: angleproject:5703 Change-Id: I930fab675cf0848f46a846388955a6bd3274a587 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2729004 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop bdd1ac23 2021-02-25T16:31:25 Capture/Replay: Add CubeMapArray support Test: Recapture Lego Legacy: Heroes Unboxed Bug: angleproject:5685 Change-Id: I41a5ceb72724ab28ce3d57a85108d3dd806d976f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2721103 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 7ff605a5 2021-02-23T21:45:40 Capture/Replay: Fix compressed texture level caching Before this commit, the following sequence would cause an assert: glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_8x8, ...); glCompressedTexImage2D(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGBA_ASTC_8x8, ...); This is due to code we added that clears the compressed texture cache when it detects we already have an entry for the texture level. This is allowed in GL, to respecify a texture level by simply calling glCompressedTexImage on it again. The problem is we would clear the entire texture from the cache, not just the level being respecified. Test: Recapture Asphalt 8 Bug: angleproject:5678 Change-Id: I473d6ea1cb8823bfec680ddd78c3457b93ecc431 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2716639 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 51c5137a 2021-01-05T16:58:50 Capture/Replay: Add texture buffer support Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: I2025f0b88f7488a827159029e6d04a4cf4e9a1b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2611558 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 19e4cf86 2021-02-09T21:49:42 Capture/Replay: Some fixes for capturing WebGL Bug: angleproject:5635 Change-Id: I756471fbad34660c494fb7f9ba1144accd5c08b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2686119 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 6fc10389 2021-02-10T11:20:16 Move Frame Capture to capture/ folder. This will make it easier to trigger the trace tests when these files are modified. Bug: angleproject:5530 Change-Id: I5f0c450595b380cd91b20c1477dc1845bee35dd9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2686120 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>