Modify testing to only record validation pass/fail

* Changed unit tests to only record known the validation pass/fail
status
 * errors are output as part of the failure message if the result is
 unexpected
 * can turn off validation for each test individually
* Moved some SPV_KHR_vulkan_memory_model tests to be compiled for Vulkan
1.1
This commit is contained in:
Alan Baker 2018-12-04 10:43:23 -05:00
parent 0bb930fc0f
commit ed777b0fbd
79 changed files with 120 additions and 341 deletions

View File

@ -69,10 +69,7 @@ output primitive = line_strip
0:? 'ps' ( in 3-element array of uint PointSize)
0:? 'OutputStream.ps' ( out float PointSize)
error: SPIRV-Tools Validation Errors
error: According to the Vulkan spec BuiltIn PointSize variable needs to be a 32-bit float scalar. ID <28> (OpVariable) is not a float scalar.
%29 = OpLoad %_arr_uint_uint_3 %ps_1
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 36

View File

@ -93,10 +93,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:? 'input' (layout( location=8) in 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Operand 2 of Decorate requires one of these capabilities: InputAttachment
OpDecorate %attach InputAttachmentIndex 4
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 51

View File

@ -145,10 +145,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
0:? 'input' ( in 4-component vector of float FragCoord)
error: SPIRV-Tools Validation Errors
error: Structure id 50 decorated as BufferBlock for variable in Uniform storage class must follow relaxed storage buffer layout rules: member 7 at offset 128 overlaps previous member ending at offset 171
%tbufName = OpTypeStruct %v4float %int %float %float %float %float %float %float %mat3v4float %mat3v4float %mat3v4float %mat3v4float
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 73

View File

@ -131,12 +131,7 @@ gl_FragCoord origin is upper left
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Uniform OpVariable <id> '18[cb3] 'has illegal type.
From Vulkan spec, section 14.5.2:
Variables identified with the Uniform storage class are used to access transparent buffer backed resources. Such variables must be typed as OpTypeStruct, or an array of this type
%cb3_0 = OpVariable %_ptr_Uniform__arr__arr_cb3_uint_4_uint_2 Uniform
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 66

View File

@ -543,10 +543,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
error: SPIRV-Tools Validation Errors
error: Matrix types can only be parameterized with floating-point types.
%mat4v4int = OpTypeMatrix %v4int 4
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 98

View File

@ -117,10 +117,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Input variable id <34> is used by entry point 'main' id <4>, but is not listed as an interface
%i_1 = OpVariable %_ptr_Input_PS_INPUT Input
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 52

View File

@ -49,10 +49,7 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{})
0:? Linker Objects
error: SPIRV-Tools Validation Errors
error: Input variable id <20> is used by entry point 'main' id <4>, but is not listed as an interface
%i_1 = OpVariable %_ptr_Input_ps_in Input
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 27

View File

@ -47,10 +47,7 @@ Shader version: 500
0:? 'i' ( temp structure{})
0:? Linker Objects
error: SPIRV-Tools Validation Errors
error: Input variable id <20> is used by entry point 'main' id <4>, but is not listed as an interface
%i_1 = OpVariable %_ptr_Input_vs_in Input
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 27

View File

@ -1261,10 +1261,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image Operand ConstOffsets to be a const object
%90 = OpImageGather %v4float %76 %78 %int_0 ConstOffsets %89
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 399

View File

@ -1253,10 +1253,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image Operand ConstOffsets to be a const object
%90 = OpImageGather %v4float %76 %78 %int_0 ConstOffsets %89
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 389

View File

@ -715,10 +715,7 @@ local_size = (1, 1, 1)
0:? 'inU0' (layout( location=3) in 4-component vector of uint)
0:? 'inU1' (layout( location=4) in 4-component vector of uint)
error: SPIRV-Tools Validation Errors
error: Expected operand to be vector bool: All
%64 = OpAll %bool %63
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 265

View File

@ -153,10 +153,7 @@ gl_FragCoord origin is upper left
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
error: SPIRV-Tools Validation Errors
error: GLSL.std.450 InterpolateAtOffset: expected Interpolant storage class to be Input
%28 = OpExtInst %float %1 InterpolateAtOffset %inF1 %27
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 80

View File

@ -5643,10 +5643,7 @@ gl_FragCoord origin is upper left
0:? 'gs_uc4' ( shared 4-component vector of uint)
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Matrix types can only be parameterized with floating-point types.
%mat2v2bool = OpTypeMatrix %v2bool 2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1836

