mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
Forbid memoryBarrierAtomicCounter for Vulkan compiles
This commit is contained in:
parent
4b2483ee88
commit
40007b862d
15
Test/baseResults/spv.atomicCounter.comp.out
Normal file
15
Test/baseResults/spv.atomicCounter.comp.out
Normal file
@ -0,0 +1,15 @@
|
||||
spv.atomicCounter.comp
|
||||
ERROR: 0:5: 'atomic counter types' : not allowed when using GLSL for Vulkan
|
||||
ERROR: 0:7: 'atomic counter types' : not allowed when using GLSL for Vulkan
|
||||
ERROR: 0:14: 'atomic counter types' : not allowed when using GLSL for Vulkan
|
||||
ERROR: 0:16: 'atomicCounterIncrement' : no matching overloaded function found
|
||||
ERROR: 0:16: 'return' : type does not match, or is not convertible to, the function's return type
|
||||
ERROR: 0:21: 'memoryBarrierAtomicCounter' : no matching overloaded function found
|
||||
ERROR: 0:23: 'atomicCounter' : no matching overloaded function found
|
||||
ERROR: 0:23: '=' : cannot convert from ' const float' to ' temp highp uint'
|
||||
ERROR: 0:24: 'atomicCounterDecrement' : no matching overloaded function found
|
||||
ERROR: 0:25: 'atomicCounterIncrement' : no matching overloaded function found
|
||||
ERROR: 10 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
26
Test/spv.atomicCounter.comp
Normal file
26
Test/spv.atomicCounter.comp
Normal file
@ -0,0 +1,26 @@
|
||||
#version 450
|
||||
|
||||
|
||||
|
||||
layout(binding = 0) uniform atomic_uint counter;
|
||||
|
||||
layout(binding = 0, offset = 4) uniform atomic_uint countArr[4];
|
||||
shared uint value;
|
||||
|
||||
int arrX[gl_WorkGroupSize.x];
|
||||
int arrY[gl_WorkGroupSize.y];
|
||||
int arrZ[gl_WorkGroupSize.z];
|
||||
|
||||
uint func(atomic_uint c)
|
||||
{
|
||||
return atomicCounterIncrement(c);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
memoryBarrierAtomicCounter();
|
||||
func(counter);
|
||||
uint val = atomicCounter(countArr[2]);
|
||||
atomicCounterDecrement(counter);
|
||||
atomicCounterIncrement(counter);
|
||||
}
|
@ -4067,10 +4067,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
}
|
||||
#ifndef GLSLANG_WEB
|
||||
if ((profile != EEsProfile && version >= 420) || esBarrier) {
|
||||
commonBuiltins.append(
|
||||
"void memoryBarrierAtomicCounter();"
|
||||
"void memoryBarrierImage();"
|
||||
);
|
||||
if (spvVersion.vulkan == 0) {
|
||||
commonBuiltins.append("void memoryBarrierAtomicCounter();");
|
||||
}
|
||||
commonBuiltins.append("void memoryBarrierImage();");
|
||||
}
|
||||
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
|
||||
stageBuiltins[EShLangMeshNV].append(
|
||||
|
@ -271,6 +271,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.always-discard2.frag",
|
||||
"spv.arbPostDepthCoverage.frag",
|
||||
"spv.arbPostDepthCoverage_Error.frag",
|
||||
"spv.atomicCounter.comp",
|
||||
"spv.bitCast.frag",
|
||||
"spv.bool.vert",
|
||||
"spv.boolInBlock.frag",
|
||||
|
Loading…
Reference in New Issue
Block a user