Merge branch 'master' into GL_ARB_fragment_coord_conventions

This commit is contained in:
Greg Fischer 2021-11-24 11:52:08 -07:00 committed by GitHub
commit 69f9dce708
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
62 changed files with 2603 additions and 230 deletions

View File

@ -3,6 +3,11 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/).
## 11.7.0 2021-11-11
### Other changes
* Add support for targeting Vulkan 1.2 in the C API
## 11.6.0 2021-08-25
### Other changes

View File

@ -1256,8 +1256,10 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T
if (type.getBasicType() == glslang::EbtRayQuery)
return spv::StorageClassPrivate;
#ifndef GLSLANG_WEB
if (type.getQualifier().isSpirvByReference())
return spv::StorageClassFunction;
if (type.getQualifier().isSpirvByReference()) {
if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput())
return spv::StorageClassFunction;
}
#endif
if (type.getQualifier().isPipeInput())
return spv::StorageClassInput;
@ -4148,23 +4150,23 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
const auto& spirvType = type.getSpirvType();
const auto& spirvInst = spirvType.spirvInst;
std::vector<spv::Id> operands;
std::vector<spv::IdImmediate> operands;
for (const auto& typeParam : spirvType.typeParams) {
// Constant expression
if (typeParam.constant->isLiteral()) {
if (typeParam.constant->getBasicType() == glslang::EbtFloat) {
float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst());
unsigned literal = *reinterpret_cast<unsigned*>(&floatValue);
operands.push_back(literal);
operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtInt) {
unsigned literal = typeParam.constant->getConstArray()[0].getIConst();
operands.push_back(literal);
operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtUint) {
unsigned literal = typeParam.constant->getConstArray()[0].getUConst();
operands.push_back(literal);
operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtBool) {
unsigned literal = typeParam.constant->getConstArray()[0].getBConst();
operands.push_back(literal);
operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtString) {
auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str();
unsigned literal = 0;
@ -4176,7 +4178,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
*(literalPtr++) = ch;
++charCount;
if (charCount == 4) {
operands.push_back(literal);
operands.push_back({false, literal});
literalPtr = reinterpret_cast<char*>(&literal);
charCount = 0;
}
@ -4186,20 +4188,17 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
if (charCount > 0) {
for (; charCount < 4; ++charCount)
*(literalPtr++) = 0;
operands.push_back(literal);
operands.push_back({false, literal});
}
} else
assert(0); // Unexpected type
} else
operands.push_back(createSpvConstant(*typeParam.constant));
operands.push_back({true, createSpvConstant(*typeParam.constant)});
}
if (spirvInst.set == "")
spvType = builder.createOp(static_cast<spv::Op>(spirvInst.id), spv::NoType, operands);
else {
spvType = builder.createBuiltinCall(
spv::NoType, getExtBuiltins(spirvInst.set.c_str()), spirvInst.id, operands);
}
assert(spirvInst.set == ""); // Currently, couldn't be extended instructions.
spvType = builder.makeGenericType(static_cast<spv::Op>(spirvInst.id), operands);
break;
}
#endif

View File

@ -427,6 +427,37 @@ Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols)
return type->getResultId();
}
Id Builder::makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands)
{
// try to find it
Instruction* type;
for (int t = 0; t < (int)groupedTypes[opcode].size(); ++t) {
type = groupedTypes[opcode][t];
if (type->getNumOperands() != operands.size())
continue; // Number mismatch, find next
bool match = true;
for (int op = 0; match && op < operands.size(); ++op) {
match = (operands[op].isId ? type->getIdOperand(op) : type->getImmediateOperand(op)) == operands[op].word;
}
if (match)
return type->getResultId();
}
// not found, make it
type = new Instruction(getUniqueId(), NoType, opcode);
for (int op = 0; op < operands.size(); ++op) {
if (operands[op].isId)
type->addIdOperand(operands[op].word);
else
type->addImmediateOperand(operands[op].word);
}
groupedTypes[opcode].push_back(type);
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
return type->getResultId();
}
// TODO: performance: track arrays per stride
// If a stride is supplied (non-zero) make an array.

View File

@ -181,6 +181,7 @@ public:
Id makeSamplerType();
Id makeSampledImageType(Id imageType);
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
// accelerationStructureNV type
Id makeAccelerationStructureType();

View File

@ -900,6 +900,12 @@ const char* CapabilityString(int info)
case CapabilityDeviceGroup: return "DeviceGroup";
case CapabilityMultiView: return "MultiView";
case CapabilityDenormPreserve: return "DenormPreserve";
case CapabilityDenormFlushToZero: return "DenormFlushToZero";
case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
case CapabilityRoundingModeRTE: return "RoundingModeRTE";
case CapabilityRoundingModeRTZ: return "RoundingModeRTZ";
case CapabilityStencilExportEXT: return "StencilExportEXT";
case CapabilityFloat16ImageAMD: return "Float16ImageAMD";

View File