View File

@ -2778,10 +2778,7 @@ Shader version: 500
0:413 'inFM3x2' ( in 3X2 matrix of float)
0:? Linker Objects
error: SPIRV-Tools Validation Errors
error: Matrix types can only be parameterized with floating-point types.
%mat2v2bool = OpTypeMatrix %v2bool 2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1225

View File

@ -151,10 +151,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Illegal number of components (1) for TypeVector
%v1float = OpTypeVector %float 1
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 77

View File

@ -231,10 +231,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Illegal number of components (1) for TypeVector
%v1bool = OpTypeVector %bool 1
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 130

View File

@ -30,10 +30,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 1-component vector of float f1, uniform 1X1 matrix of float fmat11, uniform 4X1 matrix of float fmat41, uniform 1X2 matrix of float fmat12, uniform 2X3 matrix of double dmat23, uniform 4X4 matrix of int int44})
error: SPIRV-Tools Validation Errors
error: Illegal number of components (1) for TypeVector
%v1float = OpTypeVector %float 1
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 30

View File

@ -397,10 +397,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Illegal number of components (1) for TypeVector
%v1int = OpTypeVector %int 1
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 232

View File

@ -675,11 +675,7 @@ Shader version: 500
0:? Linker Objects
0:? 'inf' (layout( location=0) in float)
Missing functionality: matrix swizzle
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '42[f3]'s type does not match Object <id> '34's type.
OpStore %f3 %int_0
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 118

View File

