Tests specifically aimed at workgroup debugging i.e GSM and non-aligned subgroups
Not focused on unit tests of subgroup/quad instructions that is handled by *_Subgroup_Zoo
This test renders a small triangle that casts a shadow from a point light, onto a larger triangle. The test runner then checks that various pixels in the final output are the correct colour.
There is also an arbitrary AS copy in the render loop just to hit more API coverage when manually capturing, but the test runner doesn't check its output.
Core test work originally done by martyn.jacques@arm.com
Vertex shader output Red for view 0, Green for view 1, fragment shader does not use viewIndex.
Fragment shader output Red for view 0, Green for view 1, vertex shader does not use viewIndex.
Geometry shader output Red for view 0, Green for view 1, vertex and fragment shader do not use viewIndex.
Python checks vertex and pixel shader debug output against replay rendering output
DebugShaderInputs struct contains existing the parameters:
sample
primitive
and a new parameter
view
Default constructor for DebugShaderInputs sets the parameters to NoPreference (~0U).
Check the post mod stencil at pixel location 110,100
Check the post mod stencil is unknown at pixel location 275, 260 for fragment zero of a multi-fragment event
Validate that in a fragment event the postMod stencil value should be unknown (-1 or -2)
New Binding 3
Initial size is UINT32_MAX
Updated to be sized DESC_ARRAY3_SIZE
Used in the shader to ensure the binding is referenced
Stress tests the FetchShaderFeedback code when it computes the maximum size of feedbackStorageSize.
This is supported by OpenGL, and on Vulkan with
VK_EXT_primitive_topology_list_restart. On Vulkan, all drivers are
known to support this even without
VK_EXT_primitive_topology_list_restart. On D3D, primitive restart is
only supported for strip topologies.
Previously, RenderDoc specifically disabled primitive restart for
non-strip topologies. In this change, that is no longer done. If the
app enables primitive restart, so will RenderDoc behave accordingly. It
would be the responsibility of the app to avoid primitive restart if the
API doesn't allow it.
* Normally we have to ignore subsequent states as potentially garbage pointers
if discard is enabled, but when it's dynamic state we have to ignore its
valid.