Skip to content

preserve uniform names in SPIRV->GLSL compile because they are requir…#15

Open
jeske wants to merge 2 commits into
ppy:masterfrom
jeske:preserve_glsl_uniform_names
Open

preserve uniform names in SPIRV->GLSL compile because they are requir…#15
jeske wants to merge 2 commits into
ppy:masterfrom
jeske:preserve_glsl_uniform_names

Conversation

@jeske

@jeske jeske commented Mar 10, 2026

Copy link
Copy Markdown

This fixes: veldrid#8

In order to use precompiled GLSL shaders, uniform names must be preserved into GLSL shader cross compiles, because the veldrid GLSL path uses name lookups to bind GLSL uniforms.

Prior to this fix glsl uniform names were renamed during debug shader compilation and lost during non-debug shader compilation.

This patch fixes both issues, by:

  1. preserving symbols in non-debug SPIRV for GLSL cross output (this does not affect optimization level)
  2. preserving the uniform name in translation to GLSL
  3. adding a new GLSL test uniform preservation test to make sure this doesn't happen again

Test summary: total: 85, failed: 0, succeeded: 85, skipped: 0, duration: 36.9s

As far as I can tell, Veldrid:OpenGL only worked if you were willing to ship Veldrid.SPIRV into your runtime and use it to compile vulkan->SPIRV->glsl at runtime. There is no binary for SPIRV for mobile arm, and it's pretty unnecessary. It's also important to support precompiled shader users.

I found this bug while building a Veldrid backend for SilkyNvg that precompiles shaders to avoid shipping Veldrid.SPIRV, both because i dont want a SPIRV compiler dependency for a 2d vector drawling library, and because we run on android-vulkan, (and soon android-gles, and ios-metal)

@jeske jeske force-pushed the preserve_glsl_uniform_names branch from 39cb392 to 2bd808e Compare March 10, 2026 23:29
…h, so yes they are fixed, this test assures they stay fixed)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Uniform names changed

1 participant