|
dc62b3ee
|
2022-10-10T21:00:16
|
|
Capture/Replay: Add trace interpreter.
Also adds a self-test using the retrace script.
Bug: angleproject:7752
Change-Id: I1985b47250bef99726d2ca2d90bef859208e357e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3965128
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
06ecc918
|
2022-10-10T20:59:38
|
|
Capture/Replay: Optionally emit C sources.
This adds an option that controls if we can write out simplified C
replays. Once the work is finished we can remove the option and
only allow emitting C instead of both C and CPP.
Required emitting multi-line strings differently, as well as
conditionalizing a few other language differences.
Bug: angleproject:7713
Change-Id: I3303134316ed3fc1b4286bcd32961e8f7ecfbb06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3953339
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
596c2acf
|
2022-10-20T18:59:04
|
|
FrameCapture: Fix FenceSync for MEC
Follow up to:
https://chromium-review.googlesource.com/c/angle/angle/+/3957164
Test: MEC for Grimvalor
Bug: angleproject:7758
Change-Id: Ia0895e923d9bee41bcfbff48d15bf9aa86e29d17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3969519
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6193274a
|
2022-10-10T21:00:12
|
|
Capture/Replay: Redesign in-memory call capture replay.
This will allow the replay to use the call captures returned
by the interpreter's parser.
Bug: angleproject:7752
Change-Id: If1b281d9ce7ccfbdc23bea615e1e2258c8a029f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963367
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
fd45cec3
|
2022-10-10T20:59:58
|
|
Entry Points: Move enum helper to registry_xml.
This will make it accessible to other generators.
Bug: angleproject:7752
Change-Id: I91bc9a4d6c919266ea329f66d271bf881d99d17a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963364
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4bfb749f
|
2022-10-10T20:59:48
|
|
Capture/Replay: Move shared trace code into src/common.
This will let them be accessible to the test harnesses. The
trace tests interpreter will need direct access to the classes
that we move in this CL.
This CL also moves the GLenum utils into the common folder,
where they were already used by some other tests.
Bug: angleproject:7752
Change-Id: I97ad607938ef29bc316f6d40098478e002ea8128
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963362
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
5ec6f8dd
|
2022-10-10T20:59:42
|
|
Capture/Replay: Only inline strings.
This will simplify the trace code and the parsing logic.
Previously we wrote some integer data in the cpp file, e.g.:
const GLenum glDiscardFramebufferEXT_attachments_0[] = {...};
glDiscardFramebufferEXT(..., glDiscardFramebufferEXT_attachments_0);
Bug: angleproject:7731
Change-Id: If7924b1bf231f584f4677a438232bedc7ea9bd69
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3953338
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
8403e4c5
|
2022-10-10T20:59:29
|
|
EGL: Resource IDs for Surface, Context and EGL Image.
This will make these classes play nicely with resource maps. As these
objects are used in a lot of places, and simplified C can't handle
unordered_map, it's necessary to index the maps by simple packed IDs
in capture/replay code. This indirection will also have increased
safety as we validate EGL resource ID handle values before accessing
the memory directly.
Also hides some of the other EGL capture methods behind helper methods
to simplify the C code and hide assignments and other complex maps.
Bug: angleproject:7758
Change-Id: Ibc7bb56430d3068bd38877c9dfb011979d4ea234
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3957164
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
bb420af7
|
2022-10-10T20:59:24
|
|
Capture/Replay: Rewrite map buffer calls.
This wraps the map calls into simple helper functions that
hide the return value assignment, which in turn will simplify
C parsing.
Allows us to remove storing the mapped buffer ID in the params.
Bug: angleproject:7731
Change-Id: I756574cc0fa3d63cce4e0103b8f2861d093de186
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3953335
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
4f85f862
|
2022-10-10T20:59:19
|
|
Capture/Replay: Remove references to uniform block indexes.
This removes the references in captured traces to the uniform
block index map. Because uniform block indexes use a double
indirection, we store them in an unordered map. Moving to plain
C precludes all uses for templated types, so we need to funnel
the calls through a custom function.
Bug: angleproject:7731
Change-Id: I35ae010b880ee669df09d750d5fb26d3baf907cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3953334
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2265e37b
|
2022-10-12T09:27:16
|
|
Capture/Replay: Auto-generate EGL capture code.
Replaces the custom code in the EGL stubs. Skips a few "Get"
entry points because this CL doesn't implement pointer capture
like we do for all the GL entry points.
Includes a new state in the AttributeMap that indicates which
type of attribute values we used when initializing the map.
Bug: angleproject:4035
Change-Id: I272eac5e4068602ce710ef66c9a1dce5387943a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949911
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
7c4dc253
|
2022-10-12T08:38:46
|
|
Capture/Replay: Clean up EGL capture.
This switches the EGL capture types to ANGLE-casted pointers since
that's what we receive in the capture layer. Note that even if the
capture layer were used as a pure layer, not an EGL implementation,
we'd still have these types for state tracking.
This also prefixes each EGL class in the entry points with the egl
namespace for consistency and for simplifying the ParamType code.
Required changing to non-const gl::Context * in a few places. Also
changes the gSurfaceMap to be indexed by the raw pointer value,
which cleans up the code somewhat.
Bug: angleproject:4035
Change-Id: Id800c1ba25e5819ac7ea1df8aab806bc393fe192
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949910
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c22f091d
|
2022-09-29T18:58:33
|
|
Replace Hard-Coded egl image attribs
This change is adapted from https://crrev.com/c/3838866
Added two hash maps to track below information:
EGLImage* --> EGLint* attrib
TextureID --> EGLImage*
During the CaptureShareGroupMidExecutionSetup,
when we iterate through all the textures the app created,
if the texture is bound to External target,
we will refer to the hash map TextureID --> EGLImage*
to find the EGLImage* pointer, and then use the result
as the key to refer to the other hash map
EGLImage* --> EGLint* attrib to find the attributes used
to create that EGLImage object. We can then use the
attributes to populate eglCreateImage or eglCreateImageKHR
calls in the trace calls.
Bug: angleproject:7570
Change-Id: I729de4ddea59242ccbe6243e036451f290545185
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3928212
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
135022e4
|
2022-10-11T00:03:11
|
|
Vulkan: Create robust pipelines based on context state
Previously, pipelines were made robust based on whether any context in
the share group has so far been made robust. This means that pipelines
created on non-robust contexts would still be compiled as robust.
Inefficiency aside, this was buggy because robustness was not part of
the pipeline cache key, so if a pipeline was created as non-robust
first, then recreated in a robust context, it would reuse the non-robust
variant.
With VK_EXT_pipeline_protected_access, a similar situation arises for
context protected-ness. However, it is incorrect in that case to create
pipelines as protected unnecessarily.
This change makes pipeline robustness a part of the pipeline cache key,
in preparation for protectedness to be added similarly. Compute
programs may now generate multiple pipelines as a result too.
Bug: angleproject:7629
Change-Id: Ie95f10eff878f8c8b221c1018da44385c7aad15e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3943534
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
f2785e41
|
2022-10-10T08:21:36
|
|
capture/replay: validate after resetting unpack alignment
Otherwise validation will fail, because we try to validate
the temporary set alignment against the alignment that
would be active without MEC.
Bug: angleproject:7564
Bug: angleproject:7180
Change-Id: I40cac84be122c779b9beba39f155567f9edbee75
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3936631
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
5bafe449
|
2022-10-05T20:09:23
|
|
FrameCapture: Create default context reset calls
Add support for emitting default reset calls for some entrypoints
when recording a capture from the beginning.
Test: Lineage 2 Revolution MEC
Bug: angleproject:7741
Change-Id: I8e4e1184f3e3b68527a65283c459a43d135e95b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3938442
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
63c54da3
|
2022-09-29T22:32:54
|
|
FrameCapture: Fix default uniform sampler base loc
Follow up to:
https://chromium-review.googlesource.com/c/angle/angle/+/3928253
Samplers are handled specially above the previous changes.
Test: Darkness Rises MEC
Bug: angleproject:7719
Bug: angleproject:7720
Change-Id: I72848eaced4da379fe724aebf61a75616f614e1c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3929328
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
6dc30c00
|
2022-09-29T08:41:53
|
|
FrameCapture: Reset default uniform arrays
If an application has updated a single uniform in the middle of an
array, we need to emit the Reset call for the entire array. We don't
track Reset calls per individual location in an array.
Test: Life is Strange MEC
Bug: angleproject:7711
Change-Id: Idec991ad060eb5e12272713a58aa921c5912f1cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3928253
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
dbb9f38d
|
2022-09-13T12:08:02
|
|
FrameCapture: Capture Texture Environment in MEC.
Persist the state of glTexEnv in mid-execution capture
for OpenGL ES 1.X contexts.
Implement equality operators overload
for the TextureEnvironmentParameters struct.
Test: angle_end2end_tests --gtest_filter="TextureEnvTest.*"
Bug: angleproject:7652
Change-Id: I131eec5c838c9e434e135bd3c6b050fca44c3231
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3892015
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9393fd54
|
2022-09-13T20:06:57
|
|
FrameCapture: Ignore GetActiveAttrib
Similar to how we skip glGetActiveUniform, we also need to skip
glGetActiveAttrib. Attribute active status varies based on the
underlying shader compiler. More aggresive stacks can find ways to
eliminate them. If the application asks about attributes above
GL_ACTIVE_ATTRIBUTES, a GL error is thrown, causing a trace to be
non-portable.
Tested with Eve Echoes and Monster Hunter Stories.
Also added an end2end test that showcases a way apps ask about
attributes, verified we can capture and replay it across multiple
vendors now.
Test: VertexAttributeTestES3.UnusedAttribsMEC
Bug: angleproject:7215
Bug: angleproject:7557
Bug: angleproject:7402
Change-Id: I3c655bcead0ddb1677f8e1d49cb7d3f3c6b4feba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3866041
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
8581e5fa
|
2022-08-05T14:52:22
|
|
FrameCapture: Improve renderbuffer reset
Add support for recording calls to regenerate renderbuffers, and
track when renderbuffers are deleted.
Test: Monster Hunter Stories MEC
Bug: angleproject:7557
Bug: angleproject:4599
Change-Id: Ib32abaaf4b5f4767c5c9ede312a29e7f108bd93d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3815224
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
585d2a9e
|
2022-08-11T16:45:54
|
|
Capture/Replay: Capture the attr locations as set by the program
Setting the attribute location based on the input declaration
results in a discrepancy with MEC when recording the context state,
because if a location was never set explicitely, the captured
context state will hold no attribute location information, but
since calls were recorded to set the default attribute locations,
the context state recorded during replay will contain these extra
entries.
To avoid this, only record the attribute locations that were
explicitely set.
Bug: angleproject:7564
Change-Id: Ib9d6c7b098935d199921e0fe5c0ef985e6187f1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827345
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
1cac338a
|
2022-08-30T11:15:16
|
|
FrameCapture: Fix GLES1 vertex array state
This CL restores the check for default state before binding
a vertex array in Setup.
When hooking up reset of Vertex Array state, we inadvertently
started recording glBindVertexArray, even for default state. This
prevented traces from running on GLES1 implementations that don't
support GL_OES_vertex_array_object.
Test: Wayward Souls MEC
Bug: angleproject:7507
Bug: angleproject:7608
Change-Id: I7aea74b7eb66c0e79a04d81c2dce61fa33dde807
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3863877
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
6ec89510
|
2022-08-31T11:10:45
|
|
Frame Capture: Remove MEC active variable.
We only used this in one place, where we can instead use a check
for frame capture being active generally.
Bug: angleproject:7621
Change-Id: Ic004e3021750a6c43443eb8935b59514e8c06978
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3868931
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
64f41972
|
2022-08-25T11:16:23
|
|
Use canonical gl.xml and update enum to string function.
This replaces our copy of gl.xml with the upstream canonical copy.
Note that one patch is required before we can remove ANGLE's copy:
https://github.com/KhronosGroup/OpenGL-Registry/pull/538
Because the upstream version uses a new method of enum groups, we
also update our enum-to-string generator to use the new groups.
This new code includes many more enums and groups in the mapping.
Bug: angleproject:6461
Change-Id: I1c0ab44c36afce8db04c9661b377bbe5762c913e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3856649
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
68b6206e
|
2022-08-19T16:39:01
|
|
FrameCapture: Fix capturing glBindRenderbuffer on GLES1.
Use FramebufferCaptureFuncs when capturing glBindRenderbuffer calls on
GLES1 contexts, since they require the GL_OES_framebuffer_object
extension and will otherwise crash on certain native GL drivers.
Bug: angleproject:7596
Change-Id: I7be1b0dee38c9186b657489ca76bf769f47caeb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3849478
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
|
|
b688c909
|
2022-08-11T13:14:49
|
|
Capture/Replay: save and restore UNPACK_ALIGNMENT in MEC
MEC replay requires an unpack alignment of one. When creating a
trace the call to set this alignment is emitted, but it is not
actually set in the context, so that the captured context state
records the actual unpack alignment. When replaying, the call
to set the unpack alignment to one is executed, and the context
state changed, so that comparing the captured context to the
replay context will fail if the original alignement was not one.
Restore the original alinment in the context setup functions to
ensure that the context state holds the same state information
when replaying like when the trace was captured.
Bug: angleproject:7564
Bug: angleproject:7180
Change-Id: I09d9bf77bc0193bdf9f41b6183f1ee8d66c5e563
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827346
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
15b1678f
|
2022-08-19T13:13:42
|
|
FrameCapture: Add VertexArrayCaptureFuncs.
Analogously to FramebufferCaptureFuncs, append OES suffixes to vertex
array related functions on GLES1 contexts. These functions require the
GL_OES_vertex_array_object extension and will crash on certain native
drivers without the OES suffix.
This resolves the following validation error when replaying GLES1
traces captured using MEC on ANGLE:
glBindVertexArray: GL error: HIGH: OpenGL ES 3.0 Required.
Bug: angleproject:7596
Bug: angleproject:7608
Change-Id: I603efae4a8d61b84b7711effb2e7e1d8d52e3d83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3849477
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
|
|
94a23a4e
|
2022-08-21T19:52:50
|
|
FrameCapture: Fix separable shader uniform locs
Uniform locations are tracked by traced program ID, not remapped
program ID. This was creating code that used incorrect locations
and would immediately crash.
For instance, the following code:
glProgramUniform4fv(gShaderProgramMap[92],
gUniformLocations[gShaderProgramMap[92]][12], 1,
reinterpret_cast<const GLfloat *>(&gBinaryData[0]));
gShaderProgramMap[92] happens to remap to 54 during replay.
But if you look in UpdateUniformLocation, we track uniform locations
based on the trace program (92):
// Example call: UpdateUniformLocation(92, "fullmatrix", 0, 1);
void UpdateUniformLocation(GLuint program, const char *name, GLint
location, GLint count)
{
...
gUniformLocations[program] = programLocations.data();
}
So when gUniformLocations[gShaderProgramMap[92]] is used, it tries
to look up uniform locations for 54, which don't exist, and returns
nullptr.
To fix, don't use gShaderProgramMap when looking up locations of
uniforms. This only affects separable programs. Normal glUniform
calls use gCurrentProgram which is already the trace program (92).
The new code looks like this:
glProgramUniform4fv(gShaderProgramMap[92],
gUniformLocations[92][12], 1,
reinterpret_cast<const GLfloat *>(&gBinaryData[0]));
Test: Antutu Refinery MEC
Bug: angleproject:7590
Change-Id: I079923ec8d938356e72e929d61f80c7fc371a95b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3844642
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
429a7cab
|
2022-08-21T19:50:32
|
|
FrameCapture: Fix cube face as framebuffer
This fix is required for Antutu Refinery benchmark, which has cube
faces mapped as framebuffer attachments.
Test: Antutu Refinery MEC
Bug: angleproject:7590
Change-Id: I5eec5fcbe12ac7486499b047a4b7564b3bc2690f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3844641
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
266d0a83
|
2022-08-09T22:08:03
|
|
Skip glObjectLabel in replay capture
Similar entry points are also skipped, so it's likely the list was just
missing this one.
Bug: angleproject:7567
Change-Id: I1d7e37b35960fd71fdec9143d9193dee6f97e1f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3824777
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
4c941149
|
2022-08-12T11:42:07
|
|
External Texture Support In MEC
Bug: angleproject:4964
Change-Id: I5cfbadf515a30fb20d75b2d745fdecdafa12268f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3812378
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Faye Zhang <ffz@google.com>
Commit-Queue: Faye Zhang <ffz@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2ebd5100
|
2022-08-11T10:43:32
|
|
Add gl::Context as a parameter to Shader::resolveCompile
This prepares us to access the Context's shader cache in resolveCompile
in the next commit.
Bug: angleproject:7036
Change-Id: I7995c54b290a5a48f0c8985cb56ea0048598ab2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827642
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a2ad517f
|
2022-08-06T07:54:16
|
|
Replace std::vector with angle::FixedVector in FramebufferState.
Using std::vector causes heap allocation for all new framebuffers,
so change it to angle::FixedVector.
Bug: chromium:1336126
Change-Id: I2e059324d14d59ba2a42b2bb4cd5c569a439a87a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3812563
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Auto-Submit: Peng Huang <penghuang@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
f020c713
|
2021-10-12T20:29:15
|
|
Capture/Replay: Allow capturing Gen/Delete with zero elements
This is allowed, and hence the capture/replay should also work.
Bug: angleproject:6558
Change-Id: Iae40e2870f9ff121c8396ee4c0caf0905d3fd84c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3220632
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
8b627444
|
2021-10-13T10:58:40
|
|
Capture/Replay: capture program with ActiveShaderProgram too
Here the program parameter is the second parameter, so
UpdateCurrentProgram needs some refactoring too, to support
specifying the parameter position.
Bug: angleproject:6560
Change-Id: Iea08e1c0b7271bcd82aba64898cec76c09edefbb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3220690
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
5a682795
|
2021-10-19T18:10:43
|
|
Capture/Replay: Fix glAttachShader filtering
Dota Underlords capture was filtering shaders that should be active.
It is using a pattern that creates shaders in advance, then attaches
them in later frames. This requires MEC to setup the shader, but
not the program.
We were failing to set those active because glAttachShader refers to
two ShaderProgramIDs, and we've only been scanning for the first in
any given API call:
glAttachShader(gShaderProgramMap2[1], gShaderProgramMap2[2]);
This CL fixes it by scanning for all ShaderProgramIDs in each call.
Test: Dota Underlords MEC
Bug: angleproject:5857
Change-Id: I1f76ad3345178cdfeb00479a84489dd363858e13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3233875
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
d8c18ac6
|
2021-10-08T13:00:19
|
|
Re-land: "Isolate commit_id.h from other code."
Re-land limits the angle_version deps to Windows to fix an iOS
visibility rule violation in GN.
Instead of recompiling multiple source files, we can seal off the
files that include commit_id to prevent recompilations when the
commit changes and source files don't change.
Bug: angleproject:2551
Change-Id: I033f00ec7afe4bfd01e29e0eea8848eea27747a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3233899
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7defdb60
|
2021-10-19T14:07:07
|
|
Revert "Isolate commit_id.h from other code."
This reverts commit 6d7ebf656d06f1152967aa5f4457d3787a24732c.
Reason for revert: Suspected reason for failing ANGLE roll into Chromium
Original change's description:
> Isolate commit_id.h from other code.
>
> Instead of recompiling multiple source files, we can seal off the
> files that include commit_id to prevent recompilations when the
> commit changes and source files don't change.
>
> Bug: angleproject:2551
> Change-Id: I98800c5a8e04ec7d4c3e57ea0eb3b636d3b224bb
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212895
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Bug: angleproject:2551
Bug: angleproject:6588
Change-Id: I19f41141f57d0683efb9a4ec043e078a9f7dc925
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226056
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
6d7ebf65
|
2021-10-08T13:00:19
|
|
Isolate commit_id.h from other code.
Instead of recompiling multiple source files, we can seal off the
files that include commit_id to prevent recompilations when the
commit changes and source files don't change.
Bug: angleproject:2551
Change-Id: I98800c5a8e04ec7d4c3e57ea0eb3b636d3b224bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212895
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
bb5dbd49
|
2021-10-05T11:57:44
|
|
Capture/Replay: Handle TvoidPointer in specialization
Bug: angleproject:6521
Change-Id: I863ad5307498e6394f5fbe3e650ce29c821083b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204960
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
8770cefc
|
2021-10-04T13:47:23
|
|
Capture/Replay: Store enums to JSON as hex
We're storing some enums in the per-trace JSON as decimal.
This makes them difficult to read, i.e.:
"DisplayDeviceType": 12810,
"DisplayPlatformType": 13392,
"DrawSurfaceColorSpace": 12425,
If we instead convert them to hex, they are much easier to
read and grep the source for.
"DisplayDeviceType": "0x320A",
"DisplayPlatformType": "0x3450",
"DrawSurfaceColorSpace": "0x3089",
Since JSON doesn't actually support hexadecimal values, this CL
stores them as strings.
Ideally we could take this a step farther and store the enum
directly in JSON, but we have no facilities for converting
a string back to an enum.
Bug: angleproject:5133
Bug: angleproject:6515
Change-Id: I7b5d4dc8958d43c611da1fe98887e089f3d855b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204135
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
043120ee
|
2021-09-29T15:56:46
|
|
Capture/Replay: Allow disabling program trimming.
The ANGLE_CAPTURE_TRIM_ENABLED variable disables program trimming
when set to 0. This is useful for trace validation, which expects
the GL state vectors to be identical.
Bug: angleproject:5133
Change-Id: I3ab41de80af7b223c4cb8a1b7e14f049717305fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193417
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0004ecc2
|
2021-09-22T13:39:55
|
|
Write GL info to test artifact in end2end_tests.
These will show up as glinfo.json in the "cas outputs" of the shard
that runs these tests.
We currently have information for Pixel 4, NVIDIA and Intel Win/Linux,
and SwiftShader Windows. GLES 1.x extensions are treated separately.
Some WebGL/Mac-only/D3D-only extensions show as unsupported anywhere.
In order to capture artifacts on Android, we use a render test output
parameter.
Bug: angleproject:6379
Change-Id: I560b219b5a586cdbb68d272090f38eedc76aba20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3176780
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
b930b9d3
|
2021-09-08T09:08:28
|
|
Capture/Replay: Remove redundant "capture" from label
old: trex_200_capture_context1_frame001.cpp
new: trex_200_context1_frame001.cpp
The 'capture' word wasn't really adding any useful information.
Take it out so the filenames are a bit shorter.
Bug: angleproject:5133
Change-Id: Ibd7d47df2aa1f24a641c5d5b2a6dd14d6ce240e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149370
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
5db7885f
|
2021-09-28T17:16:40
|
|
FrameCapture: Fix GLES1 VertexArrayState
Broke recently when adding support for ES3.1 semantics.
GLES1 traces are hitting the loop below, generating
BindVertexBuffer.
Test: Zillow MEC (GLES 1)
Bug: b/199919700
Change-Id: Ibe83d1b4009b00f891903cae889449d42e9f510b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3192990
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3719c172
|
2021-09-20T17:33:14
|
|
FrameCapture: Filter program setup calls
This CL adds filtering to shared setup calls based on whether
a resource is used during the frame capture. Calls that are
filtered out will not be written to SetupReplayContextShared.
This eliminates setup for unused resources.
This has become critical for apps like Fortnite that compile
tens of thousands of programs before running any frames. This
can take multiple minutes to perform before rendering a frame.
To achieve this, we do the following:
- Add an active status to every call (default to TRUE).
- Mark setup calls for tracked resources to FALSE during MEC.
- During the run, track for any use of the resource, and mark
its setup calls back to TRUE.
- Enable tracking for ShaderPrograms.
Test: Fortnite MEC
Bug: b/180418810
Bug: angleproject:5658
Change-Id: I5070297d339de3b80f870640e8955077a2bc20aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3150387
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
a09dca68
|
2021-09-20T23:40:28
|
|
Fix app trace heap buffer overflow
During runMidExecutionCapture(), we need to update
mMaxAccessedResourceIDs[idType] for idType==ShaderProgram, so that we
have enought slot in gShaderProgramMap2 to store the
temp shader we create in GenerateLinkedProgram().
Changes in this CL:
1.Renaming Jamie's mMaxAccessResourceIDS array update function
updatePreCallResourceCounts() to updateResourceCounts().
2. Adding updateResourceCounts() to Cody's setup call post processing
function scanSetupCalls(). In GenerateLinkedProgram(),
we add the temp shader create call with its' tempShaderID
into the shareGroupSetupCalls.
After that we will run the function scanSetupCalls(),
where we will be able to loop through the tempShaderID
and update the mMaxAccessResourceIDS[ShaderProgram] with the correct
count.
Bug: angleproject:6398
Change-Id: Iee78b3b7c1908a90ee8456476902f5e52e4615dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3172005
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
0babcb08
|
2021-09-14T10:49:06
|
|
FrameCapture: Scan Setup instructions
The ability to add calls from a multitude of locations rather than a
centralized spot has become a useful feature. But some locations
were updating the max read buffer size via updateReadBufferSize,
while others weren't.
Rather than force everything to call a central spot for tracking, add
post process scanning of Setup calls to handle updates. This is
already done for frame calls in maybeCapturePreCallUpdates.
Test: Fortnite MEC
Bug: b/180418810
Bug: angleproject:5658
Change-Id: I51d3a39ea40073d2dca50339ef4b38712b81f4ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3160500
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
1af5c46c
|
2021-09-14T14:40:49
|
|
Move JsonSerializer from libANGLE to common.
This lets us use the serializer from outside of libANGLE. The plan is
to use it to serialize a list of supported extensions from the tests.
Bug: angleproject:6379
Change-Id: Ib7b64cca32e733e342b80f893d3752318089f0c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163361
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|