#if ENABLE_OPT
#include "spirv-tools/optimizer.hpp"
+ #include "spirv-tools/libspirv.h"
#endif
#if ENABLE_OPT
#if ENABLE_OPT
+// Translate glslang's view of target versioning to what SPIRV-Tools uses.
+spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger)
+{
+ switch (spvVersion.vulkan) {
+ case glslang::EShTargetVulkan_1_0: return spv_target_env::SPV_ENV_VULKAN_1_0;
+ case glslang::EShTargetVulkan_1_1: return spv_target_env::SPV_ENV_VULKAN_1_1;
+ default:
+ break;
+ }
+
+ if (spvVersion.openGl > 0)
+ return spv_target_env::SPV_ENV_OPENGL_4_5;
+
+ logger->missingFunctionality("Target version for SPIRV-Tools validator");
+ return spv_target_env::SPV_ENV_UNIVERSAL_1_0;
+}
+
// Apply the SPIRV-Tools validator to generated SPIR-V.
+void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
+ spv::SpvBuildLogger* logger)
+{
+ // validate
+ spv_context context = spvContextCreate(MapToSpirvToolsEnv(intermediate.getSpv(), logger));
+ spv_const_binary_t binary = { spirv.data(), spirv.size() };
+ spv_diagnostic diagnostic = nullptr;
+ spv_validator_options options = spvValidatorOptionsCreate();
+ spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets());
+ spvValidateWithOptions(context, options, &binary, &diagnostic);
+
+ // report
+ if (diagnostic != nullptr) {
+ logger->error("SPIRV-Tools Validation Errors");
+ logger->error(diagnostic->error);
+ }
+
+ // tear down
+ spvValidatorOptionsDestroy(options);
+ spvDiagnosticDestroy(diagnostic);
+ spvContextDestroy(context);
+}
+
+// Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of
+// legalizing HLSL SPIR-V.
void SpirvToolsLegalize(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
spv::SpvBuildLogger* logger, const SpvOptions* options)
{
it.dumpSpv(spirv);
#if ENABLE_OPT
+ SpirvToolsValidate(intermediate, spirv, logger);
+
// If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan
// eg. forward and remove memory writes of opaque types.
if ((intermediate.getSource() == EShSourceHlsl || options->optimizeSize) &&
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 36
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 51
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 standard 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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 73
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: Only a single level of array is allowed for descriptor set variables
+ %cb3_0 = OpVariable %_ptr_Uniform__arr__arr_cb3_uint_4_uint_2 Uniform
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 66
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 98
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 52
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 27
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 27
0:? 'f1' ( global 1-component vector of float)
0:? 'scalar' ( global float)
+error: SPIRV-Tools Validation Errors
+error: Expected int scalar or vector type as Result Type: IMul
+ %20 = OpIMul %float %18 %19
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 27
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 399
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 389
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 265
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 80
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1836
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1225
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 77
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 130
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 30
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 232
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 118
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_
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 54
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 161
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 118
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 209
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 198
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 167
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 178
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 210
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 199
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 168
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 179
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 65
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 66
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 70
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 87
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: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's type.
+ OpStore %size %20
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 114
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: OpStore Pointer <id> '26[size]'s type does not match Object <id> '33's type.
+ OpStore %size %33
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 78
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 78
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: OpStore Pointer <id> '43[size]'s type does not match Object <id> '44's type.
+ OpStore %size %44
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 96
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: OpStore Pointer <id> '26[size]'s type does not match Object <id> '33's type.
+ OpStore %size %33
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 78
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: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's type.
+ OpStore %size %20
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 239
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 240
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 57
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 205
spv.140.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 96
spv.150.geom
+error: SPIRV-Tools Validation Errors
+error: Capability GeometryStreams is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability GeometryStreams
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 71
spv.400.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1118
spv.420.geom
+error: SPIRV-Tools Validation Errors
+error: Capability GeometryStreams is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability GeometryStreams
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 72
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: Only a single level of array is allowed for descriptor set variables
+ %nameAofA = OpVariable %_ptr_Uniform__arr__arr_uAofA_uint_5_uint_3 Uniform
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 104
spv.atomicInt64.comp
+error: SPIRV-Tools Validation Errors
+error: Capability Int64Atomics is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability Int64Atomics
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 149
spv.builtInXFB.vert
+error: SPIRV-Tools Validation Errors
+error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability TransformFeedback
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 21
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
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 118
spv.debugInfo.frag
+error: SPIRV-Tools Validation Errors
+error: Invalid SPIR-V binary version 1.3 for target environment SPIR-V 1.0 (under OpenGL 4.5 semantics).
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 124
spv.explicittypes.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 576
spv.float16.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 534
spv.float16Fetch.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 5923
spv.float32.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 533
spv.float64.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 524
spv.image.frag
+error: SPIRV-Tools Validation Errors
+error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability ImageRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 376
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 82
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 560
spv.int16.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 523
spv.int32.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 493
spv.int8.frag
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.1 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 518
spv.memoryQualifier.frag
+error: SPIRV-Tools Validation Errors
+error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability ImageRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 97
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"
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 37
spv.newTexture.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 284
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 69
spv.queryL.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 224
spv.sampleMaskOverrideCoverage.frag
+error: SPIRV-Tools Validation Errors
+error: Operand 2 of Decorate requires one of these capabilities: SampleMaskOverrideCoverageNV
+ OpDecorate %gl_SampleMask OverrideCoverageNV
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 20
spv.separate.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 319
spv.shaderBallotAMD.comp
+error: SPIRV-Tools Validation Errors
+error: Capability Float16 is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability Float16
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 1343
spv.sparseTexture.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 438
spv.sparseTextureClamp.frag
+error: SPIRV-Tools Validation Errors
+error: Capability SampledRect is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability SampledRect
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 360
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 38
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
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 2506
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 298
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
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 25
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
+
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 523
spv.xfb.vert
+error: SPIRV-Tools Validation Errors
+error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability TransformFeedback
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 16
spv.xfb2.vert
+error: SPIRV-Tools Validation Errors
+error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability TransformFeedback
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 35
spv.xfb3.vert
+error: SPIRV-Tools Validation Errors
+error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
+ OpCapability TransformFeedback
+
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 35
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Tools",
"subdir" : "External/spirv-tools",
- "commit" : "714bf84e58abd9573488fc365707fb8f288ca73c"
+ "commit" : "6d27a8350fbc339909834a6ef339c805cb1ab69b"
},
{
"name" : "spirv-tools/external/spirv-headers",