Files
Jake Turner 022a63e1bc Remove extra rdtest.log.end_section in VK_Mesh_Shader
Fixes HTML output
Move the other VK_Mesh tests over to use "with rdtest.log.auto_section" construct
2026-04-09 09:42:33 +01:00

106 lines
3.6 KiB
Python

import renderdoc as rd
import rdtest
from rdtest import analyse
class VK_Mesh_Shader(rdtest.TestCase):
demos_test_name = 'VK_Mesh_Shader'
demos_frame_cap = 5
def build_local_taskout_reference(self):
reference = {}
reference[0] = { 'padArr' : [1000,1001,1002,1003] }
reference[1] = { 'pad': [123] }
reference[2] = { 'tri': [0, 1, 2, 3] }
return reference
def build_meshout_reference(self, orgY, color):
countTris = 4
triSize = 0.2
deltX = 0.42
orgX = -0.65
i = 0
reference = {}
for tri in range(countTris):
for vert in range(3):
posX = orgX + tri * deltX
posY = orgY
if vert == 0:
posX += -triSize
posY += -triSize
elif vert == 1:
posX += 0.0
posY += triSize
elif vert == 2:
posX += triSize
posY += -triSize
reference[i] = {
'vtx': i,
'idx': i,
'gl_Position': [posX, posY, 0.0, 1.0],
'outColor': color,
}
i += 1
return reference
def check_capture(self):
last_action: rd.ActionDescription = self.get_last_action()
self.controller.SetFrameEvent(last_action.eventId, True)
action = self.find_action("Mesh Shaders")
action = action.next
name = f"Pure Mesh Shader Test EID:{action.eventId}"
with rdtest.log.auto_section(name):
self.controller.SetFrameEvent(action.eventId, False)
x = 70
y = 240
orgY = 0.65
color = [1.0, 0.0, 0.0, 1.0]
postms_ref = self.build_meshout_reference(orgY, color)
postms_data = self.get_postvs(action, rd.MeshDataStage.MeshOut, 0, action.numIndices)
self.check_mesh_data(postms_ref, postms_data)
self.check_debug_pixel(x, y)
y -= 100
action = action.next
name = f"Task Shader with Local Payload EID:{action.eventId}"
with rdtest.log.auto_section(name):
self.controller.SetFrameEvent(action.eventId, False)
postts_ref = self.build_local_taskout_reference()
postts_data = self.get_task_data(action)
self.check_task_data(postts_ref, postts_data)
orgY = 0.0
color = [0.0, 0.0, 1.0, 1.0]
postms_ref = self.build_meshout_reference(orgY, color)
postms_data = self.get_postvs(action, rd.MeshDataStage.MeshOut, 0, action.numIndices)
self.check_mesh_data(postms_ref, postms_data)
self.check_debug_pixel(x, y)
name = f"Mesh Shader with Points output"
with rdtest.log.auto_section(name):
action = action.next
self.controller.SetFrameEvent(action.eventId, False)
x = 290
y = 90
color = [0.0, 1.0, 0.0, 1.0]
postms_ref = {}
for i in range(6):
postms_ref[i] = {
'vtx': i,
'idx': i,
'gl_Position': [-0.4+0.21*i, -0.4, 0.0, 1.0],
'gl_PointSize': 20.0,
'outColor': color,
}
postms_data = self.get_postvs(action, rd.MeshDataStage.MeshOut, 0, action.numIndices)
self.check_mesh_data(postms_ref, postms_data)
self.check_debug_pixel(x, y)