Check mesh output and overlays in Iter_Test

This commit is contained in:
baldurk
2022-12-05 10:00:35 +00:00
parent 5934b3b705
commit 7aac39613c
+41
View File
@@ -296,6 +296,39 @@ class Iter_Test(rdtest.TestCase):
self.controller.SetFrameEvent(action.eventId, True)
def mesh_output(self, action: rd.ActionDescription):
self.controller.GetPostVSData(0, 0, rd.MeshDataStage.VSOut)
self.controller.GetPostVSData(0, 0, rd.MeshDataStage.GSOut)
rdtest.log.success('Successfully fetched mesh output')
def drawcall_overlay(self, action: rd.ActionDescription):
pipe = self.controller.GetPipelineState()
if len(pipe.GetOutputTargets()) == 0 and pipe.GetDepthTarget().resourceId == rd.ResourceId.Null():
rdtest.log.print("No render targets bound at {}".format(action.eventId))
return
if not (action.flags & rd.ActionFlags.Drawcall):
rdtest.log.print("{} is not a drawcall".format(action.eventId))
return
tex = rd.TextureDisplay()
tex.overlay = rd.DebugOverlay.Drawcall
tex.resourceId = rd.ResourceId()
col = pipe.GetOutputTargets()
depth = pipe.GetDepthTarget()
if len(col) > 1 and col[0].resourceId != rd.ResourceId():
tex.resourceId = col[0].resourceId
elif depth.resourceId != rd.ResourceId():
tex.resourceId = depth.resourceId
if tex.resourceId != rd.ResourceId():
self.texout.SetTextureDisplay(tex)
self.texout.Display()
rdtest.log.success('Successfully did drawcall overlay')
def iter_test(self):
# Handy tweaks when running locally to disable certain things
@@ -303,6 +336,8 @@ class Iter_Test(rdtest.TestCase):
do_image_save = 0.25 # Chance of saving images of the outputs
do_vert_debug = 1.0 # Chance of debugging a vertex (if valid)
do_pixel_debug = 1.0 # Chance of doing pixel history at the current event and debugging a pixel (if valid)
mesh_output = 1.0 # Chance of fetching mesh output data
drawcall_overlay = 1.0 # Chance of showing the drawcall overlay
self.props: rd.APIProperties = self.controller.GetAPIProperties()
@@ -310,6 +345,8 @@ class Iter_Test(rdtest.TestCase):
'Image Save': {'chance': do_image_save, 'func': self.image_save},
'Vertex Debug': {'chance': do_vert_debug, 'func': self.vert_debug},
'Pixel History & Debug': {'chance': do_pixel_debug, 'func': self.pixel_debug},
'Mesh Output': {'chance': mesh_output, 'func': self.mesh_output},
'Drawcall overlay': {'chance': drawcall_overlay, 'func': self.drawcall_overlay},
}
# To choose an action, if we're going to do one, we take random in range(0, choice_max) then check each action
@@ -321,6 +358,8 @@ class Iter_Test(rdtest.TestCase):
action = self.get_first_action()
last_action = self.get_last_action()
self.texout = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture)
while action:
rdtest.log.print("{}/{}".format(action.eventId, last_action.eventId))
@@ -343,6 +382,8 @@ class Iter_Test(rdtest.TestCase):
action = action.next
self.texout.Shutdown()
def run(self):
dir_path = self.get_ref_path('', extra=True)