KHR_vulkan_glsl: name mangle distinguish pure textures.

Fixes issue #252.
This commit is contained in:
John Kessenich 2016-05-20 16:59:27 -06:00
parent 22e0d41448
commit 2921e0c54a
3 changed files with 15 additions and 3 deletions

View File

@ -31,7 +31,9 @@ ERROR: 0:66: 'non-opaque uniforms outside a block' : not allowed when using GLSL
ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V
ERROR: 0:67: 'uniform' : no qualifiers allowed for function return ERROR: 0:67: 'uniform' : no qualifiers allowed for function return
ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 31 compilation errors. No code generated. ERROR: 0:73: 'texture' : no matching overloaded function found
ERROR: 0:74: 'imageStore' : no matching overloaded function found
ERROR: 33 compilation errors. No code generated.

View File

@ -67,3 +67,9 @@ subroutine int fooS; // ERROR, not in SPV
subroutine int fooSub(); // ERROR, not in SPV subroutine int fooSub(); // ERROR, not in SPV
uniform vec4 dv4; // ERROR, no default uniforms uniform vec4 dv4; // ERROR, no default uniforms
void fooTex()
{
texture(t2d, vec2(1.0)); // ERROR, need a sampler, not a pure texture
imageStore(t2d, ivec2(4, 5), vec4(1.2)); // ERROR, need an image, not a pure texture
}

View File

@ -73,9 +73,13 @@ void TType::buildMangledName(TString& mangledName)
default: break; // some compilers want this default: break; // some compilers want this
} }
if (sampler.image) if (sampler.image)
mangledName += "I"; mangledName += "I"; // a normal image
else if (sampler.sampler)
mangledName += "p"; // a "pure" sampler
else if (!sampler.combined)
mangledName += "t"; // a "pure" texture
else else
mangledName += "s"; mangledName += "s"; // traditional combined sampler
if (sampler.arrayed) if (sampler.arrayed)
mangledName += "A"; mangledName += "A";
if (sampler.shadow) if (sampler.shadow)