diff --git a/Test/baseResults/vulkan.vert.out b/Test/baseResults/vulkan.vert.out index 0f64d64d..19fdade5 100644 --- a/Test/baseResults/vulkan.vert.out +++ b/Test/baseResults/vulkan.vert.out @@ -36,7 +36,8 @@ ERROR: 0:51: '[]' : only outermost dimension of an array of arrays can be a spec ERROR: 0:54: '[]' : only outermost dimension of an array of arrays can be a specialization constant ERROR: 0:54: 'location' : SPIR-V requires location for user input/output ERROR: 0:58: 'location' : SPIR-V requires location for user input/output -ERROR: 37 compilation errors. No code generated. +ERROR: 0:65: 'location' : overlapping use of location 10 +ERROR: 38 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff --git a/Test/vulkan.vert b/Test/vulkan.vert index e670e958..a6af2d57 100644 --- a/Test/vulkan.vert +++ b/Test/vulkan.vert @@ -61,3 +61,5 @@ out ban2 { layout(binding = 3000) uniform sampler2D s3000; layout(binding = 3001) uniform b3001 { int a; }; +layout(location = 10) in vec4 in1; +layout(location = 10) in vec4 in2; // ERROR, no location aliasing diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index c80fdb36..c540ae64 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -847,8 +847,8 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // combine location and component ranges TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0); - // check for collisions, except for vertex inputs on desktop - if (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput())) + // check for collisions, except for vertex inputs on desktop targeting OpenGL + if (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) collision = checkLocationRange(set, range, type, typeCollision); if (collision < 0)