mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-19 21:42:59 +01:00
Updated glslang.
This commit is contained in:
13
3rdparty/glslang/SPIRV/GLSL.ext.NV.h
vendored
13
3rdparty/glslang/SPIRV/GLSL.ext.NV.h
vendored
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Copyright (c) 2014-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
** of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -33,7 +33,7 @@ enum Op;
|
||||
enum Capability;
|
||||
|
||||
static const int GLSLextNVVersion = 100;
|
||||
static const int GLSLextNVRevision = 4;
|
||||
static const int GLSLextNVRevision = 5;
|
||||
|
||||
//SPV_NV_sample_mask_override_coverage
|
||||
const char* const E_SPV_NV_sample_mask_override_coverage = "SPV_NV_sample_mask_override_coverage";
|
||||
@@ -71,4 +71,13 @@ static const BuiltIn BuiltInSecondaryViewportMaskNV = static_cast<BuiltIn>(5258)
|
||||
|
||||
static const Capability CapabilityShaderStereoViewNV = static_cast<Capability>(5259);
|
||||
|
||||
|
||||
//SPV_NVX_multiview_per_view_attributes
|
||||
const char* const E_SPV_NVX_multiview_per_view_attributes = "SPV_NVX_multiview_per_view_attributes";
|
||||
|
||||
static const BuiltIn BuiltInPositionPerViewNV = static_cast<BuiltIn>(5260);
|
||||
static const BuiltIn BuiltInViewportMaskPerViewNV = static_cast<BuiltIn>(5261);
|
||||
|
||||
static const Capability CapabilityPerViewAttributesNV = static_cast<Capability>(5262);
|
||||
|
||||
#endif // #ifndef GLSLextNV_H
|
||||
24
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
24
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
@@ -642,6 +642,14 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
|
||||
builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
|
||||
builder.addCapability(spv::CapabilityShaderStereoViewNV);
|
||||
return spv::BuiltInSecondaryViewportMaskNV;
|
||||
case glslang::EbvPositionPerViewNV:
|
||||
builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes);
|
||||
builder.addCapability(spv::CapabilityPerViewAttributesNV);
|
||||
return spv::BuiltInPositionPerViewNV;
|
||||
case glslang::EbvViewportMaskPerViewNV:
|
||||
builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes);
|
||||
builder.addCapability(spv::CapabilityPerViewAttributesNV);
|
||||
return spv::BuiltInViewportMaskPerViewNV;
|
||||
#endif
|
||||
default: return spv::BuiltInMax;
|
||||
}
|
||||
@@ -2384,6 +2392,11 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
|
||||
builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
|
||||
}
|
||||
}
|
||||
if (glslangMember.getQualifier().layoutPassthrough) {
|
||||
addMemberDecoration(spvType, member, (spv::Decoration)spv::DecorationPassthroughNV);
|
||||
builder.addCapability(spv::CapabilityGeometryShaderPassthroughNV);
|
||||
builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -2661,6 +2674,8 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList&
|
||||
case glslang::EbvViewportMaskNV:
|
||||
case glslang::EbvSecondaryPositionNV:
|
||||
case glslang::EbvSecondaryViewportMaskNV:
|
||||
case glslang::EbvPositionPerViewNV:
|
||||
case glslang::EbvViewportMaskPerViewNV:
|
||||
#endif
|
||||
// Generate the associated capability. Delegate to TranslateBuiltInDecoration.
|
||||
// Alternately, we could just call this for any glslang built-in, since the
|
||||
@@ -5312,11 +5327,15 @@ void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName)
|
||||
}
|
||||
|
||||
// Write SPIR-V out to a text file with 32-bit hexadecimal words
|
||||
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName)
|
||||
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName)
|
||||
{
|
||||
std::ofstream out;
|
||||
out.open(baseName, std::ios::binary | std::ios::out);
|
||||
out << "\t// " GLSLANG_REVISION " " GLSLANG_DATE << std::endl;
|
||||
if (varName != nullptr) {
|
||||
out << "\t #pragma once" << std::endl;
|
||||
out << "const uint32_t " << varName << "[] = {" << std::endl;
|
||||
}
|
||||
const int WORDS_PER_LINE = 8;
|
||||
for (int i = 0; i < (int)spirv.size(); i += WORDS_PER_LINE) {
|
||||
out << "\t";
|
||||
@@ -5329,6 +5348,9 @@ void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName)
|
||||
}
|
||||
out << std::endl;
|
||||
}
|
||||
if (varName != nullptr) {
|
||||
out << "};";
|
||||
}
|
||||
out.close();
|
||||
}
|
||||
|
||||
|
||||
2
3rdparty/glslang/SPIRV/GlslangToSpv.h
vendored
2
3rdparty/glslang/SPIRV/GlslangToSpv.h
vendored
@@ -49,6 +49,6 @@ void GetSpirvVersion(std::string&);
|
||||
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv);
|
||||
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, spv::SpvBuildLogger* logger);
|
||||
void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
||||
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName);
|
||||
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
||||
|
||||
}
|
||||
|
||||
70
3rdparty/glslang/SPIRV/SpvBuilder.cpp
vendored
70
3rdparty/glslang/SPIRV/SpvBuilder.cpp
vendored
@@ -1832,34 +1832,72 @@ Id Builder::createConstructor(Decoration precision, const std::vector<Id>& sourc
|
||||
if (sources.size() == 1 && isScalar(sources[0]) && numTargetComponents > 1)
|
||||
return smearScalar(precision, sources[0], resultTypeId);
|
||||
|
||||
// accumulate the arguments for OpCompositeConstruct
|
||||
std::vector<Id> constituents;
|
||||
Id scalarTypeId = getScalarTypeId(resultTypeId);
|
||||
std::vector<Id> constituents; // accumulate the arguments for OpCompositeConstruct
|
||||
for (unsigned int i = 0; i < sources.size(); ++i) {
|
||||
assert(! isAggregate(sources[i]));
|
||||
unsigned int sourceSize = getNumComponents(sources[i]);
|
||||
|
||||
// lambda to store the result of visiting an argument component
|
||||
const auto latchResult = [&](Id comp) {
|
||||
if (numTargetComponents > 1)
|
||||
constituents.push_back(comp);
|
||||
else
|
||||
result = comp;
|
||||
++targetComponent;
|
||||
};
|
||||
|
||||
// lambda to visit a vector argument's components
|
||||
const auto accumulateVectorConstituents = [&](Id sourceArg) {
|
||||
unsigned int sourceSize = getNumComponents(sourceArg);
|
||||
unsigned int sourcesToUse = sourceSize;
|
||||
if (sourcesToUse + targetComponent > numTargetComponents)
|
||||
sourcesToUse = numTargetComponents - targetComponent;
|
||||
|
||||
for (unsigned int s = 0; s < sourcesToUse; ++s) {
|
||||
Id arg = sources[i];
|
||||
if (sourceSize > 1) {
|
||||
std::vector<unsigned> swiz;
|
||||
swiz.push_back(s);
|
||||
arg = createRvalueSwizzle(precision, scalarTypeId, arg, swiz);
|
||||
}
|
||||
|
||||
if (numTargetComponents > 1)
|
||||
constituents.push_back(arg);
|
||||
else
|
||||
result = arg;
|
||||
++targetComponent;
|
||||
std::vector<unsigned> swiz;
|
||||
swiz.push_back(s);
|
||||
latchResult(createRvalueSwizzle(precision, scalarTypeId, sourceArg, swiz));
|
||||
}
|
||||
};
|
||||
|
||||
// lambda to visit a matrix argument's components
|
||||
const auto accumulateMatrixConstituents = [&](Id sourceArg) {
|
||||
unsigned int sourceSize = getNumColumns(sourceArg) * getNumRows(sourceArg);
|
||||
unsigned int sourcesToUse = sourceSize;
|
||||
if (sourcesToUse + targetComponent > numTargetComponents)
|
||||
sourcesToUse = numTargetComponents - targetComponent;
|
||||
|
||||
int col = 0;
|
||||
int row = 0;
|
||||
for (unsigned int s = 0; s < sourcesToUse; ++s) {
|
||||
if (row >= getNumRows(sourceArg)) {
|
||||
row = 0;
|
||||
col++;
|
||||
}
|
||||
std::vector<Id> indexes;
|
||||
indexes.push_back(col);
|
||||
indexes.push_back(row);
|
||||
latchResult(createCompositeExtract(sourceArg, scalarTypeId, indexes));
|
||||
row++;
|
||||
}
|
||||
};
|
||||
|
||||
// Go through the source arguments, each one could have either
|
||||
// a single or multiple components to contribute.
|
||||
for (unsigned int i = 0; i < sources.size(); ++i) {
|
||||
if (isScalar(sources[i]))
|
||||
latchResult(sources[i]);
|
||||
else if (isVector(sources[i]))
|
||||
accumulateVectorConstituents(sources[i]);
|
||||
else if (isMatrix(sources[i]))
|
||||
accumulateMatrixConstituents(sources[i]);
|
||||
else
|
||||
assert(0);
|
||||
|
||||
if (targetComponent >= numTargetComponents)
|
||||
break;
|
||||
}
|
||||
|
||||
// If the result is a vector, make it from the gathered constituents.
|
||||
if (constituents.size() > 0)
|
||||
result = createCompositeConstruct(resultTypeId, constituents);
|
||||
|
||||
|
||||
9
3rdparty/glslang/SPIRV/disassemble.cpp
vendored
9
3rdparty/glslang/SPIRV/disassemble.cpp
vendored
@@ -483,7 +483,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
#ifdef NV_EXTENSIONS
|
||||
}else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NV_viewport_array2, name) == 0) {
|
||||
strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0) {
|
||||
extInstSet = GLSLextNVInst;
|
||||
#endif
|
||||
}
|
||||
@@ -659,7 +660,8 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
||||
if (strcmp(name, spv::E_SPV_NV_sample_mask_override_coverage) == 0 ||
|
||||
strcmp(name, spv::E_SPV_NV_geometry_shader_passthrough) == 0 ||
|
||||
strcmp(name, spv::E_ARB_shader_viewport_layer_array) == 0 ||
|
||||
strcmp(name, spv::E_SPV_NV_viewport_array2) == 0){
|
||||
strcmp(name, spv::E_SPV_NV_viewport_array2) == 0 ||
|
||||
strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0) {
|
||||
switch (entrypoint) {
|
||||
case DecorationOverrideCoverageNV: return "OverrideCoverageNV";
|
||||
case DecorationPassthroughNV: return "PassthroughNV";
|
||||
@@ -671,6 +673,9 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
||||
case BuiltInSecondaryPositionNV: return "SecondaryPositionNV";
|
||||
case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
|
||||
case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV";
|
||||
case BuiltInPositionPerViewNV: return "PositionPerViewNV";
|
||||
case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV";
|
||||
case CapabilityPerViewAttributesNV: return "PerViewAttributesNV";
|
||||
default: return "Bad";
|
||||
}
|
||||
}
|
||||
|
||||
6
3rdparty/glslang/SPIRV/doc.cpp
vendored
6
3rdparty/glslang/SPIRV/doc.cpp
vendored
@@ -344,6 +344,8 @@ const char* BuiltInString(int builtIn)
|
||||
case 5253: return "ViewportMaskNV";
|
||||
case 5257: return "SecondaryPositionNV";
|
||||
case 5258: return "SecondaryViewportMaskNV";
|
||||
case 5260: return "PositionPerViewNV";
|
||||
case 5261: return "ViewportMaskPerViewNV";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1169,8 +1171,8 @@ const char* OpcodeString(int op)
|
||||
|
||||
case 4421: return "OpSubgroupBallotKHR";
|
||||
case 4422: return "OpSubgroupFirstInvocationKHR";
|
||||
case 4428: return "OpSubgroupAnyKHR";
|
||||
case 4429: return "OpSubgroupAllKHR";
|
||||
case 4428: return "OpSubgroupAllKHR";
|
||||
case 4429: return "OpSubgroupAnyKHR";
|
||||
case 4430: return "OpSubgroupAllEqualKHR";
|
||||
case 4432: return "OpSubgroupReadInvocationKHR";
|
||||
|
||||
|
||||
18
3rdparty/glslang/StandAlone/StandAlone.cpp
vendored
18
3rdparty/glslang/StandAlone/StandAlone.cpp
vendored
@@ -163,6 +163,7 @@ const char* binaryFileName = nullptr;
|
||||
const char* entryPointName = nullptr;
|
||||
const char* sourceEntryPointName = nullptr;
|
||||
const char* shaderStageName = nullptr;
|
||||
const char* variableName = nullptr;
|
||||
|
||||
std::array<unsigned int, EShLangCount> baseSamplerBinding;
|
||||
std::array<unsigned int, EShLangCount> baseTextureBinding;
|
||||
@@ -302,7 +303,18 @@ void ProcessArguments(int argc, char* argv[])
|
||||
} else if (lowerword == "no-storage-format" || // synonyms
|
||||
lowerword == "nsf") {
|
||||
Options |= EOptionNoStorageFormat;
|
||||
} else if (lowerword == "source-entrypoint" || // synonyms
|
||||
} else if (lowerword == "variable-name" || // synonyms
|
||||
lowerword == "vn") {
|
||||
Options |= EOptionOutputHexadecimal;
|
||||
variableName = argv[1];
|
||||
if (argc > 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
} else
|
||||
Error("no <C-variable-name> provided for --variable-name");
|
||||
break;
|
||||
}
|
||||
else if (lowerword == "source-entrypoint" || // synonyms
|
||||
lowerword == "sep") {
|
||||
sourceEntryPointName = argv[1];
|
||||
if (argc > 0) {
|
||||
@@ -650,7 +662,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
if (! (Options & EOptionMemoryLeakMode)) {
|
||||
printf("%s", logger.getAllMessages().c_str());
|
||||
if (Options & EOptionOutputHexadecimal) {
|
||||
glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage));
|
||||
glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage), variableName);
|
||||
} else {
|
||||
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
|
||||
}
|
||||
@@ -987,6 +999,8 @@ void usage()
|
||||
"\n"
|
||||
" --keep-uncalled don't eliminate uncalled functions when linking\n"
|
||||
" --ku synonym for --keep-uncalled\n"
|
||||
" --variable-name <name> Creates a C header file that contains a uint32_t array named <name> initialized with the shader binary code.\n"
|
||||
" --vn <name> synonym for --variable-name <name>.\n"
|
||||
);
|
||||
|
||||
exit(EFailUsage);
|
||||
|
||||
@@ -16,7 +16,7 @@ ERROR: 0:47: 'local_size' : can only apply to 'in'
|
||||
ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer)
|
||||
ERROR: 0:66: 'buffer' : buffers can be declared only as blocks
|
||||
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:76: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:76: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic
|
||||
@@ -54,12 +54,12 @@ ERROR: 0:171: 'samplerCubeArray' : Reserved word.
|
||||
ERROR: 0:171: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:172: 'iimage2DRect' : Reserved word.
|
||||
ERROR: 0:172: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:172: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:172: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:173: 'image2DMS' : Reserved word.
|
||||
ERROR: 0:173: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:173: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:174: 'uimage2DMSArray' : Reserved word.
|
||||
ERROR: 0:174: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:174: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:174: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:181: 'rgba32f' : format requires readonly or writeonly memory qualifier
|
||||
ERROR: 0:182: 'rgba8i' : format requires readonly or writeonly memory qualifier
|
||||
ERROR: 0:183: 'rgba16ui' : format requires readonly or writeonly memory qualifier
|
||||
|
||||
10
3rdparty/glslang/Test/baseResults/310.frag.out
vendored
10
3rdparty/glslang/Test/baseResults/310.frag.out
vendored
@@ -19,13 +19,13 @@ ERROR: 0:44: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
|
||||
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||
ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:66: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:66: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:67: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:67: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:68: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:68: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:69: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:69: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type
|
||||
ERROR: 0:77: 'location' : location is too large
|
||||
ERROR: 0:81: 'location' : too large for fragment output
|
||||
@@ -36,7 +36,7 @@ ERROR: 0:83: 'layout-id value' : cannot be negative
|
||||
ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:110: 'out' : cannot be bool
|
||||
ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut
|
||||
ERROR: 0:111: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:111: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
|
||||
ERROR: 0:112: 'out' : cannot be a matrix
|
||||
ERROR: 0:114: 'in' : cannot be bool
|
||||
ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino
|
||||
|
||||
20
3rdparty/glslang/Test/baseResults/310.tesc.out
vendored
20
3rdparty/glslang/Test/baseResults/310.tesc.out
vendored
@@ -71,8 +71,8 @@ ERROR: node is still EOpNull!
|
||||
0:25 move second child to first child (temp highp 4-component vector of float)
|
||||
0:25 'p' (temp highp 4-component vector of float)
|
||||
0:25 gl_Position: direct index for structure (in highp 4-component vector of float Position)
|
||||
0:25 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:25 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:25 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:25 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
@@ -81,8 +81,8 @@ ERROR: node is still EOpNull!
|
||||
0:26 move second child to first child (temp highp float)
|
||||
0:26 'ps' (temp highp float)
|
||||
0:26 gl_PointSize: direct index for structure (in highp float PointSize)
|
||||
0:26 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:26 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:26 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:26 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
@@ -210,8 +210,8 @@ ERROR: node is still EOpNull!
|
||||
0:114 move second child to first child (temp highp float)
|
||||
0:114 'ps' (temp highp float)
|
||||
0:114 gl_PointSize: direct index for structure (in highp float PointSize)
|
||||
0:114 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:114 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:114 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:114 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:114 Constant:
|
||||
0:114 1 (const int)
|
||||
0:114 Constant:
|
||||
@@ -402,8 +402,8 @@ ERROR: node is still EOpNull!
|
||||
0:25 move second child to first child (temp highp 4-component vector of float)
|
||||
0:25 'p' (temp highp 4-component vector of float)
|
||||
0:25 gl_Position: direct index for structure (in highp 4-component vector of float Position)
|
||||
0:25 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:25 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:25 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:25 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
@@ -412,8 +412,8 @@ ERROR: node is still EOpNull!
|
||||
0:26 move second child to first child (temp highp float)
|
||||
0:26 'ps' (temp highp float)
|
||||
0:26 gl_PointSize: direct index for structure (in highp float PointSize)
|
||||
0:26 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:26 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:26 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:26 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
|
||||
16
3rdparty/glslang/Test/baseResults/310.tese.out
vendored
16
3rdparty/glslang/Test/baseResults/310.tese.out
vendored
@@ -78,8 +78,8 @@ ERROR: node is still EOpNull!
|
||||
0:36 move second child to first child (temp highp 4-component vector of float)
|
||||
0:36 'p' (temp highp 4-component vector of float)
|
||||
0:36 gl_Position: direct index for structure (in highp 4-component vector of float Position)
|
||||
0:36 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:36 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:36 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:36 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
@@ -88,8 +88,8 @@ ERROR: node is still EOpNull!
|
||||
0:37 move second child to first child (temp highp float)
|
||||
0:37 'ps' (temp highp float)
|
||||
0:37 gl_PointSize: direct index for structure (in highp float PointSize)
|
||||
0:37 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:37 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:37 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:37 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Constant:
|
||||
@@ -211,8 +211,8 @@ ERROR: node is still EOpNull!
|
||||
0:36 move second child to first child (temp highp 4-component vector of float)
|
||||
0:36 'p' (temp highp 4-component vector of float)
|
||||
0:36 gl_Position: direct index for structure (in highp 4-component vector of float Position)
|
||||
0:36 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:36 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:36 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:36 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
@@ -221,8 +221,8 @@ ERROR: node is still EOpNull!
|
||||
0:37 move second child to first child (temp highp float)
|
||||
0:37 'ps' (temp highp float)
|
||||
0:37 gl_PointSize: direct index for structure (in highp float PointSize)
|
||||
0:37 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:37 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV})
|
||||
0:37 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:37 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Constant:
|
||||
|
||||
@@ -33,7 +33,7 @@ ERROR: 0:85: '' : vertex input cannot be further qualified
|
||||
ERROR: 0:86: 'patch' : not supported in this stage: vertex
|
||||
ERROR: 0:100: '=' : global const initializers must be constant 'const int'
|
||||
ERROR: 0:101: '' : array size must be a constant integer expression
|
||||
ERROR: 0:107: '' : image variables not declared 'writeonly' must have a format layout qualifier
|
||||
ERROR: 0:107: 'image variables declared 'writeonly' without a format layout qualifier' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:114: 'imageAtomicMin' : only supported on image with format r32i or r32ui
|
||||
ERROR: 0:115: 'imageAtomicMax' : no matching overloaded function found
|
||||
ERROR: 0:119: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter
|
||||
|
||||
@@ -54,7 +54,7 @@ spv.140.frag
|
||||
MemberDecorate 87(bn) 3 Offset 576
|
||||
MemberDecorate 87(bn) 3 MatrixStride 16
|
||||
MemberDecorate 87(bn) 4 RowMajor
|
||||
MemberDecorate 87(bn) 4 Offset 640
|
||||
MemberDecorate 87(bn) 4 Offset 1024
|
||||
MemberDecorate 87(bn) 4 MatrixStride 16
|
||||
Decorate 87(bn) Block
|
||||
Decorate 89 DescriptorSet 0
|
||||
|
||||
@@ -61,7 +61,7 @@ Warning, version 310 is not yet complete; most version-specific features are pre
|
||||
MemberDecorate 45(T3) 2 ColMajor
|
||||
MemberDecorate 45(T3) 2 Offset 128
|
||||
MemberDecorate 45(T3) 2 MatrixStride 16
|
||||
MemberDecorate 45(T3) 3 Offset 160
|
||||
MemberDecorate 45(T3) 3 Offset 2048
|
||||
Decorate 45(T3) Block
|
||||
Decorate 47 DescriptorSet 0
|
||||
MemberDecorate 78(T2) 0 Offset 0
|
||||
|
||||
352
3rdparty/glslang/Test/baseResults/spv.image.load-formatted.frag.out
vendored
Normal file
352
3rdparty/glslang/Test/baseResults/spv.image.load-formatted.frag.out
vendored
Normal file
@@ -0,0 +1,352 @@
|
||||
spv.image.load-formatted.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 240
|
||||
|
||||
Capability Shader
|
||||
Capability SampledRect
|
||||
Capability Sampled1D
|
||||
Capability SampledCubeArray
|
||||
Capability SampledBuffer
|
||||
Capability ImageMSArray
|
||||
Capability ImageQuery
|
||||
Capability StorageImageReadWithoutFormat
|
||||
Capability StorageImageWriteWithoutFormat
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 132 142 152 233 237 239
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_image_load_formatted"
|
||||
Name 4 "main"
|
||||
Name 9 "iv"
|
||||
Name 15 "i1D"
|
||||
Name 27 "i2D"
|
||||
Name 38 "i3D"
|
||||
Name 45 "iCube"
|
||||
Name 55 "iCubeArray"
|
||||
Name 62 "i2DRect"
|
||||
Name 72 "i1DArray"
|
||||
Name 82 "i2DArray"
|
||||
Name 89 "iBuffer"
|
||||
Name 98 "i2DMS"
|
||||
Name 108 "i2DMSArray"
|
||||
Name 127 "v"
|
||||
Name 132 "ic1D"
|
||||
Name 142 "ic2D"
|
||||
Name 152 "ic3D"
|
||||
Name 228 "wo2D"
|
||||
Name 233 "fragData"
|
||||
Name 237 "ic4D"
|
||||
Name 239 "value"
|
||||
Decorate 15(i1D) DescriptorSet 0
|
||||
Decorate 15(i1D) Binding 0
|
||||
Decorate 27(i2D) DescriptorSet 0
|
||||
Decorate 27(i2D) Binding 1
|
||||
Decorate 38(i3D) DescriptorSet 0
|
||||
Decorate 38(i3D) Binding 2
|
||||
Decorate 45(iCube) DescriptorSet 0
|
||||
Decorate 45(iCube) Binding 3
|
||||
Decorate 55(iCubeArray) DescriptorSet 0
|
||||
Decorate 55(iCubeArray) Binding 4
|
||||
Decorate 62(i2DRect) DescriptorSet 0
|
||||
Decorate 62(i2DRect) Binding 5
|
||||
Decorate 72(i1DArray) DescriptorSet 0
|
||||
Decorate 72(i1DArray) Binding 6
|
||||
Decorate 82(i2DArray) DescriptorSet 0
|
||||
Decorate 82(i2DArray) Binding 7
|
||||
Decorate 89(iBuffer) DescriptorSet 0
|
||||
Decorate 89(iBuffer) Binding 8
|
||||
Decorate 98(i2DMS) DescriptorSet 0
|
||||
Decorate 98(i2DMS) Binding 9
|
||||
Decorate 108(i2DMSArray) DescriptorSet 0
|
||||
Decorate 108(i2DMSArray) Binding 10
|
||||
Decorate 132(ic1D) Flat
|
||||
Decorate 142(ic2D) Flat
|
||||
Decorate 152(ic3D) Flat
|
||||
Decorate 228(wo2D) DescriptorSet 0
|
||||
Decorate 228(wo2D) Binding 1
|
||||
Decorate 228(wo2D) NonReadable
|
||||
Decorate 237(ic4D) Flat
|
||||
Decorate 239(value) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypeVector 6(int) 3
|
||||
8: TypePointer Function 7(ivec3)
|
||||
10: 6(int) Constant 0
|
||||
11: 7(ivec3) ConstantComposite 10 10 10
|
||||
12: TypeFloat 32
|
||||
13: TypeImage 12(float) 1D nonsampled format:Unknown
|
||||
14: TypePointer UniformConstant 13
|
||||
15(i1D): 14(ptr) Variable UniformConstant
|
||||
18: TypeInt 32 0
|
||||
19: 18(int) Constant 0
|
||||
20: TypePointer Function 6(int)
|
||||
25: TypeImage 12(float) 2D nonsampled format:Unknown
|
||||
26: TypePointer UniformConstant 25
|
||||
27(i2D): 26(ptr) Variable UniformConstant
|
||||
29: TypeVector 6(int) 2
|
||||
36: TypeImage 12(float) 3D nonsampled format:Unknown
|
||||
37: TypePointer UniformConstant 36
|
||||
38(i3D): 37(ptr) Variable UniformConstant
|
||||
43: TypeImage 12(float) Cube nonsampled format:Unknown
|
||||
44: TypePointer UniformConstant 43
|
||||
45(iCube): 44(ptr) Variable UniformConstant
|
||||
53: TypeImage 12(float) Cube array nonsampled format:Unknown
|
||||
54: TypePointer UniformConstant 53
|
||||
55(iCubeArray): 54(ptr) Variable UniformConstant
|
||||
60: TypeImage 12(float) Rect nonsampled format:Unknown
|
||||
61: TypePointer UniformConstant 60
|
||||
62(i2DRect): 61(ptr) Variable UniformConstant
|
||||
70: TypeImage 12(float) 1D array nonsampled format:Unknown
|
||||
71: TypePointer UniformConstant 70
|
||||
72(i1DArray): 71(ptr) Variable UniformConstant
|
||||
80: TypeImage 12(float) 2D array nonsampled format:Unknown
|
||||
81: TypePointer UniformConstant 80
|
||||
82(i2DArray): 81(ptr) Variable UniformConstant
|
||||
87: TypeImage 12(float) Buffer nonsampled format:Unknown
|
||||
88: TypePointer UniformConstant 87
|
||||
89(iBuffer): 88(ptr) Variable UniformConstant
|
||||
96: TypeImage 12(float) 2D multi-sampled nonsampled format:Unknown
|
||||
97: TypePointer UniformConstant 96
|
||||
98(i2DMS): 97(ptr) Variable UniformConstant
|
||||
106: TypeImage 12(float) 2D array multi-sampled nonsampled format:Unknown
|
||||
107: TypePointer UniformConstant 106
|
||||
108(i2DMSArray): 107(ptr) Variable UniformConstant
|
||||
125: TypeVector 12(float) 4
|
||||
126: TypePointer Function 125(fvec4)
|
||||
128: 12(float) Constant 0
|
||||
129: 125(fvec4) ConstantComposite 128 128 128 128
|
||||
131: TypePointer Input 6(int)
|
||||
132(ic1D): 131(ptr) Variable Input
|
||||
141: TypePointer Input 29(ivec2)
|
||||
142(ic2D): 141(ptr) Variable Input
|
||||
151: TypePointer Input 7(ivec3)
|
||||
152(ic3D): 151(ptr) Variable Input
|
||||
210: 6(int) Constant 1
|
||||
216: 6(int) Constant 2
|
||||
220: 6(int) Constant 3
|
||||
226: 6(int) Constant 4
|
||||
228(wo2D): 26(ptr) Variable UniformConstant
|
||||
232: TypePointer Output 125(fvec4)
|
||||
233(fragData): 232(ptr) Variable Output
|
||||
235: TypeVector 6(int) 4
|
||||
236: TypePointer Input 235(ivec4)
|
||||
237(ic4D): 236(ptr) Variable Input
|
||||
238: TypePointer Input 18(int)
|
||||
239(value): 238(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(iv): 8(ptr) Variable Function
|
||||
127(v): 126(ptr) Variable Function
|
||||
Store 9(iv) 11
|
||||
16: 13 Load 15(i1D)
|
||||
17: 6(int) ImageQuerySize 16
|
||||
21: 20(ptr) AccessChain 9(iv) 19
|
||||
22: 6(int) Load 21
|
||||
23: 6(int) IAdd 22 17
|
||||
24: 20(ptr) AccessChain 9(iv) 19
|
||||
Store 24 23
|
||||
28: 25 Load 27(i2D)
|
||||
30: 29(ivec2) ImageQuerySize 28
|
||||
31: 7(ivec3) Load 9(iv)
|
||||
32: 29(ivec2) VectorShuffle 31 31 0 1
|
||||
33: 29(ivec2) IAdd 32 30
|
||||
34: 7(ivec3) Load 9(iv)
|
||||
35: 7(ivec3) VectorShuffle 34 33 3 4 2
|
||||
Store 9(iv) 35
|
||||
39: 36 Load 38(i3D)
|
||||
40: 7(ivec3) ImageQuerySize 39
|
||||
41: 7(ivec3) Load 9(iv)
|
||||
42: 7(ivec3) IAdd 41 40
|
||||
Store 9(iv) 42
|
||||
46: 43 Load 45(iCube)
|
||||
47: 29(ivec2) ImageQuerySize 46
|
||||
48: 7(ivec3) Load 9(iv)
|
||||
49: 29(ivec2) VectorShuffle 48 48 0 1
|
||||
50: 29(ivec2) IAdd 49 47
|
||||
51: 7(ivec3) Load 9(iv)
|
||||
52: 7(ivec3) VectorShuffle 51 50 3 4 2
|
||||
Store 9(iv) 52
|
||||
56: 53 Load 55(iCubeArray)
|
||||
57: 7(ivec3) ImageQuerySize 56
|
||||
58: 7(ivec3) Load 9(iv)
|
||||
59: 7(ivec3) IAdd 58 57
|
||||
Store 9(iv) 59
|
||||
63: 60 Load 62(i2DRect)
|
||||
64: 29(ivec2) ImageQuerySize 63
|
||||
65: 7(ivec3) Load 9(iv)
|
||||
66: 29(ivec2) VectorShuffle 65 65 0 1
|
||||
67: 29(ivec2) IAdd 66 64
|
||||
68: 7(ivec3) Load 9(iv)
|
||||
69: 7(ivec3) VectorShuffle 68 67 3 4 2
|
||||
Store 9(iv) 69
|
||||
73: 70 Load 72(i1DArray)
|
||||
74: 29(ivec2) ImageQuerySize 73
|
||||
75: 7(ivec3) Load 9(iv)
|
||||
76: 29(ivec2) VectorShuffle 75 75 0 1
|
||||
77: 29(ivec2) IAdd 76 74
|
||||
78: 7(ivec3) Load 9(iv)
|
||||
79: 7(ivec3) VectorShuffle 78 77 3 4 2
|
||||
Store 9(iv) 79
|
||||
83: 80 Load 82(i2DArray)
|
||||
84: 7(ivec3) ImageQuerySize 83
|
||||
85: 7(ivec3) Load 9(iv)
|
||||
86: 7(ivec3) IAdd 85 84
|
||||
Store 9(iv) 86
|
||||
90: 87 Load 89(iBuffer)
|
||||
91: 6(int) ImageQuerySize 90
|
||||
92: 20(ptr) AccessChain 9(iv) 19
|
||||
93: 6(int) Load 92
|
||||
94: 6(int) IAdd 93 91
|
||||
95: 20(ptr) AccessChain 9(iv) 19
|
||||
Store 95 94
|
||||
99: 96 Load 98(i2DMS)
|
||||
100: 29(ivec2) ImageQuerySize 99
|
||||
101: 7(ivec3) Load 9(iv)
|
||||
102: 29(ivec2) VectorShuffle 101 101 0 1
|
||||
103: 29(ivec2) IAdd 102 100
|
||||
104: 7(ivec3) Load 9(iv)
|
||||
105: 7(ivec3) VectorShuffle 104 103 3 4 2
|
||||
Store 9(iv) 105
|
||||
109: 106 Load 108(i2DMSArray)
|
||||
110: 7(ivec3) ImageQuerySize 109
|
||||
111: 7(ivec3) Load 9(iv)
|
||||
112: 7(ivec3) IAdd 111 110
|
||||
Store 9(iv) 112
|
||||
113: 96 Load 98(i2DMS)
|
||||
114: 6(int) ImageQuerySamples 113
|
||||
115: 20(ptr) AccessChain 9(iv) 19
|
||||
116: 6(int) Load 115
|
||||
117: 6(int) IAdd 116 114
|
||||
118: 20(ptr) AccessChain 9(iv) 19
|
||||
Store 118 117
|
||||
119: 106 Load 108(i2DMSArray)
|
||||
120: 6(int) ImageQuerySamples 119
|
||||
121: 20(ptr) AccessChain 9(iv) 19
|
||||
122: 6(int) Load 121
|
||||
123: 6(int) IAdd 122 120
|
||||
124: 20(ptr) AccessChain 9(iv) 19
|
||||
Store 124 123
|
||||
Store 127(v) 129
|
||||
130: 13 Load 15(i1D)
|
||||
133: 6(int) Load 132(ic1D)
|
||||
134: 125(fvec4) ImageRead 130 133
|
||||
135: 125(fvec4) Load 127(v)
|
||||
136: 125(fvec4) FAdd 135 134
|
||||
Store 127(v) 136
|
||||
137: 13 Load 15(i1D)
|
||||
138: 6(int) Load 132(ic1D)
|
||||
139: 125(fvec4) Load 127(v)
|
||||
ImageWrite 137 138 139
|
||||
140: 25 Load 27(i2D)
|
||||
143: 29(ivec2) Load 142(ic2D)
|
||||
144: 125(fvec4) ImageRead 140 143
|
||||
145: 125(fvec4) Load 127(v)
|
||||
146: 125(fvec4) FAdd 145 144
|
||||
Store 127(v) 146
|
||||
147: 25 Load 27(i2D)
|
||||
148: 29(ivec2) Load 142(ic2D)
|
||||
149: 125(fvec4) Load 127(v)
|
||||
ImageWrite 147 148 149
|
||||
150: 36 Load 38(i3D)
|
||||
153: 7(ivec3) Load 152(ic3D)
|
||||
154: 125(fvec4) ImageRead 150 153
|
||||
155: 125(fvec4) Load 127(v)
|
||||
156: 125(fvec4) FAdd 155 154
|
||||
Store 127(v) 156
|
||||
157: 36 Load 38(i3D)
|
||||
158: 7(ivec3) Load 152(ic3D)
|
||||
159: 125(fvec4) Load 127(v)
|
||||
ImageWrite 157 158 159
|
||||
160: 43 Load 45(iCube)
|
||||
161: 7(ivec3) Load 152(ic3D)
|
||||
162: 125(fvec4) ImageRead 160 161
|
||||
163: 125(fvec4) Load 127(v)
|
||||
164: 125(fvec4) FAdd 163 162
|
||||
Store 127(v) 164
|
||||
165: 43 Load 45(iCube)
|
||||
166: 7(ivec3) Load 152(ic3D)
|
||||
167: 125(fvec4) Load 127(v)
|
||||
ImageWrite 165 166 167
|
||||
168: 53 Load 55(iCubeArray)
|
||||
169: 7(ivec3) Load 152(ic3D)
|
||||
170: 125(fvec4) ImageRead 168 169
|
||||
171: 125(fvec4) Load 127(v)
|
||||
172: 125(fvec4) FAdd 171 170
|
||||
Store 127(v) 172
|
||||
173: 53 Load 55(iCubeArray)
|
||||
174: 7(ivec3) Load 152(ic3D)
|
||||
175: 125(fvec4) Load 127(v)
|
||||
ImageWrite 173 174 175
|
||||
176: 60 Load 62(i2DRect)
|
||||
177: 29(ivec2) Load 142(ic2D)
|
||||
178: 125(fvec4) ImageRead 176 177
|
||||
179: 125(fvec4) Load 127(v)
|
||||
180: 125(fvec4) FAdd 179 178
|
||||
Store 127(v) 180
|
||||
181: 60 Load 62(i2DRect)
|
||||
182: 29(ivec2) Load 142(ic2D)
|
||||
183: 125(fvec4) Load 127(v)
|
||||
ImageWrite 181 182 183
|
||||
184: 70 Load 72(i1DArray)
|
||||
185: 29(ivec2) Load 142(ic2D)
|
||||
186: 125(fvec4) ImageRead 184 185
|
||||
187: 125(fvec4) Load 127(v)
|
||||
188: 125(fvec4) FAdd 187 186
|
||||
Store 127(v) 188
|
||||
189: 70 Load 72(i1DArray)
|
||||
190: 29(ivec2) Load 142(ic2D)
|
||||
191: 125(fvec4) Load 127(v)
|
||||
ImageWrite 189 190 191
|
||||
192: 80 Load 82(i2DArray)
|
||||
193: 7(ivec3) Load 152(ic3D)
|
||||
194: 125(fvec4) ImageRead 192 193
|
||||
195: 125(fvec4) Load 127(v)
|
||||
196: 125(fvec4) FAdd 195 194
|
||||
Store 127(v) 196
|
||||
197: 80 Load 82(i2DArray)
|
||||
198: 7(ivec3) Load 152(ic3D)
|
||||
199: 125(fvec4) Load 127(v)
|
||||
ImageWrite 197 198 199
|
||||
200: 87 Load 89(iBuffer)
|
||||
201: 6(int) Load 132(ic1D)
|
||||
202: 125(fvec4) ImageRead 200 201
|
||||
203: 125(fvec4) Load 127(v)
|
||||
204: 125(fvec4) FAdd 203 202
|
||||
Store 127(v) 204
|
||||
205: 87 Load 89(iBuffer)
|
||||
206: 6(int) Load 132(ic1D)
|
||||
207: 125(fvec4) Load 127(v)
|
||||
ImageWrite 205 206 207
|
||||
208: 96 Load 98(i2DMS)
|
||||
209: 29(ivec2) Load 142(ic2D)
|
||||
211: 125(fvec4) ImageRead 208 209 Sample 210
|
||||
212: 125(fvec4) Load 127(v)
|
||||
213: 125(fvec4) FAdd 212 211
|
||||
Store 127(v) 213
|
||||
214: 96 Load 98(i2DMS)
|
||||
215: 29(ivec2) Load 142(ic2D)
|
||||
217: 125(fvec4) Load 127(v)
|
||||
ImageWrite 214 215 217 Sample 216
|
||||
218: 106 Load 108(i2DMSArray)
|
||||
219: 7(ivec3) Load 152(ic3D)
|
||||
221: 125(fvec4) ImageRead 218 219 Sample 220
|
||||
222: 125(fvec4) Load 127(v)
|
||||
223: 125(fvec4) FAdd 222 221
|
||||
Store 127(v) 223
|
||||
224: 106 Load 108(i2DMSArray)
|
||||
225: 7(ivec3) Load 152(ic3D)
|
||||
227: 125(fvec4) Load 127(v)
|
||||
ImageWrite 224 225 227 Sample 226
|
||||
229: 25 Load 228(wo2D)
|
||||
230: 29(ivec2) Load 142(ic2D)
|
||||
231: 125(fvec4) Load 127(v)
|
||||
ImageWrite 229 230 231
|
||||
234: 125(fvec4) Load 127(v)
|
||||
Store 233(fragData) 234
|
||||
Return
|
||||
FunctionEnd
|
||||
@@ -3,7 +3,7 @@ Warning, version 420 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 261
|
||||
// Id's are bound by 286
|
||||
|
||||
Capability Shader
|
||||
Capability Float64
|
||||
@@ -55,6 +55,9 @@ Warning, version 420 is not yet complete; most version-specific features are pre
|
||||
186: TypePointer Output 7(fvec4)
|
||||
187(color): 186(ptr) Variable Output
|
||||
208: 6(float) Constant 0
|
||||
270: TypeVector 6(float) 2
|
||||
271: TypeMatrix 270(fvec2) 2
|
||||
279: 6(float) Constant 1088841318
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
10(sum34): 9(ptr) Variable Function
|
||||
@@ -305,5 +308,29 @@ Warning, version 420 is not yet complete; most version-specific features are pre
|
||||
259: 7(fvec4) Load 187(color)
|
||||
260: 7(fvec4) FAdd 259 258
|
||||
Store 187(color) 260
|
||||
261: 172 Load 174(m43)
|
||||
262: 6(float) CompositeExtract 261 0 0
|
||||
263: 6(float) CompositeExtract 261 0 1
|
||||
264: 6(float) CompositeExtract 261 0 2
|
||||
265: 6(float) CompositeExtract 261 1 0
|
||||
266: 7(fvec4) CompositeConstruct 262 263 264 265
|
||||
267: 7(fvec4) Load 187(color)
|
||||
268: 7(fvec4) FAdd 267 266
|
||||
Store 187(color) 268
|
||||
269: 6(float) Load 28(f)
|
||||
272: 270(fvec2) CompositeConstruct 269 208
|
||||
273: 270(fvec2) CompositeConstruct 208 269
|
||||
274: 271 CompositeConstruct 272 273
|
||||
275: 6(float) CompositeExtract 274 0 0
|
||||
276: 6(float) CompositeExtract 274 0 1
|
||||
277: 6(float) CompositeExtract 274 1 0
|
||||
278: 157(fvec3) CompositeConstruct 275 276 277
|
||||
280: 6(float) CompositeExtract 278 0
|
||||
281: 6(float) CompositeExtract 278 1
|
||||
282: 6(float) CompositeExtract 278 2
|
||||
283: 7(fvec4) CompositeConstruct 280 281 282 279
|
||||
284: 7(fvec4) Load 187(color)
|
||||
285: 7(fvec4) FAdd 284 283
|
||||
Store 187(color) 285
|
||||
Return
|
||||
FunctionEnd
|
||||
|
||||
78
3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
vendored
Normal file
78
3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
spv.multiviewPerViewAttributes.tesc
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 37
|
||||
|
||||
Capability Tessellation
|
||||
Capability Bad
|
||||
Extension "SPV_NVX_multiview_per_view_attributes"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 17 19 31
|
||||
ExecutionMode 4 OutputVertices 4
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_NVX_multiview_per_view_attributes"
|
||||
Name 4 "main"
|
||||
Name 13 "gl_PerVertex"
|
||||
MemberName 13(gl_PerVertex) 0 "gl_PositionPerViewNV"
|
||||
MemberName 13(gl_PerVertex) 1 "gl_ViewportMaskPerViewNV"
|
||||
Name 17 "gl_out"
|
||||
Name 19 "gl_InvocationID"
|
||||
Name 27 "gl_PerVertex"
|
||||
MemberName 27(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 27(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
|
||||
MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
||||
MemberName 27(gl_PerVertex) 5 "gl_PositionPerViewNV"
|
||||
Name 31 "gl_in"
|
||||
MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV
|
||||
MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV
|
||||
Decorate 13(gl_PerVertex) Block
|
||||
Decorate 19(gl_InvocationID) BuiltIn InvocationId
|
||||
MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
|
||||
Decorate 27(gl_PerVertex) Block
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeInt 32 0
|
||||
9: 8(int) Constant 1
|
||||
10: TypeArray 7(fvec4) 9
|
||||
11: TypeInt 32 1
|
||||
12: TypeArray 11(int) 9
|
||||
13(gl_PerVertex): TypeStruct 10 12
|
||||
14: 8(int) Constant 4
|
||||
15: TypeArray 13(gl_PerVertex) 14
|
||||
16: TypePointer Output 15
|
||||
17(gl_out): 16(ptr) Variable Output
|
||||
18: TypePointer Input 11(int)
|
||||
19(gl_InvocationID): 18(ptr) Variable Input
|
||||
21: 11(int) Constant 1
|
||||
22: 11(int) Constant 0
|
||||
23: TypePointer Output 11(int)
|
||||
26: TypeArray 6(float) 9
|
||||
27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4) 10
|
||||
28: 8(int) Constant 32
|
||||
29: TypeArray 27(gl_PerVertex) 28
|
||||
30: TypePointer Input 29
|
||||
31(gl_in): 30(ptr) Variable Input
|
||||
32: TypePointer Input 7(fvec4)
|
||||
35: TypePointer Output 7(fvec4)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
20: 11(int) Load 19(gl_InvocationID)
|
||||
24: 23(ptr) AccessChain 17(gl_out) 20 21 22
|
||||
Store 24 21
|
||||
25: 11(int) Load 19(gl_InvocationID)
|
||||
33: 32(ptr) AccessChain 31(gl_in) 21 22
|
||||
34: 7(fvec4) Load 33
|
||||
36: 35(ptr) AccessChain 17(gl_out) 25 22 22
|
||||
Store 36 34
|
||||
Return
|
||||
FunctionEnd
|
||||
62
3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
vendored
Normal file
62
3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
spv.multiviewPerViewAttributes.vert
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 29
|
||||
|
||||
Capability Shader
|
||||
Capability Bad
|
||||
Extension "SPV_NVX_multiview_per_view_attributes"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main" 11 20 24
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_NVX_multiview_per_view_attributes"
|
||||
Name 4 "main"
|
||||
Name 11 "gl_ViewportMaskPerViewNV"
|
||||
Name 20 "gl_PositionPerViewNV"
|
||||
Name 22 "gl_PerVertex"
|
||||
MemberName 22(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 22(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 22(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
MemberName 22(gl_PerVertex) 3 "gl_CullDistance"
|
||||
Name 24 ""
|
||||
Decorate 11(gl_ViewportMaskPerViewNV) BuiltIn ViewportMaskPerViewNV
|
||||
Decorate 20(gl_PositionPerViewNV) BuiltIn PositionPerViewNV
|
||||
MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance
|
||||
Decorate 22(gl_PerVertex) Block
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypeInt 32 0
|
||||
8: 7(int) Constant 1
|
||||
9: TypeArray 6(int) 8
|
||||
10: TypePointer Output 9
|
||||
11(gl_ViewportMaskPerViewNV): 10(ptr) Variable Output
|
||||
12: 6(int) Constant 0
|
||||
13: 6(int) Constant 1
|
||||
14: TypePointer Output 6(int)
|
||||
16: TypeFloat 32
|
||||
17: TypeVector 16(float) 4
|
||||
18: TypeArray 17(fvec4) 8
|
||||
19: TypePointer Output 18
|
||||
20(gl_PositionPerViewNV): 19(ptr) Variable Output
|
||||
21: TypeArray 16(float) 8
|
||||
22(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 21 21
|
||||
23: TypePointer Output 22(gl_PerVertex)
|
||||
24: 23(ptr) Variable Output
|
||||
25: TypePointer Output 17(fvec4)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
15: 14(ptr) AccessChain 11(gl_ViewportMaskPerViewNV) 12
|
||||
Store 15 13
|
||||
26: 25(ptr) AccessChain 24 12
|
||||
27: 17(fvec4) Load 26
|
||||
28: 25(ptr) AccessChain 20(gl_PositionPerViewNV) 12
|
||||
Store 28 27
|
||||
Return
|
||||
FunctionEnd
|
||||
@@ -48,10 +48,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
19: 6(bool) INotEqual 17 18
|
||||
Store 8(b1) 19
|
||||
20: 6(bool) Load 8(b1)
|
||||
21: 6(bool) SubgroupAllKHR 20
|
||||
21: 6(bool) SubgroupAnyKHR 20
|
||||
Store 8(b1) 21
|
||||
22: 6(bool) Load 8(b1)
|
||||
23: 6(bool) SubgroupAnyKHR 22
|
||||
23: 6(bool) SubgroupAllKHR 22
|
||||
Store 8(b1) 23
|
||||
24: 6(bool) Load 8(b1)
|
||||
25: 6(bool) SubgroupAllEqualKHR 24
|
||||
|
||||
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 38
|
||||
// Id's are bound by 39
|
||||
|
||||
Capability Geometry
|
||||
Capability Tessellation
|
||||
@@ -13,7 +13,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
Extension "SPV_NV_viewport_array2"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 16 18 32
|
||||
EntryPoint TessellationControl 4 "main" 16 18 33
|
||||
ExecutionMode 4 OutputVertices 4
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_NV_stereo_view_rendering"
|
||||
@@ -25,13 +25,14 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
MemberName 12(gl_PerVertex) 2 "gl_SecondaryViewportMaskNV"
|
||||
Name 16 "gl_out"
|
||||
Name 18 "gl_InvocationID"
|
||||
Name 28 "gl_PerVertex"
|
||||
MemberName 28(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 28(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 28(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
MemberName 28(gl_PerVertex) 3 "gl_CullDistance"
|
||||
MemberName 28(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
||||
Name 32 "gl_in"
|
||||
Name 29 "gl_PerVertex"
|
||||
MemberName 29(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 29(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 29(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
MemberName 29(gl_PerVertex) 3 "gl_CullDistance"
|
||||
MemberName 29(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
||||
MemberName 29(gl_PerVertex) 5 "gl_PositionPerViewNV"
|
||||
Name 33 "gl_in"
|
||||
MemberDecorate 12(gl_PerVertex) 0 BuiltIn Layer
|
||||
MemberDecorate 12(gl_PerVertex) 0 ViewportRelativeNV
|
||||
MemberDecorate 12(gl_PerVertex) 0 SecondaryViewportRelativeNV 1
|
||||
@@ -39,11 +40,11 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
MemberDecorate 12(gl_PerVertex) 2 BuiltIn SecondaryViewportMaskNV
|
||||
Decorate 12(gl_PerVertex) Block
|
||||
Decorate 18(gl_InvocationID) BuiltIn InvocationId
|
||||
MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 28(gl_PerVertex) 3 BuiltIn CullDistance
|
||||
Decorate 28(gl_PerVertex) Block
|
||||
MemberDecorate 29(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 29(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 29(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 29(gl_PerVertex) 3 BuiltIn CullDistance
|
||||
Decorate 29(gl_PerVertex) Block
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
@@ -65,22 +66,23 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
23: TypePointer Output 6(int)
|
||||
26: 9(int) Constant 1
|
||||
27: TypeArray 7(float) 26
|
||||
28(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 27 27 8(fvec4)
|
||||
29: 9(int) Constant 32
|
||||
30: TypeArray 28(gl_PerVertex) 29
|
||||
31: TypePointer Input 30
|
||||
32(gl_in): 31(ptr) Variable Input
|
||||
33: TypePointer Input 8(fvec4)
|
||||
36: TypePointer Output 8(fvec4)
|
||||
28: TypeArray 8(fvec4) 26
|
||||
29(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 27 27 8(fvec4) 28
|
||||
30: 9(int) Constant 32
|
||||
31: TypeArray 29(gl_PerVertex) 30
|
||||
32: TypePointer Input 31
|
||||
33(gl_in): 32(ptr) Variable Input
|
||||
34: TypePointer Input 8(fvec4)
|
||||
37: TypePointer Output 8(fvec4)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
19: 6(int) Load 18(gl_InvocationID)
|
||||
24: 23(ptr) AccessChain 16(gl_out) 19 20 21
|
||||
Store 24 22
|
||||
25: 6(int) Load 18(gl_InvocationID)
|
||||
34: 33(ptr) AccessChain 32(gl_in) 22 21
|
||||
35: 8(fvec4) Load 34
|
||||
37: 36(ptr) AccessChain 16(gl_out) 25 22
|
||||
Store 37 35
|
||||
35: 34(ptr) AccessChain 33(gl_in) 22 21
|
||||
36: 8(fvec4) Load 35
|
||||
38: 37(ptr) AccessChain 16(gl_out) 25 22
|
||||
Store 38 36
|
||||
Return
|
||||
FunctionEnd
|
||||
|
||||
2
3rdparty/glslang/Test/spv.140.frag
vendored
2
3rdparty/glslang/Test/spv.140.frag
vendored
@@ -14,7 +14,7 @@ layout(std140) uniform bn {
|
||||
layout(column_major) mat4 matca[4];
|
||||
layout(row_major) mat4 matr;
|
||||
layout(column_major) mat4 matc;
|
||||
mat4 matrdef;
|
||||
layout(align=512, offset=1024) mat4 matrdef;
|
||||
};
|
||||
|
||||
uniform sampler2DRect sampR;
|
||||
|
||||
2
3rdparty/glslang/Test/spv.300layout.vert
vendored
2
3rdparty/glslang/Test/spv.300layout.vert
vendored
@@ -25,7 +25,7 @@ layout(column_major) uniform T3 { // shared and column_major
|
||||
mat4 M3; // column_major
|
||||
layout(row_major) mat4 M4; // row major
|
||||
mat2x3 N2; // column_major
|
||||
uvec3 uv3a[4];
|
||||
layout(align=16, offset=2048) uvec3 uv3a[4];
|
||||
};
|
||||
|
||||
in uint uiuin;
|
||||
|
||||
74
3rdparty/glslang/Test/spv.image.load-formatted.frag
vendored
Normal file
74
3rdparty/glslang/Test/spv.image.load-formatted.frag
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_EXT_shader_image_load_formatted : require
|
||||
|
||||
layout(binding = 0) uniform image1D i1D;
|
||||
layout(binding = 1) uniform image2D i2D;
|
||||
layout(binding = 2) uniform image3D i3D;
|
||||
layout(binding = 3) uniform imageCube iCube;
|
||||
layout(binding = 4) uniform imageCubeArray iCubeArray;
|
||||
layout(binding = 5) uniform image2DRect i2DRect;
|
||||
layout(binding = 6) uniform image1DArray i1DArray;
|
||||
layout(binding = 7) uniform image2DArray i2DArray;
|
||||
layout(binding = 8) uniform imageBuffer iBuffer;
|
||||
layout(binding = 9) uniform image2DMS i2DMS;
|
||||
layout(binding = 10) uniform image2DMSArray i2DMSArray;
|
||||
|
||||
flat in int ic1D;
|
||||
flat in ivec2 ic2D;
|
||||
flat in ivec3 ic3D;
|
||||
flat in ivec4 ic4D;
|
||||
|
||||
writeonly layout(binding = 1) uniform image2D wo2D;
|
||||
|
||||
flat in uint value;
|
||||
|
||||
out vec4 fragData;
|
||||
|
||||
void main()
|
||||
{
|
||||
ivec3 iv = ivec3(0);
|
||||
iv.x += imageSize(i1D);
|
||||
iv.xy += imageSize(i2D);
|
||||
iv.xyz += imageSize(i3D);
|
||||
iv.xy += imageSize(iCube);
|
||||
iv.xyz += imageSize(iCubeArray);
|
||||
iv.xy += imageSize(i2DRect);
|
||||
iv.xy += imageSize(i1DArray);
|
||||
iv.xyz += imageSize(i2DArray);
|
||||
iv.x += imageSize(iBuffer);
|
||||
iv.xy += imageSize(i2DMS);
|
||||
iv.xyz += imageSize(i2DMSArray);
|
||||
|
||||
iv.x += imageSamples(i2DMS);
|
||||
iv.x += imageSamples(i2DMSArray);
|
||||
|
||||
vec4 v = vec4(0.0);
|
||||
v += imageLoad(i1D, ic1D);
|
||||
imageStore(i1D, ic1D, v);
|
||||
v += imageLoad(i2D, ic2D);
|
||||
imageStore(i2D, ic2D, v);
|
||||
v += imageLoad(i3D, ic3D);
|
||||
imageStore(i3D, ic3D, v);
|
||||
v += imageLoad(iCube, ic3D);
|
||||
imageStore(iCube, ic3D, v);
|
||||
v += imageLoad(iCubeArray, ic3D);
|
||||
imageStore(iCubeArray, ic3D, v);
|
||||
v += imageLoad(i2DRect, ic2D);
|
||||
imageStore(i2DRect, ic2D, v);
|
||||
v += imageLoad(i1DArray, ic2D);
|
||||
imageStore(i1DArray, ic2D, v);
|
||||
v += imageLoad(i2DArray, ic3D);
|
||||
imageStore(i2DArray, ic3D, v);
|
||||
v += imageLoad(iBuffer, ic1D);
|
||||
imageStore(iBuffer, ic1D, v);
|
||||
v += imageLoad(i2DMS, ic2D, 1);
|
||||
imageStore(i2DMS, ic2D, 2, v);
|
||||
v += imageLoad(i2DMSArray, ic3D, 3);
|
||||
imageStore(i2DMSArray, ic3D, 4, v);
|
||||
|
||||
imageStore(wo2D, ic2D, v);
|
||||
|
||||
fragData = v;
|
||||
}
|
||||
|
||||
3
3rdparty/glslang/Test/spv.matrix.frag
vendored
3
3rdparty/glslang/Test/spv.matrix.frag
vendored
@@ -43,4 +43,7 @@ void main()
|
||||
sum34 += mat3x4(v3, f, v3, f, v3, f);
|
||||
|
||||
color += sum3 * m43 + sum4;
|
||||
|
||||
color += vec4(m43);
|
||||
color += vec4(vec3(mat2(f)), 7.2);
|
||||
}
|
||||
|
||||
14
3rdparty/glslang/Test/spv.multiviewPerViewAttributes.tesc
vendored
Normal file
14
3rdparty/glslang/Test/spv.multiviewPerViewAttributes.tesc
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_NVX_multiview_per_view_attributes :require
|
||||
|
||||
layout(vertices = 4) out;
|
||||
out gl_PerVertex {
|
||||
int gl_ViewportMaskPerViewNV[];
|
||||
vec4 gl_PositionPerViewNV[];
|
||||
} gl_out[];
|
||||
void main()
|
||||
{
|
||||
gl_out[gl_InvocationID].gl_ViewportMaskPerViewNV[0] = 1;
|
||||
gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position;
|
||||
}
|
||||
10
3rdparty/glslang/Test/spv.multiviewPerViewAttributes.vert
vendored
Normal file
10
3rdparty/glslang/Test/spv.multiviewPerViewAttributes.vert
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_NVX_multiview_per_view_attributes :require
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_ViewportMaskPerViewNV[0] = 1;
|
||||
gl_PositionPerViewNV[0] = gl_Position;
|
||||
}
|
||||
|
||||
4
3rdparty/glslang/glslang/Include/BaseTypes.h
vendored
4
3rdparty/glslang/glslang/Include/BaseTypes.h
vendored
@@ -207,6 +207,8 @@ enum TBuiltInVariable {
|
||||
EbvViewportMaskNV,
|
||||
EbvSecondaryPositionNV,
|
||||
EbvSecondaryViewportMaskNV,
|
||||
EbvPositionPerViewNV,
|
||||
EbvViewportMaskPerViewNV,
|
||||
#endif
|
||||
// HLSL built-ins that live only temporarily, until they get remapped
|
||||
// to one of the above.
|
||||
@@ -325,6 +327,8 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
|
||||
case EbvViewportMaskNV: return "ViewportMaskNV";
|
||||
case EbvSecondaryPositionNV: return "SecondaryPositionNV";
|
||||
case EbvSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
|
||||
case EbvPositionPerViewNV: return "PositionPerViewNV";
|
||||
case EbvViewportMaskPerViewNV: return "ViewportMaskPerViewNV";
|
||||
#endif
|
||||
default: return "unknown built-in variable";
|
||||
}
|
||||
|
||||
2
3rdparty/glslang/glslang/Include/Types.h
vendored
2
3rdparty/glslang/glslang/Include/Types.h
vendored
@@ -1360,6 +1360,8 @@ public:
|
||||
case EbvViewportMaskNV:
|
||||
case EbvSecondaryPositionNV:
|
||||
case EbvSecondaryViewportMaskNV:
|
||||
case EbvPositionPerViewNV:
|
||||
case EbvViewportMaskPerViewNV:
|
||||
#endif
|
||||
return true;
|
||||
default:
|
||||
|
||||
4
3rdparty/glslang/glslang/Include/revision.h
vendored
4
3rdparty/glslang/glslang/Include/revision.h
vendored
@@ -2,5 +2,5 @@
|
||||
// For the version, it uses the latest git tag followed by the number of commits.
|
||||
// For the date, it uses the current date (when then script is run).
|
||||
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1825"
|
||||
#define GLSLANG_DATE "10-Feb-2017"
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1842"
|
||||
#define GLSLANG_DATE "17-Feb-2017"
|
||||
|
||||
@@ -3249,6 +3249,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
"out int gl_ViewportMask[];"
|
||||
"out int gl_SecondaryViewportMaskNV[];"
|
||||
"out vec4 gl_SecondaryPositionNV;"
|
||||
"out vec4 gl_PositionPerViewNV[];"
|
||||
"out int gl_ViewportMaskPerViewNV[];"
|
||||
);
|
||||
#endif
|
||||
|
||||
@@ -3313,6 +3315,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
"float gl_CullDistance[];"
|
||||
#ifdef NV_EXTENSIONS
|
||||
"vec4 gl_SecondaryPositionNV;"
|
||||
"vec4 gl_PositionPerViewNV[];"
|
||||
#endif
|
||||
);
|
||||
stageBuiltins[EShLangGeometry].append(
|
||||
@@ -3362,9 +3365,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
#ifdef NV_EXTENSIONS
|
||||
if (version >= 450)
|
||||
stageBuiltins[EShLangGeometry].append(
|
||||
"out int gl_ViewportMask[];"
|
||||
"out int gl_SecondaryViewportMaskNV[];"
|
||||
"out vec4 gl_SecondaryPositionNV;"
|
||||
"out int gl_ViewportMask[];"
|
||||
"out int gl_SecondaryViewportMaskNV[];"
|
||||
"out vec4 gl_SecondaryPositionNV;"
|
||||
"out vec4 gl_PositionPerViewNV[];"
|
||||
"out int gl_ViewportMaskPerViewNV[];"
|
||||
);
|
||||
#endif
|
||||
|
||||
@@ -3424,11 +3429,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
stageBuiltins[EShLangTessControl].append(
|
||||
"float gl_CullDistance[];"
|
||||
#ifdef NV_EXTENSIONS
|
||||
"int gl_ViewportIndex;"
|
||||
"int gl_Layer;"
|
||||
"int gl_ViewportMask[];"
|
||||
"int gl_ViewportIndex;"
|
||||
"int gl_Layer;"
|
||||
"int gl_ViewportMask[];"
|
||||
"vec4 gl_SecondaryPositionNV;"
|
||||
"int gl_SecondaryViewportMaskNV[];"
|
||||
"int gl_SecondaryViewportMaskNV[];"
|
||||
"vec4 gl_PositionPerViewNV[];"
|
||||
"int gl_ViewportMaskPerViewNV[];"
|
||||
#endif
|
||||
);
|
||||
stageBuiltins[EShLangTessControl].append(
|
||||
@@ -3503,11 +3510,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
#ifdef NV_EXTENSIONS
|
||||
if (version >= 450)
|
||||
stageBuiltins[EShLangTessEvaluation].append(
|
||||
"out int gl_ViewportIndex;"
|
||||
"out int gl_Layer;"
|
||||
"out int gl_ViewportMask[];"
|
||||
"out int gl_ViewportIndex;"
|
||||
"out int gl_Layer;"
|
||||
"out int gl_ViewportMask[];"
|
||||
"out vec4 gl_SecondaryPositionNV;"
|
||||
"out int gl_SecondaryViewportMaskNV[];"
|
||||
"out int gl_SecondaryViewportMaskNV[];"
|
||||
"out vec4 gl_PositionPerViewNV[];"
|
||||
"out int gl_ViewportMaskPerViewNV[];"
|
||||
);
|
||||
#endif
|
||||
|
||||
@@ -4446,6 +4455,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
|
||||
"highp float gl_PointSize;"
|
||||
#ifdef NV_EXTENSIONS
|
||||
"highp vec4 gl_SecondaryPositionNV;"
|
||||
"highp vec4 gl_PositionPerViewNV[];"
|
||||
#endif
|
||||
"} gl_in[gl_MaxPatchVertices];"
|
||||
"\n");
|
||||
@@ -4635,6 +4645,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
|
||||
"float gl_CullDistance[];"
|
||||
#ifdef NV_EXTENSIONS
|
||||
"vec4 gl_SecondaryPositionNV;"
|
||||
"vec4 gl_PositionPerViewNV[];"
|
||||
#endif
|
||||
);
|
||||
s.append(
|
||||
@@ -5033,19 +5044,26 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
symbolTable.setVariableExtensions("gl_ViewportMask", 1, &E_GL_NV_viewport_array2);
|
||||
symbolTable.setVariableExtensions("gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering);
|
||||
symbolTable.setVariableExtensions("gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering);
|
||||
symbolTable.setVariableExtensions("gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes);
|
||||
symbolTable.setVariableExtensions("gl_ViewportMaskPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes);
|
||||
|
||||
BuiltInVariable("gl_ViewportMask", EbvViewportMaskNV, symbolTable);
|
||||
BuiltInVariable("gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
|
||||
BuiltInVariable("gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable);
|
||||
BuiltInVariable("gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
|
||||
BuiltInVariable("gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable);
|
||||
|
||||
if (language != EShLangVertex)
|
||||
if (language != EShLangVertex) {
|
||||
BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
|
||||
|
||||
BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
|
||||
}
|
||||
BuiltInVariable("gl_out", "gl_Layer", EbvLayer, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_ViewportIndex", EbvViewportIndex, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_ViewportMask", EbvViewportMaskNV, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable);
|
||||
#endif
|
||||
|
||||
BuiltInVariable("gl_PatchVerticesIn", EbvPatchVertices, symbolTable);
|
||||
|
||||
@@ -4008,16 +4008,20 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
|
||||
// - uniform offsets
|
||||
// - atomic_uint offsets
|
||||
const char* feature = "offset";
|
||||
requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, feature);
|
||||
const char* exts[2] = { E_GL_ARB_enhanced_layouts, E_GL_ARB_shader_atomic_counters };
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, 2, exts, feature);
|
||||
profileRequires(loc, EEsProfile, 310, nullptr, feature);
|
||||
if (spvVersion.spv == 0) {
|
||||
requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, feature);
|
||||
const char* exts[2] = { E_GL_ARB_enhanced_layouts, E_GL_ARB_shader_atomic_counters };
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, 2, exts, feature);
|
||||
profileRequires(loc, EEsProfile, 310, nullptr, feature);
|
||||
}
|
||||
publicType.qualifier.layoutOffset = value;
|
||||
return;
|
||||
} else if (id == "align") {
|
||||
const char* feature = "uniform buffer-member align";
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, feature);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature);
|
||||
if (spvVersion.spv == 0) {
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, feature);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature);
|
||||
}
|
||||
// "The specified alignment must be a power of 2, or a compile-time error results."
|
||||
if (! IsPow2(value))
|
||||
error(loc, "must be a power of 2", "align", "");
|
||||
@@ -4495,8 +4499,11 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (type.isImage() && ! qualifier.writeonly)
|
||||
error(loc, "image variables not declared 'writeonly' must have a format layout qualifier", "", "");
|
||||
} else if (type.isImage() && ! qualifier.writeonly) {
|
||||
const char *explanation = "image variables declared 'writeonly' without a format layout qualifier";
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, explanation);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation);
|
||||
}
|
||||
|
||||
if (qualifier.layoutPushConstant && type.getBasicType() != EbtBlock)
|
||||
error(loc, "can only be used with a block", "push_constant", "");
|
||||
@@ -5546,8 +5553,10 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
|
||||
if (memberType.isArray())
|
||||
arrayUnsizedCheck(memberLoc, currentBlockQualifier, &memberType.getArraySizes(), false, member == typeList.size() - 1);
|
||||
if (memberQualifier.hasOffset()) {
|
||||
requireProfile(memberLoc, ~EEsProfile, "offset on block member");
|
||||
profileRequires(memberLoc, ~EEsProfile, 440, E_GL_ARB_enhanced_layouts, "offset on block member");
|
||||
if (spvVersion.spv == 0) {
|
||||
requireProfile(memberLoc, ~EEsProfile, "offset on block member");
|
||||
profileRequires(memberLoc, ~EEsProfile, 440, E_GL_ARB_enhanced_layouts, "offset on block member");
|
||||
}
|
||||
}
|
||||
|
||||
if (memberType.containsOpaque())
|
||||
|
||||
@@ -182,6 +182,7 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
// extensionBehavior[E_GL_ARB_cull_distance] = EBhDisable; // present for 4.5, but need extension control over block members
|
||||
|
||||
extensionBehavior[E_GL_EXT_shader_non_constant_global_initializers] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_shader_image_load_formatted] = EBhDisable;
|
||||
|
||||
// #line and #include
|
||||
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable;
|
||||
@@ -201,6 +202,7 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_viewport_array2] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_stereo_view_rendering] = EBhDisable;
|
||||
extensionBehavior[E_GL_NVX_multiview_per_view_attributes] = EBhDisable;
|
||||
#endif
|
||||
|
||||
// AEP
|
||||
@@ -302,6 +304,7 @@ void TParseVersions::getPreamble(std::string& preamble)
|
||||
"#define GL_ARB_sparse_texture_clamp 1\n"
|
||||
// "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members
|
||||
"#define GL_EXT_shader_non_constant_global_initializers 1\n"
|
||||
"#define GL_EXT_shader_image_load_formatted 1\n"
|
||||
|
||||
#ifdef AMD_EXTENSIONS
|
||||
"#define GL_AMD_shader_ballot 1\n"
|
||||
|
||||
@@ -130,6 +130,7 @@ const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture
|
||||
// const char* const E_GL_ARB_cull_distance = "GL_ARB_cull_distance"; // present for 4.5, but need extension control over block members
|
||||
|
||||
const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers";
|
||||
const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted";
|
||||
|
||||
// #line and #include
|
||||
const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive";
|
||||
@@ -149,6 +150,7 @@ const char* const E_SPV_NV_geometry_shader_passthrough = "GL_NV_geometr
|
||||
const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array";
|
||||
const char* const E_GL_NV_viewport_array2 = "GL_NV_viewport_array2";
|
||||
const char* const E_GL_NV_stereo_view_rendering = "GL_NV_stereo_view_rendering";
|
||||
const char* const E_GL_NVX_multiview_per_view_attributes = "GL_NVX_multiview_per_view_attributes";
|
||||
|
||||
// Arrays of extensions for the above viewportEXTs duplications
|
||||
|
||||
|
||||
2
3rdparty/glslang/gtests/Spv.FromFile.cpp
vendored
2
3rdparty/glslang/gtests/Spv.FromFile.cpp
vendored
@@ -386,6 +386,8 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.viewportArray2.tesc",
|
||||
"spv.stereoViewRendering.vert",
|
||||
"spv.stereoViewRendering.tesc",
|
||||
"spv.multiviewPerViewAttributes.vert",
|
||||
"spv.multiviewPerViewAttributes.tesc",
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
||||
8
3rdparty/glslang/hlsl/hlslParseHelper.cpp
vendored
8
3rdparty/glslang/hlsl/hlslParseHelper.cpp
vendored
@@ -543,7 +543,7 @@ bool HlslParseContext::parseMatrixSwizzleSelector(const TSourceLoc& loc, const T
|
||||
error(loc, "matrix component swizzle missing", compString.c_str(), "");
|
||||
return false;
|
||||
}
|
||||
startPos[numComps++] = c + 1;
|
||||
startPos[numComps++] = (int)c + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2153,7 +2153,7 @@ TIntermTyped* HlslParseContext::handleAssignToMatrixSwizzle(const TSourceLoc& lo
|
||||
TIntermTyped* vectorAssign = nullptr;
|
||||
if (vector == nullptr) {
|
||||
// create a new intermediate vector variable to assign to
|
||||
TType vectorType(matrix->getBasicType(), EvqTemporary, matrix->getQualifier().precision, swizzle.size()/2);
|
||||
TType vectorType(matrix->getBasicType(), EvqTemporary, matrix->getQualifier().precision, (int)swizzle.size()/2);
|
||||
vector = intermediate.addSymbol(*makeInternalVariable("intermVec", vectorType), loc);
|
||||
|
||||
// assign the right to the new vector
|
||||
@@ -3887,6 +3887,8 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con
|
||||
qualifier.builtIn = EbvGlobalInvocationId;
|
||||
else if (semanticUpperCase == "SV_GROUPTHREADID")
|
||||
qualifier.builtIn = EbvLocalInvocationId;
|
||||
else if (semanticUpperCase == "SV_GROUPINDEX")
|
||||
qualifier.builtIn = EbvLocalInvocationIndex;
|
||||
else if (semanticUpperCase == "SV_GROUPID")
|
||||
qualifier.builtIn = EbvWorkGroupId;
|
||||
else if (semanticUpperCase == "SV_DOMAINLOCATION")
|
||||
@@ -3903,8 +3905,6 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con
|
||||
qualifier.builtIn = EbvFragDepthLesser;
|
||||
else if( semanticUpperCase == "SV_STENCILREF")
|
||||
error(loc, "unimplemented; need ARB_shader_stencil_export", "SV_STENCILREF", "");
|
||||
else if( semanticUpperCase == "SV_GROUPINDEX")
|
||||
error(loc, "unimplemented", "SV_GROUPINDEX", "");
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user