Add struct array to VK_Mesh_Shader task out

This commit is contained in:
Jake Turner
2026-01-29 09:16:48 +13:00
parent 7fc2ca7d7b
commit 0bec9e0a0c
2 changed files with 27 additions and 0 deletions
+24
View File
@@ -35,9 +35,16 @@ RD_TEST(VK_Mesh_Shader, VulkanGraphicsTest)
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
struct Inner
{
uint a;
uint b;
};
struct PayLoad
{
uint tri[4];
Inner inner[4];
};
taskPayloadSharedEXT PayLoad payLoad;
@@ -48,6 +55,16 @@ void main()
payLoad.tri[1] = 1;
payLoad.tri[2] = 2;
payLoad.tri[3] = 3;
payLoad.inner[0].a = 10;
payLoad.inner[0].b = 10;
payLoad.inner[1].a = 11;
payLoad.inner[1].b = 11;
payLoad.inner[2].a = 12;
payLoad.inner[2].b = 12;
payLoad.inner[3].a = 13;
payLoad.inner[3].b = 13;
EmitMeshTasksEXT(4, 1, 1);
}
@@ -58,9 +75,16 @@ void main()
#version 460
#extension GL_EXT_mesh_shader : require
struct Inner
{
uint a;
uint b;
};
struct PayLoad
{
uint tri[4];
Inner inner[4];
};
taskPayloadSharedEXT PayLoad payLoad;
+3
View File
@@ -1007,6 +1007,9 @@ class TestCase:
for var in payload.variables:
var_data = {}
var_data[var.name] = []
if (var.type.baseType == rd.VarType.Struct):
log.print(f"Ignoring struct variable '{var.name}'")
continue
# This is not complete to decode all possible payload layouts
for i in range(var.type.elements):
format = rd.ResourceFormat()