mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-15 10:15:48 +00:00
* These were available for python 3.6 too so was never any reason not to use them except not being aware they existed.
77 lines
2.7 KiB
Python
77 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(f"Checking overlay {overlay!s} with rasterizer discard")
|
|
|
|
tex.overlay = overlay
|
|
out.SetTextureDisplay(tex)
|
|
|
|
out.Display()
|
|
|
|
overlay_id = out.GetDebugOverlayTexID()
|
|
|
|
rdtest.log.success(f"Overlay {overlay!s} rendered with rasterizer discard")
|
|
|
|
out.Shutdown()
|