@ -1543,7 +1543,7 @@ enum Op {
OpUSubSatINTEL = 5596,
OpIMul32x16INTEL = 5597,
OpUMul32x16INTEL = 5598,
OpConstFunctionPointerINTEL = 5600,
OpConstantFunctionPointerINTEL = 5600,
OpFunctionPointerCallINTEL = 5601,
OpAsmTargetINTEL = 5609,
OpAsmINTEL = 5610,
@ -2131,7 +2131,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
case OpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;

View File

@ -177,6 +177,7 @@ const char* shaderStageName = nullptr;
const char* variableName = nullptr;
bool HlslEnable16BitTypes = false;
bool HlslDX9compatible = false;
bool HlslDxPositionW = false;
bool DumpBuiltinSymbols = false;
std::vector<std::string> IncludeDirectoryList;
@ -662,6 +663,8 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
HlslEnable16BitTypes = true;
} else if (lowerword == "hlsl-dx9-compatible") {
HlslDX9compatible = true;
} else if (lowerword == "hlsl-dx-position-w") {
HlslDxPositionW = true;
} else if (lowerword == "auto-sampled-textures") {
autoSampledTextures = true;
} else if (lowerword == "invert-y" || // synonyms
@ -1284,6 +1287,9 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
if (Options & EOptionInvertY)
shader->setInvertY(true);
if (HlslDxPositionW)
shader->setDxPositionW(true);
// Set up the environment, some subsettings take precedence over earlier
// ways of setting things.
if (Options & EOptionSpv) {
@ -1847,6 +1853,8 @@ void usage()
" --hlsl-dx9-compatible interprets sampler declarations as a\n"
" texture/sampler combo like DirectX9 would,\n"
" and recognizes DirectX9-specific semantics\n"
" --hlsl-dx-position-w W component of SV_Position in HLSL fragment\n"
" shaders compatible with DirectX\n"
" --invert-y | --iy invert position.Y output in vertex shader\n"
" --keep-uncalled | --ku don't eliminate uncalled functions\n"
" --nan-clamp favor non-NaN operand in min, max, and clamp\n"

View File

@ -111,8 +111,8 @@ void qlodFail()
vec2 pf2;
vec3 pf3;
lod = textureQueryLod(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed
lod = textureQueryLod(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed
lod = textureQueryLOD(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed
lod = textureQueryLOD(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed
}
#extension GL_ARB_texture_query_lod : enable
@ -138,21 +138,21 @@ void qlodPass()
vec2 pf2;
vec3 pf3;
lod = textureQueryLod(samp1D, pf);
lod = textureQueryLod(isamp2D, pf2);
lod = textureQueryLod(usamp3D, pf3);
lod = textureQueryLod(sampCube, pf3);
lod = textureQueryLod(isamp1DA, pf);
lod = textureQueryLod(usamp2DA, pf2);
lod = textureQueryLOD(samp1D, pf);
lod = textureQueryLOD(isamp2D, pf2);
lod = textureQueryLOD(usamp3D, pf3);
lod = textureQueryLOD(sampCube, pf3);
lod = textureQueryLOD(isamp1DA, pf);
lod = textureQueryLOD(usamp2DA, pf2);
lod = textureQueryLod(samp1Ds, pf);
lod = textureQueryLod(samp2Ds, pf2);
lod = textureQueryLod(sampCubes, pf3);
lod = textureQueryLod(samp1DAs, pf);
lod = textureQueryLod(samp2DAs, pf2);
lod = textureQueryLOD(samp1Ds, pf);
lod = textureQueryLOD(samp2Ds, pf2);
lod = textureQueryLOD(sampCubes, pf3);
lod = textureQueryLOD(samp1DAs, pf);
lod = textureQueryLOD(samp2DAs, pf2);
lod = textureQueryLod(sampBuf, pf); // ERROR
lod = textureQueryLod(sampRect, pf2); // ERROR
lod = textureQueryLOD(sampBuf, pf); // ERROR
lod = textureQueryLOD(sampRect, pf2); // ERROR
}
// Test extension GL_EXT_shader_integer_mix

View File

@ -0,0 +1,20 @@
#version 150
#extension GL_ARB_gpu_shader5 : require
uniform ivec4 u1;
uniform uvec4 u2;
out vec4 result;
vec4 f(in vec4 a, in vec4 b){ return a * b;} // choice 1
vec4 f(in uvec4 a, in uvec4 b){ return vec4(a - b);} // choice 2
void main()
{
result = f(u1, u2); // should match choice 2. which have less implicit conversion.
switch (gl_VertexID)
{
case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break;
case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break;
case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break;
case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break;
}
}

View File

@ -6,19 +6,17 @@ hlsl.flattenSubset.frag
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 47 50
EntryPoint Fragment 4 "main" 50
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 21 "samp"
Name 33 "tex"
Name 47 "vpos"
Name 50 "@entryPointOutput"
Decorate 21(samp) DescriptorSet 0
Decorate 21(samp) Binding 0
Decorate 33(tex) DescriptorSet 0
Decorate 33(tex) Binding 1
Decorate 47(vpos) Location 0
Decorate 50(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
@ -34,8 +32,6 @@ hlsl.flattenSubset.frag
39: TypeVector 6(float) 2
40: 6(float) Constant 1056964608
41: 39(fvec2) ConstantComposite 40 40
46: TypePointer Input 7(fvec4)
47(vpos): 46(ptr) Variable Input
49: TypePointer Output 7(fvec4)
50(@entryPointOutput): 49(ptr) Variable Output
4(main): 2 Function None 3

View File

@ -6,13 +6,11 @@ hlsl.flattenSubset2.frag
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 49 52
EntryPoint Fragment 4 "main" 52
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 49 "vpos"
Name 52 "@entryPointOutput"
Decorate 49(vpos) Location 0
Decorate 52(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
@ -20,8 +18,6 @@ hlsl.flattenSubset2.frag
7: TypeVector 6(float) 4
43: 6(float) Constant 0
44: 7(fvec4) ConstantComposite 43 43 43 43
48: TypePointer Input 7(fvec4)
49(vpos): 48(ptr) Variable Input
51: TypePointer Output 7(fvec4)
52(@entryPointOutput): 51(ptr) Variable Output
4(main): 2 Function None 3

View File

@ -10,11 +10,11 @@ ERROR: 0:53: 'double' : must be qualified as flat in
ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int'
ERROR: 0:80: 'floatBitsToInt' : required extension not requested: GL_ARB_shader_bit_encoding
ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing
ERROR: 0:114: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod
ERROR: 0:115: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod
ERROR: 0:154: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:114: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod
ERROR: 0:115: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod
ERROR: 0:154: 'textureQueryLOD' : no matching overloaded function found
ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:155: 'textureQueryLOD' : no matching overloaded function found
ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix
ERROR: 18 compilation errors. No code generated.

View File

@ -0,0 +1,206 @@
BestMatchFunction.vert
WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
Shader version: 150
Requested GL_ARB_gpu_shader5
0:? Sequence
0:7 Function Definition: f(vf4;vf4; ( global 4-component vector of float)
0:7 Function Parameters:
0:7 'a' ( in 4-component vector of float)
0:7 'b' ( in 4-component vector of float)
0:7 Sequence
0:7 Branch: Return with expression
0:7 component-wise multiply ( temp 4-component vector of float)
0:7 'a' ( in 4-component vector of float)
0:7 'b' ( in 4-component vector of float)
0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float)
0:8 Function Parameters:
0:8 'a' ( in 4-component vector of uint)
0:8 'b' ( in 4-component vector of uint)
0:8 Sequence
0:8 Branch: Return with expression
0:8 Convert uint to float ( temp 4-component vector of float)
0:8 subtract ( temp 4-component vector of uint)
0:8 'a' ( in 4-component vector of uint)
0:8 'b' ( in 4-component vector of uint)
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
0:12 'result' ( smooth out 4-component vector of float)
0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float)
0:12 Convert int to uint ( temp 4-component vector of uint)
0:12 'u1' ( uniform 4-component vector of int)
0:12 'u2' ( uniform 4-component vector of uint)
0:13 switch
0:13 condition
0:13 'gl_VertexID' ( gl_VertexId int VertexId)
0:13 body
0:13 Sequence
0:15 case: with expression
0:15 Constant:
0:15 0 (const int)
0:? Sequence
0:15 move second child to first child ( temp 4-component vector of float)
0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:15 Constant:
0:15 0 (const uint)
0:15 Constant:
0:15 -1.000000
0:15 1.000000
0:15 0.000000
0:15 1.000000
0:15 Branch: Break
0:16 case: with expression
0:16 Constant:
0:16 1 (const int)
0:? Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:16 Constant:
0:16 0 (const uint)
0:16 Constant:
0:16 1.000000
0:16 1.000000
0:16 0.000000
0:16 1.000000
0:16 Branch: Break
0:17 case: with expression
0:17 Constant:
0:17 2 (const int)
0:? Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:17 Constant:
0:17 0 (const uint)
0:17 Constant:
0:17 -1.000000
0:17 -1.000000
0:17 0.000000
0:17 1.000000
0:17 Branch: Break
0:18 case: with expression
0:18 Constant:
0:18 3 (const int)
0:? Sequence
0:18 move second child to first child ( temp 4-component vector of float)
0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:18 Constant:
0:18 0 (const uint)
0:18 Constant:
0:18 1.000000
0:18 -1.000000
0:18 0.000000
0:18 1.000000
0:18 Branch: Break
0:? Linker Objects
0:? 'u1' ( uniform 4-component vector of int)
0:? 'u2' ( uniform 4-component vector of uint)
0:? 'result' ( smooth out 4-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Linked vertex stage:
Shader version: 150
Requested GL_ARB_gpu_shader5
0:? Sequence
0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float)
0:8 Function Parameters:
0:8 'a' ( in 4-component vector of uint)
0:8 'b' ( in 4-component vector of uint)
0:8 Sequence
0:8 Branch: Return with expression
0:8 Convert uint to float ( temp 4-component vector of float)
0:8 subtract ( temp 4-component vector of uint)
0:8 'a' ( in 4-component vector of uint)
0:8 'b' ( in 4-component vector of uint)
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
0:12 'result' ( smooth out 4-component vector of float)
0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float)
0:12 Convert int to uint ( temp 4-component vector of uint)
0:12 'u1' ( uniform 4-component vector of int)
0:12 'u2' ( uniform 4-component vector of uint)
0:13 switch
0:13 condition
0:13 'gl_VertexID' ( gl_VertexId int VertexId)
0:13 body
0:13 Sequence
0:15 case: with expression
0:15 Constant:
0:15 0 (const int)
0:? Sequence
0:15 move second child to first child ( temp 4-component vector of float)
0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:15 Constant:
0:15 0 (const uint)
0:15 Constant:
0:15 -1.000000
0:15 1.000000
0:15 0.000000
0:15 1.000000
0:15 Branch: Break
0:16 case: with expression
0:16 Constant:
0:16 1 (const int)
0:? Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:16 Constant:
0:16 0 (const uint)
0:16 Constant:
0:16 1.000000
0:16 1.000000
0:16 0.000000
0:16 1.000000
0:16 Branch: Break
0:17 case: with expression
0:17 Constant:
0:17 2 (const int)
0:? Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:17 Constant:
0:17 0 (const uint)
0:17 Constant:
0:17 -1.000000
0:17 -1.000000
0:17 0.000000
0:17 1.000000
0:17 Branch: Break
0:18 case: with expression
0:18 Constant:
0:18 3 (const int)
0:? Sequence
0:18 move second child to first child ( temp 4-component vector of float)
0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:18 Constant:
0:18 0 (const uint)
0:18 Constant:
0:18 1.000000
0:18 -1.000000
0:18 0.000000
0:18 1.000000
0:18 Branch: Break
0:? Linker Objects
0:? 'u1' ( uniform 4-component vector of int)
0:? 'u2' ( uniform 4-component vector of uint)
0:? 'result' ( smooth out 4-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)

View File

@ -3,8 +3,8 @@ Shader version: 450
Requested GL_EXT_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
0:48 Function Definition: main( ( global void)
0:48 Function Parameters:
0:69 Function Definition: main( ( global void)
0:69 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
@ -29,6 +29,12 @@ local_size = (1, 1, 1)
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
0:? 4.000000
0:? 'neg_float16_t_init' ( const float16_t)
0:? -42.000000
0:? 'neg_float32_t_init' ( const float)
0:? -13.000000
0:? 'neg_float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
@ -77,7 +83,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13 (const int8_t)
0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4 (const int8_t)
0:? 4 (const int8_t)
0:? 'bool_to_int16_t' ( const int16_t)
0:? 1 (const int16_t)
0:? 'int8_t_to_int16_t' ( const int16_t)
@ -101,7 +107,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13 (const int16_t)
0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4 (const int16_t)
0:? 4 (const int16_t)
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
@ -125,7 +131,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
@ -149,7 +155,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? 1 (const uint8_t)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
@ -173,7 +179,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13 (const uint8_t)
0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? 252 (const uint8_t)
0:? 4 (const uint8_t)
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? 1 (const uint16_t)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
@ -197,7 +203,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13 (const uint16_t)
0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? 65532 (const uint16_t)
0:? 4 (const uint16_t)
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
@ -221,7 +227,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 4 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
@ -245,7 +251,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 4 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
@ -269,7 +275,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
@ -293,7 +299,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
@ -317,6 +323,54 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
0:? 4.000000
0:? 'neg_float16_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'neg_float32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'neg_float64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'neg_float16_t_to_int8_t' ( const int8_t)
0:? -42 (const int8_t)
0:? 'neg_float32_t_to_int8_t' ( const int8_t)
0:? -13 (const int8_t)
0:? 'neg_float64_t_to_int8_t' ( const int8_t)
0:? -4 (const int8_t)
0:? 'neg_float16_t_to_int16_t' ( const int16_t)
0:? -42 (const int16_t)
0:? 'neg_float32_t_to_int16_t' ( const int16_t)
0:? -13 (const int16_t)
0:? 'neg_float64_t_to_int16_t' ( const int16_t)
0:? -4 (const int16_t)
0:? 'neg_float16_t_to_int32_t' ( const int)
0:? -42 (const int)
0:? 'neg_float32_t_to_int32_t' ( const int)
0:? -13 (const int)
0:? 'neg_float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'neg_float16_t_to_int64_t' ( const int64_t)
0:? -42 (const int64_t)
0:? 'neg_float32_t_to_int64_t' ( const int64_t)
0:? -13 (const int64_t)
0:? 'neg_float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'neg_float16_t_to_float16_t' ( const float16_t)
0:? -42.000000
0:? 'neg_float32_t_to_float16_t' ( const float16_t)
0:? -13.000000
0:? 'neg_float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'neg_float16_t_to_float32_t' ( const float)
0:? -42.000000
0:? 'neg_float32_t_to_float32_t' ( const float)
0:? -13.000000
0:? 'neg_float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'neg_float16_t_to_float64_t' ( const double)
0:? -42.000000
0:? 'neg_float32_t_to_float64_t' ( const double)
0:? -13.000000
0:? 'neg_float64_t_to_float64_t' ( const double)
0:? -4.000000
@ -327,8 +381,8 @@ Shader version: 450
Requested GL_EXT_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
0:48 Function Definition: main( ( global void)
0:48 Function Parameters:
0:69 Function Definition: main( ( global void)
0:69 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
@ -353,6 +407,12 @@ local_size = (1, 1, 1)
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
0:? 4.000000
0:? 'neg_float16_t_init' ( const float16_t)
0:? -42.000000
0:? 'neg_float32_t_init' ( const float)
0:? -13.000000
0:? 'neg_float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
@ -401,7 +461,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13 (const int8_t)
0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4 (const int8_t)
0:? 4 (const int8_t)
0:? 'bool_to_int16_t' ( const int16_t)
0:? 1 (const int16_t)
0:? 'int8_t_to_int16_t' ( const int16_t)
@ -425,7 +485,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13 (const int16_t)
0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4 (const int16_t)
0:? 4 (const int16_t)
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
@ -449,7 +509,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
@ -473,7 +533,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? 1 (const uint8_t)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
@ -497,7 +557,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13 (const uint8_t)
0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? 252 (const uint8_t)
0:? 4 (const uint8_t)
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? 1 (const uint16_t)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
@ -521,7 +581,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13 (const uint16_t)
0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? 65532 (const uint16_t)
0:? 4 (const uint16_t)
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
@ -545,7 +605,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 4 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
@ -569,7 +629,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 4 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
@ -593,7 +653,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
@ -617,7 +677,7 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
@ -641,5 +701,53 @@ local_size = (1, 1, 1)
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
0:? 4.000000
0:? 'neg_float16_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'neg_float32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'neg_float64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'neg_float16_t_to_int8_t' ( const int8_t)
0:? -42 (const int8_t)
0:? 'neg_float32_t_to_int8_t' ( const int8_t)
0:? -13 (const int8_t)
0:? 'neg_float64_t_to_int8_t' ( const int8_t)
0:? -4 (const int8_t)
0:? 'neg_float16_t_to_int16_t' ( const int16_t)
0:? -42 (const int16_t)
0:? 'neg_float32_t_to_int16_t' ( const int16_t)
0:? -13 (const int16_t)
0:? 'neg_float64_t_to_int16_t' ( const int16_t)
0:? -4 (const int16_t)
0:? 'neg_float16_t_to_int32_t' ( const int)
0:? -42 (const int)
0:? 'neg_float32_t_to_int32_t' ( const int)
0:? -13 (const int)
0:? 'neg_float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'neg_float16_t_to_int64_t' ( const int64_t)
0:? -42 (const int64_t)
0:? 'neg_float32_t_to_int64_t' ( const int64_t)
0:? -13 (const int64_t)
0:? 'neg_float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'neg_float16_t_to_float16_t' ( const float16_t)
0:? -42.000000
0:? 'neg_float32_t_to_float16_t' ( const float16_t)
0:? -13.000000
0:? 'neg_float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'neg_float16_t_to_float32_t' ( const float)
0:? -42.000000
0:? 'neg_float32_t_to_float32_t' ( const float)
0:? -13.000000
0:? 'neg_float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'neg_float16_t_to_float64_t' ( const double)
0:? -42.000000
0:? 'neg_float32_t_to_float64_t' ( const double)
0:? -13.000000
0:? 'neg_float64_t_to_float64_t' ( const double)
0:? -4.000000

View File

@ -0,0 +1,140 @@
hlsl.structbuffer.rwbyte2.comp
Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:6 Function Definition: @main( ( temp void)
0:6 Function Parameters:
0:? Sequence
0:7 Sequence
0:7 move second child to first child ( temp uint)
0:7 'f' ( temp uint)
0:7 indirect index (layout( row_major std430) buffer uint)
0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:7 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:7 right-shift ( temp int)
0:7 Constant:
0:7 16 (const int)
0:7 Constant:
0:7 2 (const int)
0:8 move second child to first child ( temp uint)
0:8 direct index (layout( row_major std430) buffer uint)
0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:8 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 Constant:
0:8 0 (const int)
0:8 'f' ( temp uint)
0:6 Function Definition: main( ( temp void)
0:6 Function Parameters:
0:? Sequence
0:6 Function Call: @main( ( temp void)
0:? Linker Objects
0:? 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
Linked compute stage:
Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:6 Function Definition: @main( ( temp void)
0:6 Function Parameters:
0:? Sequence
0:7 Sequence
0:7 move second child to first child ( temp uint)
0:7 'f' ( temp uint)
0:7 indirect index (layout( row_major std430) buffer uint)
0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:7 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:7 right-shift ( temp int)
0:7 Constant:
0:7 16 (const int)
0:7 Constant:
0:7 2 (const int)
0:8 move second child to first child ( temp uint)
0:8 direct index (layout( row_major std430) buffer uint)
0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:8 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 Constant:
0:8 0 (const int)
0:8 'f' ( temp uint)
0:6 Function Definition: main( ( temp void)
0:6 Function Parameters:
0:? Sequence
0:6 Function Call: @main( ( temp void)
0:? Linker Objects
0:? 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 30
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 1 1 1
Source HLSL 500
Name 4 "main"
Name 6 "@main("
Name 10 "f"
Name 12 "g_bbuf"
MemberName 12(g_bbuf) 0 "@data"
Name 14 "g_bbuf"
Name 24 "g_sbuf"
MemberName 24(g_sbuf) 0 "@data"
Name 26 "g_sbuf"
Decorate 11 ArrayStride 4
MemberDecorate 12(g_bbuf) 0 Offset 0
Decorate 12(g_bbuf) BufferBlock
Decorate 14(g_bbuf) DescriptorSet 0
Decorate 14(g_bbuf) Binding 1
Decorate 23 ArrayStride 4
MemberDecorate 24(g_sbuf) 0 Offset 0
Decorate 24(g_sbuf) BufferBlock
Decorate 26(g_sbuf) DescriptorSet 0
Decorate 26(g_sbuf) Binding 0
2: TypeVoid
3: TypeFunction 2
8: TypeInt 32 0
9: TypePointer Function 8(int)
11: TypeRuntimeArray 8(int)
12(g_bbuf): TypeStruct 11
13: TypePointer Uniform 12(g_bbuf)
14(g_bbuf): 13(ptr) Variable Uniform
15: TypeInt 32 1
16: 15(int) Constant 0
17: 15(int) Constant 16
18: 15(int) Constant 2
20: TypePointer Uniform 8(int)
23: TypeRuntimeArray 8(int)
24(g_sbuf): TypeStruct 23
25: TypePointer Uniform 24(g_sbuf)
26(g_sbuf): 25(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
29: 2 FunctionCall 6(@main()
Return
FunctionEnd
6(@main(): 2 Function None 3
7: Label
10(f): 9(ptr) Variable Function
19: 15(int) ShiftRightArithmetic 17 18
21: 20(ptr) AccessChain 14(g_bbuf) 16 19
22: 8(int) Load 21
Store 10(f) 22
27: 8(int) Load 10(f)
28: 20(ptr) AccessChain 26(g_sbuf) 16 16
Store 28 27
Return
FunctionEnd

View File

@ -0,0 +1,268 @@
hlsl.w-recip.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(vf4; ( temp 4-component vector of float)
0:5 Function Parameters:
0:5 'vpos' ( in 4-component vector of float)
0:? Sequence
0:6 Sequence
0:6 move second child to first child ( temp 4-component vector of float)
0:6 'vpos_t' ( temp 4-component vector of float)
0:6 Construct vec4 ( temp 4-component vector of float)
0:6 vector swizzle ( temp 3-component vector of float)
0:6 'vpos' ( in 4-component vector of float)
0:6 Sequence
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 1 (const int)
0:6 Constant:
0:6 2 (const int)
0:6 divide ( temp float)
0:6 Constant:
0:6 1.000000
0:6 direct index ( temp float)
0:6 'vpos' ( in 4-component vector of float)
0:6 Constant:
0:6 3 (const int)
0:7 Test condition and select ( temp void)
0:7 Condition
0:7 Compare Less Than ( temp bool)
0:7 direct index ( temp float)
0:7 'vpos_t' ( temp 4-component vector of float)
0:7 Constant:
0:7 0 (const int)
0:7 Constant:
0:7 400.000000
0:7 true case
0:8 Branch: Return with expression
0:8 AmbientColor: direct index for structure ( uniform 4-component vector of float)
0:8 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
0:8 Constant:
0:8 0 (const uint)
0:7 false case
0:10 Branch: Return with expression
0:10 AmbientColor2: direct index for structure ( uniform 4-component vector of float)
0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
0:10 Constant:
0:10 1 (const uint)
0:5 Function Definition: main( ( temp void)
0:5 Function Parameters:
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:5 Construct vec4 ( temp 4-component vector of float)
0:5 vector swizzle ( temp 3-component vector of float)
0:? 'vpos' ( in 4-component vector of float FragCoord)
0:5 Sequence
0:5 Constant:
0:5 0 (const int)
0:5 Constant:
0:5 1 (const int)
0:5 Constant:
0:5 2 (const int)
0:5 divide ( temp float)
0:5 Constant:
0:5 1.000000
0:5 direct index ( temp float)
0:? 'vpos' ( in 4-component vector of float FragCoord)
0:5 Constant:
0:5 3 (const int)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(vf4; ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'vpos' ( in 4-component vector of float FragCoord)
Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(vf4; ( temp 4-component vector of float)
0:5 Function Parameters:
0:5 'vpos' ( in 4-component vector of float)
0:? Sequence
0:6 Sequence
0:6 move second child to first child ( temp 4-component vector of float)
0:6 'vpos_t' ( temp 4-component vector of float)
0:6 Construct vec4 ( temp 4-component vector of float)
0:6 vector swizzle ( temp 3-component vector of float)
0:6 'vpos' ( in 4-component vector of float)
0:6 Sequence
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 1 (const int)
0:6 Constant:
0:6 2 (const int)
0:6 divide ( temp float)
0:6 Constant:
0:6 1.000000
0:6 direct index ( temp float)
0:6 'vpos' ( in 4-component vector of float)
0:6 Constant:
0:6 3 (const int)
0:7 Test condition and select ( temp void)
0:7 Condition
0:7 Compare Less Than ( temp bool)
0:7 direct index ( temp float)
0:7 'vpos_t' ( temp 4-component vector of float)
0:7 Constant:
0:7 0 (const int)
0:7 Constant:
0:7 400.000000
0:7 true case
0:8 Branch: Return with expression
0:8 AmbientColor: direct index for structure ( uniform 4-component vector of float)
0:8 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
0:8 Constant:
0:8 0 (const uint)
0:7 false case
0:10 Branch: Return with expression
0:10 AmbientColor2: direct index for structure ( uniform 4-component vector of float)
0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
0:10 Constant:
0:10 1 (const uint)
0:5 Function Definition: main( ( temp void)
0:5 Function Parameters:
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:5 Construct vec4 ( temp 4-component vector of float)
0:5 vector swizzle ( temp 3-component vector of float)
0:? 'vpos' ( in 4-component vector of float FragCoord)
0:5 Sequence
0:5 Constant:
0:5 0 (const int)
0:5 Constant:
0:5 1 (const int)
0:5 Constant:
0:5 2 (const int)
0:5 divide ( temp float)
0:5 Constant:
0:5 1.000000
0:5 direct index ( temp float)
0:? 'vpos' ( in 4-component vector of float FragCoord)
0:5 Constant:
0:5 3 (const int)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(vf4; ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'vpos' ( in 4-component vector of float FragCoord)
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 69
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 53 65
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 11 "@main(vf4;"
Name 10 "vpos"
Name 13 "vpos_t"
Name 36 "$Global"
MemberName 36($Global) 0 "AmbientColor"
MemberName 36($Global) 1 "AmbientColor2"
Name 38 ""
Name 51 "vpos"
Name 53 "vpos"
Name 65 "@entryPointOutput"
Name 66 "param"
MemberDecorate 36($Global) 0 Offset 0
MemberDecorate 36($Global) 1 Offset 16
Decorate 36($Global) Block
Decorate 38 DescriptorSet 0
Decorate 38 Binding 0
Decorate 53(vpos) BuiltIn FragCoord
Decorate 65(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
14: TypeVector 6(float) 3
17: 6(float) Constant 1065353216
18: TypeInt 32 0
19: 18(int) Constant 3
20: TypePointer Function 6(float)
28: 18(int) Constant 0
31: 6(float) Constant 1137180672
32: TypeBool
36($Global): TypeStruct 7(fvec4) 7(fvec4)
37: TypePointer Uniform 36($Global)
38: 37(ptr) Variable Uniform
39: TypeInt 32 1
40: 39(int) Constant 0
41: TypePointer Uniform 7(fvec4)
46: 39(int) Constant 1
52: TypePointer Input 7(fvec4)
53(vpos): 52(ptr) Variable Input
56: TypePointer Input 6(float)
64: TypePointer Output 7(fvec4)
65(@entryPointOutput): 64(ptr) Variable Output
4(main): 2 Function None 3
5: Label
51(vpos): 8(ptr) Variable Function
66(param): 8(ptr) Variable Function
54: 7(fvec4) Load 53(vpos)
55: 14(fvec3) VectorShuffle 54 54 0 1 2
57: 56(ptr) AccessChain 53(vpos) 19
58: 6(float) Load 57
59: 6(float) FDiv 17 58
60: 6(float) CompositeExtract 55 0
61: 6(float) CompositeExtract 55 1
62: 6(float) CompositeExtract 55 2
63: 7(fvec4) CompositeConstruct 60 61 62 59
Store 51(vpos) 63
67: 7(fvec4) Load 51(vpos)
Store 66(param) 67
68: 7(fvec4) FunctionCall 11(@main(vf4;) 66(param)
Store 65(@entryPointOutput) 68
Return
FunctionEnd
11(@main(vf4;): 7(fvec4) Function None 9
10(vpos): 8(ptr) FunctionParameter
12: Label
13(vpos_t): 8(ptr) Variable Function
15: 7(fvec4) Load 10(vpos)
16: 14(fvec3) VectorShuffle 15 15 0 1 2
21: 20(ptr) AccessChain 10(vpos) 19
22: 6(float) Load 21
23: 6(float) FDiv 17 22
24: 6(float) CompositeExtract 16 0
25: 6(float) CompositeExtract 16 1
26: 6(float) CompositeExtract 16 2
27: 7(fvec4) CompositeConstruct 24 25 26 23
Store 13(vpos_t) 27
29: 20(ptr) AccessChain 13(vpos_t) 28
30: 6(float) Load 29
33: 32(bool) FOrdLessThan 30 31
SelectionMerge 35 None
BranchConditional 33 34 45
34: Label
42: 41(ptr) AccessChain 38 40
43: 7(fvec4) Load 42
ReturnValue 43
45: Label
47: 41(ptr) AccessChain 38 46
48: 7(fvec4) Load 47
ReturnValue 48
35: Label
Unreachable
FunctionEnd

View File

@ -0,0 +1,413 @@
iomap.blockOutVariableIn.2.vert
Shader version: 440
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 a1: direct index for structure ( out 4-component vector of float)
0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:12 move second child to first child ( temp 2-component vector of float)
0:12 a2: direct index for structure ( out 2-component vector of float)
0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:12 Constant:
0:12 1 (const uint)
0:12 Constant:
0:12 0.500000
0:12 0.500000
0:13 move second child to first child ( temp 4-component vector of float)
0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:13 Constant:
0:13 0 (const uint)
0:13 Constant:
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:? Linker Objects
0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
iomap.blockOutVariableIn.geom
Shader version: 440
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:12 Function Definition: main( ( global void)
0:12 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp 4-component vector of float)
0:14 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:14 direct index (layout( location=0) temp 4-component vector of float)
0:14 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:14 Constant:
0:14 0 (const int)
0:15 move second child to first child ( temp 2-component vector of float)
0:15 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:15 direct index (layout( location=1) temp 2-component vector of float)
0:15 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:15 Constant:
0:15 0 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:16 Constant:
0:16 0 (const uint)
0:16 Constant:
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:17 EmitVertex ( global void)
0:19 move second child to first child ( temp 4-component vector of float)
0:19 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:19 direct index (layout( location=0) temp 4-component vector of float)
0:19 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:19 Constant:
0:19 1 (const int)
0:20 move second child to first child ( temp 2-component vector of float)
0:20 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:20 direct index (layout( location=1) temp 2-component vector of float)
0:20 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:20 Constant:
0:20 1 (const int)
0:21 move second child to first child ( temp 4-component vector of float)
0:21 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:21 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:21 Constant:
0:21 0 (const uint)
0:21 Constant:
0:21 1.000000
0:21 1.000000
0:21 1.000000
0:21 1.000000
0:22 EmitVertex ( global void)
0:24 move second child to first child ( temp 4-component vector of float)
0:24 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:24 direct index (layout( location=0) temp 4-component vector of float)
0:24 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:24 Constant:
0:24 2 (const int)
0:25 move second child to first child ( temp 2-component vector of float)
0:25 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:25 direct index (layout( location=1) temp 2-component vector of float)
0:25 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:25 Constant:
0:25 2 (const int)
0:26 move second child to first child ( temp 4-component vector of float)
0:26 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:26 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:26 Constant:
0:26 0 (const uint)
0:26 Constant:
0:26 1.000000
0:26 1.000000
0:26 1.000000
0:26 1.000000
0:27 EmitVertex ( global void)
0:? Linker Objects
0:? 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
Linked vertex stage:
Linked geometry stage:
Shader version: 440
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 a1: direct index for structure ( out 4-component vector of float)
0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:12 move second child to first child ( temp 2-component vector of float)
0:12 a2: direct index for structure ( out 2-component vector of float)
0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:12 Constant:
0:12 1 (const uint)
0:12 Constant:
0:12 0.500000
0:12 0.500000
0:13 move second child to first child ( temp 4-component vector of float)
0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:13 Constant:
0:13 0 (const uint)
0:13 Constant:
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:? Linker Objects
0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Shader version: 440
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:12 Function Definition: main( ( global void)
0:12 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp 4-component vector of float)
0:14 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:14 direct index (layout( location=0) temp 4-component vector of float)
0:14 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:14 Constant:
0:14 0 (const int)
0:15 move second child to first child ( temp 2-component vector of float)
0:15 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:15 direct index (layout( location=1) temp 2-component vector of float)
0:15 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:15 Constant:
0:15 0 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
0:16 Constant:
0:16 0 (const uint)
0:16 Constant:
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:17 EmitVertex ( global void)
0:19 move second child to first child ( temp 4-component vector of float)
0:19 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:19 direct index (layout( location=0) temp 4-component vector of float)
0:19 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:19 Constant:
0:19 1 (const int)
0:20 move second child to first child ( temp 2-component vector of float)
0:20 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:20 direct index (layout( location=1) temp 2-component vector of float)
0:20 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:20 Constant:
0:20 1 (const int)
0:21 move second child to first child ( temp 4-component vector of float)
0:21 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:21 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
0:21 Constant:
0:21 0 (const uint)
0:21 Constant:
0:21 1.000000
0:21 1.000000
0:21 1.000000
0:21 1.000000
0:22 EmitVertex ( global void)
0:24 move second child to first child ( temp 4-component vector of float)
0:24 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:24 direct index (layout( location=0) temp 4-component vector of float)
0:24 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:24 Constant:
0:24 2 (const int)
0:25 move second child to first child ( temp 2-component vector of float)
0:25 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:25 direct index (layout( location=1) temp 2-component vector of float)
0:25 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:25 Constant:
0:25 2 (const int)
0:26 move second child to first child ( temp 4-component vector of float)
0:26 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:26 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
0:26 Constant:
0:26 0 (const uint)
0:26 Constant:
0:26 1.000000
0:26 1.000000
0:26 1.000000
0:26 1.000000
0:27 EmitVertex ( global void)
0:? Linker Objects
0:? 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 33
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 11 28 31 32
Source GLSL 440
Name 4 "main"
Name 9 "Block"
MemberName 9(Block) 0 "a1"
MemberName 9(Block) 1 "a2"
Name 11 ""
Name 26 "gl_PerVertex"
MemberName 26(gl_PerVertex) 0 "gl_Position"
MemberName 26(gl_PerVertex) 1 "gl_PointSize"
MemberName 26(gl_PerVertex) 2 "gl_ClipDistance"
Name 28 ""
Name 31 "gl_VertexID"
Name 32 "gl_InstanceID"
Decorate 9(Block) Block
Decorate 11 Location 0
MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 26(gl_PerVertex) Block
Decorate 31(gl_VertexID) BuiltIn VertexId
Decorate 32(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeVector 6(float) 2
9(Block): TypeStruct 7(fvec4) 8(fvec2)
10: TypePointer Output 9(Block)
11: 10(ptr) Variable Output
12: TypeInt 32 1
13: 12(int) Constant 0
14: 6(float) Constant 1065353216
15: 7(fvec4) ConstantComposite 14 14 14 14
16: TypePointer Output 7(fvec4)
18: 12(int) Constant 1
19: 6(float) Constant 1056964608
20: 8(fvec2) ConstantComposite 19 19
21: TypePointer Output 8(fvec2)
23: TypeInt 32 0
24: 23(int) Constant 1
25: TypeArray 6(float) 24
26(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 25
27: TypePointer Output 26(gl_PerVertex)
28: 27(ptr) Variable Output
30: TypePointer Input 12(int)
31(gl_VertexID): 30(ptr) Variable Input
32(gl_InstanceID): 30(ptr) Variable Input
4(main): 2 Function None 3
5: Label
17: 16(ptr) AccessChain 11 13
Store 17 15
22: 21(ptr) AccessChain 11 18
Store 22 20
29: 16(ptr) AccessChain 28 13
Store 29 15
Return
FunctionEnd
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 49
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 9 14 22 25 33
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3
Source GLSL 440
Name 4 "main"
Name 9 "a1"
Name 14 "in_a1"
Name 22 "a2"
Name 25 "in_a2"
Name 31 "gl_PerVertex"
MemberName 31(gl_PerVertex) 0 "gl_Position"
MemberName 31(gl_PerVertex) 1 "gl_PointSize"
MemberName 31(gl_PerVertex) 2 "gl_ClipDistance"
Name 33 ""
Decorate 9(a1) Location 0
Decorate 14(in_a1) Location 0
Decorate 22(a2) Location 1
Decorate 25(in_a2) Location 1
MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 31(gl_PerVertex) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(a1): 8(ptr) Variable Output
10: TypeInt 32 0
11: 10(int) Constant 3
12: TypeArray 7(fvec4) 11
13: TypePointer Input 12
14(in_a1): 13(ptr) Variable Input
15: TypeInt 32 1
16: 15(int) Constant 0
17: TypePointer Input 7(fvec4)
20: TypeVector 6(float) 2
21: TypePointer Output 20(fvec2)
22(a2): 21(ptr) Variable Output
23: TypeArray 20(fvec2) 11
24: TypePointer Input 23
25(in_a2): 24(ptr) Variable Input
26: TypePointer Input 20(fvec2)
29: 10(int) Constant 1
30: TypeArray 6(float) 29
31(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 30
32: TypePointer Output 31(gl_PerVertex)
33: 32(ptr) Variable Output
34: 6(float) Constant 1065353216
35: 7(fvec4) ConstantComposite 34 34 34 34
37: 15(int) Constant 1
43: 15(int) Constant 2
4(main): 2 Function None 3
5: Label
18: 17(ptr) AccessChain 14(in_a1) 16
19: 7(fvec4) Load 18
Store 9(a1) 19
27: 26(ptr) AccessChain 25(in_a2) 16
28: 20(fvec2) Load 27
Store 22(a2) 28
36: 8(ptr) AccessChain 33 16
Store 36 35
EmitVertex
38: 17(ptr) AccessChain 14(in_a1) 37
39: 7(fvec4) Load 38
Store 9(a1) 39
40: 26(ptr) AccessChain 25(in_a2) 37
41: 20(fvec2) Load 40
Store 22(a2) 41
42: 8(ptr) AccessChain 33 16
Store 42 35
EmitVertex
44: 17(ptr) AccessChain 14(in_a1) 43
45: 7(fvec4) Load 44
Store 9(a1) 45
46: 26(ptr) AccessChain 25(in_a2) 43
47: 20(fvec2) Load 46
Store 22(a2) 47
48: 8(ptr) AccessChain 33 16
Store 48 35
EmitVertex
Return
FunctionEnd

View File

@ -0,0 +1,234 @@
iomap.blockOutVariableIn.vert
Shader version: 440
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 a1: direct index for structure ( out 4-component vector of float)
0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:12 move second child to first child ( temp 2-component vector of float)
0:12 a2: direct index for structure ( out 2-component vector of float)
0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:12 Constant:
0:12 1 (const uint)
0:12 Constant:
0:12 0.500000
0:12 0.500000
0:13 move second child to first child ( temp 4-component vector of float)
0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:13 Constant:
0:13 0 (const uint)
0:13 Constant:
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:? Linker Objects
0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
iomap.blockOutVariableIn.frag
Shader version: 440
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
0:10 'color' (layout( location=0) out 4-component vector of float)
0:10 Construct vec4 ( temp 4-component vector of float)
0:10 vector swizzle ( temp 2-component vector of float)
0:10 'a1' (layout( location=0) smooth in 4-component vector of float)
0:10 Sequence
0:10 Constant:
0:10 0 (const int)
0:10 Constant:
0:10 1 (const int)
0:10 'a2' (layout( location=1) smooth in 2-component vector of float)
0:? Linker Objects
0:? 'a1' (layout( location=0) smooth in 4-component vector of float)
0:? 'a2' (layout( location=1) smooth in 2-component vector of float)
0:? 'color' (layout( location=0) out 4-component vector of float)
Linked vertex stage:
Linked fragment stage:
Shader version: 440
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 a1: direct index for structure ( out 4-component vector of float)
0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:11 1.000000
0:12 move second child to first child ( temp 2-component vector of float)
0:12 a2: direct index for structure ( out 2-component vector of float)
0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:12 Constant:
0:12 1 (const uint)
0:12 Constant:
0:12 0.500000
0:12 0.500000
0:13 move second child to first child ( temp 4-component vector of float)
0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:13 Constant:
0:13 0 (const uint)
0:13 Constant:
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:13 1.000000
0:? Linker Objects
0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Shader version: 440
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
0:10 'color' (layout( location=0) out 4-component vector of float)
0:10 Construct vec4 ( temp 4-component vector of float)
0:10 vector swizzle ( temp 2-component vector of float)
0:10 'a1' (layout( location=0) smooth in 4-component vector of float)
0:10 Sequence
0:10 Constant:
0:10 0 (const int)
0:10 Constant:
0:10 1 (const int)
0:10 'a2' (layout( location=1) smooth in 2-component vector of float)
0:? Linker Objects
0:? 'a1' (layout( location=0) smooth in 4-component vector of float)
0:? 'a2' (layout( location=1) smooth in 2-component vector of float)
0:? 'color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 33
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 11 28 31 32
Source GLSL 440
Name 4 "main"
Name 9 "Block"
MemberName 9(Block) 0 "a1"
MemberName 9(Block) 1 "a2"
Name 11 ""
Name 26 "gl_PerVertex"
MemberName 26(gl_PerVertex) 0 "gl_Position"
MemberName 26(gl_PerVertex) 1 "gl_PointSize"
MemberName 26(gl_PerVertex) 2 "gl_ClipDistance"
Name 28 ""
Name 31 "gl_VertexID"
Name 32 "gl_InstanceID"
Decorate 9(Block) Block
Decorate 11 Location 0
MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 26(gl_PerVertex) Block
Decorate 31(gl_VertexID) BuiltIn VertexId
Decorate 32(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeVector 6(float) 2
9(Block): TypeStruct 7(fvec4) 8(fvec2)
10: TypePointer Output 9(Block)
11: 10(ptr) Variable Output
12: TypeInt 32 1
13: 12(int) Constant 0
14: 6(float) Constant 1065353216
15: 7(fvec4) ConstantComposite 14 14 14 14
16: TypePointer Output 7(fvec4)
18: 12(int) Constant 1
19: 6(float) Constant 1056964608
20: 8(fvec2) ConstantComposite 19 19
21: TypePointer Output 8(fvec2)
23: TypeInt 32 0
24: 23(int) Constant 1
25: TypeArray 6(float) 24
26(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 25
27: TypePointer Output 26(gl_PerVertex)
28: 27(ptr) Variable Output
30: TypePointer Input 12(int)
31(gl_VertexID): 30(ptr) Variable Input
32(gl_InstanceID): 30(ptr) Variable Input
4(main): 2 Function None 3
5: Label
17: 16(ptr) AccessChain 11 13
Store 17 15
22: 21(ptr) AccessChain 11 18
Store 22 20
29: 16(ptr) AccessChain 28 13
Store 29 15
Return
FunctionEnd
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 23
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 11 16
ExecutionMode 4 OriginLowerLeft
Source GLSL 440
Name 4 "main"
Name 9 "color"
Name 11 "a1"
Name 16 "a2"
Decorate 9(color) Location 0
Decorate 11(a1) Location 0
Decorate 16(a2) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(color): 8(ptr) Variable Output
10: TypePointer Input 7(fvec4)
11(a1): 10(ptr) Variable Input
12: TypeVector 6(float) 2
15: TypePointer Input 12(fvec2)
16(a2): 15(ptr) Variable Input
4(main): 2 Function None 3
5: Label
13: 7(fvec4) Load 11(a1)
14: 12(fvec2) VectorShuffle 13 13 0 1
17: 12(fvec2) Load 16(a2)
18: 6(float) CompositeExtract 14 0
19: 6(float) CompositeExtract 14 1
20: 6(float) CompositeExtract 17 0
21: 6(float) CompositeExtract 17 1
22: 7(fvec4) CompositeConstruct 18 19 20 21
Store 9(color) 22
Return
FunctionEnd

View File

@ -0,0 +1,276 @@
iomap.variableOutBlockIn.2.vert
Shader version: 440
0:? Sequence
0:6 Function Definition: main( ( global void)
0:6 Function Parameters:
0:8 Sequence
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
0:8 Constant:
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:9 move second child to first child ( temp 2-component vector of float)
0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
0:9 Constant:
0:9 0.500000
0:9 0.500000
0:10 move second child to first child ( temp 4-component vector of float)
0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:? Linker Objects
0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
iomap.variableOutBlockIn.geom
Shader version: 440
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:14 Function Definition: main( ( global void)
0:14 Function Parameters:
0:16 Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:16 Constant:
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:17 move second child to first child ( temp 2-component vector of float)
0:17 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:17 Constant:
0:17 0.500000
0:17 0.500000
0:18 move second child to first child ( temp 4-component vector of float)
0:18 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:18 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:18 Constant:
0:18 0 (const uint)
0:18 Constant:
0:18 1.000000
0:18 1.000000
0:18 1.000000
0:18 1.000000
0:? Linker Objects
0:? 'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
Linked vertex stage:
Linked geometry stage:
Shader version: 440
0:? Sequence
0:6 Function Definition: main( ( global void)
0:6 Function Parameters:
0:8 Sequence
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
0:8 Constant:
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:9 move second child to first child ( temp 2-component vector of float)
0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
0:9 Constant:
0:9 0.500000
0:9 0.500000
0:10 move second child to first child ( temp 4-component vector of float)
0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:? Linker Objects
0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Shader version: 440
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:14 Function Definition: main( ( global void)
0:14 Function Parameters:
0:16 Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:16 Constant:
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:16 1.000000
0:17 move second child to first child ( temp 2-component vector of float)
0:17 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:17 Constant:
0:17 0.500000
0:17 0.500000
0:18 move second child to first child ( temp 4-component vector of float)
0:18 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:18 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
0:18 Constant:
0:18 0 (const uint)
0:18 Constant:
0:18 1.000000
0:18 1.000000
0:18 1.000000
0:18 1.000000
0:? Linker Objects
0:? 'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 29
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 9 14 22 27 28
Source GLSL 440
Name 4 "main"
Name 9 "a1"
Name 14 "a2"
Name 20 "gl_PerVertex"
MemberName 20(gl_PerVertex) 0 "gl_Position"
MemberName 20(gl_PerVertex) 1 "gl_PointSize"
MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
Name 22 ""
Name 27 "gl_VertexID"
Name 28 "gl_InstanceID"
Decorate 9(a1) Location 0
Decorate 14(a2) Location 1
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 20(gl_PerVertex) Block
Decorate 27(gl_VertexID) BuiltIn VertexId
Decorate 28(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(a1): 8(ptr) Variable Output
10: 6(float) Constant 1065353216
11: 7(fvec4) ConstantComposite 10 10 10 10
12: TypeVector 6(float) 2
13: TypePointer Output 12(fvec2)
14(a2): 13(ptr) Variable Output
15: 6(float) Constant 1056964608
16: 12(fvec2) ConstantComposite 15 15
17: TypeInt 32 0
18: 17(int) Constant 1
19: TypeArray 6(float) 18
20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19
21: TypePointer Output 20(gl_PerVertex)
22: 21(ptr) Variable Output
23: TypeInt 32 1
24: 23(int) Constant 0
26: TypePointer Input 23(int)
27(gl_VertexID): 26(ptr) Variable Input
28(gl_InstanceID): 26(ptr) Variable Input
4(main): 2 Function None 3
5: Label
Store 9(a1) 11
Store 14(a2) 16
25: 8(ptr) AccessChain 22 24
Store 25 11
Return
FunctionEnd
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 31
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 9 14 22 30
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3
Source GLSL 440
Name 4 "main"
Name 9 "a1"
Name 14 "a2"
Name 20 "gl_PerVertex"
MemberName 20(gl_PerVertex) 0 "gl_Position"
MemberName 20(gl_PerVertex) 1 "gl_PointSize"
MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
Name 22 ""
Name 26 "Inputs"
MemberName 26(Inputs) 0 "a1"
MemberName 26(Inputs) 1 "a2"
Name 30 "gin"
Decorate 9(a1) Location 0
Decorate 14(a2) Location 1
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 20(gl_PerVertex) Block
Decorate 26(Inputs) Block
Decorate 30(gin) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(a1): 8(ptr) Variable Output
10: 6(float) Constant 1065353216
11: 7(fvec4) ConstantComposite 10 10 10 10
12: TypeVector 6(float) 2
13: TypePointer Output 12(fvec2)
14(a2): 13(ptr) Variable Output
15: 6(float) Constant 1056964608
16: 12(fvec2) ConstantComposite 15 15
17: TypeInt 32 0
18: 17(int) Constant 1
19: TypeArray 6(float) 18
20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19
21: TypePointer Output 20(gl_PerVertex)
22: 21(ptr) Variable Output
23: TypeInt 32 1
24: 23(int) Constant 0
26(Inputs): TypeStruct 7(fvec4) 12(fvec2)
27: 17(int) Constant 3
28: TypeArray 26(Inputs) 27
29: TypePointer Input 28
30(gin): 29(ptr) Variable Input
4(main): 2 Function None 3
5: Label
Store 9(a1) 11
Store 14(a2) 16
25: 8(ptr) AccessChain 22 24
Store 25 11
Return
FunctionEnd

View File

@ -0,0 +1,236 @@
iomap.variableOutBlockIn.vert
Shader version: 440
0:? Sequence
0:6 Function Definition: main( ( global void)
0:6 Function Parameters:
0:8 Sequence
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
0:8 Constant:
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:9 move second child to first child ( temp 2-component vector of float)
0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
0:9 Constant:
0:9 0.500000
0:9 0.500000
0:10 move second child to first child ( temp 4-component vector of float)
0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:? Linker Objects
0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
iomap.variableOutBlockIn.frag
Shader version: 440
0:? Sequence
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
0:12 'color' (layout( location=0) out 4-component vector of float)
0:12 Construct vec4 ( temp 4-component vector of float)
0:12 vector swizzle ( temp 2-component vector of float)
0:12 a1: direct index for structure ( in 4-component vector of float)
0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:12 Constant:
0:12 0 (const uint)
0:12 Sequence
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 a2: direct index for structure ( in 2-component vector of float)
0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:12 Constant:
0:12 1 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:? 'color' (layout( location=0) out 4-component vector of float)
Linked vertex stage:
Linked fragment stage:
Shader version: 440
0:? Sequence
0:6 Function Definition: main( ( global void)
0:6 Function Parameters:
0:8 Sequence
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
0:8 Constant:
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:8 1.000000
0:9 move second child to first child ( temp 2-component vector of float)
0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
0:9 Constant:
0:9 0.500000
0:9 0.500000
0:10 move second child to first child ( temp 4-component vector of float)
0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:10 1.000000
0:? Linker Objects
0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Shader version: 440
0:? Sequence
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
0:12 'color' (layout( location=0) out 4-component vector of float)
0:12 Construct vec4 ( temp 4-component vector of float)
0:12 vector swizzle ( temp 2-component vector of float)
0:12 a1: direct index for structure ( in 4-component vector of float)
0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:12 Constant:
0:12 0 (const uint)
0:12 Sequence
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 a2: direct index for structure ( in 2-component vector of float)
0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:12 Constant:
0:12 1 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
0:? 'color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 29
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 9 14 22 27 28
Source GLSL 440
Name 4 "main"
Name 9 "a1"
Name 14 "a2"
Name 20 "gl_PerVertex"
MemberName 20(gl_PerVertex) 0 "gl_Position"
MemberName 20(gl_PerVertex) 1 "gl_PointSize"
MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
Name 22 ""
Name 27 "gl_VertexID"
Name 28 "gl_InstanceID"
Decorate 9(a1) Location 0
Decorate 14(a2) Location 1
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 20(gl_PerVertex) Block
Decorate 27(gl_VertexID) BuiltIn VertexId
Decorate 28(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(a1): 8(ptr) Variable Output
10: 6(float) Constant 1065353216
11: 7(fvec4) ConstantComposite 10 10 10 10
12: TypeVector 6(float) 2
13: TypePointer Output 12(fvec2)
14(a2): 13(ptr) Variable Output
15: 6(float) Constant 1056964608
16: 12(fvec2) ConstantComposite 15 15
17: TypeInt 32 0
18: 17(int) Constant 1
19: TypeArray 6(float) 18
20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19
21: TypePointer Output 20(gl_PerVertex)
22: 21(ptr) Variable Output
23: TypeInt 32 1
24: 23(int) Constant 0
26: TypePointer Input 23(int)
27(gl_VertexID): 26(ptr) Variable Input
28(gl_InstanceID): 26(ptr) Variable Input
4(main): 2 Function None 3
5: Label
Store 9(a1) 11
Store 14(a2) 16
25: 8(ptr) AccessChain 22 24
Store 25 11
Return
FunctionEnd
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 29
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 13
ExecutionMode 4 OriginLowerLeft
Source GLSL 440
Name 4 "main"
Name 9 "color"
Name 11 "Inputs"
MemberName 11(Inputs) 0 "a1"
MemberName 11(Inputs) 1 "a2"
Name 13 ""
Decorate 9(color) Location 0
Decorate 11(Inputs) Block
Decorate 13 Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(color): 8(ptr) Variable Output
10: TypeVector 6(float) 2
11(Inputs): TypeStruct 7(fvec4) 10(fvec2)
12: TypePointer Input 11(Inputs)
13: 12(ptr) Variable Input
14: TypeInt 32 1
15: 14(int) Constant 0
16: TypePointer Input 7(fvec4)
20: 14(int) Constant 1
21: TypePointer Input 10(fvec2)
4(main): 2 Function None 3
5: Label
17: 16(ptr) AccessChain 13 15
18: 7(fvec4) Load 17
19: 10(fvec2) VectorShuffle 18 18 0 1
22: 21(ptr) AccessChain 13 20
23: 10(fvec2) Load 22
24: 6(float) CompositeExtract 19 0
25: 6(float) CompositeExtract 19 1
26: 6(float) CompositeExtract 23 0
27: 6(float) CompositeExtract 23 1
28: 7(fvec4) CompositeConstruct 24 25 26 27
Store 9(color) 28
Return
FunctionEnd

View File

@ -1,5 +1,4 @@
spv.1.4.OpEntryPoint.frag
Validation failed
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 64
@ -32,7 +31,6 @@ Validation failed
Decorate 25(uniformv) Binding 0
MemberDecorate 31(pushB) 0 Offset 0
Decorate 31(pushB) Block
Decorate 33(pushv) Binding 2
MemberDecorate 39(bbt) 0 Offset 0
Decorate 39(bbt) Block
Decorate 41(bufferv) DescriptorSet 0

View File

@ -1,35 +0,0 @@
spv.intrinsicsSpecConst.vert
Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 13
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 10
ExecutionModeId 4 DenormFlushToZero 7
Source GLSL 450
SourceExtension "GL_EXT_spirv_intrinsics"
Name 4 "main"
Name 7 "targetWidth"
Name 10 "pointSize"
Name 11 "builtIn"
Decorate 7(targetWidth) SpecId 5
Decorate 10(pointSize) Location 0
Decorate 11(builtIn) SpecId 6
DecorateId 10(pointSize) BuiltIn 11(builtIn)
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7(targetWidth): 6(int) SpecConstant 32
8: TypeFloat 32
9: TypePointer Output 8(float)
10(pointSize): 9(ptr) Variable Output
11(builtIn): 6(int) SpecConstant 1
12: 8(float) Constant 1082130432
4(main): 2 Function None 3
5: Label
Store 10(pointSize) 12
Return
FunctionEnd

View File

@ -1,30 +1,30 @@
spv.intrinsicsSpirvLiteral.vert
Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 12
// Id's are bound by 13
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
EntryPoint Vertex 4 "main" 9 11
Source GLSL 450
SourceExtension "GL_EXT_spirv_intrinsics"
Name 4 "main"
Name 9 "vec4Out"
Name 10 "vec4In"
Name 11 "vec4In"
Decorate 9(vec4Out) Location 1
Decorate 10(vec4In) Location 0
Decorate 11(vec4In) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
8: TypePointer Output 7(fvec4)
9(vec4Out): 8(ptr) Variable Output
10: TypePointer Input 7(fvec4)
11(vec4In): 10(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(vec4Out): 8(ptr) Variable Function
10(vec4In): 8(ptr) Variable Function
11: 7(fvec4) Load 10(vec4In) None
Store 9(vec4Out) 11 Volatile
12: 7(fvec4) Load 11(vec4In) None
Store 9(vec4Out) 12 Volatile
Return
FunctionEnd

View File

@ -22,7 +22,9 @@ Validation failed
Decorate 11(as) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeRayQueryKHR
7: TypePointer Function 6
9: TypeAccelerationStructureKHR
10: TypePointer UniformConstant 9
11(as): 10(ptr) Variable UniformConstant
13: TypeInt 32 0
@ -36,8 +38,6 @@ Validation failed
4(main): 2 Function None 3
5: Label
8(rq): 7(ptr) Variable Function
6: TypeRayQueryKHR
9: TypeAccelerationStructureKHR
12: 9 Load 11(as)
RayQueryInitializeKHR 8(rq) 12 14 14 18 17 20 19
RayQueryTerminateKHR 8(rq)

View File

@ -0,0 +1,43 @@
spv.intrinsicsSpirvTypeLocalVar.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 22
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
Source GLSL 460
SourceExtension "GL_EXT_spirv_intrinsics"
Name 4 "main"
Name 10 "func(spv-t1;"
Name 9 "emptyStruct"
Name 13 "size"
Name 16 "dummy"
Name 18 "param"
Decorate 13(size) SpecId 9
2: TypeVoid
3: TypeFunction 2
6: TypeStruct
7: TypePointer Function 6(struct)
8: TypeFunction 2 7(ptr)
12: TypeInt 32 1
13(size): 12(int) SpecConstant 9
14: TypeArray 6(struct) 13(size)
15: TypePointer Function 14
17: 12(int) Constant 1
4(main): 2 Function None 3
5: Label
16(dummy): 15(ptr) Variable Function
18(param): 7(ptr) Variable Function
19: 7(ptr) AccessChain 16(dummy) 17
20: 6(struct) Load 19
Store 18(param) 20
21: 2 FunctionCall 10(func(spv-t1;) 18(param)
Return
FunctionEnd
10(func(spv-t1;): 2 Function None 8
9(emptyStruct): 7(ptr) FunctionParameter
11: Label
Return
FunctionEnd

View File

@ -0,0 +1,115 @@
textureQueryLOD.frag
WARNING: 0:7: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
Shader version: 150
Requested GL_ARB_gpu_shader5
Requested GL_ARB_texture_query_lod
0:? Sequence
0:24 Function Definition: main( ( global void)
0:24 Function Parameters:
0:26 Sequence
0:26 switch
0:26 condition
0:26 'funct' ( uniform int)
0:26 body
0:26 Sequence
0:28 case: with expression
0:28 Constant:
0:28 0 (const int)
0:? Sequence
0:29 Sequence
0:29 move second child to first child ( temp 2-component vector of int)
0:29 'iv2' ( temp 2-component vector of int)
0:29 textureSize ( global 2-component vector of int)
0:29 'sampler' ( uniform sampler2DShadow)
0:29 Constant:
0:29 0 (const int)
0:31 Sequence
0:31 move second child to first child ( temp 2-component vector of float)
0:31 'fv2' ( temp 2-component vector of float)
0:31 textureQueryLod ( global 2-component vector of float)
0:31 'sampler' ( uniform sampler2DShadow)
0:31 Constant:
0:31 0.000000
0:31 0.000000
0:33 move second child to first child ( temp 4-component vector of float)
0:33 'color' ( out 4-component vector of float)
0:33 Construct vec4 ( temp 4-component vector of float)
0:33 Convert int to float ( temp 2-component vector of float)
0:33 'iv2' ( temp 2-component vector of int)
0:33 'fv2' ( temp 2-component vector of float)
0:34 Branch: Break
0:35 default:
0:? Sequence
0:36 move second child to first child ( temp 4-component vector of float)
0:36 'color' ( out 4-component vector of float)
0:36 Constant:
0:36 1.000000
0:36 1.000000
0:36 1.000000
0:36 1.000000
0:37 Branch: Break
0:? Linker Objects
0:? 'vUV' ( smooth in 2-component vector of float)
0:? 'color' ( out 4-component vector of float)
0:? 'sampler' ( uniform sampler2DShadow)
0:? 'funct' ( uniform int)
Linked fragment stage:
Shader version: 150
Requested GL_ARB_gpu_shader5
Requested GL_ARB_texture_query_lod
0:? Sequence
0:24 Function Definition: main( ( global void)
0:24 Function Parameters:
0:26 Sequence
0:26 switch
0:26 condition
0:26 'funct' ( uniform int)
0:26 body
0:26 Sequence
0:28 case: with expression
0:28 Constant:
0:28 0 (const int)
0:? Sequence
0:29 Sequence
0:29 move second child to first child ( temp 2-component vector of int)
0:29 'iv2' ( temp 2-component vector of int)
0:29 textureSize ( global 2-component vector of int)
0:29 'sampler' ( uniform sampler2DShadow)
0:29 Constant:
0:29 0 (const int)
0:31 Sequence
0:31 move second child to first child ( temp 2-component vector of float)
0:31 'fv2' ( temp 2-component vector of float)
0:31 textureQueryLod ( global 2-component vector of float)
0:31 'sampler' ( uniform sampler2DShadow)
0:31 Constant:
0:31 0.000000
0:31 0.000000
0:33 move second child to first child ( temp 4-component vector of float)
0:33 'color' ( out 4-component vector of float)
0:33 Construct vec4 ( temp 4-component vector of float)
0:33 Convert int to float ( temp 2-component vector of float)
0:33 'iv2' ( temp 2-component vector of int)
0:33 'fv2' ( temp 2-component vector of float)
0:34 Branch: Break
0:35 default:
0:? Sequence
0:36 move second child to first child ( temp 4-component vector of float)
0:36 'color' ( out 4-component vector of float)
0:36 Constant:
0:36 1.000000
0:36 1.000000
0:36 1.000000
0:36 1.000000
0:37 Branch: Break
0:? Linker Objects
0:? 'vUV' ( smooth in 2-component vector of float)
0:? 'color' ( out 4-component vector of float)
0:? 'sampler' ( uniform sampler2DShadow)
0:? 'funct' ( uniform int)

View File

@ -24,37 +24,38 @@ ERROR: 0:39: 'push_constant' : can only be used with a uniform
ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:43: 'push_constant' : can only be used with a block
ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block
ERROR: 0:51: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:52: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:52: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:53: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:53: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:46: 'binding' : cannot be used with push_constant
ERROR: 0:54: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:54: 'subpass' : requires an input_attachment_index layout qualifier
ERROR: 0:55: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:60: 'subpassLoadMS' : no matching overloaded function found
ERROR: 0:61: 'subpassLoad' : no matching overloaded function found
ERROR: 0:55: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:56: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:56: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:57: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:57: 'subpass' : requires an input_attachment_index layout qualifier
ERROR: 0:58: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found
ERROR: 0:66: 'subroutine' : not allowed when generating SPIR-V
ERROR: 0:66: 'subroutine' : feature not yet implemented
ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V
ERROR: 0:67: 'subroutine' : feature not yet implemented
ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:73: 'texture' : no matching overloaded function found
ERROR: 0:74: 'imageStore' : no matching overloaded function found
WARNING: 0:82: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
ERROR: 0:64: 'subpassLoad' : no matching overloaded function found
ERROR: 0:66: 'subpassLoadMS' : no matching overloaded function found
ERROR: 0:69: 'subroutine' : not allowed when generating SPIR-V
ERROR: 0:69: 'subroutine' : feature not yet implemented
ERROR: 0:70: 'subroutine' : not allowed when generating SPIR-V
ERROR: 0:70: 'subroutine' : feature not yet implemented
ERROR: 0:72: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:76: 'texture' : no matching overloaded function found
ERROR: 0:77: 'imageStore' : no matching overloaded function found
WARNING: 0:85: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
"precision mediump int; precision highp float;"
ERROR: 0:91: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:92: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:93: ',' : sampler constructor must appear at point of use
ERROR: 0:94: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:96: 'gl_NumSamples' : undeclared identifier
ERROR: 0:101: 'noise1' : no matching overloaded function found
ERROR: 0:102: 'noise2' : no matching overloaded function found
ERROR: 0:103: 'noise3' : no matching overloaded function found
ERROR: 0:104: 'noise4' : no matching overloaded function found
ERROR: 53 compilation errors. No code generated.
ERROR: 0:95: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:96: ',' : sampler constructor must appear at point of use
ERROR: 0:97: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
ERROR: 0:97: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:99: 'gl_NumSamples' : undeclared identifier
ERROR: 0:104: 'noise1' : no matching overloaded function found
ERROR: 0:105: 'noise2' : no matching overloaded function found
ERROR: 0:106: 'noise3' : no matching overloaded function found
ERROR: 0:107: 'noise4' : no matching overloaded function found
ERROR: 54 compilation errors. No code generated.
ERROR: Linking fragment stage: Only one push_constant block is allowed per stage

View File

@ -13,11 +13,18 @@ const uint32_t uint32_t_init = uint32_t(3);
const uint64_t uint64_t_init = uint64_t(4);
const float16_t float16_t_init = float16_t(42.0);
const float32_t float32_t_init = float32_t(13.0);
const float64_t float64_t_init = float64_t(-4.0);
const float64_t float64_t_init = float64_t(4.0);
const float16_t neg_float16_t_init = float16_t(-42.0);
const float32_t neg_float32_t_init = float32_t(-13.0);
const float64_t neg_float64_t_init = float64_t(-4.0);
#define TYPE_TO_TYPE(x, y) \
const x y##_to_##x = x(y##_init)
#define TYPE_TO_TYPE_PREFIX(prefix, x, y) \
const x prefix##_##y##_to_##x = x(prefix##_##y##_init)
#define TYPE_TO(x) \
TYPE_TO_TYPE(x, bool); \
TYPE_TO_TYPE(x, int8_t); \
@ -45,4 +52,18 @@ TYPE_TO(float16_t);
TYPE_TO(float32_t);
TYPE_TO(float64_t);
#define NEG_FLOAT_TO(x) \
TYPE_TO_TYPE_PREFIX(neg, x, float16_t); \
TYPE_TO_TYPE_PREFIX(neg, x, float32_t); \
TYPE_TO_TYPE_PREFIX(neg, x, float64_t)
NEG_FLOAT_TO(bool);
NEG_FLOAT_TO(int8_t);
NEG_FLOAT_TO(int16_t);
NEG_FLOAT_TO(int32_t);
NEG_FLOAT_TO(int64_t);
NEG_FLOAT_TO(float16_t);
NEG_FLOAT_TO(float32_t);
NEG_FLOAT_TO(float64_t);
void main() {}

View File

@ -0,0 +1,10 @@
RWStructuredBuffer<uint> g_sbuf;
RWByteAddressBuffer g_bbuf;
void main()
{
uint f = g_bbuf.Load(16);
g_sbuf[0] = f;
}

12
Test/hlsl.w-recip.frag Normal file
View File

@ -0,0 +1,12 @@
float4 AmbientColor = float4(1, 0.5, 0, 1);
float4 AmbientColor2 = float4(0.5, 1, 0, 0);
float4 main(float4 vpos : SV_POSITION) : SV_TARGET
{
float4 vpos_t = float4(vpos.xyz, 1 / vpos.w);
if (vpos_t.x < 400)
return AmbientColor;
else
return AmbientColor2;
}

View File

@ -0,0 +1,14 @@
#version 440
layout(location = 0) out Block
{
vec4 a1;
vec2 a2;
};
void main()
{
a1 = vec4(1.0);
a2 = vec2(0.5);
gl_Position = vec4(1.0);
}

View File

@ -0,0 +1,11 @@
#version 440
layout(location = 0) in vec4 a1;
layout(location = 1) in vec2 a2;
layout(location = 0) out vec4 color;
void main()
{
color = vec4(a1.xy, a2);
}

View File

@ -0,0 +1,28 @@
#version 440
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
layout(location = 0) in vec4 in_a1[3];
layout(location = 1) in vec2 in_a2[3];
layout(location = 0) out vec4 a1;
layout(location = 1) out vec2 a2;
void main()
{
a1 = in_a1[0];
a2 = in_a2[0];
gl_Position = vec4(1.0);
EmitVertex();
a1 = in_a1[1];
a2 = in_a2[1];
gl_Position = vec4(1.0);
EmitVertex();
a1 = in_a1[2];
a2 = in_a2[2];
gl_Position = vec4(1.0);
EmitVertex();
}

View File

@ -0,0 +1,14 @@
#version 440
layout(location = 0) out Block
{
vec4 a1;
vec2 a2;
};
void main()
{
a1 = vec4(1.0);
a2 = vec2(0.5);
gl_Position = vec4(1.0);
}

View File

@ -0,0 +1,11 @@
#version 440
layout(location = 0) out vec4 a1;
layout(location = 1) out vec2 a2;
void main()
{
a1 = vec4(1.0);
a2 = vec2(0.5);
gl_Position = vec4(1.0);
}

View File

@ -0,0 +1,13 @@
#version 440
layout(location = 0) in Inputs {
vec4 a1;
vec2 a2;
};
layout(location = 0) out vec4 color;
void main()
{
color = vec4(a1.xy, a2);
}

View File

@ -0,0 +1,19 @@
#version 440
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
layout(location = 0) in Inputs {
vec4 a1;
vec2 a2;
} gin[3];
layout(location = 0) out vec4 a1;
layout(location = 1) out vec2 a2;
void main()
{
a1 = vec4(1.0);
a2 = vec2(0.5);
gl_Position = vec4(1.0);
}

View File

@ -0,0 +1,11 @@
#version 440
layout(location = 0) out vec4 a1;
layout(location = 1) out vec2 a2;
void main()
{
a1 = vec4(1.0);
a2 = vec2(0.5);
gl_Position = vec4(1.0);
}

View File

@ -254,6 +254,13 @@ diff -b $BASEDIR/hlsl.y-negate-2.vert.out $TARGETDIR/hlsl.y-negate-2.vert.out ||
run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-3.vert > $TARGETDIR/hlsl.y-negate-3.vert.out
diff -b $BASEDIR/hlsl.y-negate-3.vert.out $TARGETDIR/hlsl.y-negate-3.vert.out || HASERROR=1
#
# Testing position W reciprocal
#
echo "Testing position W reciprocal"
run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip.frag > $TARGETDIR/hlsl.w-recip.frag.out
diff -b $BASEDIR/hlsl.w-recip.frag.out $TARGETDIR/hlsl.w-recip.frag.out || HASERROR=1
#
# Testing hlsl_functionality1
#

View File

@ -13,7 +13,7 @@ layout(binding = 1) buffer bbt {
float f;
} bufferv;
layout(binding = 2, push_constant) uniform pushB {
layout(push_constant) uniform pushB {
int a;
} pushv;

View File

@ -1,14 +0,0 @@
#version 450 core
#extension GL_EXT_spirv_intrinsics: enable
layout(constant_id = 5) const uint targetWidth = 32;
spirv_execution_mode_id(4460/*=DenormFlushToZero*/, targetWidth);
layout(constant_id = 6) const uint builtIn = 1;
spirv_decorate_id(11/*=BuiltIn*/, builtIn) out float pointSize;
void main()
{
pointSize = 4.0;
}

View File

@ -0,0 +1,14 @@
#version 460 core
#extension GL_EXT_spirv_intrinsics: enable
layout(constant_id = 9) const int size = 9;
#define EmptyStruct spirv_type(id = 30)
void func(EmptyStruct emptyStruct) {}
void main()
{
EmptyStruct dummy[size];
func(dummy[1]);
}

39
Test/textureQueryLOD.frag Normal file
View File

@ -0,0 +1,39 @@
#version 150
#ifdef GL_ARB_texture_query_lod
#extension GL_ARB_texture_query_lod : enable
#endif
#ifdef GL_ARB_gpu_shader5
#extension GL_ARB_gpu_shader5 : enable
#endif
#ifdef GL_ES
precision highp float;
#endif
in vec2 vUV; // vert->frag
out vec4 color; // frag->fb
#define UV vUV
#define bias 1.5
#define TEX 128.0
#define offset ivec2(1,1)
uniform highp sampler2DShadow sampler;
uniform int funct;
void main (void)
{
switch (funct)
{
case 0:
ivec2 iv2 = textureSize(sampler, 0);
#ifdef GL_ARB_texture_query_lod
vec2 fv2 = textureQueryLOD(sampler, vec2(0.0, 0.0));
#endif
color = vec4(iv2,fv2);
break;
default:
color = vec4(1.0, 1.0, 1.0, 1.0);
break;
}
}

View File

@ -43,6 +43,9 @@ layout(push_constant) buffer pcb { // ERROR, not on a buffer
layout(push_constant) uniform float pcfloat; // ERROR 2X: not on a non-block, and non-opaque outside block
layout(push_constant) uniform; // ERROR, needs an object
layout(binding=2, push_constant) uniform pcbnd1 { // ERROR, can't have binding
int a;
} pcbnd1inst;
layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst;
layout(push_constant) uniform pcb2 {
int a;

View File

@ -36,19 +36,3 @@
// POSSIBILITY OF SUCH DAMAGE.
//
#extension GL_EXT_spirv_intrinsics : enable
#extension GL_ARB_gpu_shader_int64 : enable
uvec2 clockRealtime2x32EXT(void) {
spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)
uvec2 clockRealtime2x32EXT_internal(uint scope);
return clockRealtime2x32EXT_internal(1 /*Device scope*/);
}
uint64_t clockRealtimeEXT(void) {
spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)
uint64_t clockRealtimeEXT_internal(uint scope);
return clockRealtimeEXT_internal(1 /*Device scope*/);
}

View File

@ -2167,8 +2167,21 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
TIntermSymbol* arg = intermediate.addSymbol(*argVars.back());
handleFunctionArgument(&callee, callingArgs, arg);
if (param.type->getQualifier().isParamInput()) {
intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg,
intermediate.addSymbol(**inputIt)));
TIntermTyped* input = intermediate.addSymbol(**inputIt);
if (input->getType().getQualifier().builtIn == EbvFragCoord && intermediate.getDxPositionW()) {
// Replace FragCoord W with reciprocal
auto pos_xyz = handleDotDereference(loc, input, "xyz");
auto pos_w = handleDotDereference(loc, input, "w");
auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc);
auto recip_w = intermediate.addBinaryMath(EOpDiv, one, pos_w, loc);
TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4);
dst->getSequence().push_back(pos_xyz);
dst->getSequence().push_back(recip_w);
dst->setType(TType(EbtFloat, EvqTemporary, 4));
dst->setLoc(loc);
input = dst;
}
intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, input));
inputIt++;
}
if (param.type->getQualifier().storage == EvqUniform) {
@ -6935,6 +6948,9 @@ void HlslParseContext::shareStructBufferType(TType& type)
if (lhs.isStruct() != rhs.isStruct())
return false;
if (lhs.getQualifier().builtIn != rhs.getQualifier().builtIn)
return false;
if (lhs.isStruct() && rhs.isStruct()) {
if (lhs.getStruct()->size() != rhs.getStruct()->size())
return false;

View File

@ -39,7 +39,11 @@
#include <algorithm>
#include <cassert>
#ifdef _MSC_VER
#include <cfloat>
#else
#include <cmath>
#endif
#include <cstdio>
#include <cstdlib>
#include <list>

View File

@ -316,6 +316,7 @@ const CustomFunction CustomFunctions[] = {
{ EOpTextureQuerySize, "textureSize", nullptr },
{ EOpTextureQueryLod, "textureQueryLod", nullptr },
{ EOpTextureQueryLod, "textureQueryLOD", nullptr }, // extension GL_ARB_texture_query_lod
{ EOpTextureQueryLevels, "textureQueryLevels", nullptr },
{ EOpTextureQuerySamples, "textureSamples", nullptr },
{ EOpTexture, "texture", nullptr },
@ -4553,11 +4554,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
// GL_ARB_shader_clock
// GL_ARB_shader_clock& GL_EXT_shader_realtime_clock
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
"uvec2 clock2x32ARB();"
"uint64_t clockARB();"
"uvec2 clockRealtime2x32EXT();"
"uint64_t clockRealtimeEXT();"
"\n");
}
@ -6245,38 +6248,44 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int
//
// textureQueryLod(), fragment stage only
// Also enabled with extension GL_ARB_texture_query_lod
// Extension GL_ARB_texture_query_lod says that textureQueryLOD() also exist at extension.
if (profile != EEsProfile && version >= 150 && sampler.isCombined() && sampler.dim != EsdRect &&
! sampler.isMultiSample() && ! sampler.isBuffer()) {
for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) {
if (f16TexAddr && sampler.type != EbtFloat16)
continue;
stageBuiltins[EShLangFragment].append("vec2 textureQueryLod(");
stageBuiltins[EShLangFragment].append(typeName);
if (dimMap[sampler.dim] == 1)
if (f16TexAddr)
stageBuiltins[EShLangFragment].append(", float16_t");
else
stageBuiltins[EShLangFragment].append(", float");
else {
if (f16TexAddr)
stageBuiltins[EShLangFragment].append(", f16vec");
else
stageBuiltins[EShLangFragment].append(", vec");
stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]);
}
stageBuiltins[EShLangFragment].append(");\n");
}
stageBuiltins[EShLangCompute].append("vec2 textureQueryLod(");
stageBuiltins[EShLangCompute].append(typeName);
if (dimMap[sampler.dim] == 1)
stageBuiltins[EShLangCompute].append(", float");
else {
stageBuiltins[EShLangCompute].append(", vec");
stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]);
const TString funcName[2] = {"vec2 textureQueryLod(", "vec2 textureQueryLOD("};
for (int i = 0; i < 2; ++i){
for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) {
if (f16TexAddr && sampler.type != EbtFloat16)
continue;
stageBuiltins[EShLangFragment].append(funcName[i]);
stageBuiltins[EShLangFragment].append(typeName);
if (dimMap[sampler.dim] == 1)
if (f16TexAddr)
stageBuiltins[EShLangFragment].append(", float16_t");
else
stageBuiltins[EShLangFragment].append(", float");
else {
if (f16TexAddr)
stageBuiltins[EShLangFragment].append(", f16vec");
else
stageBuiltins[EShLangFragment].append(", vec");
stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]);
}
stageBuiltins[EShLangFragment].append(");\n");
}
stageBuiltins[EShLangCompute].append(funcName[i]);
stageBuiltins[EShLangCompute].append(typeName);
if (dimMap[sampler.dim] == 1)
stageBuiltins[EShLangCompute].append(", float");
else {
stageBuiltins[EShLangCompute].append(", vec");
stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]);
}
stageBuiltins[EShLangCompute].append(");\n");
}
stageBuiltins[EShLangCompute].append(");\n");
}
//
@ -8061,7 +8070,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
if (profile != EEsProfile && version < 400) {
symbolTable.setFunctionExtensions("textureQueryLod", 1, &E_GL_ARB_texture_query_lod);
symbolTable.setFunctionExtensions("textureQueryLOD", 1, &E_GL_ARB_texture_query_lod);
}
if (profile != EEsProfile && version >= 460) {
@ -8324,6 +8333,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setFunctionExtensions("clockARB", 1, &E_GL_ARB_shader_clock);
symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock);
symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock);
symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock);
if (profile == EEsProfile && version < 320) {
symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader);
symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader);

View File

@ -3902,7 +3902,7 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
case EbtFloat16: PROMOTE(setDConst, double, Get); break; \
case EbtFloat: PROMOTE(setDConst, double, Get); break; \
case EbtDouble: PROMOTE(setDConst, double, Get); break; \
case EbtInt8: PROMOTE(setI8Const, char, Get); break; \
case EbtInt8: PROMOTE(setI8Const, signed char, Get); break; \
case EbtInt16: PROMOTE(setI16Const, short, Get); break; \
case EbtInt: PROMOTE(setIConst, int, Get); break; \
case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \

View File

@ -6496,6 +6496,8 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier
error(loc, "can only be used with a uniform", "push_constant", "");
if (qualifier.hasSet())
error(loc, "cannot be used with push_constant", "set", "");
if (qualifier.hasBinding())
error(loc, "cannot be used with push_constant", "binding", "");
}
if (qualifier.hasBufferReference()) {
if (qualifier.storage != EvqBuffer)
@ -6650,8 +6652,10 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct
: findFunctionExact(loc, call, builtIn));
else if (version < 120)
function = findFunctionExact(loc, call, builtIn);
else if (version < 400)
function = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn);
else if (version < 400) {
bool needfindFunction400 = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) || extensionTurnedOn(E_GL_ARB_gpu_shader5);
function = needfindFunction400 ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn);
}
else if (explicitTypesEnabled)
function = findFunctionExplicitTypes(loc, call, builtIn);
else

View File

@ -1829,6 +1829,7 @@ void TShader::setUniqueId(unsigned long long id)
}
void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); }
void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); }
void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); }
#ifndef GLSLANG_WEB

View File

@ -426,12 +426,7 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const
symTableLevel->thisLevel = thisLevel;
symTableLevel->retargetedSymbols.clear();
for (auto &s : retargetedSymbols) {
// Extra constructions to make sure they use the correct allocator pool
TString newFrom;
newFrom = s.first;
TString newTo;
newTo = s.second;
symTableLevel->retargetedSymbols.push_back({std::move(newFrom), std::move(newTo)});
symTableLevel->retargetedSymbols.push_back({s.first, s.second});
}
std::vector<bool> containerCopied(anonId, false);
tLevel::const_iterator iter;
@ -462,11 +457,7 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const
TSymbol* sym = symTableLevel->find(s.second);
if (!sym)
continue;
// Need to declare and assign so newS is using the correct pool allocator
TString newS;
newS = s.first;
symTableLevel->insert(newS, sym);
symTableLevel->insert(s.first, sym);
}
return symTableLevel;

View File

@ -84,7 +84,7 @@ typedef TVector<const char*> TExtensionList;
class TSymbol {
public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
explicit TSymbol(const TString *n) : name(n), extensions(0), writable(true) { }
explicit TSymbol(const TString *n) : name(n), uniqueId(0), extensions(0), writable(true) { }
virtual TSymbol* clone() const = 0;
virtual ~TSymbol() { } // rely on all symbol owned memory coming from the pool

View File

@ -514,6 +514,24 @@ struct TSymbolValidater
return;
}
else {
// Deal with input/output pairs where one is a block member but the other is loose,
// e.g. with ARB_separate_shader_objects
if (type1.getBasicType() == EbtBlock &&
type1.isStruct() && !type2.isStruct()) {
// Iterate through block members tracking layout
glslang::TString name;
type1.getStruct()->begin()->type->appendMangledName(name);
if (name == mangleName2
&& type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return;
}
if (type2.getBasicType() == EbtBlock &&
type2.isStruct() && !type1.isStruct()) {
// Iterate through block members tracking layout
glslang::TString name;
type2.getStruct()->begin()->type->appendMangledName(name);
if (name == mangleName1
&& type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return;
}
TString err = "Invalid In/Out variable type : " + entKey.first;
infoSink.info.message(EPrefixInternalError, err.c_str());
hadError = true;

View File

@ -312,6 +312,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit)
MERGE_TRUE(autoMapBindings);
MERGE_TRUE(autoMapLocations);
MERGE_TRUE(invertY);
MERGE_TRUE(dxPositionW);
MERGE_TRUE(flattenUniformArrays);
MERGE_TRUE(useUnknownFormat);
MERGE_TRUE(hlslOffsets);
@ -759,7 +760,10 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin
auto checkName = [this, unitSymbol, &infoSink](const TString& name) {
for (unsigned int i = 0; i < unitSymbol->getType().getStruct()->size(); ++i) {
if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName()) {
if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName()
&& !((*unitSymbol->getType().getStruct())[i].type->getQualifier().hasLocation()
|| unitSymbol->getType().getQualifier().hasLocation())
) {
error(infoSink, "Anonymous member name used for global variable or other anonymous member: ");
infoSink.info << (*unitSymbol->getType().getStruct())[i].type->getCompleteString() << "\n";
}

View File

@ -290,6 +290,7 @@ public:
resources(TBuiltInResource{}),
numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
invertY(false),
dxPositionW(false),
useStorageBuffer(false),
invariantAll(false),
nanMinMaxClamp(false),
@ -460,6 +461,14 @@ public:
}
bool getInvertY() const { return invertY; }
void setDxPositionW(bool dxPosW)
{
dxPositionW = dxPosW;
if (dxPositionW)
processes.addProcess("dx-position-w");
}
bool getDxPositionW() const { return dxPositionW; }
#ifdef ENABLE_HLSL
void setSource(EShSource s) { source = s; }
EShSource getSource() const { return source; }
@ -1070,6 +1079,7 @@ protected:
int numPushConstants;
bool recursive;
bool invertY;
bool dxPositionW;
bool useStorageBuffer;
bool invariantAll;
bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN

View File

@ -485,6 +485,7 @@ public:
GLSLANG_EXPORT void addUniformLocationOverride(const char* name, int loc);
GLSLANG_EXPORT void setUniformLocationBase(int base);
GLSLANG_EXPORT void setInvertY(bool invert);
GLSLANG_EXPORT void setDxPositionW(bool dxPosW);
#ifdef ENABLE_HLSL
GLSLANG_EXPORT void setHlslIoMapping(bool hlslIoMap);
GLSLANG_EXPORT void setFlattenUniformArrays(bool flatten);

View File

@ -284,10 +284,12 @@ INSTANTIATE_TEST_SUITE_P(
"textureoffset_sampler2darrayshadow.vert",
"atomicAdd.comp",
"GL_ARB_gpu_shader5.u2i.vert",
"textureQueryLOD.frag",
"atomicCounterARBOps.vert",
"GL_EXT_shader_integer_mix.vert",
"GL_ARB_draw_instanced.vert",
"GL_ARB_fragment_coord_conventions.vert"
"GL_ARB_fragment_coord_conventions.vert",
"BestMatchFunction.vert",
})),
FileNameAsCustomTestSuffix
);

View File

@ -109,7 +109,50 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) {
success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
}
else {
success &= false;
if (!in.getType()->isStruct()) {
bool found = false;
for (auto outIt : pipeOut) {
if (outIt.second->getType()->isStruct()) {
unsigned int baseLoc = outIt.second->getType()->getQualifier().hasLocation() ? outIt.second->getType()->getQualifier().layoutLocation : -1;
for (int j = 0; j < outIt.second->getType()->getStruct()->size(); j++) {
baseLoc = (*outIt.second->getType()->getStruct())[j].type->getQualifier().hasLocation() ?
(*outIt.second->getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc;
if (baseLoc != -1) {
if (baseLoc == in.getType()->getQualifier().layoutLocation) {
found = true;
break;
}
baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*outIt.second->getType()->getStruct())[j].type, EShLangVertex);
}
}
if (found) {
break;
}
}
}
success &= found;
}
else {
unsigned int baseLoc = in.getType()->getQualifier().hasLocation() ? in.getType()->getQualifier().layoutLocation : -1;
for (int j = 0; j < in.getType()->getStruct()->size(); j++) {
baseLoc = (*in.getType()->getStruct())[j].type->getQualifier().hasLocation() ?
(*in.getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc;
if (baseLoc != -1) {
bool isMemberFound = false;
for (auto outIt : pipeOut) {
if (baseLoc == outIt.second->getType()->getQualifier().layoutLocation) {
isMemberFound = true;
break;
}
}
if (!isMemberFound) {
success &= false;
break;
}
baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*in.getType()->getStruct())[j].type, EShLangVertex);
}
}
}
}
}
}
@ -295,6 +338,10 @@ INSTANTIATE_TEST_SUITE_P(
::testing::ValuesIn(std::vector<IoMapData>({
{{"iomap.crossStage.vert", "iomap.crossStage.frag" }, Semantics::OpenGL},
{{"iomap.crossStage.2.vert", "iomap.crossStage.2.geom", "iomap.crossStage.2.frag" }, Semantics::OpenGL},
{{"iomap.blockOutVariableIn.vert", "iomap.blockOutVariableIn.frag"}, Semantics::OpenGL},
{{"iomap.variableOutBlockIn.vert", "iomap.variableOutBlockIn.frag"}, Semantics::OpenGL},
{{"iomap.blockOutVariableIn.2.vert", "iomap.blockOutVariableIn.geom"}, Semantics::OpenGL},
{{"iomap.variableOutBlockIn.2.vert", "iomap.variableOutBlockIn.geom"}, Semantics::OpenGL},
// vulkan semantics
{{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan},
}))

View File

@ -385,6 +385,7 @@ INSTANTIATE_TEST_SUITE_P(
{"hlsl.structbuffer.fn2.comp", "main"},
{"hlsl.structbuffer.rw.frag", "main"},
{"hlsl.structbuffer.rwbyte.frag", "main"},
{"hlsl.structbuffer.rwbyte2.comp", "main"},
{"hlsl.structin.vert", "main"},
{"hlsl.structIoFourWay.frag", "main"},
{"hlsl.structStructName.frag", "main"},

View File

@ -365,7 +365,6 @@ INSTANTIATE_TEST_SUITE_P(
"spv.int64.frag",
"spv.intcoopmat.comp",
"spv.intOps.vert",
"spv.intrinsicsSpecConst.vert",
"spv.intrinsicsSpirvByReference.vert",
"spv.intrinsicsSpirvDecorate.frag",
"spv.intrinsicsSpirvExecutionMode.frag",
@ -373,6 +372,7 @@ INSTANTIATE_TEST_SUITE_P(
"spv.intrinsicsSpirvLiteral.vert",
"spv.intrinsicsSpirvStorageClass.rchit",
"spv.intrinsicsSpirvType.rgen",
"spv.intrinsicsSpirvTypeLocalVar.vert",
"spv.invariantAll.vert",
"spv.layer.tese",
"spv.layoutNested.vert",

View File

@ -5,14 +5,14 @@
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Tools",
"subdir" : "External/spirv-tools",
"commit" : "339d4475c1a806c187c57678af26733575d1cecd"
"commit" : "4b092d2ab81854e61632bdd1e658907f0071c37e"
},
{
"name" : "spirv-tools/external/spirv-headers",
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Headers",
"subdir" : "External/spirv-tools/external/spirv-headers",
"commit" : "29817199b7069bac971e5365d180295d4b077ebe"
"commit" : "814e728b30ddd0f4509233099a3ad96fd4318c07"
}
]
}