|
7fc6c07c
|
2021-09-29T14:02:29
|
|
Capture/Replay: Update process for trace upgrading.
Includes changes to the retracing script.
Also includes documentation on how the process works.
Bug: angleproject:5133
Change-Id: I1acfe338f3fe0282a0461c314274c761ed04bd2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193418
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3a9f18f1
|
2021-10-18T10:44:38
|
|
Refactor program pipeline handling.
In preparation for moving more code from gl::Program to
gl::ProgramExecutable so it can be shared with ProgramPipeline.
Bug: angleproject:6566
Change-Id: Icb7ecccb37ae8e0d7d5fef8968f0dd7ef6fe6150
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226305
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f00f1009
|
2021-09-30T18:59:25
|
|
Capture/Replay: Fix readback of zero-sized renderbuffers
Only read back the renderbuffer content if the renderbuffer has a
non-zero size. Add a test to test the capture/replay in this case.
Bug: angleproject:6425
Change-Id: I943804884f18a3a2b9de526309dd500de9dd6fd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3197572
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: 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>
|
|
eb8ffe2f
|
2021-09-07T09:53:22
|
|
JsonSerializer: Allow adding values to root node.
Previously we would only allow a single group at the root document
node. This change allows us to have multiple members. It also changes
the API slightly. Instead of calling startDocument, you now can add
values and groups on an empty serializer object. It also removes the
implicit endGroup call in endDocument. Groups must now be manually
ended.
Bug: angleproject:5133
Change-Id: Id39016233d73270d1e20d99d59c1729fbcdd8860
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3144213
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9c05f55a
|
2021-07-15T10:58:10
|
|
Capture/Replay: Add replay state validation.
We can use this to validate traces that have slight differences
when retracing. The valdation works by embedding the "expected"
JSON into a string at the end of each captured frame. The replay
also embeds a callback which fires right before the swap in the
replay harness. The harness then gets the "actual" JSON and runs
a comparison. On a mismatch it calls "diff" externally.
Currently the diff call is hard-coded to work on Linux only.
Note that when running validation it's important to replay on
SwiftShader since that's what we use to retrace.
Bug: angleproject:5133
Change-Id: Icbf0031d07be8bd916607c537dec235f9a512c43
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3066008
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
fa53afa4
|
2021-09-01T08:52:13
|
|
Capture/Replay: Add uniforms to program serialization.
Previously we weren't serializing the uniform data. This meant that
buggy uniform capture wouldn't show up as diffs in the serialization.
Verified that this new uniform capture caught a bug when retracing
PUBG mobile, which uses indexed array uniform locations.
Bug: angleproject:5133
Change-Id: I2a9f6ca45f1247b1a81337e47b7fb7a3d3ab4953
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136093
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a8f1a916
|
2021-08-26T17:53:56
|
|
GetTexImage: Remove syncState calls & add early error exit.
Instead of calling syncState to force the Vulkan staged textures to
flush, we ensure the Texture is marked initialized by sending a
message up to the Texture when there are no more pending updates.
Also adds handling for textures with extra mips. Instead of crashing,
we now return an error with a warning. Also adds a test with a
texture that has extra (outside the mip chain) defined levels.
Also adds a test and handling for empty texture levels.
This should lead to more consistent behaviour in the trace test
serialization logic, where often the prior logic would behave
differently depending on if GetImage was called from MEC or from
the serialization code.
Also updates the generateMipmap logic to syncState after calling
initializeContents so the updates happen in the correct order on
Vulkan.
Bug: angleproject:5133
Bug: angleproject:6336
Change-Id: Iab1c2a22b9f9435e7f3c0f870c86bbed3460482e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123168
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
bc89eda7
|
2021-08-26T21:30:41
|
|
Capture/Replay: honor base level when serializing textures
Bug: angleproject:6331
Change-Id: Ibd1eba995b0aec02854da5c3c16196c6d079e94d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123407
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9a3f60f2
|
2021-08-26T10:30:23
|
|
Capture/Replay: Allow serializing cube map array data.
This ASSERT was firing which was preventing several traces from
re-tracing.
Bug: angleproject:5133
Change-Id: I86d956bf0c95210bef5572a30fb786555d14522f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123226
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d72cad5e
|
2021-08-26T13:40:49
|
|
Capture/Replay: Serialize buffer texture buffer IDs.
Instead of trying to serialize buffer texture contents, we can
serialize the ID of the bound buffer. The buffer contents are
already serialized in the buffer manager iteration.
This prevents an ASSERT failure in PUBG.
Bug: angleproject:6328
Change-Id: I5427df86c7146d27cf10e316db0b1436b6774747
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123229
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dd5994df
|
2021-08-25T18:39:31
|
|
Capture/Replay Tests: Fix Renderbuffer readback.
Renderbuffer readback would use an unimplemented size function,
ending up with a zero sized buffer. Also cleans up some of the
code for reading back both Renderbuffers and Textures.
One Depth/Stencil test that was crashing due to a recent change to
read back depth data is now failing comparison because of missing
combined depth/stencil support.
Also updates the capture/reply self-test to handle ASAN-only test
expectations.
Bug: angleproject:4688
Change-Id: Idb6c05d15329f405f44502c2e5282764c7f780fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3119057
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1be6d1d4
|
2021-08-24T10:03:13
|
|
Capture/Replay: Sync textures before serialization.
This ensures we get a consistent value for the texture init status
and pixel data between when we capture the trace and when we run
the replay. Because syncState is normally only called for textures
that are currently bound for sampling, and here we are calling
syncState when texture are not (and may never be) bound, we have to
rely on a few extra checks to ensure we return a correct result.
Bug: angleproject:5133
Change-Id: I2ca76743e8a6550a730dc55d935ba69d88679589
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3118265
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e2485d60
|
2021-08-14T17:40:14
|
|
Capture/Replay: Add the layer to the texture data label string
Otherwise the output map will seperate the hash from the raw data
when multiple layers are written for the same mip-map level.
Bug: angleproject:5133
Change-Id: I7636b6dc66f7ec31958e6eb44591c0a9b9280b00
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3093814
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
49af677a
|
2021-08-16T07:59:18
|
|
Capture/Replay: Update serialization logic.
- Uses more common toString methods instead of custom ones.
- Uses enum to string in more places intsead of numeric enums.
- Adds missing group scopes in several places.
- Skips serializing empty image levels.
Bug: angleproject:5133
Change-Id: I2c9523981aba4ec0afb5f0623cb34154db263e6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097805
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
23a50a7c
|
2021-08-06T18:15:30
|
|
Serialization: Fix groups & ensure compile resolution.
This change has two fixes:
1) Some texture groups had multiple duplicate keys. Namely image
descs and image contents.
2) Programs and Shaders would serialize non-deterministically
because we would not ensure the compile/link was resolved. Fix
this by explicitly ensuring the shaders/programs are done.
Bug: angleproject:5133
Change-Id: I2f7f7768c76f90275f81e032ac08e3f2bc828ea2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076134
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
966c6a9a
|
2021-07-15T12:50:09
|
|
Capture/Replay: Don't try to serialize compressed textures.
Instead we write out a simple string indicating compressed texel
contents. We in the future could implement a GetCompressedTexImage
API.
Bug: angleproject:6176
Change-Id: I6673ec85ac94d5268b24bda4d510247a63fa97e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3032022
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
0e1ed36c
|
2021-07-02T12:32:03
|
|
Trace Tests: Improve state serialization.
This encapsulates several colliding states into grouped scopes.
It also improves serialization of several of the resources by
including the resource ID in the serialization key. Also other
minor improvements.
This change should improve detection of state mis-management.
Bug: angleproject:5133
Change-Id: I6ee5c02bb3ba70e91a595db2408076b15e4a9e67
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3003384
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
16c993c3
|
2021-06-24T12:03:03
|
|
Capture/Replay: Only capture initialized renderbuffer content
Enable the DepthStencilTest.* that was failing before.
Bug: angleproject:6094
Change-Id: I8c69de4927c0e70143cd632e97f0abdb740a013f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2982550
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f8d2c429
|
2021-06-24T11:22:59
|
|
Capture/Replay: Add test to capture an uninitialized buffer
Handle the serialization in case the buffer is not yet set up.
Bug: angleproject:6093
Change-Id: I06a8e15d181c4ec514a334f952ce29a4026970a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2982549
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
da17d561
|
2021-06-23T13:50:15
|
|
Trace Tests: Use xvfb consistently on Linux.
Previously there were two places where we missed the xvfb script.
This was causing the replay to fail.
Bug: angleproject:6085
Change-Id: I833916fa0cdacc163ec2bdd08831249807f319c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2979353
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d42df5c7
|
2021-06-08T11:42:50
|
|
Capture: Only capture texels of initialized textures
If a texture is not yet initialized then it may contain random
pixels, and since it doesn't make sense to capture this random
data, skip its serialization and only mark the data as not
initialized in the capture.
This also avoid the texture syncronization that would lead to a crash
for incomplete cube maps.
Bug: angleproject:6034
Change-Id: I0cb30a03a29aecd605f3c61b6df4cd897e1f9093
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2944954
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
41f86f35
|
2021-06-22T11:02:08
|
|
Capture: Serialize only the content of initialized attachments
If a resource is marked MayNeedInit, then we don't serialize it but
mark the data as not initialized.
Bug: angleproject:6041
Change-Id: If3d3431a58848f7835692fe10b30fab68c901d8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2976657
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
1ab6d214
|
2021-06-07T08:49:09
|
|
Capture: Create group variable for BlockMemberInfo
Also declare GroupScope as NO_DISCARD.
Bug: angleproject:6016
Change-Id: I738f137727d52a0930cd8c400fbc05f1cc8cfdad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2943927
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c1932fb5
|
2021-06-07T12:25:47
|
|
Serializer: Print FBO attachment name instead of a number
Bug: None
Change-Id: I419a0ca6d1c2e3c47dc84b106baf40dc0abb85cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2943930
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
212849e9
|
2021-04-13T22:54:10
|
|
Capture: store some array values as vector
This reduces the number of values that are added with
the same key.
Bug: angleproject:5853
Change-Id: Ie13408cc7ad419dec06746dc38b753f76292fae6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824433
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9254eb8e
|
2021-04-13T18:00:49
|
|
Capture: Fix storing strings instead of scalars
Bug: angleproject:5853
Change-Id: Id63922d881ce7778236e4ab3417bf9414fc0e59b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824431
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
faa86bc9
|
2021-04-13T14:19:59
|
|
Capture/Replay: Serialize only a hash of the shader binary
It doesn't make much sense to keep the actual values and it makes
the diff needlessly large when the binaries differ.
Bug: angleproject:5856
Change-Id: I55664d6cb60ef680669c1243c2eabcb67cd4db23
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2822256
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
ae937aae
|
2021-03-19T20:10:42
|
|
Detach separable shaders
This effectively reverts the following CL:
Vulkan: Don't detach separable shaders in Program::detachShader()
https://chromium-review.googlesource.com/c/angle/angle/+/2084399
Bug: angleproject:3570
Bug: b/182409935
Test: ProgramPipelineTest31.DetachAndModifyShader
Change-Id: Id69f732d1d4f3eea70b2de8c008452878eaf1682
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2776267
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
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>
|
|
776c6015
|
2021-02-26T00:00:57
|
|
Vulkan: Call glslang at compile time
With this change, the ANGLE translator immediately compiles the
generated GLSL into SPIR-V with glslang and discards the source. This
is in preparation for generating SPIR-V directly, by making the frontend
and backend already able to digest it.
This change also allows the expensive glslang calls to be parallelized,
improving the following perf test by about 20%:
LinkProgramBenchmark.Run/vulkan_compile_and_link_multi_thread
Previously, the test was run as such in the Vulkan backend:
Main Thread 1 Thread 2
Compile1 --->
Compile2 --------------------->
Translator Translator
<---
<---------------------
Link
glslang
for
shader1
glslang
for
shader2
Done
With this change, it is run as such:
Main Thread 1 Thread 2
Compile1 --->
Compile2 --------------------->
Translator Translator
glslang glslang
<---
<---------------------
Link
Done
glslang_wrapper_utils no longer interacts with glslang! A rename will
follow.
Bug: angleproject:4889
Change-Id: If4303e8ba0ba43b1a2f47f8c0a9133d0bee1a19a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2721195
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9265d1e2
|
2021-03-05T17:54:59
|
|
frame_capture_utils: Do not serialize 0 bindings.
Since we are only interested in the difference to non-default states,
bindings with a zero ID should not be serialized.
This resolves the comparision error in the GetTexLevelParameterTest.*
tests. The test now do not need to be skipped.
Bug: angleproject:5645
Change-Id: I887bc22b52a201c467c00c42f6ddb3b38895a7c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2739726
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
|
|
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>
|