Files
Shahbaz Youssefi ed4c3756d0 Enable primitive restart for list topologies
This is supported by OpenGL, and on Vulkan with
VK_EXT_primitive_topology_list_restart.  On Vulkan, all drivers are
known to support this even without
VK_EXT_primitive_topology_list_restart.  On D3D, primitive restart is
only supported for strip topologies.

Previously, RenderDoc specifically disabled primitive restart for
non-strip topologies.  In this change, that is no longer done.  If the
app enables primitive restart, so will RenderDoc behave accordingly.  It
would be the responsibility of the app to avoid primitive restart if the
API doesn't allow it.
2022-08-29 14:59:14 +01:00

50 lines
1.3 KiB
Python

import rdtest
import renderdoc as rd
class GL_Draw_Zoo(rdtest.Draw_Zoo):
demos_test_name = 'GL_Draw_Zoo'
internal = False
def check_capture(self):
rdtest.Draw_Zoo.check_capture(self)
action = self.find_action("GL_PRIMITIVE_RESTART")
self.check(action is not None)
action = action.next
self.controller.SetFrameEvent(action.eventId, True)
pipe = self.controller.GetPipelineState()
ib = pipe.GetIBuffer()
self.check(pipe.IsRestartEnabled())
self.check((pipe.GetRestartIndex() & ((1 << (ib.byteStride*8)) - 1)) == 0xffff)
action = self.find_action("GL_PRIMITIVE_RESTART_FIXED_INDEX")
self.check(action is not None)
action = action.next
self.controller.SetFrameEvent(action.eventId, True)
pipe = self.controller.GetPipelineState()
ib = pipe.GetIBuffer()
self.check(pipe.IsRestartEnabled())
self.check((pipe.GetRestartIndex() & ((1 << (ib.byteStride*8)) - 1)) == 0xffff)
action = self.find_action("GL_ClearDepth")
self.check(action is not None)
action = action.next
self.check(action.flags & (rd.ActionFlags.Clear|rd.ActionFlags.ClearDepthStencil) == (rd.ActionFlags.Clear|rd.ActionFlags.ClearDepthStencil))