mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-15 10:15:48 +00:00
Check for failed ShaderDebugTrace centrally
* We don't expect the debug to fail entirely and if it does we can throw a test failure
This commit is contained in:
@@ -129,35 +129,31 @@ class Buffer_Truncation(rdtest.TestCase):
|
||||
rd.DebugPixelInputs(),
|
||||
)
|
||||
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
raise rdtest.TestFailureException("Shader did not debug at all")
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
cbuf_sourceVars = [s for s in trace.sourceVars if s.variables[0].type == rd.DebugVariableType.Constant and s.rows > 0]
|
||||
|
||||
# Vulkan style, one source var for the cbuffer
|
||||
if len(cbuf_sourceVars) == 1:
|
||||
debugged_cb = trace.constantBlocks[0]
|
||||
|
||||
assert debugged_cb.members[0].name == 'padding'
|
||||
assert debugged_cb.members[1].name == 'outcol'
|
||||
|
||||
if not rdtest.value_compare(debugged_cb.members[1].value.f32v[0:4], [0.0, 0.0, 0.0, 0.0]):
|
||||
raise rdtest.TestFailureException(f"expected outcol to be 0s, but got {debugged_cb.members[1].value.f32v[0:4]}")
|
||||
# D3D style, one source var for each member mapping to a register
|
||||
elif len(cbuf_sourceVars) == 17:
|
||||
debugged_cb = trace.constantBlocks[0].members[16]
|
||||
|
||||
assert all(['consts.padding[' in c.name for c in cbuf_sourceVars[0:16]])
|
||||
assert cbuf_sourceVars[16].name == 'consts.outcol'
|
||||
|
||||
assert cbuf_sourceVars[16].variables[0].name == 'cb0[16]' or cbuf_sourceVars[16].variables[0].name == 'consts[16]'
|
||||
|
||||
if not rdtest.value_compare(debugged_cb.value.f32v[0:4], [0.0, 0.0, 0.0, 0.0]):
|
||||
raise rdtest.TestFailureException(f"expected outcol to be 0s, but got {debugged_cb.members[1].value.f32v[0:4]}")
|
||||
else:
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
cbuf_sourceVars = [s for s in trace.sourceVars if s.variables[0].type == rd.DebugVariableType.Constant and s.rows > 0]
|
||||
|
||||
# Vulkan style, one source var for the cbuffer
|
||||
if len(cbuf_sourceVars) == 1:
|
||||
debugged_cb = trace.constantBlocks[0]
|
||||
|
||||
assert debugged_cb.members[0].name == 'padding'
|
||||
assert debugged_cb.members[1].name == 'outcol'
|
||||
|
||||
if not rdtest.value_compare(debugged_cb.members[1].value.f32v[0:4], [0.0, 0.0, 0.0, 0.0]):
|
||||
raise rdtest.TestFailureException(f"expected outcol to be 0s, but got {debugged_cb.members[1].value.f32v[0:4]}")
|
||||
# D3D style, one source var for each member mapping to a register
|
||||
elif len(cbuf_sourceVars) == 17:
|
||||
debugged_cb = trace.constantBlocks[0].members[16]
|
||||
|
||||
assert all(['consts.padding[' in c.name for c in cbuf_sourceVars[0:16]])
|
||||
assert cbuf_sourceVars[16].name == 'consts.outcol'
|
||||
|
||||
assert cbuf_sourceVars[16].variables[0].name == 'cb0[16]' or cbuf_sourceVars[16].variables[0].name == 'consts[16]'
|
||||
|
||||
if not rdtest.value_compare(debugged_cb.value.f32v[0:4], [0.0, 0.0, 0.0, 0.0]):
|
||||
raise rdtest.TestFailureException(f"expected outcol to be 0s, but got {debugged_cb.members[1].value.f32v[0:4]}")
|
||||
else:
|
||||
raise rdtest.TestFailureException(f"Unexpected number of constant buffer source vars {len(cbuf_sourceVars)}")
|
||||
raise rdtest.TestFailureException(f"Unexpected number of constant buffer source vars {len(cbuf_sourceVars)}")
|
||||
|
||||
rdtest.log.success("CBuffer value was truncated as expected")
|
||||
|
||||
@@ -13,9 +13,6 @@ class Groupshared(rdtest.TestCase):
|
||||
try:
|
||||
_, variables = self.process_trace(trace)
|
||||
|
||||
if trace.debugger is None:
|
||||
raise rdtest.TestFailureException(f"Test {test} at {action.eventId} got no debug result at {x},{y},{z}")
|
||||
|
||||
# Find the source variable 'outval' at the highest instruction index
|
||||
name = 'outval'
|
||||
debugged = None
|
||||
|
||||
@@ -23,9 +23,6 @@ class Subgroup_Zoo(rdtest.TestCase):
|
||||
try:
|
||||
_, variables = self.process_trace(trace)
|
||||
|
||||
if trace.debugger is None:
|
||||
raise rdtest.TestFailureException(f"Test {test} at {action.eventId} got no debug result at {x},{y},{z}")
|
||||
|
||||
# Find the source variable 'testResult' at the highest instruction index
|
||||
name = 'testResult'
|
||||
debugged = None
|
||||
@@ -186,13 +183,6 @@ class Subgroup_Zoo(rdtest.TestCase):
|
||||
inputs.view = view
|
||||
trace = self.controller.DebugPixel(x, y, inputs)
|
||||
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
rdtest.log.error(
|
||||
f"Test {idx} at {action.eventId} got no debug result at {x},{y}")
|
||||
failed = True
|
||||
continue
|
||||
|
||||
_, variables = self.process_trace(trace)
|
||||
|
||||
output_sourcevar = self.find_output_source_var(
|
||||
|
||||
@@ -652,9 +652,6 @@ class TestCase:
|
||||
if view >= 0:
|
||||
ctx += f" view {view}"
|
||||
|
||||
if debug.trace.debugger is None:
|
||||
raise TestFailureException(f"Couldn't debug {ctx}")
|
||||
|
||||
cycles, variables = self.process_trace(debug.trace)
|
||||
|
||||
postvs_vtx = vtx
|
||||
@@ -918,7 +915,8 @@ class TestCase:
|
||||
return ret
|
||||
|
||||
def generate_full_trace(self, trace: rd.ShaderDebugTrace) -> List[rd.ShaderDebugState]:
|
||||
assert trace.debugger is not None
|
||||
if trace.debugger is None:
|
||||
raise TestFailureException("Couldn't debug shader at all")
|
||||
|
||||
allStates: List[rd.ShaderDebugState] = []
|
||||
allChanges: List[List[rd.ShaderVariableChange]] = []
|
||||
@@ -933,7 +931,8 @@ class TestCase:
|
||||
return allStates
|
||||
|
||||
def process_trace(self, trace: rd.ShaderDebugTrace, validate: bool = True):
|
||||
assert trace.debugger is not None
|
||||
if trace.debugger is None:
|
||||
raise TestFailureException("Couldn't debug shader at all")
|
||||
|
||||
variables: Dict[str, rd.ShaderVariable] = {}
|
||||
cycles = 0
|
||||
@@ -1165,9 +1164,6 @@ class TestCase:
|
||||
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugPixel(x, y, rd.DebugPixelInputs())
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
raise TestFailureException(f"Pixel shader could not be debugged at {x},{y}.")
|
||||
|
||||
_, variables = self.process_trace(trace)
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -85,11 +85,6 @@ class D3D11_AMD_Shader_Extensions(rdtest.TestCase):
|
||||
|
||||
trace = self.controller.DebugThread((0, 0, 0), (0, 0, 0))
|
||||
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
|
||||
raise rdtest.TestFailureException("Couldn't debug compute shader")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
if cycles < 3:
|
||||
|
||||
@@ -27,11 +27,6 @@ class D3D11_Shader_Debug_Zoo(rdtest.TestCase):
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugPixel(4 * test, 4 * idx, rd.DebugPixelInputs())
|
||||
|
||||
if trace.debugger is None:
|
||||
rdtest.log.error(f"Test {test} failed to debug.")
|
||||
self.controller.FreeTrace(trace)
|
||||
continue
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -19,10 +19,6 @@ class D3D11_Shader_Linkage_Zoo(rdtest.TestCase):
|
||||
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugPixel(200, 150, rd.DebugPixelInputs())
|
||||
if trace.debugger is None:
|
||||
failed = True
|
||||
rdtest.log.error(f"Test {event_name} could not be debugged.")
|
||||
continue
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
|
||||
@@ -114,11 +114,6 @@ class D3D12_AMD_Shader_Extensions(rdtest.TestCase):
|
||||
|
||||
trace = self.controller.DebugThread((0, 0, 0), (0, 0, 0))
|
||||
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
|
||||
raise rdtest.TestFailureException("Couldn't debug compute shader")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
if cycles < 3:
|
||||
|
||||
@@ -27,10 +27,6 @@ class D3D12_Shader_Linkage_Zoo(rdtest.TestCase):
|
||||
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugPixel(200, 150, rd.DebugPixelInputs())
|
||||
if trace.debugger is None:
|
||||
failed = True
|
||||
rdtest.log.error(f"Test {event_name} could not be debugged.")
|
||||
continue
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
|
||||
@@ -51,9 +51,6 @@ class D3D12_Vertex_UAV(rdtest.TestCase):
|
||||
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugPixel(50, 50, rd.DebugPixelInputs())
|
||||
if trace.debugger is None:
|
||||
raise rdtest.TestFailureException(f"Pixel shader at {name} could not be debugged.")
|
||||
self.controller.FreeTrace(trace)
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
|
||||
@@ -52,12 +52,6 @@ class GL_Shader_Debug_Zoo(rdtest.TestCase):
|
||||
|
||||
rdtest.log.print(f"debugging {x},{y}")
|
||||
|
||||
if trace.debugger is None:
|
||||
failed = True
|
||||
rdtest.log.error(f"Test {test} in sub-section {child} did not debug pixel")
|
||||
self.controller.FreeTrace(trace)
|
||||
continue
|
||||
|
||||
_, variables = self.process_trace(trace)
|
||||
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -83,11 +83,6 @@ class Iter_Test(rdtest.TestCase):
|
||||
rdtest.log.print(f"Debug Thread Workgroup:{wgSize} groupid:{groupid} threadid:{threadid}")
|
||||
trace = self.controller.DebugThread(groupid, threadid)
|
||||
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
rdtest.log.print("No debug result")
|
||||
return
|
||||
|
||||
try:
|
||||
cycles, variables = self.process_trace(trace)
|
||||
except rdtest.TestFailureException as err:
|
||||
@@ -269,12 +264,6 @@ class Iter_Test(rdtest.TestCase):
|
||||
inputs.primitive = lastmod.primitiveID;
|
||||
trace = self.controller.DebugPixel(x, y, inputs)
|
||||
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
|
||||
rdtest.log.print("No debug result")
|
||||
return
|
||||
|
||||
try:
|
||||
cycles, variables = self.process_trace(trace)
|
||||
except rdtest.TestFailureException as err:
|
||||
|
||||
@@ -99,9 +99,6 @@ class VK_Graphics_Pipeline(rdtest.TestCase):
|
||||
inputs.primitive = 0
|
||||
trace = self.controller.DebugPixel(200, 150, inputs)
|
||||
|
||||
if trace.debugger is None:
|
||||
raise rdtest.TestFailureException("No pixel debug result")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
output_sourcevar = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -25,9 +25,6 @@ class VK_KHR_Buffer_Address(rdtest.TestCase):
|
||||
|
||||
# Debug the pixel shader
|
||||
trace = self.controller.DebugPixel(x, y, rd.DebugPixelInputs())
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
raise rdtest.TestFailureException(f"Test {test_name} did not debug at all")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -63,9 +63,6 @@ class VK_Multi_Entry(rdtest.TestCase):
|
||||
|
||||
assert len(refl.readOnlyResources) == 1
|
||||
|
||||
if trace.debugger is None:
|
||||
raise rdtest.TestFailureException("No pixel debug result")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
|
||||
output_sourcevar = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -30,9 +30,6 @@ class VK_Multi_View(rdtest.TestCase):
|
||||
inputs = rd.DebugPixelInputs()
|
||||
inputs.view = view
|
||||
trace = self.controller.DebugPixel(x, y, inputs)
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
raise rdtest.TestFailureException(f"Test {test_name} view {view} did not debug at all")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
@@ -73,9 +70,6 @@ class VK_Multi_View(rdtest.TestCase):
|
||||
inputs = rd.DebugPixelInputs()
|
||||
inputs.view = view
|
||||
trace = self.controller.DebugPixel(x, y, inputs)
|
||||
if trace.debugger is None:
|
||||
self.controller.FreeTrace(trace)
|
||||
raise rdtest.TestFailureException(f"Test {test_name} view {view} did not debug at all")
|
||||
|
||||
cycles, variables = self.process_trace(trace)
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
@@ -34,12 +34,6 @@ class VK_Shader_Debug_Zoo(rdtest.TestCase):
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugPixel(x, y, rd.DebugPixelInputs())
|
||||
|
||||
if trace.debugger is None:
|
||||
failed = True
|
||||
rdtest.log.error(f"Test {test} in sub-section {child} did not debug at all")
|
||||
self.controller.FreeTrace(trace)
|
||||
continue
|
||||
|
||||
_, variables = self.process_trace(trace)
|
||||
|
||||
output = self.find_output_source_var(trace, rd.ShaderBuiltin.ColorOutput, 0)
|
||||
|
||||
Reference in New Issue
Block a user