Use context helpers for thread debugging

This commit is contained in:
baldurk
2026-09-11 21:17:17 +01:00
parent e6948a8c7e
commit 3452ba8ffd
8 changed files with 236 additions and 255 deletions
+30 -33
View File
@@ -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)