KhronosGroup / GLSL

GLSL Shading Language Specification and Extensions
Other
346 stars 101 forks source link

Use GLSL_NV_mesh_shader with separate program #250

Open JustinCop opened 2 months ago

JustinCop commented 2 months ago

I'm using mesh shader with separate program. when compiling mesh shader (using glCreateShaderProgramv), it return following error: C7592: ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accessing its members

If I declare output like this:

out gl_PerVertex {
    vec4 gl_Position;
};

It returns following error: error C7593: Builtin block member gl_Position not found in redeclaration of out gl_PerVertex

If I declare output like this:

out gl_MeshPerVertexNV {  
    vec4 gl_Position;  
} gl_MeshVerticesNV[];  

It returns following error:

error C7528: OpenGL reserves names starting with 'gl_': gl_MeshPerVertexNV
error C7528: OpenGL reserves names starting with 'gl_': gl_MeshVerticesNV

The example here (https://github.com/nvpro-samples/gl_vk_meshlet_cadscene) does not using separate mode, so I don't know how to correctly redeclare outputs. Would you help give me an example?

pixeljetstream commented 1 month ago

this looks like bug in the OpenGL driver's shader compiler. GLSLANG is fine with specifying.

out gl_MeshPerVertexNV {  
    vec4 gl_Position;  
} gl_MeshVerticesNV[];  

We filed a bug internally about this. Thanks for reporting.

pdaniell-nv commented 1 month ago

Yes I agree. I'll try to get a fix implement asap.

pdaniell-nv commented 3 days ago

This bug should be fixed in the latest Vulkan beta driver version 553.40 (Windows) and 550.40.80 (Linux) found here: https://developer.nvidia.com/vulkan-driver.

I realize that's a "Vulkan" beta driver, but it has this fix for OpenGL/GLSL too.