mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-19 12:15:52 +00:00
* These come from long ago when using PyCharm with not as good type checking and with renderdoc module stubs that were incomplete so needed help identifying types.
76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
import rdtest
|
|
import renderdoc as rd
|
|
|
|
|
|
class VK_Overlay_Test(rdtest.Overlay_Test):
|
|
demos_test_name = 'VK_Overlay_Test'
|
|
internal = False
|
|
|
|
def check_capture(self):
|
|
# Check clear-before-action when first selecting a action, to ensure that bindless feedback doesn't interfere
|
|
out = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture)
|
|
|
|
setup_marker = self.find_action("Setup")
|
|
self.controller.SetFrameEvent(setup_marker.nextAction.eventId, True)
|
|
|
|
pipe = self.controller.GetPipelineState()
|
|
|
|
tex = rd.TextureDisplay()
|
|
tex.resourceId = pipe.GetOutputTargets()[0].resource
|
|
|
|
tex.overlay = rd.DebugOverlay.ClearBeforeDraw
|
|
out.SetTextureDisplay(tex)
|
|
|
|
out.Display()
|
|
|
|
# Select the next setup action
|
|
self.controller.SetFrameEvent(setup_marker.nextAction.eventId, True)
|
|
|
|
# Select the real action for the first time
|
|
self.controller.SetFrameEvent(self.find_action("Normal Test").nextAction.eventId, True)
|
|
|
|
self.check_pixel_value(tex.resourceId, 180, 150, [0.0, 0.0, 0.0, 0.0])
|
|
self.check_pixel_value(tex.resourceId, 50, 50, [0.0, 0.0, 0.0, 0.0])
|
|
self.check_pixel_value(tex.resourceId, 200, 64, [1.0, 1.0, 0.0, 1.0])
|
|
|
|
# Clear the overlay to reset to a sensible state
|
|
tex.overlay = rd.DebugOverlay.NoOverlay
|
|
out.SetTextureDisplay(tex)
|
|
|
|
out.Display()
|
|
|
|
super(VK_Overlay_Test, self).check_capture()
|
|
|
|
# Don't check any pixel values, but ensure all overlays at least work with rasterizer discard and no
|
|
# viewport/scissor bound
|
|
sub_marker = self.find_action("Discard Test")
|
|
self.controller.SetFrameEvent(sub_marker.nextAction.eventId, True)
|
|
|
|
pipe = self.controller.GetPipelineState()
|
|
|
|
tex = rd.TextureDisplay()
|
|
tex.resourceId = pipe.GetOutputTargets()[0].resource
|
|
|
|
for overlay in rd.DebugOverlay:
|
|
if overlay == rd.DebugOverlay.NoOverlay:
|
|
continue
|
|
|
|
# These overlays are just displaymodes really, not actually separate overlays
|
|
if overlay == rd.DebugOverlay.NaN or overlay == rd.DebugOverlay.Clipping:
|
|
continue
|
|
|
|
if overlay == rd.DebugOverlay.ClearBeforeDraw or overlay == rd.DebugOverlay.ClearBeforePass:
|
|
continue
|
|
|
|
rdtest.log.success("Checking overlay {} with rasterizer discard".format(str(overlay)))
|
|
|
|
tex.overlay = overlay
|
|
out.SetTextureDisplay(tex)
|
|
|
|
out.Display()
|
|
|
|
overlay_id = out.GetDebugOverlayTexID()
|
|
|
|
rdtest.log.success("Overlay {} rendered with rasterizer discard".format(str(overlay)))
|
|
|
|
out.Shutdown() |