Capture/Replay Don't capture invalid commands
Special Forces Group 2 issues invalid OpenGL ES commands, which are
currently captured by ANGLE's frame capture. These invalid commands
generate errors on both ANGLE and the native driver, causing the test to
be marked as "failed".
This CL updates FrameCapture::captureCall() to not capture invalid
commands, which prevents replay errors. However, the other work related
to the call is still performed, including:
- maybeOverrideEntryPoint()
- maybeCapturePreCallUpdates()
- maybeCapturePostCallUpdates()
This work is necessary, otherwise calls that update necessary members
like FrameCapture::mClientArraySizes may be missed, causing leading to
compilation failures related to missing symbols. For example,
mClientArraySizes is updated via the following call stack:
captureClientArraySnapshot()
maybeCaptureDrawArraysClientData()
maybeCapturePreCallUpdates()
It's necessary for mClientArraySizes to contain non-zero values, so that
the variable gClientArrays[] is output by WriteCppReplayIndexFiles().
Otherwise a compilation error will occur when it's referenced by a
glVertexAttribPointer() call in the capture.
Bug: angleproject:5592
Change-Id: I625a074e035eb75267d8384dc61ce6de1717af91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2673068
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by:
Jamie Madill <jmadill@chromium.org>
Reviewed-by:
Cody Northrop <cnorthrop@google.com>
Showing
Please
register
or
sign in
to comment