@ -101,10 +101,7 @@ gl_FragCoord origin is upper left
0:? 'N2::gf' ( global float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: OpFunctionCall Function <id>'s parameter count does not match the argument count.
%43 = OpFunctionCall %v4float %N2__N3__C1__getVec_
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 54

View File

@ -398,10 +398,7 @@ gl_FragCoord origin is upper left
0:? 'ci' ( const int)
0:? 0 (const int)
error: SPIRV-Tools Validation Errors
error: If OpTypeBool is stored in conjunction with OpVariable, it can only be used with non-externally visible shader Storage Classes: Workgroup, CrossWorkgroup, Private, and Function
%_entryPointOutput_c = OpVariable %_ptr_Output_bool Output
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 104

View File

@ -399,10 +399,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image Operand Bias to be float scalar
%28 = OpImageSampleImplicitLod %v4float %23 %float_0_100000001 Bias|ConstOffset %int_1 %float_0_5
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 161

View File

@ -297,10 +297,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image Operand Bias to be float scalar
%31 = OpImageSampleImplicitLod %v4float %23 %27 Bias|ConstOffset %int_0 %float_0_5
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 118

View File

@ -397,10 +397,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%48 = OpImageSampleDrefImplicitLod %float %43 %46 %47
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 209

View File

@ -379,10 +379,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%41 = OpImageSampleDrefImplicitLod %float %38 %39 %40
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 198

View File

@ -325,10 +325,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%42 = OpImageSampleDrefImplicitLod %float %39 %40 %41 ConstOffset %int_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 167

View File

@ -337,10 +337,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%49 = OpImageSampleDrefImplicitLod %float %44 %47 %48 ConstOffset %int_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 178

View File

@ -433,10 +433,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%49 = OpImageSampleDrefExplicitLod %float %44 %47 %48 Lod %float_0
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 210

View File

@ -415,10 +415,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%42 = OpImageSampleDrefExplicitLod %float %39 %40 %41 Lod %float_0
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 199

View File

@ -349,10 +349,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%43 = OpImageSampleDrefExplicitLod %float %40 %41 %42 Lod|ConstOffset %float_0 %int_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 168

View File

@ -361,10 +361,7 @@ using depth_any
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: Expected Image 'Sampled Type' to be the same as Result Type
%50 = OpImageSampleDrefExplicitLod %float %45 %48 %49 Lod|ConstOffset %float_0 %int_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 179

View File

@ -155,10 +155,7 @@ output primitive = line_strip
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
error: SPIRV-Tools Validation Errors
error: According to the Vulkan spec BuiltIn Position variable needs to be a 4-component 32-bit float vector. ID <20> (OpVariable) is not a float vector.
OpStore %OutputStream_clip0 %25
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 65

View File

@ -211,10 +211,7 @@ gl_FragCoord origin is upper left
0:? 's.ff3' (layout( location=6) flat in bool)
0:? 's.ff4' (layout( location=7) in 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: If OpTypeBool is stored in conjunction with OpVariable, it can only be used with non-externally visible shader Storage Classes: Workgroup, CrossWorkgroup, Private, and Function
%s_b = OpVariable %_ptr_Input_bool Input
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 102

View File

@ -207,10 +207,7 @@ gl_FragCoord origin is upper left
0:? 'input[1].f' (layout( location=2) in float)
0:? 'input[2].f' (layout( location=3) in float)
error: SPIRV-Tools Validation Errors
error: According to the Vulkan spec BuiltIn FragCoord variable needs to be a 4-component 32-bit float vector. ID <41> (OpVariable) is not a float vector.
%input_pos = OpVariable %_ptr_Input__arr_v4float_uint_3 Input
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 66

View File

@ -155,12 +155,7 @@ gl_FragCoord origin is upper left
0:? 'g_texdata_array2[2].nonopaque_thing' ( uniform int)
0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: UniformConstant OpVariable <id> '65[g_texdata.nonopaque_thing] 'has illegal type.
From Vulkan spec, section 14.5.2:
Variables identified with the UniformConstant storage class are used only as handles to refer to opaque resources. Such variables must be typed as OpTypeImage, OpTypeSampler, OpTypeSampledImage, OpTypeAccelerationStructureNV, or an array of one of these types.
%g_texdata_nonopaque_thing = OpVariable %_ptr_UniformConstant_int UniformConstant
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 80

View File

@ -149,10 +149,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: Structure id 12 decorated as BufferBlock must be explicitly laid out with Offset decorations.
%__0 = OpTypeStruct %uint
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 70

View File

@ -473,10 +473,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: AtomicIAdd: expected Value to be of type Result Type
%28 = OpAtomicIAdd %uint %24 %uint_1 %uint_0 %int_1
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 87

View File

@ -137,10 +137,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: Structure id 20 decorated as BufferBlock must be explicitly laid out with Offset decorations.
%__1 = OpTypeStruct %uint
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 78

View File

@ -837,10 +837,7 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2s1a' ( uniform texture2D)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '185's type does not match Object <id> '184's type.
OpStore %185 %184
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 240

View File

@ -105,10 +105,7 @@ output primitive = triangle_strip
0:? 'TriStream' ( temp structure{})
0:? Linker Objects
error: SPIRV-Tools Validation Errors
error: Output variable id <23> is used by entry point 'main' id <4>, but is not listed as an interface
%TriStream_1 = OpVariable %_ptr_Output_GSPS_INPUT Output
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 57

View File

@ -1,10 +1,7 @@
spv.130.frag
WARNING: 0:31: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 205

View File

@ -1,8 +1,5 @@
spv.140.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 96

View File

@ -1,8 +1,5 @@
spv.400.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1118

View File

@ -1,12 +1,7 @@
spv.AofA.frag
WARNING: 0:6: '[][]' : Generating SPIR-V array-of-arrays, but Vulkan only supports single array level for this resource
error: SPIRV-Tools Validation Errors
error: Uniform OpVariable <id> '98[nameAofA] 'has illegal type.
From Vulkan spec, section 14.5.2:
Variables identified with the Uniform storage class are used to access transparent buffer backed resources. Such variables must be typed as OpTypeStruct, or an array of this type
%nameAofA = OpVariable %_ptr_Uniform__arr__arr_uAofA_uint_5_uint_3 Uniform
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 104

View File

@ -7,8 +7,7 @@ WARNING: 0:24: '' : attribute with arguments not recognized, skipping
WARNING: 0:25: '' : attribute with arguments not recognized, skipping
WARNING: 0:26: '' : attribute with arguments not recognized, skipping
error: SPIRV-Tools Validation Errors
error: Invalid loop control operand: 4 has invalid mask component 4
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 118

View File

@ -1,8 +1,5 @@
spv.explicittypes.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 576

View File

@ -1,8 +1,5 @@
spv.float16.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 534

View File

@ -1,8 +1,5 @@
spv.float16Fetch.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 5923

View File

@ -1,8 +1,5 @@
spv.float32.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 533

View File

@ -1,8 +1,5 @@
spv.float64.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 524

View File

@ -1,10 +1,5 @@
spv.functionNestedOpaque.vert
error: SPIRV-Tools Validation Errors
error: UniformConstant OpVariable <id> '36[si] 'has illegal type.
From Vulkan spec, section 14.5.2:
Variables identified with the UniformConstant storage class are used only as handles to refer to opaque resources. Such variables must be typed as OpTypeImage, OpTypeSampler, OpTypeSampledImage, OpTypeAccelerationStructureNV, or an array of one of these types.
%si = OpVariable %_ptr_UniformConstant_S UniformConstant
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 39

View File

@ -1,8 +1,5 @@
spv.image.frag
error: SPIRV-Tools Validation Errors
error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability ImageRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 395

View File

@ -1,8 +1,5 @@
spv.imageLoadStoreLod.frag
error: SPIRV-Tools Validation Errors
error: Image Operand Lod can only be used with ExplicitLod opcodes and OpImageFetch
%19 = OpImageRead %v4float %15 %int_1 Lod %int_3
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 82

View File

@ -1,8 +1,5 @@
spv.int16.amd.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 560

View File

@ -1,8 +1,5 @@
spv.int16.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 523

View File

@ -1,8 +1,5 @@
spv.int32.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 493

View File

@ -1,8 +1,5 @@
spv.int64.frag
error: SPIRV-Tools Validation Errors
error: OpDecorate SpecId decoration target <id> '1' is not a scalar specialization constant.
OpDecorate %su64inc SpecId 105
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 489

View File

@ -1,8 +1,5 @@
spv.int8.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 518

View File

@ -1,8 +1,5 @@
spv.memoryQualifier.frag
error: SPIRV-Tools Validation Errors
error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability ImageRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 97

View File

@ -1,8 +1,5 @@
spv.multiviewPerViewAttributes.tesc
error: SPIRV-Tools Validation Errors
error: OpMemberName Member <id> '5' index is larger than Type <id> '27[gl_PositionPerViewNV]'s member count.
OpMemberName %gl_PerVertex_0 5 "gl_PositionPerViewNV"
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 37

View File

@ -1,8 +1,5 @@
spv.newTexture.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 284

View File

@ -1,8 +1,5 @@
spv.paramMemory.frag
error: SPIRV-Tools Validation Errors
error: OpFunctionCall Argument <id> '38[image1]'s type does not match Function <id> '8's parameter type.
%41 = OpFunctionCall %v4float %image_load_I21_vi2_ %image1 %param
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 69

View File

@ -1,8 +1,5 @@
spv.queryL.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 224

View File

@ -1,8 +1,5 @@
spv.sampleMaskOverrideCoverage.frag
error: SPIRV-Tools Validation Errors
error: Operand 2 of Decorate requires one of these capabilities: SampleMaskOverrideCoverageNV
OpDecorate %gl_SampleMask OverrideCoverageNV
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 20

View File

@ -1,8 +1,5 @@
spv.scalarlayout.frag
error: SPIRV-Tools Validation Errors
error: Structure id 17 decorated as Block for variable in Uniform storage class must follow standard uniform buffer layout rules: member 1 at offset 4 is not aligned to 8
%B1 = OpTypeStruct %float %v2float %v3float %_arr_float_uint_2 %mat2v3float %_arr_mat2v3float_uint_2 %float %S %_arr_S_uint_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 20

View File

@ -1,8 +1,5 @@
spv.scalarlayoutfloat16.frag
error: SPIRV-Tools Validation Errors
error: Structure id 15 decorated as Block for variable in Uniform storage class must follow standard uniform buffer layout rules: member 1 at offset 2 is not aligned to 4
%B1 = OpTypeStruct %half %v2half %v3half %_arr_half_uint_2 %half %S %_arr_S_uint_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 18

View File

@ -1,8 +1,5 @@
spv.separate.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 319

View File

@ -1,8 +1,5 @@
spv.shaderBallotAMD.comp
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1343

View File

@ -1,8 +1,5 @@
spv.sparseTexture.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 438

View File

@ -1,8 +1,5 @@
spv.sparseTextureClamp.frag
error: SPIRV-Tools Validation Errors
error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability SampledRect
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 360

View File

@ -1,8 +1,5 @@
spv.stereoViewRendering.tesc
error: SPIRV-Tools Validation Errors
error: When BuiltIn decoration is applied to a structure-type member, all members of that structure type must also be decorated with BuiltIn (No allowed mixing of built-in variables and non-built-in variables within a single structure). Structure id 27 does not meet this requirement.
%gl_PerVertex_0 = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1 %v4float
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 38

View File

@ -1,8 +1,5 @@
spv.subgroupPartitioned.comp
error: SPIRV-Tools Validation Errors
error: Opcode GroupNonUniformFAdd requires one of these capabilities: GroupNonUniformArithmetic GroupNonUniformClustered
%179 = OpGroupNonUniformFAdd %float %uint_3 PartitionedReduceNV %176 %177
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 2506

View File

@ -1,8 +1,5 @@
spv.textureGatherBiasLod.frag
error: SPIRV-Tools Validation Errors
error: Image Operand Bias can only be used with ImplicitLod opcodes
%27 = OpImageGather %v4float %17 %21 %int_0 Bias %26
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 298

View File

@ -1,8 +1,5 @@
spv.viewportArray2.tesc
error: SPIRV-Tools Validation Errors
error: Vulkan spec allows BuiltIn ViewportIndex to be used only with Vertex, TessellationEvaluation, Geometry, or Fragment execution models. ID <0> (OpStore) is referencing ID <22> (OpVariable) which is decorated with BuiltIn ViewportIndex in function <4> called with execution model TessellationControl.
OpStore %gl_ViewportIndex %int_2
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 25

View File

@ -1,8 +1,5 @@
spv.vulkan110.int16.frag
error: SPIRV-Tools Validation Errors
error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
OpCapability Float16
Validation failed
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 523

View File

@ -51,6 +51,7 @@ TEST_P(ConfigTest, FromFile)
{
TestCaseSpec testCase = GetParam();
GlslangResult result;
result.validationResult = true;
// Get the contents for input shader and limit configurations.
std::string shaderContents, configContents;

View File

@ -77,17 +77,16 @@ TEST_P(LinkTestVulkan, FromFile)
if (success && (controls & EShMsgSpvRules)) {
spv::SpvBuildLogger logger;
std::vector<uint32_t> spirv_binary;
glslang::SpvOptions options;
options.disableOptimizer = true;
options.validate = true;
options().disableOptimizer = true;
glslang::GlslangToSpv(*program.getIntermediate(shaders.front()->getStage()),
spirv_binary, &logger, &options);
spirv_binary, &logger, &options());
std::ostringstream disassembly_stream;
spv::Parameterize();
spv::Disassemble(disassembly_stream, spirv_binary);
result.spirvWarningsErrors = logger.getAllMessages();
result.spirv = disassembly_stream.str();
result.validationResult = !options().validate || logger.getAllMessages().empty();
}
std::ostringstream stream;
@ -99,7 +98,8 @@ TEST_P(LinkTestVulkan, FromFile)
std::string expectedOutput;
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname,
result.spirvWarningsErrors);
}
// clang-format off

