mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-10-04 03:17:58 +00:00
Use context helpers for thread debugging
This commit is contained in:
@@ -121,43 +121,40 @@ class VK_Shader_Debug_Zoo(rdtest.TestCase):
|
||||
continue
|
||||
|
||||
# Debug the shader
|
||||
trace = self.controller.DebugThread(groupid, threadid)
|
||||
cycles, variables = self.process_trace(trace)
|
||||
# Check for non-zero cycles
|
||||
if cycles == 0:
|
||||
rdtest.log.success(f"Test {test} Group:{groupid} Thread:{threadid} : Shader debug cycle count was zero")
|
||||
self.controller.FreeTrace(trace)
|
||||
failed = True
|
||||
continue
|
||||
with self.debug_thread(groupid, threadid) as debug:
|
||||
cycles, variables = self.process_trace(debug.trace)
|
||||
# Check for non-zero cycles
|
||||
if cycles == 0:
|
||||
rdtest.log.success(f"Test {test} Group:{groupid} Thread:{threadid} : Shader debug cycle count was zero")
|
||||
failed = True
|
||||
continue
|
||||
|
||||
# Find the source variable 'testResult' at the highest instruction index
|
||||
name = 'testResult'
|
||||
debugged = None
|
||||
countInst = len(trace.instInfo)
|
||||
for inst in range(countInst):
|
||||
sourceVars = trace.instInfo[countInst-1-inst].sourceVars
|
||||
try:
|
||||
dataVars = [v for v in sourceVars if v.name == name]
|
||||
if len(dataVars) == 0:
|
||||
# Find the source variable 'testResult' at the highest instruction index
|
||||
name = 'testResult'
|
||||
debugged = None
|
||||
countInst = len(debug.trace.instInfo)
|
||||
for inst in range(countInst):
|
||||
sourceVars = debug.trace.instInfo[countInst-1-inst].sourceVars
|
||||
try:
|
||||
dataVars = [v for v in sourceVars if v.name == name]
|
||||
if len(dataVars) == 0:
|
||||
continue
|
||||
debugged = self.evaluate_source_var(dataVars[0], variables)
|
||||
except KeyError as ex:
|
||||
continue
|
||||
debugged = self.evaluate_source_var(dataVars[0], variables)
|
||||
except KeyError as ex:
|
||||
continue
|
||||
except rdtest.TestFailureException as ex:
|
||||
continue
|
||||
break
|
||||
if debugged is None:
|
||||
raise rdtest.TestFailureException(f"Couldn't find source variable {name} at {test}")
|
||||
debuggedValue = list(debugged.value.f32v[0:4])
|
||||
except rdtest.TestFailureException as ex:
|
||||
continue
|
||||
break
|
||||
if debugged is None:
|
||||
raise rdtest.TestFailureException(f"Couldn't find source variable {name} at {test}")
|
||||
debuggedValue = list(debugged.value.f32v[0:4])
|
||||
|
||||
if not rdtest.value_compare(expectedValue, debuggedValue, eps=5.0E-06):
|
||||
rdtest.log.error(f"Test {test} Group:{groupid} Thread:{threadid} EID:{action.eventId} failed {name} debugger {debuggedValue} doesn't match expected {expectedValue}")
|
||||
self.controller.FreeTrace(trace)
|
||||
failed = True
|
||||
continue
|
||||
if not rdtest.value_compare(expectedValue, debuggedValue, eps=5.0E-06):
|
||||
rdtest.log.error(f"Test {test} Group:{groupid} Thread:{threadid} EID:{action.eventId} failed {name} debugger {debuggedValue} doesn't match expected {expectedValue}")
|
||||
failed = True
|
||||
continue
|
||||
|
||||
self.controller.FreeTrace(trace)
|
||||
rdtest.log.success(f"Test {test} Group:{groupid} Thread:{threadid} as expected")
|
||||
rdtest.log.success(f"Test {test} Group:{groupid} Thread:{threadid} as expected")
|
||||
|
||||
rdtest.log.end_section(section)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user