mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-17 03:05:44 +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.
124 lines
4.8 KiB
Python
124 lines
4.8 KiB
Python
import renderdoc as rd
|
|
import rdtest
|
|
|
|
|
|
class VK_Extended_Dynamic_State(rdtest.TestCase):
|
|
demos_test_name = 'VK_Extended_Dynamic_State'
|
|
|
|
def check_capture(self):
|
|
action = self.find_action("Draw")
|
|
|
|
self.controller.SetFrameEvent(action.eventId, True)
|
|
|
|
vsin_ref = {
|
|
0: {
|
|
'vtx': 0,
|
|
'idx': 0,
|
|
'Position': [-0.75, -0.5, 0.4],
|
|
'Color': [0.0, 1.0, 0.0, 1.0],
|
|
'UV': [0.0, 0.0],
|
|
},
|
|
1: {
|
|
'vtx': 1,
|
|
'idx': 1,
|
|
'Position': [-0.25, 0.5, 0.4],
|
|
'Color': [0.0, 1.0, 0.0, 1.0],
|
|
'UV': [0.0, 1.0],
|
|
},
|
|
2: {
|
|
'vtx': 2,
|
|
'idx': 2,
|
|
'Position': [0.25, -0.5, 0.4],
|
|
'Color': [0.0, 1.0, 0.0, 1.0],
|
|
'UV': [1.0, 0.0],
|
|
},
|
|
5: {
|
|
'vtx': 5,
|
|
'idx': 5,
|
|
'Position': [0.75, -0.5, 0.6],
|
|
'Color': [0.0, 0.0, 1.0, 1.0],
|
|
'UV': [1.0, 0.0],
|
|
},
|
|
}
|
|
|
|
self.check_mesh_data(vsin_ref, self.get_vsin(action))
|
|
|
|
postvs_data = self.get_postvs(action, rd.MeshDataStage.VSOut, 0, action.numIndices)
|
|
|
|
postvs_ref = {
|
|
0: {
|
|
'vtx': 0,
|
|
'idx': 0,
|
|
'gl_Position': [-0.75, 0.5, 0.4, 1.0],
|
|
'vertOut.col': [0.0, 1.0, 0.0, 1.0],
|
|
'vertOut.uv': [0.0, 0.0, 0.0, 1.0],
|
|
},
|
|
1: {
|
|
'vtx': 1,
|
|
'idx': 1,
|
|
'gl_Position': [-0.25, -0.5, 0.4, 1.0],
|
|
'vertOut.col': [0.0, 1.0, 0.0, 1.0],
|
|
'vertOut.uv': [0.0, 1.0, 0.0, 1.0],
|
|
},
|
|
2: {
|
|
'vtx': 2,
|
|
'idx': 2,
|
|
'gl_Position': [0.25, 0.5, 0.4, 1.0],
|
|
'vertOut.col': [0.0, 1.0, 0.0, 1.0],
|
|
'vertOut.uv': [1.0, 0.0, 0.0, 1.0],
|
|
},
|
|
5: {
|
|
'vtx': 5,
|
|
'idx': 5,
|
|
'gl_Position': [0.75, 0.5, 0.6, 1.0],
|
|
'vertOut.col': [0.0, 0.0, 1.0, 1.0],
|
|
'vertOut.uv': [1.0, 0.0, 0.0, 1.0],
|
|
},
|
|
}
|
|
|
|
self.check_mesh_data(postvs_ref, postvs_data)
|
|
|
|
pipe = self.controller.GetPipelineState()
|
|
|
|
self.check_pixel_value(pipe.GetOutputTargets()[0].resource, 100, 200, [0.0, 1.0, 0.0, 1.0])
|
|
self.check_pixel_value(pipe.GetOutputTargets()[0].resource, 300, 200, [0.0, 0.0, 1.0, 1.0])
|
|
self.check_pixel_value(pipe.GetOutputTargets()[0].resource, 200, 100, [0.2, 0.2, 0.2, 1.0])
|
|
|
|
self.check_pixel_value(pipe.GetDepthTarget().resource, 100, 200, [0.4, 205.0/255.0, 0.0, 1.0])
|
|
self.check_pixel_value(pipe.GetDepthTarget().resource, 300, 200, [0.6, 205.0/255.0, 0.0, 1.0])
|
|
self.check_pixel_value(pipe.GetDepthTarget().resource, 200, 100, [0.9, 204.0/255.0, 0.0, 1.0])
|
|
self.check_pixel_value(pipe.GetDepthTarget().resource, 200, 200, [0.4, 206.0/255.0, 0.0, 1.0])
|
|
|
|
rdtest.log.success("Triangles are as expected")
|
|
|
|
# check that the state listed is the dynamic state, not the static state
|
|
|
|
vkpipe = self.controller.GetVulkanPipelineState()
|
|
|
|
assert vkpipe.inputAssembly.topology == rd.Topology.TriangleList
|
|
|
|
assert vkpipe.depthStencil.depthTestEnable == True
|
|
assert vkpipe.depthStencil.depthWriteEnable == True
|
|
assert vkpipe.depthStencil.depthBoundsEnable == False
|
|
assert vkpipe.depthStencil.depthFunction == rd.CompareFunction.LessEqual
|
|
|
|
assert vkpipe.rasterizer.frontCCW == False
|
|
assert vkpipe.rasterizer.cullMode == rd.CullMode.Back
|
|
assert vkpipe.rasterizer.rasterizerDiscardEnable == False
|
|
|
|
assert vkpipe.depthStencil.stencilTestEnable == True
|
|
assert vkpipe.depthStencil.frontFace.passOperation == rd.StencilOperation.IncSat
|
|
assert vkpipe.depthStencil.frontFace.failOperation == rd.StencilOperation.IncSat
|
|
assert vkpipe.depthStencil.frontFace.depthFailOperation == rd.StencilOperation.IncSat
|
|
assert vkpipe.depthStencil.frontFace.function == rd.CompareFunction.AlwaysTrue
|
|
assert vkpipe.depthStencil.backFace.passOperation == rd.StencilOperation.Keep
|
|
assert vkpipe.depthStencil.backFace.failOperation == rd.StencilOperation.Keep
|
|
assert vkpipe.depthStencil.backFace.depthFailOperation == rd.StencilOperation.Keep
|
|
assert vkpipe.depthStencil.backFace.function == rd.CompareFunction.AlwaysTrue
|
|
|
|
assert len(vkpipe.viewportScissor.viewportScissors) == 1
|
|
assert vkpipe.viewportScissor.viewportScissors[0].vp.width == 400
|
|
assert vkpipe.viewportScissor.viewportScissors[0].scissor.width == 400
|
|
|
|
assert vkpipe.vertexInput.vertexBuffers[0].byteStride == 36
|