View File

@ -50,6 +50,7 @@ TEST_P(LinkTest, FromFile)
const size_t fileCount = fileNames.size();
const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::OpenGL, Target::AST);
GlslangResult result;
result.validationResult = true;
// Compile each input shader file.
std::vector<std::unique_ptr<glslang::TShader>> shaders;

View File

@ -111,7 +111,10 @@ public:
: defaultVersion(100),
defaultProfile(ENoProfile),
forceVersionProfile(false),
isForwardCompatible(false) {}
isForwardCompatible(false) {
// Perform validation by default.
validatorOptions.validate = true;
}
// Tries to load the contents from the file at the given |path|. On success,
// writes the contents into |contents|. On failure, errors out.
@ -137,15 +140,18 @@ public:
// write |real| to the given file named as |fname| if update mode is on.
void checkEqAndUpdateIfRequested(const std::string& expected,
const std::string& real,
const std::string& fname)
const std::string& fname,
const std::string& errorsAndWarnings = "")
{
// In order to output the message we want under proper circumstances,
// we need the following operator<< stuff.
EXPECT_EQ(expected, real)
<< (GlobalTestSettings.updateMode
? ("Mismatch found and update mode turned on - "
"flushing expected result output.")
: "");
"flushing expected result output.\n")
: "")
<< "The following warnings/errors occurred:\n"
<< errorsAndWarnings;
// Update the expected output file if requested.
// It looks weird to duplicate the comparison between expected_output
@ -168,6 +174,7 @@ public:
std::vector<ShaderResult> shaderResults;
std::string linkingOutput;
std::string linkingError;
bool validationResult;
std::string spirvWarningsErrors;
std::string spirv; // Optional SPIR-V disassembly text.
};
@ -241,21 +248,20 @@ public:
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
glslang::SpvOptions options;
options.disableOptimizer = !enableOptimizer;
options.validate = true;
options().disableOptimizer = !enableOptimizer;
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options);
spirv_binary, &logger, &options());
std::ostringstream disassembly_stream;
spv::Parameterize();
spv::Disassemble(disassembly_stream, spirv_binary);
bool validation_result = !options().validate || logger.getAllMessages().empty();
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
program.getInfoLog(), program.getInfoDebugLog(),
logger.getAllMessages(), disassembly_stream.str()};
validation_result, logger.getAllMessages(), disassembly_stream.str()};
} else {
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
program.getInfoLog(), program.getInfoDebugLog(), "", ""};
program.getInfoLog(), program.getInfoDebugLog(), true, "", ""};
}
}
@ -299,20 +305,19 @@ public:
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
glslang::SpvOptions options;
options.validate = true;
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options);
spirv_binary, &logger, &options());
std::ostringstream disassembly_stream;
spv::Parameterize();
spv::Disassemble(disassembly_stream, spirv_binary);
bool validation_result = !options().validate || logger.getAllMessages().empty();
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
program.getInfoLog(), program.getInfoDebugLog(),
logger.getAllMessages(), disassembly_stream.str()};
validation_result, logger.getAllMessages(), disassembly_stream.str()};
} else {
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
program.getInfoLog(), program.getInfoDebugLog(), "", ""};
program.getInfoLog(), program.getInfoDebugLog(), true, "", ""};
}
}
@ -341,22 +346,21 @@ public:
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
glslang::SpvOptions options;
options.validate = true;
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options);
spirv_binary, &logger, &options());
spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
std::ostringstream disassembly_stream;
spv::Parameterize();
spv::Disassemble(disassembly_stream, spirv_binary);
bool validation_result = !options().validate || logger.getAllMessages().empty();
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
program.getInfoLog(), program.getInfoDebugLog(),
logger.getAllMessages(), disassembly_stream.str()};
validation_result, logger.getAllMessages(), disassembly_stream.str()};
} else {
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
program.getInfoLog(), program.getInfoDebugLog(), "", ""};
program.getInfoLog(), program.getInfoDebugLog(), true, "", ""};
}
}
@ -377,9 +381,9 @@ public:
return {{{shaderName, "", ""},},
"", "",
"", disassembly_stream.str()};
true, "", disassembly_stream.str()};
} else {
return {{{shaderName, "", ""},}, "", "", "", ""};
return {{{shaderName, "", ""},}, "", "", true, "", ""};
}
}
@ -398,7 +402,9 @@ public:
}
outputIfNotEmpty(result.linkingOutput);
outputIfNotEmpty(result.linkingError);
*stream << result.spirvWarningsErrors;
if (!result.validationResult) {
*stream << "Validation failed\n";
}
if (controls & EShMsgSpvRules) {
*stream
@ -438,7 +444,7 @@ public:
outputResultToStream(&stream, result, controls);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
expectedOutputFname);
expectedOutputFname, result.spirvWarningsErrors);
}
void loadFileCompileFlattenUniformsAndCheck(const std::string& testDir,
@ -465,7 +471,7 @@ public:
outputResultToStream(&stream, result, controls);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
expectedOutputFname);
expectedOutputFname, result.spirvWarningsErrors);
}
void loadFileCompileIoMapAndCheck(const std::string& testDir,
@ -502,7 +508,7 @@ public:
outputResultToStream(&stream, result, controls);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
expectedOutputFname);
expectedOutputFname, result.spirvWarningsErrors);
}
void loadFileCompileRemapAndCheck(const std::string& testDir,
@ -529,7 +535,7 @@ public:
outputResultToStream(&stream, result, controls);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
expectedOutputFname);
expectedOutputFname, result.spirvWarningsErrors);
}
void loadFileRemapAndCheck(const std::string& testDir,
@ -556,7 +562,7 @@ public:
outputResultToStream(&stream, result, controls);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
expectedOutputFname);
expectedOutputFname, result.spirvWarningsErrors);
}
// Preprocesses the given |source| code. On success, returns true, the
@ -636,14 +642,17 @@ public:
outputResultToStream(&stream, result, controls);
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
expectedOutputFname);
expectedOutputFname, result.spirvWarningsErrors);
}
glslang::SpvOptions& options() { return validatorOptions; }
private:
const int defaultVersion;
const EProfile defaultProfile;
const bool forceVersionProfile;
const bool isForwardCompatible;
glslang::SpvOptions validatorOptions;
};
} // namespace glslangtest