TaskPayloadWorkgroupEXT memory bug with Nvidia driver 565.90

I’m not sure if this is the correct forum, but I might have discovered a bug in the newest Nvidia driver 565.90. (or you could point out to my error)

Using VK_EXT_mesh_shader and writing to an array of structures (AoS) in TaskPayloadWorkgroupEXT storage class results in wrong data (and also potentially writing to other memory).
Using a structure of arrays (SoA) however still works.
Before with the old driver 560.81 it worked fine.

I modified the Vulkan sample “mesh_shader_culling” a bit and could reproduce the issue.
In “mesh_shader_shared.h”, you can change the commented out code to swap from AoS to SoA.
When using AoS it produces corrupt triangles all over the place.

I’m using Windows11 with Vulkan SDK 1.3.290 and tried it out with different GPUs:

  • RTX 2080 Ti
  • RTX 3080
  • RTX 3070 Laptop

mesh_shader_culling.zip (4.7 KB)

Hi Felix i confirm that. Driver 566.07 still has the bug.
I modified the payload from this that not work anymore in the bew driver:
struct TaskData
{
uint index;
vec3 pos;
float patchID;
float mindist;
mat3 triangleRot;
mat3 normalRot;
vec2 coord0;
vec2 coord1;
vec2 coord2;
};

taskPayloadSharedEXT TaskData td[INVOCATIONS];

to this work versione:
struct TaskData
{
uint index[INVOCATIONS];;
vec3 pos[INVOCATIONS];;
float patchID[INVOCATIONS];;
float mindist[INVOCATIONS];;
mat3 triangleRot[INVOCATIONS];;
mat3 normalRot[INVOCATIONS];;
vec2 coord0[INVOCATIONS];;
vec2 coord1[INVOCATIONS];;
vec2 coord2[INVOCATIONS];;
};

taskPayloadSharedEXT TaskData td;

Marco,

Thank you for reporting this issue. Vulkan driver is looking into this.

Wen