Merge branch 'sync' into automapping-opengl-location

Sync code from KhronosGroup/glslang.
This commit is contained in:
Canon lee 2019-07-26 00:47:16 +08:00
commit 1247baa678
119 changed files with 8168 additions and 4614 deletions

View File

@ -148,6 +148,7 @@ source_set("glslang_sources") {
"-Wno-inconsistent-missing-override", "-Wno-inconsistent-missing-override",
"-Wno-sign-compare", "-Wno-sign-compare",
"-Wno-unused-variable", "-Wno-unused-variable",
"-Wno-missing-field-initializers",
] ]
} }
if (is_win && !is_clang) { if (is_win && !is_clang) {
@ -186,3 +187,13 @@ executable("glslang_validator") {
":glslang_sources", ":glslang_sources",
] ]
} }
executable("spirv-remap") {
sources = [
"StandAlone/spirv-remap.cpp",
]
defines = [ "ENABLE_OPT=1" ]
deps = [
":glslang_sources",
]
}

View File

@ -105,6 +105,8 @@ else()
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
endif() endif()
add_compile_options(-fno-rtti)
function(glslang_set_link_args TARGET) function(glslang_set_link_args TARGET)
# For MinGW compiles, statically link against the GCC and C++ runtimes. # For MinGW compiles, statically link against the GCC and C++ runtimes.
# This avoids the need to ship those runtimes as DLLs. # This avoids the need to ship those runtimes as DLLs.

View File

@ -34,5 +34,6 @@ static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shade
static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer"; static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer";
static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered"; static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered";
static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density";
static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation";
#endif // #ifndef GLSLextEXT_H #endif // #ifndef GLSLextEXT_H

View File

@ -42,5 +42,6 @@ static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_
static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model"; static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model";
static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer"; static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer";
static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock";
static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock";
#endif // #ifndef GLSLextKHR_H #endif // #ifndef GLSLextKHR_H

View File

@ -75,4 +75,7 @@ const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate";
//SPV_NV_cooperative_matrix //SPV_NV_cooperative_matrix
const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix"; const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix";
//SPV_NV_shader_sm_builtins
const char* const E_SPV_NV_shader_sm_builtins = "SPV_NV_shader_sm_builtins";
#endif // #ifndef GLSLextNV_H #endif // #ifndef GLSLextNV_H

View File

@ -138,7 +138,7 @@ protected:
spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector<unsigned int>& operands) const; spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector<unsigned int>& operands) const;
spv::StorageClass TranslateStorageClass(const glslang::TType&); spv::StorageClass TranslateStorageClass(const glslang::TType&);
void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType); void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType);
spv::Id createSpvVariable(const glslang::TIntermSymbol*); spv::Id createSpvVariable(const glslang::TIntermSymbol*, spv::Id forcedType);
spv::Id getSampledType(const glslang::TSampler&); spv::Id getSampledType(const glslang::TSampler&);
spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&); spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&);
spv::Id createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped&, spv::Id parentResult); spv::Id createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped&, spv::Id parentResult);
@ -169,7 +169,7 @@ protected:
void makeGlobalInitializers(const glslang::TIntermSequence&); void makeGlobalInitializers(const glslang::TIntermSequence&);
void visitFunctions(const glslang::TIntermSequence&); void visitFunctions(const glslang::TIntermSequence&);
void handleFunctionEntry(const glslang::TIntermAggregate* node); void handleFunctionEntry(const glslang::TIntermAggregate* node);
void translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments); void translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
void translateArguments(glslang::TIntermUnary& node, std::vector<spv::Id>& arguments); void translateArguments(glslang::TIntermUnary& node, std::vector<spv::Id>& arguments);
spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node); spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node);
spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*); spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*);
@ -178,14 +178,14 @@ protected:
glslang::TBasicType typeProxy, bool reduceComparison = true); glslang::TBasicType typeProxy, bool reduceComparison = true);
spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right); spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right);
spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand, spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand,
glslang::TBasicType typeProxy); glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand, spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand,
glslang::TBasicType typeProxy); glslang::TBasicType typeProxy);
spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand, spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand,
glslang::TBasicType typeProxy); glslang::TBasicType typeProxy);
spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize); spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize);
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy); spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy); spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector<spv::Id>& operands); spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector<spv::Id>& operands);
spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy); spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
@ -208,6 +208,8 @@ protected:
if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3) if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
builder.addExtension(ext); builder.addExtension(ext);
} }
std::pair<spv::Id, spv::Id> getForcedType(spv::BuiltIn, const glslang::TType&);
spv::Id translateForcedType(spv::Id object);
glslang::SpvOptions& options; glslang::SpvOptions& options;
spv::Function* shaderEntry; spv::Function* shaderEntry;
@ -224,6 +226,7 @@ protected:
bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used
std::set<spv::Id> iOSet; // all input/output variables from either static use or declaration of interface std::set<spv::Id> iOSet; // all input/output variables from either static use or declaration of interface
const glslang::TIntermediate* glslangIntermediate; const glslang::TIntermediate* glslangIntermediate;
bool nanMinMaxClamp; // true if use NMin/NMax/NClamp instead of FMin/FMax/FClamp
spv::Id stdBuiltins; spv::Id stdBuiltins;
std::unordered_map<const char*, spv::Id> extBuiltinMap; std::unordered_map<const char*, spv::Id> extBuiltinMap;
@ -237,6 +240,10 @@ protected:
std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator; std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator;
// Map pointee types for EbtReference to their forward pointers // Map pointee types for EbtReference to their forward pointers
std::map<const glslang::TType *, spv::Id> forwardPointers; std::map<const glslang::TType *, spv::Id> forwardPointers;
// Type forcing, for when SPIR-V wants a different type than the AST,
// requiring local translation to and from SPIR-V type on every access.
// Maps <builtin-variable-id -> AST-required-type-id>
std::unordered_map<spv::Id, spv::Id> forceType;
}; };
// //
@ -732,27 +739,27 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvSubGroupEqMask: case glslang::EbvSubGroupEqMask:
builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addExtension(spv::E_SPV_KHR_shader_ballot);
builder.addCapability(spv::CapabilitySubgroupBallotKHR); builder.addCapability(spv::CapabilitySubgroupBallotKHR);
return spv::BuiltInSubgroupEqMaskKHR; return spv::BuiltInSubgroupEqMask;
case glslang::EbvSubGroupGeMask: case glslang::EbvSubGroupGeMask:
builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addExtension(spv::E_SPV_KHR_shader_ballot);
builder.addCapability(spv::CapabilitySubgroupBallotKHR); builder.addCapability(spv::CapabilitySubgroupBallotKHR);
return spv::BuiltInSubgroupGeMaskKHR; return spv::BuiltInSubgroupGeMask;
case glslang::EbvSubGroupGtMask: case glslang::EbvSubGroupGtMask:
builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addExtension(spv::E_SPV_KHR_shader_ballot);
builder.addCapability(spv::CapabilitySubgroupBallotKHR); builder.addCapability(spv::CapabilitySubgroupBallotKHR);
return spv::BuiltInSubgroupGtMaskKHR; return spv::BuiltInSubgroupGtMask;
case glslang::EbvSubGroupLeMask: case glslang::EbvSubGroupLeMask:
builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addExtension(spv::E_SPV_KHR_shader_ballot);
builder.addCapability(spv::CapabilitySubgroupBallotKHR); builder.addCapability(spv::CapabilitySubgroupBallotKHR);
return spv::BuiltInSubgroupLeMaskKHR; return spv::BuiltInSubgroupLeMask;
case glslang::EbvSubGroupLtMask: case glslang::EbvSubGroupLtMask:
builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addExtension(spv::E_SPV_KHR_shader_ballot);
builder.addCapability(spv::CapabilitySubgroupBallotKHR); builder.addCapability(spv::CapabilitySubgroupBallotKHR);
return spv::BuiltInSubgroupLtMaskKHR; return spv::BuiltInSubgroupLtMask;
case glslang::EbvNumSubgroups: case glslang::EbvNumSubgroups:
builder.addCapability(spv::CapabilityGroupNonUniform); builder.addCapability(spv::CapabilityGroupNonUniform);
@ -794,6 +801,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
builder.addCapability(spv::CapabilityGroupNonUniform); builder.addCapability(spv::CapabilityGroupNonUniform);
builder.addCapability(spv::CapabilityGroupNonUniformBallot); builder.addCapability(spv::CapabilityGroupNonUniformBallot);
return spv::BuiltInSubgroupLtMask; return spv::BuiltInSubgroupLtMask;
#ifdef AMD_EXTENSIONS #ifdef AMD_EXTENSIONS
case glslang::EbvBaryCoordNoPersp: case glslang::EbvBaryCoordNoPersp:
builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
@ -946,6 +954,24 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvMeshViewIndicesNV: case glslang::EbvMeshViewIndicesNV:
return spv::BuiltInMeshViewIndicesNV; return spv::BuiltInMeshViewIndicesNV;
#endif #endif
// sm builtins
case glslang::EbvWarpsPerSM:
builder.addExtension(spv::E_SPV_NV_shader_sm_builtins);
builder.addCapability(spv::CapabilityShaderSMBuiltinsNV);
return spv::BuiltInWarpsPerSMNV;
case glslang::EbvSMCount:
builder.addExtension(spv::E_SPV_NV_shader_sm_builtins);
builder.addCapability(spv::CapabilityShaderSMBuiltinsNV);
return spv::BuiltInSMCountNV;
case glslang::EbvWarpID:
builder.addExtension(spv::E_SPV_NV_shader_sm_builtins);
builder.addCapability(spv::CapabilityShaderSMBuiltinsNV);
return spv::BuiltInWarpIDNV;
case glslang::EbvSMID:
builder.addExtension(spv::E_SPV_NV_shader_sm_builtins);
builder.addCapability(spv::CapabilityShaderSMBuiltinsNV);
return spv::BuiltInSMIDNV;
default: default:
return spv::BuiltInMax; return spv::BuiltInMax;
} }
@ -1295,7 +1321,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl
sequenceDepth(0), logger(buildLogger), sequenceDepth(0), logger(buildLogger),
builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger), builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger),
inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), inEntryPoint(false), entryPointTerminated(false), linkageOnly(false),
glslangIntermediate(glslangIntermediate) glslangIntermediate(glslangIntermediate),
nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp())
{ {
spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage()); spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage());
@ -1600,8 +1627,8 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
// Formal function parameters were mapped during makeFunctions(). // Formal function parameters were mapped during makeFunctions().
spv::Id id = getSymbolId(symbol); spv::Id id = getSymbolId(symbol);
// Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction
if (builder.isPointer(id)) { if (builder.isPointer(id)) {
// Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction
// Consider adding to the OpEntryPoint interface list. // Consider adding to the OpEntryPoint interface list.
// Only looking at structures if they have at least one member. // Only looking at structures if they have at least one member.
if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) { if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) {
@ -1613,6 +1640,14 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
iOSet.insert(id); iOSet.insert(id);
} }
} }
// If the SPIR-V type is required to be different than the AST type,
// translate now from the SPIR-V type to the AST type, for the consuming
// operation.
// Note this turns it from an l-value to an r-value.
// Currently, all symbols needing this are inputs; avoid the map lookup when non-input.
if (symbol->getType().getQualifier().storage == glslang::EvqVaryingIn)
id = translateForcedType(id);
} }
// Only process non-linkage-only nodes for generating actual static uses // Only process non-linkage-only nodes for generating actual static uses
@ -1630,8 +1665,10 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
// See comments in handleUserFunctionCall(). // See comments in handleUserFunctionCall().
// B) Specialization constants (normal constants don't even come in as a variable), // B) Specialization constants (normal constants don't even come in as a variable),
// These are also pure R-values. // These are also pure R-values.
// C) R-Values from type translation, see above call to translateForcedType()
glslang::TQualifier qualifier = symbol->getQualifier(); glslang::TQualifier qualifier = symbol->getQualifier();
if (qualifier.isSpecConstant() || rValueParameters.find(symbol->getId()) != rValueParameters.end()) if (qualifier.isSpecConstant() || rValueParameters.find(symbol->getId()) != rValueParameters.end() ||
!builder.isPointerType(builder.getTypeId(id)))
builder.setAccessChainRValue(id); builder.setAccessChainRValue(id);
else else
builder.setAccessChainLValue(id); builder.setAccessChainLValue(id);
@ -1888,6 +1925,71 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
} }
} }
// Figure out what, if any, type changes are needed when accessing a specific built-in.
// Returns <the type SPIR-V requires for declarion, the type to translate to on use>.
// Also see comment for 'forceType', regarding tracking SPIR-V-required types.
std::pair<spv::Id, spv::Id> TGlslangToSpvTraverser::getForcedType(spv::BuiltIn builtIn,
const glslang::TType& glslangType)
{
switch(builtIn)
{
case spv::BuiltInSubgroupEqMask:
case spv::BuiltInSubgroupGeMask:
case spv::BuiltInSubgroupGtMask:
case spv::BuiltInSubgroupLeMask:
case spv::BuiltInSubgroupLtMask: {
// these require changing a 64-bit scaler -> a vector of 32-bit components
if (glslangType.isVector())
break;
std::pair<spv::Id, spv::Id> ret(builder.makeVectorType(builder.makeUintType(32), 4),
builder.makeUintType(64));
return ret;
}
default:
break;
}
std::pair<spv::Id, spv::Id> ret(spv::NoType, spv::NoType);
return ret;
}
// For an object previously identified (see getForcedType() and forceType)
// as needing type translations, do the translation needed for a load, turning
// an L-value into in R-value.
spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object)
{
const auto forceIt = forceType.find(object);
if (forceIt == forceType.end())
return object;
spv::Id desiredTypeId = forceIt->second;
spv::Id objectTypeId = builder.getTypeId(object);
assert(builder.isPointerType(objectTypeId));
objectTypeId = builder.getContainedTypeId(objectTypeId);
if (builder.isVectorType(objectTypeId) &&
builder.getScalarTypeWidth(builder.getContainedTypeId(objectTypeId)) == 32) {
if (builder.getScalarTypeWidth(desiredTypeId) == 64) {
// handle 32-bit v.xy* -> 64-bit
builder.clearAccessChain();
builder.setAccessChainLValue(object);
object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId);
std::vector<spv::Id> components;
components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 0));
components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 1));
spv::Id vecType = builder.makeVectorType(builder.getContainedTypeId(objectTypeId), 2);
return builder.createUnaryOp(spv::OpBitcast, desiredTypeId,
builder.createCompositeConstruct(vecType, components));
} else {
logger->missingFunctionality("forcing 32-bit vector type to non 64-bit scalar");
}
} else {
logger->missingFunctionality("forcing non 32-bit vector type");
}
return object;
}
bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node)
{ {
builder.setLine(node->getLoc().line, node->getLoc().getFilename()); builder.setLine(node->getLoc().line, node->getLoc().getFilename());
@ -1963,19 +2065,26 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
invertedType = getInvertedSwizzleType(*node->getOperand()); invertedType = getInvertedSwizzleType(*node->getOperand());
builder.clearAccessChain(); builder.clearAccessChain();
TIntermNode *operandNode;
if (invertedType != spv::NoType) if (invertedType != spv::NoType)
node->getOperand()->getAsBinaryNode()->getLeft()->traverse(this); operandNode = node->getOperand()->getAsBinaryNode()->getLeft();
else else
node->getOperand()->traverse(this); operandNode = node->getOperand();
operandNode->traverse(this);
spv::Id operand = spv::NoResult; spv::Id operand = spv::NoResult;
spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags;
if (node->getOp() == glslang::EOpAtomicCounterIncrement || if (node->getOp() == glslang::EOpAtomicCounterIncrement ||
node->getOp() == glslang::EOpAtomicCounterDecrement || node->getOp() == glslang::EOpAtomicCounterDecrement ||
node->getOp() == glslang::EOpAtomicCounter || node->getOp() == glslang::EOpAtomicCounter ||
node->getOp() == glslang::EOpInterpolateAtCentroid) node->getOp() == glslang::EOpInterpolateAtCentroid) {
operand = builder.accessChainGetLValue(); // Special case l-value operands operand = builder.accessChainGetLValue(); // Special case l-value operands
else lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType());
} else
operand = accessChainLoad(node->getOperand()->getType()); operand = accessChainLoad(node->getOperand()->getType());
OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()),
@ -1988,7 +2097,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
// if not, then possibly an operation // if not, then possibly an operation
if (! result) if (! result)
result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType()); result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType(), lvalueCoherentFlags);
if (result) { if (result) {
if (invertedType) { if (invertedType) {
@ -2095,6 +2204,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
bool noReturnValue = false; bool noReturnValue = false;
bool atomic = false; bool atomic = false;
spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags;
assert(node->getOp()); assert(node->getOp());
spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
@ -2292,7 +2403,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
{ {
builder.setLine(node->getLoc().line, node->getLoc().getFilename()); builder.setLine(node->getLoc().line, node->getLoc().getFilename());
std::vector<spv::Id> arguments; std::vector<spv::Id> arguments;
translateArguments(*node, arguments); translateArguments(*node, arguments, lvalueCoherentFlags);
spv::Id constructed; spv::Id constructed;
if (node->getOp() == glslang::EOpConstructTextureSampler) if (node->getOp() == glslang::EOpConstructTextureSampler)
constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments); constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments);
@ -2584,9 +2695,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
} }
} }
if (lvalue) if (lvalue) {
operands.push_back(builder.accessChainGetLValue()); operands.push_back(builder.accessChainGetLValue());
else { lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType());
} else {
builder.setLine(node->getLoc().line, node->getLoc().getFilename()); builder.setLine(node->getLoc().line, node->getLoc().getFilename());
operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
} }
@ -2621,7 +2734,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
result = 0; result = 0;
} else if (atomic) { } else if (atomic) {
// Handle all atomics // Handle all atomics
result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags);
} else { } else {
// Pass through to generic operations. // Pass through to generic operations.
switch (glslangOperands.size()) { switch (glslangOperands.size()) {
@ -2636,7 +2749,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
result = createUnaryOperation( result = createUnaryOperation(
node->getOp(), decorations, node->getOp(), decorations,
resultType(), operands.front(), resultType(), operands.front(),
glslangOperands[0]->getAsTyped()->getBasicType()); glslangOperands[0]->getAsTyped()->getBasicType(), lvalueCoherentFlags);
} }
break; break;
default: default:
@ -2998,6 +3111,12 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T
builder.clearAccessChain(); builder.clearAccessChain();
break; break;
case glslang::EOpDemote:
builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT);
builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation);
builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT);
break;
default: default:
assert(0); assert(0);
break; break;
@ -3006,7 +3125,7 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T
return false; return false;
} }
spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node) spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node, spv::Id forcedType)
{ {
// First, steer off constants, which are not SPIR-V variables, but // First, steer off constants, which are not SPIR-V variables, but
// can still have a mapping to a SPIR-V Id. // can still have a mapping to a SPIR-V Id.
@ -3019,7 +3138,8 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
// Now, handle actual variables // Now, handle actual variables
spv::StorageClass storageClass = TranslateStorageClass(node->getType()); spv::StorageClass storageClass = TranslateStorageClass(node->getType());
spv::Id spvType = convertGlslangToSpvType(node->getType()); spv::Id spvType = forcedType == spv::NoType ? convertGlslangToSpvType(node->getType())
: forcedType;
const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) || const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) ||
node->getType().containsBasicType(glslang::EbtInt16) || node->getType().containsBasicType(glslang::EbtInt16) ||
@ -3048,6 +3168,11 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
break; break;
default: default:
if (node->getType().containsBasicType(glslang::EbtFloat16))
builder.addCapability(spv::CapabilityFloat16);
if (node->getType().containsBasicType(glslang::EbtInt16) ||
node->getType().containsBasicType(glslang::EbtUint16))
builder.addCapability(spv::CapabilityInt16);
break; break;
} }
} }
@ -3064,6 +3189,8 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
} else if (storageClass == spv::StorageClassStorageBuffer) { } else if (storageClass == spv::StorageClassStorageBuffer) {
builder.addExtension(spv::E_SPV_KHR_8bit_storage); builder.addExtension(spv::E_SPV_KHR_8bit_storage);
builder.addCapability(spv::CapabilityStorageBuffer8BitAccess); builder.addCapability(spv::CapabilityStorageBuffer8BitAccess);
} else {
builder.addCapability(spv::CapabilityInt8);
} }
} }
@ -3376,9 +3503,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
memberRemapper[glslangMembers][i] = -1; memberRemapper[glslangMembers][i] = -1;
} else { } else {
if (type.getBasicType() == glslang::EbtBlock) { if (type.getBasicType() == glslang::EbtBlock) {
memberRemapper[glslangMembers][i] = i - memberDelta; if (filterMember(glslangMember)) {
if (filterMember(glslangMember)) memberDelta++;
memberRemapper[glslangMembers][i] = -1;
continue; continue;
}
memberRemapper[glslangMembers][i] = i - memberDelta;
} }
// modify just this child's view of the qualifier // modify just this child's view of the qualifier
glslang::TQualifier memberQualifier = glslangMember.getQualifier(); glslang::TQualifier memberQualifier = glslangMember.getQualifier();
@ -3996,6 +4126,16 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
symbolValues[parameters[p]->getAsSymbolNode()->getId()] = function->getParamId(p); symbolValues[parameters[p]->getAsSymbolNode()->getId()] = function->getParamId(p);
// give a name too // give a name too
builder.addName(function->getParamId(p), parameters[p]->getAsSymbolNode()->getName().c_str()); builder.addName(function->getParamId(p), parameters[p]->getAsSymbolNode()->getName().c_str());
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
if (paramType.containsBasicType(glslang::EbtInt8) ||
paramType.containsBasicType(glslang::EbtUint8))
builder.addCapability(spv::CapabilityInt8);
if (paramType.containsBasicType(glslang::EbtInt16) ||
paramType.containsBasicType(glslang::EbtUint16))
builder.addCapability(spv::CapabilityInt16);
if (paramType.containsBasicType(glslang::EbtFloat16))
builder.addCapability(spv::CapabilityFloat16);
} }
} }
} }
@ -4034,7 +4174,7 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate
builder.setBuildPoint(functionBlock); builder.setBuildPoint(functionBlock);
} }
void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments) void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
{ {
const glslang::TIntermSequence& glslangArguments = node.getSequence(); const glslang::TIntermSequence& glslangArguments = node.getSequence();
@ -4192,9 +4332,11 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate&
break; break;
} }
if (lvalue) if (lvalue) {
arguments.push_back(builder.accessChainGetLValue()); arguments.push_back(builder.accessChainGetLValue());
else lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType());
} else
arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType()));
} }
} }
@ -4235,9 +4377,11 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
return spv::ImageOperandsMaskNone; return spv::ImageOperandsMaskNone;
}; };
spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags;
std::vector<spv::Id> arguments; std::vector<spv::Id> arguments;
if (node->getAsAggregate()) if (node->getAsAggregate())
translateArguments(*node->getAsAggregate(), arguments); translateArguments(*node->getAsAggregate(), arguments, lvalueCoherentFlags);
else else
translateArguments(*node->getAsUnaryNode(), arguments); translateArguments(*node->getAsUnaryNode(), arguments);
spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
@ -4518,7 +4662,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
for (; opIt != arguments.end(); ++opIt) for (; opIt != arguments.end(); ++opIt)
operands.push_back(*opIt); operands.push_back(*opIt);
return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags);
} }
} }
@ -5274,7 +5418,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, OpDecora
} }
spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId, spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId,
spv::Id operand, glslang::TBasicType typeProxy) spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
{ {
spv::Op unaryOp = spv::OpNop; spv::Op unaryOp = spv::OpNop;
int extBuiltins = -1; int extBuiltins = -1;
@ -5545,7 +5689,7 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
// Handle all of the atomics in one place, in createAtomicOperation() // Handle all of the atomics in one place, in createAtomicOperation()
std::vector<spv::Id> operands; std::vector<spv::Id> operands;
operands.push_back(operand); operands.push_back(operand);
return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy); return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy, lvalueCoherentFlags);
} }
case glslang::EOpBitFieldReverse: case glslang::EOpBitFieldReverse:
@ -6153,7 +6297,7 @@ spv::Id TGlslangToSpvTraverser::makeSmearedConstant(spv::Id constant, int vector
} }
// For glslang ops that map to SPV atomic opCodes // For glslang ops that map to SPV atomic opCodes
spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy) spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
{ {
spv::Op opCode = spv::OpNop; spv::Op opCode = spv::OpNop;
@ -6239,7 +6383,7 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
scopeId = builder.makeUintConstant(spv::ScopeDevice); scopeId = builder.makeUintConstant(spv::ScopeDevice);
} }
// semantics default to relaxed // semantics default to relaxed
spv::Id semanticsId = builder.makeUintConstant(spv::MemorySemanticsMaskNone); spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.volatil ? spv::MemorySemanticsVolatileMask : spv::MemorySemanticsMaskNone);
spv::Id semanticsId2 = semanticsId; spv::Id semanticsId2 = semanticsId;
pointerId = operands[0]; pointerId = operands[0];
@ -6269,7 +6413,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
// Check for capabilities // Check for capabilities
unsigned semanticsImmediate = builder.getConstantScalar(semanticsId) | builder.getConstantScalar(semanticsId2); unsigned semanticsImmediate = builder.getConstantScalar(semanticsId) | builder.getConstantScalar(semanticsId2);
if (semanticsImmediate & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask)) { if (semanticsImmediate & (spv::MemorySemanticsMakeAvailableKHRMask |
spv::MemorySemanticsMakeVisibleKHRMask |
spv::MemorySemanticsOutputMemoryKHRMask |
spv::MemorySemanticsVolatileMask)) {
builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
} }
@ -6961,7 +7108,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
switch (op) { switch (op) {
case glslang::EOpMin: case glslang::EOpMin:
if (isFloat) if (isFloat)
libCall = spv::GLSLstd450FMin; libCall = nanMinMaxClamp ? spv::GLSLstd450NMin : spv::GLSLstd450FMin;
else if (isUnsigned) else if (isUnsigned)
libCall = spv::GLSLstd450UMin; libCall = spv::GLSLstd450UMin;
else else
@ -6973,7 +7120,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
break; break;
case glslang::EOpMax: case glslang::EOpMax:
if (isFloat) if (isFloat)
libCall = spv::GLSLstd450FMax; libCall = nanMinMaxClamp ? spv::GLSLstd450NMax : spv::GLSLstd450FMax;
else if (isUnsigned) else if (isUnsigned)
libCall = spv::GLSLstd450UMax; libCall = spv::GLSLstd450UMax;
else else
@ -6992,7 +7139,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
case glslang::EOpClamp: case glslang::EOpClamp:
if (isFloat) if (isFloat)
libCall = spv::GLSLstd450FClamp; libCall = nanMinMaxClamp ? spv::GLSLstd450NClamp : spv::GLSLstd450FClamp;
else if (isUnsigned) else if (isUnsigned)
libCall = spv::GLSLstd450UClamp; libCall = spv::GLSLstd450UClamp;
else else
@ -7211,7 +7358,10 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
unsigned int memoryScope = builder.getConstantScalar(operands[1]); unsigned int memoryScope = builder.getConstantScalar(operands[1]);
unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]);
builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask)) { if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
spv::MemorySemanticsMakeVisibleKHRMask |
spv::MemorySemanticsOutputMemoryKHRMask |
spv::MemorySemanticsVolatileMask)) {
builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
} }
if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) {
@ -7228,7 +7378,10 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
unsigned int memoryScope = builder.getConstantScalar(operands[0]); unsigned int memoryScope = builder.getConstantScalar(operands[0]);
unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]); unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]);
builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask)) { if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
spv::MemorySemanticsMakeVisibleKHRMask |
spv::MemorySemanticsOutputMemoryKHRMask |
spv::MemorySemanticsVolatileMask)) {
builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
} }
if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) { if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) {
@ -7466,6 +7619,30 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
builder.createNoResultOp(spv::OpEndInvocationInterlockEXT); builder.createNoResultOp(spv::OpEndInvocationInterlockEXT);
return 0; return 0;
case glslang::EOpIsHelperInvocation:
{
std::vector<spv::Id> args; // Dummy arguments
builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation);
builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT);
return builder.createOp(spv::OpIsHelperInvocationEXT, typeId, args);
}
case glslang::EOpReadClockSubgroupKHR: {
std::vector<spv::Id> args;
args.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
builder.addExtension(spv::E_SPV_KHR_shader_clock);
builder.addCapability(spv::CapabilityShaderClockKHR);
return builder.createOp(spv::OpReadClockKHR, typeId, args);
}
case glslang::EOpReadClockDeviceKHR: {
std::vector<spv::Id> args;
args.push_back(builder.makeUintConstant(spv::ScopeDevice));
builder.addExtension(spv::E_SPV_KHR_shader_clock);
builder.addCapability(spv::CapabilityShaderClockKHR);
return builder.createOp(spv::OpReadClockKHR, typeId, args);
}
default: default:
logger->missingFunctionality("unknown operation with no arguments"); logger->missingFunctionality("unknown operation with no arguments");
return 0; return 0;
@ -7482,8 +7659,12 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
} }
// it was not found, create it // it was not found, create it
id = createSpvVariable(symbol); spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false);
auto forcedType = getForcedType(builtIn, symbol->getType());
id = createSpvVariable(symbol, forcedType.first);
symbolValues[symbol->getId()] = id; symbolValues[symbol->getId()] = id;
if (forcedType.second != spv::NoType)
forceType[id] = forcedType.second;
if (symbol->getBasicType() != glslang::EbtBlock) { if (symbol->getBasicType() != glslang::EbtBlock) {
builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType()));
@ -7543,10 +7724,10 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
builder.addDecoration(id, memory[i]); builder.addDecoration(id, memory[i]);
} }
// built-in variable decorations // add built-in variable decoration
spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); if (builtIn != spv::BuiltInMax) {
if (builtIn != spv::BuiltInMax)
builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn);
}
// nonuniform // nonuniform
builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier())); builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier()));
@ -7561,6 +7742,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
decoration = (spv::Decoration)spv::DecorationMax; decoration = (spv::Decoration)spv::DecorationMax;
builder.addDecoration(id, decoration); builder.addDecoration(id, decoration);
if (decoration != spv::DecorationMax) { if (decoration != spv::DecorationMax) {
builder.addCapability(spv::CapabilitySampleMaskOverrideCoverageNV);
builder.addExtension(spv::E_SPV_NV_sample_mask_override_coverage); builder.addExtension(spv::E_SPV_NV_sample_mask_override_coverage);
} }
} }
@ -8090,11 +8272,14 @@ void GlslangToSpv(const TIntermediate& intermediate, std::vector<unsigned int>&
#if ENABLE_OPT #if ENABLE_OPT
// If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan // If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan
// eg. forward and remove memory writes of opaque types. // eg. forward and remove memory writes of opaque types.
if ((intermediate.getSource() == EShSourceHlsl || options->optimizeSize) && !options->disableOptimizer) bool prelegalization = intermediate.getSource() == EShSourceHlsl;
if ((intermediate.getSource() == EShSourceHlsl || options->optimizeSize) && !options->disableOptimizer) {
SpirvToolsLegalize(intermediate, spirv, logger, options); SpirvToolsLegalize(intermediate, spirv, logger, options);
prelegalization = false;
}
if (options->validate) if (options->validate)
SpirvToolsValidate(intermediate, spirv, logger); SpirvToolsValidate(intermediate, spirv, logger, prelegalization);
if (options->disassemble) if (options->disassemble)
SpirvToolsDisassemble(std::cout, spirv); SpirvToolsDisassemble(std::cout, spirv);

View File

@ -195,7 +195,7 @@ private:
// Header access & set methods // Header access & set methods
spirword_t magic() const { return spv[0]; } // return magic number spirword_t magic() const { return spv[0]; } // return magic number
spirword_t bound() const { return spv[3]; } // return Id bound from header spirword_t bound() const { return spv[3]; } // return Id bound from header
spirword_t bound(spirword_t b) { return spv[3] = b; }; spirword_t bound(spirword_t b) { return spv[3] = b; }
spirword_t genmagic() const { return spv[2]; } // generator magic spirword_t genmagic() const { return spv[2]; } // generator magic
spirword_t genmagic(spirword_t m) { return spv[2] = m; } spirword_t genmagic(spirword_t m) { return spv[2] = m; }
spirword_t schemaNum() const { return spv[4]; } // schema number from header spirword_t schemaNum() const { return spv[4]; } // schema number from header

View File

@ -103,7 +103,7 @@ void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& s
// Apply the SPIRV-Tools validator to generated SPIR-V. // Apply the SPIRV-Tools validator to generated SPIR-V.
void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
spv::SpvBuildLogger* logger) spv::SpvBuildLogger* logger, bool prelegalization)
{ {
// validate // validate
spv_context context = spvContextCreate(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); spv_context context = spvContextCreate(MapToSpirvToolsEnv(intermediate.getSpv(), logger));
@ -111,6 +111,7 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<
spv_diagnostic diagnostic = nullptr; spv_diagnostic diagnostic = nullptr;
spv_validator_options options = spvValidatorOptionsCreate(); spv_validator_options options = spvValidatorOptionsCreate();
spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets());
spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization);
spvValidateWithOptions(context, options, &binary, &diagnostic); spvValidateWithOptions(context, options, &binary, &diagnostic);
// report // report

View File

@ -66,7 +66,7 @@ void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& s
// Apply the SPIRV-Tools validator to generated SPIR-V. // Apply the SPIRV-Tools validator to generated SPIR-V.
void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
spv::SpvBuildLogger*); spv::SpvBuildLogger*, bool prelegalization);
// Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of // Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of
// legalizing HLSL SPIR-V. // legalizing HLSL SPIR-V.

View File

@ -648,6 +648,9 @@ static void GLSLstd450GetDebugNames(const char** names)
names[GLSLstd450InterpolateAtCentroid] = "InterpolateAtCentroid"; names[GLSLstd450InterpolateAtCentroid] = "InterpolateAtCentroid";
names[GLSLstd450InterpolateAtSample] = "InterpolateAtSample"; names[GLSLstd450InterpolateAtSample] = "InterpolateAtSample";
names[GLSLstd450InterpolateAtOffset] = "InterpolateAtOffset"; names[GLSLstd450InterpolateAtOffset] = "InterpolateAtOffset";
names[GLSLstd450NMin] = "NMin";
names[GLSLstd450NMax] = "NMax";
names[GLSLstd450NClamp] = "NClamp";
} }
#ifdef AMD_EXTENSIONS #ifdef AMD_EXTENSIONS
@ -731,6 +734,7 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV";
case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityMeshShadingNV: return "MeshShadingNV";
case CapabilityImageFootprintNV: return "ImageFootprintNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV";
case CapabilitySampleMaskOverrideCoverageNV:return "SampleMaskOverrideCoverageNV";
// NV Decorations // NV Decorations
case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; case DecorationOverrideCoverageNV: return "OverrideCoverageNV";

View File

@ -423,6 +423,10 @@ const char* BuiltInString(int builtIn)
case BuiltInMeshViewCountNV: return "MeshViewCountNV"; case BuiltInMeshViewCountNV: return "MeshViewCountNV";
case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV"; case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV";
#endif #endif
case BuiltInWarpsPerSMNV: return "WarpsPerSMNV";
case BuiltInSMCountNV: return "SMCountNV";
case BuiltInWarpIDNV: return "WarpIDNV";
case BuiltInSMIDNV: return "SMIDNV";
default: return "Bad"; default: return "Bad";
} }
@ -922,6 +926,7 @@ const char* CapabilityString(int info)
case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityMeshShadingNV: return "MeshShadingNV";
case CapabilityImageFootprintNV: return "ImageFootprintNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV";
// case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT
case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV";
#endif #endif
case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; case CapabilityFragmentDensityEXT: return "FragmentDensityEXT";
@ -948,11 +953,15 @@ const char* CapabilityString(int info)
case CapabilityVariablePointers: return "VariablePointers"; case CapabilityVariablePointers: return "VariablePointers";
case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV"; case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV";
case CapabilityShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV";
case CapabilityFragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT"; case CapabilityFragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT";
case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT";
case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT";
case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT";
case CapabilityShaderClockKHR: return "ShaderClockKHR";
default: return "Bad"; default: return "Bad";
} }
} }
@ -1342,6 +1351,8 @@ const char* OpcodeString(int op)
case 5012: return "OpFragmentFetchAMD"; case 5012: return "OpFragmentFetchAMD";
#endif #endif
case OpReadClockKHR: return "OpReadClockKHR";
case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE";
case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
@ -1362,6 +1373,8 @@ const char* OpcodeString(int op)
case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV";
case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV";
case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV";
case OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT";
case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT";
case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT";
case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT";
@ -2779,6 +2792,10 @@ void Parameterize()
InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'"); InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'");
InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'");
InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false);
InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'");
} }
}; // end spv namespace }; // end spv namespace

View File

@ -455,6 +455,7 @@ enum Decoration {
DecorationHlslCounterBufferGOOGLE = 5634, DecorationHlslCounterBufferGOOGLE = 5634,
DecorationHlslSemanticGOOGLE = 5635, DecorationHlslSemanticGOOGLE = 5635,
DecorationUserSemantic = 5635, DecorationUserSemantic = 5635,
DecorationUserTypeGOOGLE = 5636,
DecorationMax = 0x7fffffff, DecorationMax = 0x7fffffff,
}; };
@ -632,6 +633,7 @@ enum MemorySemanticsShift {
MemorySemanticsOutputMemoryKHRShift = 12, MemorySemanticsOutputMemoryKHRShift = 12,
MemorySemanticsMakeAvailableKHRShift = 13, MemorySemanticsMakeAvailableKHRShift = 13,
MemorySemanticsMakeVisibleKHRShift = 14, MemorySemanticsMakeVisibleKHRShift = 14,
MemorySemanticsVolatileShift = 15,
MemorySemanticsMax = 0x7fffffff, MemorySemanticsMax = 0x7fffffff,
}; };
@ -650,6 +652,7 @@ enum MemorySemanticsMask {
MemorySemanticsOutputMemoryKHRMask = 0x00001000, MemorySemanticsOutputMemoryKHRMask = 0x00001000,
MemorySemanticsMakeAvailableKHRMask = 0x00002000, MemorySemanticsMakeAvailableKHRMask = 0x00002000,
MemorySemanticsMakeVisibleKHRMask = 0x00004000, MemorySemanticsMakeVisibleKHRMask = 0x00004000,
MemorySemanticsVolatileMask = 0x00008000,
}; };
enum MemoryAccessShift { enum MemoryAccessShift {
@ -806,6 +809,7 @@ enum Capability {
CapabilityFragmentMaskAMD = 5010, CapabilityFragmentMaskAMD = 5010,
CapabilityStencilExportEXT = 5013, CapabilityStencilExportEXT = 5013,
CapabilityImageReadWriteLodAMD = 5015, CapabilityImageReadWriteLodAMD = 5015,
CapabilityShaderClockKHR = 5055,
CapabilitySampleMaskOverrideCoverageNV = 5249, CapabilitySampleMaskOverrideCoverageNV = 5249,
CapabilityGeometryShaderPassthroughNV = 5251, CapabilityGeometryShaderPassthroughNV = 5251,
CapabilityShaderViewportIndexLayerEXT = 5254, CapabilityShaderViewportIndexLayerEXT = 5254,
@ -843,6 +847,7 @@ enum Capability {
CapabilityFragmentShaderShadingRateInterlockEXT = 5372, CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
CapabilityShaderSMBuiltinsNV = 5373, CapabilityShaderSMBuiltinsNV = 5373,
CapabilityFragmentShaderPixelInterlockEXT = 5378, CapabilityFragmentShaderPixelInterlockEXT = 5378,
CapabilityDemoteToHelperInvocationEXT = 5379,
CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupShuffleINTEL = 5568,
CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupBufferBlockIOINTEL = 5569,
CapabilitySubgroupImageBlockIOINTEL = 5570, CapabilitySubgroupImageBlockIOINTEL = 5570,
@ -1215,6 +1220,7 @@ enum Op {
OpGroupSMaxNonUniformAMD = 5007, OpGroupSMaxNonUniformAMD = 5007,
OpFragmentMaskFetchAMD = 5011, OpFragmentMaskFetchAMD = 5011,
OpFragmentFetchAMD = 5012, OpFragmentFetchAMD = 5012,
OpReadClockKHR = 5056,
OpImageSampleFootprintNV = 5283, OpImageSampleFootprintNV = 5283,
OpGroupNonUniformPartitionNV = 5296, OpGroupNonUniformPartitionNV = 5296,
OpWritePackedPrimitiveIndices4x8NV = 5299, OpWritePackedPrimitiveIndices4x8NV = 5299,
@ -1231,6 +1237,8 @@ enum Op {
OpCooperativeMatrixLengthNV = 5362, OpCooperativeMatrixLengthNV = 5362,
OpBeginInvocationInterlockEXT = 5364, OpBeginInvocationInterlockEXT = 5364,
OpEndInvocationInterlockEXT = 5365, OpEndInvocationInterlockEXT = 5365,
OpDemoteToHelperInvocationEXT = 5380,
OpIsHelperInvocationEXT = 5381,
OpSubgroupShuffleINTEL = 5571, OpSubgroupShuffleINTEL = 5571,
OpSubgroupShuffleDownINTEL = 5572, OpSubgroupShuffleDownINTEL = 5572,
OpSubgroupShuffleUpINTEL = 5573, OpSubgroupShuffleUpINTEL = 5573,
@ -1745,6 +1753,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
@ -1759,6 +1768,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@ -1903,8 +1916,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
} }
} }
#endif /* SPV_ENABLE_UTILITY_CODE */ #endif /* SPV_ENABLE_UTILITY_CODE */

View File

@ -436,6 +436,6 @@ __inline void Block::addInstruction(std::unique_ptr<Instruction> inst)
parent.getParent().mapInstruction(raw_instruction); parent.getParent().mapInstruction(raw_instruction);
} }
}; // end spv namespace } // end spv namespace
#endif // spvIR_H #endif // spvIR_H

View File

@ -104,6 +104,7 @@ enum TOptions {
bool targetHlslFunctionality1 = false; bool targetHlslFunctionality1 = false;
bool SpvToolsDisassembler = false; bool SpvToolsDisassembler = false;
bool SpvToolsValidate = false; bool SpvToolsValidate = false;
bool NaNClamp = false;
// //
// Return codes from main/exit(). // Return codes from main/exit().
@ -522,6 +523,8 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
} else if (lowerword == "keep-uncalled" || // synonyms } else if (lowerword == "keep-uncalled" || // synonyms
lowerword == "ku") { lowerword == "ku") {
Options |= EOptionKeepUncalled; Options |= EOptionKeepUncalled;
} else if (lowerword == "nan-clamp") {
NaNClamp = true;
} else if (lowerword == "no-storage-format" || // synonyms } else if (lowerword == "no-storage-format" || // synonyms
lowerword == "nsf") { lowerword == "nsf") {
Options |= EOptionNoStorageFormat; Options |= EOptionNoStorageFormat;
@ -769,8 +772,17 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
Error("must provide -S when --stdin is given"); Error("must provide -S when --stdin is given");
// Make sure that -E is not specified alongside linking (which includes SPV generation) // Make sure that -E is not specified alongside linking (which includes SPV generation)
if ((Options & EOptionOutputPreprocessed) && (Options & EOptionLinkProgram)) // Or things that require linking
Error("can't use -E when linking is selected"); if (Options & EOptionOutputPreprocessed) {
if (Options & EOptionLinkProgram)
Error("can't use -E when linking is selected");
if (Options & EOptionDumpReflection)
Error("reflection requires linking, which can't be used when -E when is selected");
}
// reflection requires linking
if ((Options & EOptionDumpReflection) && !(Options & EOptionLinkProgram))
Error("reflection requires -l for linking");
// -o or -x makes no sense if there is no target binary // -o or -x makes no sense if there is no target binary
if (binaryFileName && (Options & EOptionSpv) == 0) if (binaryFileName && (Options & EOptionSpv) == 0)
@ -981,6 +993,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0);
shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0);
shader->setNanMinMaxClamp(NaNClamp);
shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]); shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]);
if (Options & EOptionHlslIoMapping) if (Options & EOptionHlslIoMapping)
@ -1508,7 +1521,7 @@ void usage()
" -l link all input files together to form a single module\n" " -l link all input files together to form a single module\n"
" -m memory leak mode\n" " -m memory leak mode\n"
" -o <file> save binary to <file>, requires a binary option (e.g., -V)\n" " -o <file> save binary to <file>, requires a binary option (e.g., -V)\n"
" -q dump reflection query database\n" " -q dump reflection query database; requires -l for linking\n"
" -r | --relaxed-errors" " -r | --relaxed-errors"
" relaxed GLSL semantic error-checking mode\n" " relaxed GLSL semantic error-checking mode\n"
" -s silence syntax and semantic error reporting\n" " -s silence syntax and semantic error reporting\n"
@ -1533,9 +1546,11 @@ void usage()
" works independently of source language\n" " works independently of source language\n"
" --hlsl-iomap perform IO mapping in HLSL register space\n" " --hlsl-iomap perform IO mapping in HLSL register space\n"
" --hlsl-enable-16bit-types allow 16-bit types in SPIR-V for HLSL\n" " --hlsl-enable-16bit-types allow 16-bit types in SPIR-V for HLSL\n"
" --hlsl-dx9-compatible interprets sampler declarations as a texture/sampler combo like DirectX9 would." " --hlsl-dx9-compatible interprets sampler declarations as a\n"
" texture/sampler combo like DirectX9 would.\n"
" --invert-y | --iy invert position.Y output in vertex shader\n" " --invert-y | --iy invert position.Y output in vertex shader\n"
" --keep-uncalled | --ku don't eliminate uncalled functions\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n"
" --nan-clamp favor non-NaN operand in min, max, and clamp\n"
" --no-storage-format | --nsf use Unknown image format\n" " --no-storage-format | --nsf use Unknown image format\n"
" --reflect-strict-array-suffix use strict array suffix rules when\n" " --reflect-strict-array-suffix use strict array suffix rules when\n"
" reflecting\n" " reflecting\n"

View File

@ -227,7 +227,7 @@ namespace {
} }
} }
else if (arg == "--version" || arg == "-V") { else if (arg == "--version" || arg == "-V") {
std::cout << basename(argv[0]) << " version 0.97 " << __DATE__ << " " << __TIME__ << std::endl; std::cout << basename(argv[0]) << " version 0.97" << std::endl;
exit(0); exit(0);
} else if (arg == "--input" || arg == "-i") { } else if (arg == "--input" || arg == "-i") {
// Collect input files // Collect input files

2
Test/310.frag Normal file → Executable file
View File

@ -58,8 +58,8 @@ void foo23()
b1 = mix(b2, b3, b); b1 = mix(b2, b3, b);
uvec3 um3 = mix(uvec3(i), uvec3(i), bvec3(b)); uvec3 um3 = mix(uvec3(i), uvec3(i), bvec3(b));
ivec4 im4 = mix(ivec4(i), ivec4(i), bvec4(b)); ivec4 im4 = mix(ivec4(i), ivec4(i), bvec4(b));
1 << mix(1u, 1u, false); // does not require folding
} }
layout(binding=3) uniform sampler2D s1; layout(binding=3) uniform sampler2D s1;
layout(binding=3) uniform sampler2D s2; // ERROR: overlapping bindings? Don't see that in the 310 spec. layout(binding=3) uniform sampler2D s2; // ERROR: overlapping bindings? Don't see that in the 310 spec.
highp layout(binding=2) uniform writeonly image2D i2D; highp layout(binding=2) uniform writeonly image2D i2D;

View File

@ -1,5 +1,17 @@
#version 320 es #version 320 es
float fX;
float fY;
void main() void main()
{ {
dFdx(fX);
dFdy(fY);
fwidth(fX);
dFdxCoarse(fX);
dFdyCoarse(fY);
fwidthCoarse(fX);
dFdxFine(fX);
dFdyFine(fY);
fwidthFine(fX);
} }

View File

@ -29,7 +29,6 @@ ERROR: 0:94: 'writeonly' : argument cannot drop memory qualifier when passed to
ERROR: 0:97: '' : memory qualifiers cannot be used on this type ERROR: 0:97: '' : memory qualifiers cannot be used on this type
ERROR: 0:98: '' : memory qualifiers cannot be used on this type ERROR: 0:98: '' : memory qualifiers cannot be used on this type
ERROR: 0:109: 'format' : image formats must match ERROR: 0:109: 'format' : image formats must match
ERROR: 0:110: 'restrict' : argument cannot drop memory qualifier when passed to formal parameter
ERROR: 0:110: 'format' : image formats must match ERROR: 0:110: 'format' : image formats must match
ERROR: 0:111: 'format' : image formats must match ERROR: 0:111: 'format' : image formats must match
ERROR: 0:114: 'image load-store format' : not supported with this profile: es ERROR: 0:114: 'image load-store format' : not supported with this profile: es
@ -87,7 +86,7 @@ WARNING: 0:238: '#define' : names containing consecutive underscores are reserve
ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group
ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier
ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier
ERROR: 86 compilation errors. No code generated. ERROR: 85 compilation errors. No code generated.
Shader version: 310 Shader version: 310

View File

@ -337,6 +337,16 @@ ERROR: node is still EOpNull!
0:60 'i' ( uniform mediump int) 0:60 'i' ( uniform mediump int)
0:60 Construct bvec4 ( temp 4-component vector of bool) 0:60 Construct bvec4 ( temp 4-component vector of bool)
0:60 'b' ( temp bool) 0:60 'b' ( temp bool)
0:61 left-shift ( temp int)
0:61 Constant:
0:61 1 (const int)
0:61 mix ( global uint)
0:61 Constant:
0:61 1 (const uint)
0:61 Constant:
0:61 1 (const uint)
0:61 Constant:
0:61 false (const bool)
0:98 Function Definition: foots( ( global void) 0:98 Function Definition: foots( ( global void)
0:98 Function Parameters: 0:98 Function Parameters:
0:100 Sequence 0:100 Sequence

View File

@ -72,8 +72,8 @@ ERROR: node is still EOpNull!
0:25 move second child to first child ( temp highp 4-component vector of float) 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 '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 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, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV 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 unsized 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:25 Constant: 0:25 Constant:
0:25 1 (const int) 0:25 1 (const int)
0:25 Constant: 0:25 Constant:
@ -82,8 +82,8 @@ ERROR: node is still EOpNull!
0:26 move second child to first child ( temp highp float) 0:26 move second child to first child ( temp highp float)
0:26 'ps' ( temp highp float) 0:26 'ps' ( temp highp float)
0:26 gl_PointSize: direct index for structure ( in highp float PointSize) 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, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV 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 unsized 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:26 Constant: 0:26 Constant:
0:26 1 (const int) 0:26 1 (const int)
0:26 Constant: 0:26 Constant:
@ -211,8 +211,8 @@ ERROR: node is still EOpNull!
0:114 move second child to first child ( temp highp float) 0:114 move second child to first child ( temp highp float)
0:114 'ps' ( temp highp float) 0:114 'ps' ( temp highp float)
0:114 gl_PointSize: direct index for structure ( in highp float PointSize) 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, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV 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 unsized 1-element 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:114 Constant: 0:114 Constant:
0:114 1 (const int) 0:114 1 (const int)
0:114 Constant: 0:114 Constant:
@ -442,8 +442,8 @@ ERROR: node is still EOpNull!
0:25 move second child to first child ( temp highp 4-component vector of float) 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 '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 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, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV 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 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:25 Constant: 0:25 Constant:
0:25 1 (const int) 0:25 1 (const int)
0:25 Constant: 0:25 Constant:
@ -452,8 +452,8 @@ ERROR: node is still EOpNull!
0:26 move second child to first child ( temp highp float) 0:26 move second child to first child ( temp highp float)
0:26 'ps' ( temp highp float) 0:26 'ps' ( temp highp float)
0:26 gl_PointSize: direct index for structure ( in highp float PointSize) 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, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV 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 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:26 Constant: 0:26 Constant:
0:26 1 (const int) 0:26 1 (const int)
0:26 Constant: 0:26 Constant:

View File

@ -76,8 +76,8 @@ ERROR: node is still EOpNull!
0:36 move second child to first child ( temp highp 4-component vector of float) 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 '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 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, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV 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 unsized 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:36 Constant: 0:36 Constant:
0:36 1 (const int) 0:36 1 (const int)
0:36 Constant: 0:36 Constant:
@ -86,8 +86,8 @@ ERROR: node is still EOpNull!
0:37 move second child to first child ( temp highp float) 0:37 move second child to first child ( temp highp float)
0:37 'ps' ( temp highp float) 0:37 'ps' ( temp highp float)
0:37 gl_PointSize: direct index for structure ( in highp float PointSize) 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, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV 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 unsized 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:37 Constant: 0:37 Constant:
0:37 1 (const int) 0:37 1 (const int)
0:37 Constant: 0:37 Constant:
@ -209,8 +209,8 @@ ERROR: node is still EOpNull!
0:36 move second child to first child ( temp highp 4-component vector of float) 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 '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 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, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV 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 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:36 Constant: 0:36 Constant:
0:36 1 (const int) 0:36 1 (const int)
0:36 Constant: 0:36 Constant:
@ -219,8 +219,8 @@ ERROR: node is still EOpNull!
0:37 move second child to first child ( temp highp float) 0:37 move second child to first child ( temp highp float)
0:37 'ps' ( temp highp float) 0:37 'ps' ( temp highp float)
0:37 gl_PointSize: direct index for structure ( in highp float PointSize) 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, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV 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 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:37 Constant: 0:37 Constant:
0:37 1 (const int) 0:37 1 (const int)
0:37 Constant: 0:37 Constant:

View File

@ -1,10 +1,43 @@
320.comp 320.comp
ERROR: 0:8: 'dFdx' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:9: 'dFdy' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:10: 'fwidth' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:11: 'dFdxCoarse' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:12: 'dFdyCoarse' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:13: 'fwidthCoarse' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:14: 'dFdxFine' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:15: 'dFdyFine' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 0:16: 'fwidthFine' : required extension not requested: GL_NV_compute_shader_derivatives
ERROR: 9 compilation errors. No code generated.
Shader version: 320 Shader version: 320
local_size = (1, 1, 1) local_size = (1, 1, 1)
0:? Sequence ERROR: node is still EOpNull!
0:3 Function Definition: main( ( global void) 0:6 Function Definition: main( ( global void)
0:3 Function Parameters: 0:6 Function Parameters:
0:8 Sequence
0:8 dPdx ( global highp float)
0:8 'fX' ( global highp float)
0:9 dPdy ( global highp float)
0:9 'fY' ( global highp float)
0:10 fwidth ( global highp float)
0:10 'fX' ( global highp float)
0:11 dPdxCoarse ( global highp float)
0:11 'fX' ( global highp float)
0:12 dPdyCoarse ( global highp float)
0:12 'fY' ( global highp float)
0:13 fwidthCoarse ( global highp float)
0:13 'fX' ( global highp float)
0:14 dPdxFine ( global highp float)
0:14 'fX' ( global highp float)
0:15 dPdyFine ( global highp float)
0:15 'fY' ( global highp float)
0:16 fwidthFine ( global highp float)
0:16 'fX' ( global highp float)
0:? Linker Objects 0:? Linker Objects
0:? 'fX' ( global highp float)
0:? 'fY' ( global highp float)
Linked compute stage: Linked compute stage:
@ -12,8 +45,29 @@ Linked compute stage:
Shader version: 320 Shader version: 320
local_size = (1, 1, 1) local_size = (1, 1, 1)
0:? Sequence ERROR: node is still EOpNull!
0:3 Function Definition: main( ( global void) 0:6 Function Definition: main( ( global void)
0:3 Function Parameters: 0:6 Function Parameters:
0:8 Sequence
0:8 dPdx ( global highp float)
0:8 'fX' ( global highp float)
0:9 dPdy ( global highp float)
0:9 'fY' ( global highp float)
0:10 fwidth ( global highp float)
0:10 'fX' ( global highp float)
0:11 dPdxCoarse ( global highp float)
0:11 'fX' ( global highp float)
0:12 dPdyCoarse ( global highp float)
0:12 'fY' ( global highp float)
0:13 fwidthCoarse ( global highp float)
0:13 'fX' ( global highp float)
0:14 dPdxFine ( global highp float)
0:14 'fX' ( global highp float)
0:15 dPdyFine ( global highp float)
0:15 'fY' ( global highp float)
0:16 fwidthFine ( global highp float)
0:16 'fX' ( global highp float)
0:? Linker Objects 0:? Linker Objects
0:? 'fX' ( global highp float)
0:? 'fY' ( global highp float)

View File

@ -66,8 +66,8 @@ ERROR: node is still EOpNull!
0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 move second child to first child ( temp highp 4-component vector of float)
0:23 'p' ( temp highp 4-component vector of float) 0:23 'p' ( temp highp 4-component vector of float)
0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:23 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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:23 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:23 '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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:23 '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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:23 Constant: 0:23 Constant:
0:23 1 (const int) 0:23 1 (const int)
0:23 Constant: 0:23 Constant:
@ -76,8 +76,8 @@ ERROR: node is still EOpNull!
0:24 move second child to first child ( temp highp float) 0:24 move second child to first child ( temp highp float)
0:24 'ps' ( temp highp float) 0:24 'ps' ( temp highp float)
0:24 gl_PointSize: direct index for structure ( in highp float PointSize) 0:24 gl_PointSize: direct index for structure ( in highp float PointSize)
0:24 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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:24 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:24 '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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:24 '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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 Constant: 0:24 Constant:
@ -196,8 +196,8 @@ ERROR: node is still EOpNull!
0:104 move second child to first child ( temp highp float) 0:104 move second child to first child ( temp highp float)
0:104 'ps' ( temp highp float) 0:104 'ps' ( temp highp float)
0:104 gl_PointSize: direct index for structure ( in highp float PointSize) 0:104 gl_PointSize: direct index for structure ( in highp float PointSize)
0:104 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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:104 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:104 '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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:104 '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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:104 Constant: 0:104 Constant:
0:104 1 (const int) 0:104 1 (const int)
0:104 Constant: 0:104 Constant:
@ -424,8 +424,8 @@ ERROR: node is still EOpNull!
0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 move second child to first child ( temp highp 4-component vector of float)
0:23 'p' ( temp highp 4-component vector of float) 0:23 'p' ( temp highp 4-component vector of float)
0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:23 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:23 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:23 '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:23 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:23 Constant: 0:23 Constant:
0:23 1 (const int) 0:23 1 (const int)
0:23 Constant: 0:23 Constant:
@ -434,8 +434,8 @@ ERROR: node is still EOpNull!
0:24 move second child to first child ( temp highp float) 0:24 move second child to first child ( temp highp float)
0:24 'ps' ( temp highp float) 0:24 'ps' ( temp highp float)
0:24 gl_PointSize: direct index for structure ( in highp float PointSize) 0:24 gl_PointSize: direct index for structure ( in highp float PointSize)
0:24 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:24 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:24 '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:24 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 Constant: 0:24 Constant:

View File

@ -66,8 +66,8 @@ ERROR: node is still EOpNull!
0:32 move second child to first child ( temp highp 4-component vector of float) 0:32 move second child to first child ( temp highp 4-component vector of float)
0:32 'p' ( temp highp 4-component vector of float) 0:32 'p' ( temp highp 4-component vector of float)
0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:32 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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:32 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:32 '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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:32 '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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:32 Constant: 0:32 Constant:
0:32 1 (const int) 0:32 1 (const int)
0:32 Constant: 0:32 Constant:
@ -76,8 +76,8 @@ ERROR: node is still EOpNull!
0:33 move second child to first child ( temp highp float) 0:33 move second child to first child ( temp highp float)
0:33 'ps' ( temp highp float) 0:33 'ps' ( temp highp float)
0:33 gl_PointSize: direct index for structure ( in highp float PointSize) 0:33 gl_PointSize: direct index for structure ( in highp float PointSize)
0:33 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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:33 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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:33 '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 unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) 0:33 '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 SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:33 Constant: 0:33 Constant:
0:33 1 (const int) 0:33 1 (const int)
0:33 Constant: 0:33 Constant:
@ -184,8 +184,8 @@ ERROR: node is still EOpNull!
0:32 move second child to first child ( temp highp 4-component vector of float) 0:32 move second child to first child ( temp highp 4-component vector of float)
0:32 'p' ( temp highp 4-component vector of float) 0:32 'p' ( temp highp 4-component vector of float)
0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) 0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:32 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:32 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:32 '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:32 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:32 Constant: 0:32 Constant:
0:32 1 (const int) 0:32 1 (const int)
0:32 Constant: 0:32 Constant:
@ -194,8 +194,8 @@ ERROR: node is still EOpNull!
0:33 move second child to first child ( temp highp float) 0:33 move second child to first child ( temp highp float)
0:33 'ps' ( temp highp float) 0:33 'ps' ( temp highp float)
0:33 gl_PointSize: direct index for structure ( in highp float PointSize) 0:33 gl_PointSize: direct index for structure ( in highp float PointSize)
0:33 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:33 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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:33 '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:33 '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 SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
0:33 Constant: 0:33 Constant:
0:33 1 (const int) 0:33 1 (const int)
0:33 Constant: 0:33 Constant:

View File

@ -9,17 +9,17 @@ local_size = (1, 1, 1)
0:? 'bool_init' ( const bool) 0:? 'bool_init' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'int8_t_init' ( const int8_t) 0:? 'int8_t_init' ( const int8_t)
0:? -1 (const int) 0:? -1 (const int8_t)
0:? 'int16_t_init' ( const int16_t) 0:? 'int16_t_init' ( const int16_t)
0:? -2 (const int) 0:? -2 (const int16_t)
0:? 'int32_t_init' ( const int) 0:? 'int32_t_init' ( const int)
0:? -3 (const int) 0:? -3 (const int)
0:? 'int64_t_init' ( const int64_t) 0:? 'int64_t_init' ( const int64_t)
0:? -4 (const int64_t) 0:? -4 (const int64_t)
0:? 'uint8_t_init' ( const uint8_t) 0:? 'uint8_t_init' ( const uint8_t)
0:? 1 (const int) 0:? 1 (const uint8_t)
0:? 'uint16_t_init' ( const uint16_t) 0:? 'uint16_t_init' ( const uint16_t)
0:? 2 (const int) 0:? 2 (const uint16_t)
0:? 'uint32_t_init' ( const uint) 0:? 'uint32_t_init' ( const uint)
0:? 3 (const uint) 0:? 3 (const uint)
0:? 'uint64_t_init' ( const uint64_t) 0:? 'uint64_t_init' ( const uint64_t)
@ -33,17 +33,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_bool' ( const bool) 0:? 'bool_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'int8_t_to_bool' ( const bool) 0:? 'int8_t_to_bool' ( const bool)
0:? -1 (const int) 0:? true (const bool)
0:? 'int16_t_to_bool' ( const bool) 0:? 'int16_t_to_bool' ( const bool)
0:? -2 (const int) 0:? true (const bool)
0:? 'int32_t_to_bool' ( const bool) 0:? 'int32_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'int64_t_to_bool' ( const bool) 0:? 'int64_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'uint8_t_to_bool' ( const bool) 0:? 'uint8_t_to_bool' ( const bool)
0:? 1 (const int) 0:? true (const bool)
0:? 'uint16_t_to_bool' ( const bool) 0:? 'uint16_t_to_bool' ( const bool)
0:? 2 (const int) 0:? true (const bool)
0:? 'uint32_t_to_bool' ( const bool) 0:? 'uint32_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'uint64_t_to_bool' ( const bool) 0:? 'uint64_t_to_bool' ( const bool)
@ -55,53 +55,53 @@ local_size = (1, 1, 1)
0:? 'float64_t_to_bool' ( const bool) 0:? 'float64_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'bool_to_int8_t' ( const int8_t) 0:? 'bool_to_int8_t' ( const int8_t)
0:? true (const bool) 0:? 1 (const int8_t)
0:? 'int8_t_to_int8_t' ( const int8_t) 0:? 'int8_t_to_int8_t' ( const int8_t)
0:? -1 (const int) 0:? -1 (const int8_t)
0:? 'int16_t_to_int8_t' ( const int8_t) 0:? 'int16_t_to_int8_t' ( const int8_t)
0:? -2 (const int) 0:? -2 (const int8_t)
0:? 'int32_t_to_int8_t' ( const int8_t) 0:? 'int32_t_to_int8_t' ( const int8_t)
0:? -3 (const int) 0:? -3 (const int8_t)
0:? 'int64_t_to_int8_t' ( const int8_t) 0:? 'int64_t_to_int8_t' ( const int8_t)
0:? -4 (const int64_t) 0:? -4 (const int8_t)
0:? 'uint8_t_to_int8_t' ( const int8_t) 0:? 'uint8_t_to_int8_t' ( const int8_t)
0:? 1 (const int) 0:? 1 (const int8_t)
0:? 'uint16_t_to_int8_t' ( const int8_t) 0:? 'uint16_t_to_int8_t' ( const int8_t)
0:? 2 (const int) 0:? 2 (const int8_t)
0:? 'uint32_t_to_int8_t' ( const int8_t) 0:? 'uint32_t_to_int8_t' ( const int8_t)
0:? 3 (const uint) 0:? 3 (const int8_t)
0:? 'uint64_t_to_int8_t' ( const int8_t) 0:? 'uint64_t_to_int8_t' ( const int8_t)
0:? 4 (const uint64_t) 0:? 4 (const int8_t)
0:? 'float16_t_to_int8_t' ( const int8_t) 0:? 'float16_t_to_int8_t' ( const int8_t)
0:? 42.000000 0:? 42 (const int8_t)
0:? 'float32_t_to_int8_t' ( const int8_t) 0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13.000000 0:? 13 (const int8_t)
0:? 'float64_t_to_int8_t' ( const int8_t) 0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4.000000 0:? -4 (const int8_t)
0:? 'bool_to_int16_t' ( const int16_t) 0:? 'bool_to_int16_t' ( const int16_t)
0:? true (const bool) 0:? 1 (const int16_t)
0:? 'int8_t_to_int16_t' ( const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t)
0:? -1 (const int) 0:? -1 (const int16_t)
0:? 'int16_t_to_int16_t' ( const int16_t) 0:? 'int16_t_to_int16_t' ( const int16_t)
0:? -2 (const int) 0:? -2 (const int16_t)
0:? 'int32_t_to_int16_t' ( const int16_t) 0:? 'int32_t_to_int16_t' ( const int16_t)
0:? -3 (const int) 0:? -3 (const int16_t)
0:? 'int64_t_to_int16_t' ( const int16_t) 0:? 'int64_t_to_int16_t' ( const int16_t)
0:? -4 (const int64_t) 0:? -4 (const int16_t)
0:? 'uint8_t_to_int16_t' ( const int16_t) 0:? 'uint8_t_to_int16_t' ( const int16_t)
0:? 1 (const int) 0:? 1 (const int16_t)
0:? 'uint16_t_to_int16_t' ( const int16_t) 0:? 'uint16_t_to_int16_t' ( const int16_t)
0:? 2 (const int) 0:? 2 (const int16_t)
0:? 'uint32_t_to_int16_t' ( const int16_t) 0:? 'uint32_t_to_int16_t' ( const int16_t)
0:? 3 (const uint) 0:? 3 (const int16_t)
0:? 'uint64_t_to_int16_t' ( const int16_t) 0:? 'uint64_t_to_int16_t' ( const int16_t)
0:? 4 (const uint64_t) 0:? 4 (const int16_t)
0:? 'float16_t_to_int16_t' ( const int16_t) 0:? 'float16_t_to_int16_t' ( const int16_t)
0:? 42.000000 0:? 42 (const int16_t)
0:? 'float32_t_to_int16_t' ( const int16_t) 0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13.000000 0:? 13 (const int16_t)
0:? 'float64_t_to_int16_t' ( const int16_t) 0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4.000000 0:? -4 (const int16_t)
0:? 'bool_to_int32_t' ( const int) 0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int) 0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int) 0:? 'int8_t_to_int32_t' ( const int)
@ -129,17 +129,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_int64_t' ( const int64_t) 0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t) 0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t)
0:? -1 (const int) 0:? -1 (const int64_t)
0:? 'int16_t_to_int64_t' ( const int64_t) 0:? 'int16_t_to_int64_t' ( const int64_t)
0:? -2 (const int) 0:? -2 (const int64_t)
0:? 'int32_t_to_int64_t' ( const int64_t) 0:? 'int32_t_to_int64_t' ( const int64_t)
0:? -3 (const int64_t) 0:? -3 (const int64_t)
0:? 'int64_t_to_int64_t' ( const int64_t) 0:? 'int64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t) 0:? -4 (const int64_t)
0:? 'uint8_t_to_int64_t' ( const int64_t) 0:? 'uint8_t_to_int64_t' ( const int64_t)
0:? 1 (const int) 0:? 1 (const int64_t)
0:? 'uint16_t_to_int64_t' ( const int64_t) 0:? 'uint16_t_to_int64_t' ( const int64_t)
0:? 2 (const int) 0:? 2 (const int64_t)
0:? 'uint32_t_to_int64_t' ( const int64_t) 0:? 'uint32_t_to_int64_t' ( const int64_t)
0:? 3 (const int64_t) 0:? 3 (const int64_t)
0:? 'uint64_t_to_int64_t' ( const int64_t) 0:? 'uint64_t_to_int64_t' ( const int64_t)
@ -151,67 +151,67 @@ local_size = (1, 1, 1)
0:? 'float64_t_to_int64_t' ( 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:? 'bool_to_uint8_t' ( const uint8_t)
0:? true (const bool) 0:? 1 (const uint8_t)
0:? 'int8_t_to_uint8_t' ( const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t)
0:? -1 (const int) 0:? 255 (const uint8_t)
0:? 'int16_t_to_uint8_t' ( const uint8_t) 0:? 'int16_t_to_uint8_t' ( const uint8_t)
0:? -2 (const int) 0:? 254 (const uint8_t)
0:? 'int32_t_to_uint8_t' ( const uint8_t) 0:? 'int32_t_to_uint8_t' ( const uint8_t)
0:? -3 (const int) 0:? 253 (const uint8_t)
0:? 'int64_t_to_uint8_t' ( const uint8_t) 0:? 'int64_t_to_uint8_t' ( const uint8_t)
0:? -4 (const int64_t) 0:? 252 (const uint8_t)
0:? 'uint8_t_to_uint8_t' ( const uint8_t) 0:? 'uint8_t_to_uint8_t' ( const uint8_t)
0:? 1 (const int) 0:? 1 (const uint8_t)
0:? 'uint16_t_to_uint8_t' ( const uint8_t) 0:? 'uint16_t_to_uint8_t' ( const uint8_t)
0:? 2 (const int) 0:? 2 (const uint8_t)
0:? 'uint32_t_to_uint8_t' ( const uint8_t) 0:? 'uint32_t_to_uint8_t' ( const uint8_t)
0:? 3 (const uint) 0:? 3 (const uint8_t)
0:? 'uint64_t_to_uint8_t' ( const uint8_t) 0:? 'uint64_t_to_uint8_t' ( const uint8_t)
0:? 4 (const uint64_t) 0:? 4 (const uint8_t)
0:? 'float16_t_to_uint8_t' ( const uint8_t) 0:? 'float16_t_to_uint8_t' ( const uint8_t)
0:? 42.000000 0:? 42 (const uint8_t)
0:? 'float32_t_to_uint8_t' ( const uint8_t) 0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13.000000 0:? 13 (const uint8_t)
0:? 'float64_t_to_uint8_t' ( const uint8_t) 0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? -4.000000 0:? 252 (const uint8_t)
0:? 'bool_to_uint16_t' ( const uint16_t) 0:? 'bool_to_uint16_t' ( const uint16_t)
0:? true (const bool) 0:? 1 (const uint16_t)
0:? 'int8_t_to_uint16_t' ( const uint16_t) 0:? 'int8_t_to_uint16_t' ( const uint16_t)
0:? -1 (const int) 0:? 65535 (const uint16_t)
0:? 'int16_t_to_uint16_t' ( const uint16_t) 0:? 'int16_t_to_uint16_t' ( const uint16_t)
0:? -2 (const int) 0:? 65534 (const uint16_t)
0:? 'int32_t_to_uint16_t' ( const uint16_t) 0:? 'int32_t_to_uint16_t' ( const uint16_t)
0:? -3 (const int) 0:? 65533 (const uint16_t)
0:? 'int64_t_to_uint16_t' ( const uint16_t) 0:? 'int64_t_to_uint16_t' ( const uint16_t)
0:? -4 (const int64_t) 0:? 65532 (const uint16_t)
0:? 'uint8_t_to_uint16_t' ( const uint16_t) 0:? 'uint8_t_to_uint16_t' ( const uint16_t)
0:? 1 (const int) 0:? 1 (const uint16_t)
0:? 'uint16_t_to_uint16_t' ( const uint16_t) 0:? 'uint16_t_to_uint16_t' ( const uint16_t)
0:? 2 (const int) 0:? 2 (const uint16_t)
0:? 'uint32_t_to_uint16_t' ( const uint16_t) 0:? 'uint32_t_to_uint16_t' ( const uint16_t)
0:? 3 (const uint) 0:? 3 (const uint16_t)
0:? 'uint64_t_to_uint16_t' ( const uint16_t) 0:? 'uint64_t_to_uint16_t' ( const uint16_t)
0:? 4 (const uint64_t) 0:? 4 (const uint16_t)
0:? 'float16_t_to_uint16_t' ( const uint16_t) 0:? 'float16_t_to_uint16_t' ( const uint16_t)
0:? 42.000000 0:? 42 (const uint16_t)
0:? 'float32_t_to_uint16_t' ( const uint16_t) 0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13.000000 0:? 13 (const uint16_t)
0:? 'float64_t_to_uint16_t' ( const uint16_t) 0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? -4.000000 0:? 65532 (const uint16_t)
0:? 'bool_to_uint32_t' ( const uint) 0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint) 0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint) 0:? 'int8_t_to_uint32_t' ( const uint)
0:? -1 (const int) 0:? 4294967295 (const uint)
0:? 'int16_t_to_uint32_t' ( const uint) 0:? 'int16_t_to_uint32_t' ( const uint)
0:? -2 (const int) 0:? 4294967294 (const uint)
0:? 'int32_t_to_uint32_t' ( const uint) 0:? 'int32_t_to_uint32_t' ( const uint)
0:? 4294967293 (const uint) 0:? 4294967293 (const uint)
0:? 'int64_t_to_uint32_t' ( const uint) 0:? 'int64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint) 0:? 4294967292 (const uint)
0:? 'uint8_t_to_uint32_t' ( const uint) 0:? 'uint8_t_to_uint32_t' ( const uint)
0:? 1 (const int) 0:? 1 (const uint)
0:? 'uint16_t_to_uint32_t' ( const uint) 0:? 'uint16_t_to_uint32_t' ( const uint)
0:? 2 (const int) 0:? 2 (const uint)
0:? 'uint32_t_to_uint32_t' ( const uint) 0:? 'uint32_t_to_uint32_t' ( const uint)
0:? 3 (const uint) 0:? 3 (const uint)
0:? 'uint64_t_to_uint32_t' ( const uint) 0:? 'uint64_t_to_uint32_t' ( const uint)
@ -225,17 +225,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_uint64_t' ( const uint64_t) 0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t) 0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t) 0:? 'int8_t_to_uint64_t' ( const uint64_t)
0:? -1 (const int) 0:? 18446744073709551615 (const uint64_t)
0:? 'int16_t_to_uint64_t' ( const uint64_t) 0:? 'int16_t_to_uint64_t' ( const uint64_t)
0:? -2 (const int) 0:? 18446744073709551614 (const uint64_t)
0:? 'int32_t_to_uint64_t' ( const uint64_t) 0:? 'int32_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551613 (const uint64_t) 0:? 18446744073709551613 (const uint64_t)
0:? 'int64_t_to_uint64_t' ( const uint64_t) 0:? 'int64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t) 0:? 18446744073709551612 (const uint64_t)
0:? 'uint8_t_to_uint64_t' ( const uint64_t) 0:? 'uint8_t_to_uint64_t' ( const uint64_t)
0:? 1 (const int) 0:? 1 (const uint64_t)
0:? 'uint16_t_to_uint64_t' ( const uint64_t) 0:? 'uint16_t_to_uint64_t' ( const uint64_t)
0:? 2 (const int) 0:? 2 (const uint64_t)
0:? 'uint32_t_to_uint64_t' ( const uint64_t) 0:? 'uint32_t_to_uint64_t' ( const uint64_t)
0:? 3 (const uint64_t) 0:? 3 (const uint64_t)
0:? 'uint64_t_to_uint64_t' ( const uint64_t) 0:? 'uint64_t_to_uint64_t' ( const uint64_t)
@ -249,17 +249,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_float16_t' ( const float16_t) 0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000 0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t) 0:? 'int8_t_to_float16_t' ( const float16_t)
0:? -1 (const int) 0:? -1.000000
0:? 'int16_t_to_float16_t' ( const float16_t) 0:? 'int16_t_to_float16_t' ( const float16_t)
0:? -2 (const int) 0:? -2.000000
0:? 'int32_t_to_float16_t' ( const float16_t) 0:? 'int32_t_to_float16_t' ( const float16_t)
0:? -3.000000 0:? -3.000000
0:? 'int64_t_to_float16_t' ( const float16_t) 0:? 'int64_t_to_float16_t' ( const float16_t)
0:? -4.000000 0:? -4.000000
0:? 'uint8_t_to_float16_t' ( const float16_t) 0:? 'uint8_t_to_float16_t' ( const float16_t)
0:? 1 (const int) 0:? 1.000000
0:? 'uint16_t_to_float16_t' ( const float16_t) 0:? 'uint16_t_to_float16_t' ( const float16_t)
0:? 2 (const int) 0:? 2.000000
0:? 'uint32_t_to_float16_t' ( const float16_t) 0:? 'uint32_t_to_float16_t' ( const float16_t)
0:? 3.000000 0:? 3.000000
0:? 'uint64_t_to_float16_t' ( const float16_t) 0:? 'uint64_t_to_float16_t' ( const float16_t)
@ -273,17 +273,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_float32_t' ( const float) 0:? 'bool_to_float32_t' ( const float)
0:? 1.000000 0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float) 0:? 'int8_t_to_float32_t' ( const float)
0:? -1 (const int) 0:? -1.000000
0:? 'int16_t_to_float32_t' ( const float) 0:? 'int16_t_to_float32_t' ( const float)
0:? -2 (const int) 0:? -2.000000
0:? 'int32_t_to_float32_t' ( const float) 0:? 'int32_t_to_float32_t' ( const float)
0:? -3.000000 0:? -3.000000
0:? 'int64_t_to_float32_t' ( const float) 0:? 'int64_t_to_float32_t' ( const float)
0:? -4.000000 0:? -4.000000
0:? 'uint8_t_to_float32_t' ( const float) 0:? 'uint8_t_to_float32_t' ( const float)
0:? 1 (const int) 0:? 1.000000
0:? 'uint16_t_to_float32_t' ( const float) 0:? 'uint16_t_to_float32_t' ( const float)
0:? 2 (const int) 0:? 2.000000
0:? 'uint32_t_to_float32_t' ( const float) 0:? 'uint32_t_to_float32_t' ( const float)
0:? 3.000000 0:? 3.000000
0:? 'uint64_t_to_float32_t' ( const float) 0:? 'uint64_t_to_float32_t' ( const float)
@ -297,17 +297,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_float64_t' ( const double) 0:? 'bool_to_float64_t' ( const double)
0:? 1.000000 0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double) 0:? 'int8_t_to_float64_t' ( const double)
0:? -1 (const int) 0:? -1.000000
0:? 'int16_t_to_float64_t' ( const double) 0:? 'int16_t_to_float64_t' ( const double)
0:? -2 (const int) 0:? -2.000000
0:? 'int32_t_to_float64_t' ( const double) 0:? 'int32_t_to_float64_t' ( const double)
0:? -3.000000 0:? -3.000000
0:? 'int64_t_to_float64_t' ( const double) 0:? 'int64_t_to_float64_t' ( const double)
0:? -4.000000 0:? -4.000000
0:? 'uint8_t_to_float64_t' ( const double) 0:? 'uint8_t_to_float64_t' ( const double)
0:? 1 (const int) 0:? 1.000000
0:? 'uint16_t_to_float64_t' ( const double) 0:? 'uint16_t_to_float64_t' ( const double)
0:? 2 (const int) 0:? 2.000000
0:? 'uint32_t_to_float64_t' ( const double) 0:? 'uint32_t_to_float64_t' ( const double)
0:? 3.000000 0:? 3.000000
0:? 'uint64_t_to_float64_t' ( const double) 0:? 'uint64_t_to_float64_t' ( const double)
@ -333,17 +333,17 @@ local_size = (1, 1, 1)
0:? 'bool_init' ( const bool) 0:? 'bool_init' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'int8_t_init' ( const int8_t) 0:? 'int8_t_init' ( const int8_t)
0:? -1 (const int) 0:? -1 (const int8_t)
0:? 'int16_t_init' ( const int16_t) 0:? 'int16_t_init' ( const int16_t)
0:? -2 (const int) 0:? -2 (const int16_t)
0:? 'int32_t_init' ( const int) 0:? 'int32_t_init' ( const int)
0:? -3 (const int) 0:? -3 (const int)
0:? 'int64_t_init' ( const int64_t) 0:? 'int64_t_init' ( const int64_t)
0:? -4 (const int64_t) 0:? -4 (const int64_t)
0:? 'uint8_t_init' ( const uint8_t) 0:? 'uint8_t_init' ( const uint8_t)
0:? 1 (const int) 0:? 1 (const uint8_t)
0:? 'uint16_t_init' ( const uint16_t) 0:? 'uint16_t_init' ( const uint16_t)
0:? 2 (const int) 0:? 2 (const uint16_t)
0:? 'uint32_t_init' ( const uint) 0:? 'uint32_t_init' ( const uint)
0:? 3 (const uint) 0:? 3 (const uint)
0:? 'uint64_t_init' ( const uint64_t) 0:? 'uint64_t_init' ( const uint64_t)
@ -357,17 +357,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_bool' ( const bool) 0:? 'bool_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'int8_t_to_bool' ( const bool) 0:? 'int8_t_to_bool' ( const bool)
0:? -1 (const int) 0:? true (const bool)
0:? 'int16_t_to_bool' ( const bool) 0:? 'int16_t_to_bool' ( const bool)
0:? -2 (const int) 0:? true (const bool)
0:? 'int32_t_to_bool' ( const bool) 0:? 'int32_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'int64_t_to_bool' ( const bool) 0:? 'int64_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'uint8_t_to_bool' ( const bool) 0:? 'uint8_t_to_bool' ( const bool)
0:? 1 (const int) 0:? true (const bool)
0:? 'uint16_t_to_bool' ( const bool) 0:? 'uint16_t_to_bool' ( const bool)
0:? 2 (const int) 0:? true (const bool)
0:? 'uint32_t_to_bool' ( const bool) 0:? 'uint32_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'uint64_t_to_bool' ( const bool) 0:? 'uint64_t_to_bool' ( const bool)
@ -379,53 +379,53 @@ local_size = (1, 1, 1)
0:? 'float64_t_to_bool' ( const bool) 0:? 'float64_t_to_bool' ( const bool)
0:? true (const bool) 0:? true (const bool)
0:? 'bool_to_int8_t' ( const int8_t) 0:? 'bool_to_int8_t' ( const int8_t)
0:? true (const bool) 0:? 1 (const int8_t)
0:? 'int8_t_to_int8_t' ( const int8_t) 0:? 'int8_t_to_int8_t' ( const int8_t)
0:? -1 (const int) 0:? -1 (const int8_t)
0:? 'int16_t_to_int8_t' ( const int8_t) 0:? 'int16_t_to_int8_t' ( const int8_t)
0:? -2 (const int) 0:? -2 (const int8_t)
0:? 'int32_t_to_int8_t' ( const int8_t) 0:? 'int32_t_to_int8_t' ( const int8_t)
0:? -3 (const int) 0:? -3 (const int8_t)
0:? 'int64_t_to_int8_t' ( const int8_t) 0:? 'int64_t_to_int8_t' ( const int8_t)
0:? -4 (const int64_t) 0:? -4 (const int8_t)
0:? 'uint8_t_to_int8_t' ( const int8_t) 0:? 'uint8_t_to_int8_t' ( const int8_t)
0:? 1 (const int) 0:? 1 (const int8_t)
0:? 'uint16_t_to_int8_t' ( const int8_t) 0:? 'uint16_t_to_int8_t' ( const int8_t)
0:? 2 (const int) 0:? 2 (const int8_t)
0:? 'uint32_t_to_int8_t' ( const int8_t) 0:? 'uint32_t_to_int8_t' ( const int8_t)
0:? 3 (const uint) 0:? 3 (const int8_t)
0:? 'uint64_t_to_int8_t' ( const int8_t) 0:? 'uint64_t_to_int8_t' ( const int8_t)
0:? 4 (const uint64_t) 0:? 4 (const int8_t)
0:? 'float16_t_to_int8_t' ( const int8_t) 0:? 'float16_t_to_int8_t' ( const int8_t)
0:? 42.000000 0:? 42 (const int8_t)
0:? 'float32_t_to_int8_t' ( const int8_t) 0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13.000000 0:? 13 (const int8_t)
0:? 'float64_t_to_int8_t' ( const int8_t) 0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4.000000 0:? -4 (const int8_t)
0:? 'bool_to_int16_t' ( const int16_t) 0:? 'bool_to_int16_t' ( const int16_t)
0:? true (const bool) 0:? 1 (const int16_t)
0:? 'int8_t_to_int16_t' ( const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t)
0:? -1 (const int) 0:? -1 (const int16_t)
0:? 'int16_t_to_int16_t' ( const int16_t) 0:? 'int16_t_to_int16_t' ( const int16_t)
0:? -2 (const int) 0:? -2 (const int16_t)
0:? 'int32_t_to_int16_t' ( const int16_t) 0:? 'int32_t_to_int16_t' ( const int16_t)
0:? -3 (const int) 0:? -3 (const int16_t)
0:? 'int64_t_to_int16_t' ( const int16_t) 0:? 'int64_t_to_int16_t' ( const int16_t)
0:? -4 (const int64_t) 0:? -4 (const int16_t)
0:? 'uint8_t_to_int16_t' ( const int16_t) 0:? 'uint8_t_to_int16_t' ( const int16_t)
0:? 1 (const int) 0:? 1 (const int16_t)
0:? 'uint16_t_to_int16_t' ( const int16_t) 0:? 'uint16_t_to_int16_t' ( const int16_t)
0:? 2 (const int) 0:? 2 (const int16_t)
0:? 'uint32_t_to_int16_t' ( const int16_t) 0:? 'uint32_t_to_int16_t' ( const int16_t)
0:? 3 (const uint) 0:? 3 (const int16_t)
0:? 'uint64_t_to_int16_t' ( const int16_t) 0:? 'uint64_t_to_int16_t' ( const int16_t)
0:? 4 (const uint64_t) 0:? 4 (const int16_t)
0:? 'float16_t_to_int16_t' ( const int16_t) 0:? 'float16_t_to_int16_t' ( const int16_t)
0:? 42.000000 0:? 42 (const int16_t)
0:? 'float32_t_to_int16_t' ( const int16_t) 0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13.000000 0:? 13 (const int16_t)
0:? 'float64_t_to_int16_t' ( const int16_t) 0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4.000000 0:? -4 (const int16_t)
0:? 'bool_to_int32_t' ( const int) 0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int) 0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int) 0:? 'int8_t_to_int32_t' ( const int)
@ -453,17 +453,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_int64_t' ( const int64_t) 0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t) 0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t)
0:? -1 (const int) 0:? -1 (const int64_t)
0:? 'int16_t_to_int64_t' ( const int64_t) 0:? 'int16_t_to_int64_t' ( const int64_t)
0:? -2 (const int) 0:? -2 (const int64_t)
0:? 'int32_t_to_int64_t' ( const int64_t) 0:? 'int32_t_to_int64_t' ( const int64_t)
0:? -3 (const int64_t) 0:? -3 (const int64_t)
0:? 'int64_t_to_int64_t' ( const int64_t) 0:? 'int64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t) 0:? -4 (const int64_t)
0:? 'uint8_t_to_int64_t' ( const int64_t) 0:? 'uint8_t_to_int64_t' ( const int64_t)
0:? 1 (const int) 0:? 1 (const int64_t)
0:? 'uint16_t_to_int64_t' ( const int64_t) 0:? 'uint16_t_to_int64_t' ( const int64_t)
0:? 2 (const int) 0:? 2 (const int64_t)
0:? 'uint32_t_to_int64_t' ( const int64_t) 0:? 'uint32_t_to_int64_t' ( const int64_t)
0:? 3 (const int64_t) 0:? 3 (const int64_t)
0:? 'uint64_t_to_int64_t' ( const int64_t) 0:? 'uint64_t_to_int64_t' ( const int64_t)
@ -475,67 +475,67 @@ local_size = (1, 1, 1)
0:? 'float64_t_to_int64_t' ( 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:? 'bool_to_uint8_t' ( const uint8_t)
0:? true (const bool) 0:? 1 (const uint8_t)
0:? 'int8_t_to_uint8_t' ( const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t)
0:? -1 (const int) 0:? 255 (const uint8_t)
0:? 'int16_t_to_uint8_t' ( const uint8_t) 0:? 'int16_t_to_uint8_t' ( const uint8_t)
0:? -2 (const int) 0:? 254 (const uint8_t)
0:? 'int32_t_to_uint8_t' ( const uint8_t) 0:? 'int32_t_to_uint8_t' ( const uint8_t)
0:? -3 (const int) 0:? 253 (const uint8_t)
0:? 'int64_t_to_uint8_t' ( const uint8_t) 0:? 'int64_t_to_uint8_t' ( const uint8_t)
0:? -4 (const int64_t) 0:? 252 (const uint8_t)
0:? 'uint8_t_to_uint8_t' ( const uint8_t) 0:? 'uint8_t_to_uint8_t' ( const uint8_t)
0:? 1 (const int) 0:? 1 (const uint8_t)
0:? 'uint16_t_to_uint8_t' ( const uint8_t) 0:? 'uint16_t_to_uint8_t' ( const uint8_t)
0:? 2 (const int) 0:? 2 (const uint8_t)
0:? 'uint32_t_to_uint8_t' ( const uint8_t) 0:? 'uint32_t_to_uint8_t' ( const uint8_t)
0:? 3 (const uint) 0:? 3 (const uint8_t)
0:? 'uint64_t_to_uint8_t' ( const uint8_t) 0:? 'uint64_t_to_uint8_t' ( const uint8_t)
0:? 4 (const uint64_t) 0:? 4 (const uint8_t)
0:? 'float16_t_to_uint8_t' ( const uint8_t) 0:? 'float16_t_to_uint8_t' ( const uint8_t)
0:? 42.000000 0:? 42 (const uint8_t)
0:? 'float32_t_to_uint8_t' ( const uint8_t) 0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13.000000 0:? 13 (const uint8_t)
0:? 'float64_t_to_uint8_t' ( const uint8_t) 0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? -4.000000 0:? 252 (const uint8_t)
0:? 'bool_to_uint16_t' ( const uint16_t) 0:? 'bool_to_uint16_t' ( const uint16_t)
0:? true (const bool) 0:? 1 (const uint16_t)
0:? 'int8_t_to_uint16_t' ( const uint16_t) 0:? 'int8_t_to_uint16_t' ( const uint16_t)
0:? -1 (const int) 0:? 65535 (const uint16_t)
0:? 'int16_t_to_uint16_t' ( const uint16_t) 0:? 'int16_t_to_uint16_t' ( const uint16_t)
0:? -2 (const int) 0:? 65534 (const uint16_t)
0:? 'int32_t_to_uint16_t' ( const uint16_t) 0:? 'int32_t_to_uint16_t' ( const uint16_t)
0:? -3 (const int) 0:? 65533 (const uint16_t)
0:? 'int64_t_to_uint16_t' ( const uint16_t) 0:? 'int64_t_to_uint16_t' ( const uint16_t)
0:? -4 (const int64_t) 0:? 65532 (const uint16_t)
0:? 'uint8_t_to_uint16_t' ( const uint16_t) 0:? 'uint8_t_to_uint16_t' ( const uint16_t)
0:? 1 (const int) 0:? 1 (const uint16_t)
0:? 'uint16_t_to_uint16_t' ( const uint16_t) 0:? 'uint16_t_to_uint16_t' ( const uint16_t)
0:? 2 (const int) 0:? 2 (const uint16_t)
0:? 'uint32_t_to_uint16_t' ( const uint16_t) 0:? 'uint32_t_to_uint16_t' ( const uint16_t)
0:? 3 (const uint) 0:? 3 (const uint16_t)
0:? 'uint64_t_to_uint16_t' ( const uint16_t) 0:? 'uint64_t_to_uint16_t' ( const uint16_t)
0:? 4 (const uint64_t) 0:? 4 (const uint16_t)
0:? 'float16_t_to_uint16_t' ( const uint16_t) 0:? 'float16_t_to_uint16_t' ( const uint16_t)
0:? 42.000000 0:? 42 (const uint16_t)
0:? 'float32_t_to_uint16_t' ( const uint16_t) 0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13.000000 0:? 13 (const uint16_t)
0:? 'float64_t_to_uint16_t' ( const uint16_t) 0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? -4.000000 0:? 65532 (const uint16_t)
0:? 'bool_to_uint32_t' ( const uint) 0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint) 0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint) 0:? 'int8_t_to_uint32_t' ( const uint)
0:? -1 (const int) 0:? 4294967295 (const uint)
0:? 'int16_t_to_uint32_t' ( const uint) 0:? 'int16_t_to_uint32_t' ( const uint)
0:? -2 (const int) 0:? 4294967294 (const uint)
0:? 'int32_t_to_uint32_t' ( const uint) 0:? 'int32_t_to_uint32_t' ( const uint)
0:? 4294967293 (const uint) 0:? 4294967293 (const uint)
0:? 'int64_t_to_uint32_t' ( const uint) 0:? 'int64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint) 0:? 4294967292 (const uint)
0:? 'uint8_t_to_uint32_t' ( const uint) 0:? 'uint8_t_to_uint32_t' ( const uint)
0:? 1 (const int) 0:? 1 (const uint)
0:? 'uint16_t_to_uint32_t' ( const uint) 0:? 'uint16_t_to_uint32_t' ( const uint)
0:? 2 (const int) 0:? 2 (const uint)
0:? 'uint32_t_to_uint32_t' ( const uint) 0:? 'uint32_t_to_uint32_t' ( const uint)
0:? 3 (const uint) 0:? 3 (const uint)
0:? 'uint64_t_to_uint32_t' ( const uint) 0:? 'uint64_t_to_uint32_t' ( const uint)
@ -549,17 +549,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_uint64_t' ( const uint64_t) 0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t) 0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t) 0:? 'int8_t_to_uint64_t' ( const uint64_t)
0:? -1 (const int) 0:? 18446744073709551615 (const uint64_t)
0:? 'int16_t_to_uint64_t' ( const uint64_t) 0:? 'int16_t_to_uint64_t' ( const uint64_t)
0:? -2 (const int) 0:? 18446744073709551614 (const uint64_t)
0:? 'int32_t_to_uint64_t' ( const uint64_t) 0:? 'int32_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551613 (const uint64_t) 0:? 18446744073709551613 (const uint64_t)
0:? 'int64_t_to_uint64_t' ( const uint64_t) 0:? 'int64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t) 0:? 18446744073709551612 (const uint64_t)
0:? 'uint8_t_to_uint64_t' ( const uint64_t) 0:? 'uint8_t_to_uint64_t' ( const uint64_t)
0:? 1 (const int) 0:? 1 (const uint64_t)
0:? 'uint16_t_to_uint64_t' ( const uint64_t) 0:? 'uint16_t_to_uint64_t' ( const uint64_t)
0:? 2 (const int) 0:? 2 (const uint64_t)
0:? 'uint32_t_to_uint64_t' ( const uint64_t) 0:? 'uint32_t_to_uint64_t' ( const uint64_t)
0:? 3 (const uint64_t) 0:? 3 (const uint64_t)
0:? 'uint64_t_to_uint64_t' ( const uint64_t) 0:? 'uint64_t_to_uint64_t' ( const uint64_t)
@ -573,17 +573,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_float16_t' ( const float16_t) 0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000 0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t) 0:? 'int8_t_to_float16_t' ( const float16_t)
0:? -1 (const int) 0:? -1.000000
0:? 'int16_t_to_float16_t' ( const float16_t) 0:? 'int16_t_to_float16_t' ( const float16_t)
0:? -2 (const int) 0:? -2.000000
0:? 'int32_t_to_float16_t' ( const float16_t) 0:? 'int32_t_to_float16_t' ( const float16_t)
0:? -3.000000 0:? -3.000000
0:? 'int64_t_to_float16_t' ( const float16_t) 0:? 'int64_t_to_float16_t' ( const float16_t)
0:? -4.000000 0:? -4.000000
0:? 'uint8_t_to_float16_t' ( const float16_t) 0:? 'uint8_t_to_float16_t' ( const float16_t)
0:? 1 (const int) 0:? 1.000000
0:? 'uint16_t_to_float16_t' ( const float16_t) 0:? 'uint16_t_to_float16_t' ( const float16_t)
0:? 2 (const int) 0:? 2.000000
0:? 'uint32_t_to_float16_t' ( const float16_t) 0:? 'uint32_t_to_float16_t' ( const float16_t)
0:? 3.000000 0:? 3.000000
0:? 'uint64_t_to_float16_t' ( const float16_t) 0:? 'uint64_t_to_float16_t' ( const float16_t)
@ -597,17 +597,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_float32_t' ( const float) 0:? 'bool_to_float32_t' ( const float)
0:? 1.000000 0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float) 0:? 'int8_t_to_float32_t' ( const float)
0:? -1 (const int) 0:? -1.000000
0:? 'int16_t_to_float32_t' ( const float) 0:? 'int16_t_to_float32_t' ( const float)
0:? -2 (const int) 0:? -2.000000
0:? 'int32_t_to_float32_t' ( const float) 0:? 'int32_t_to_float32_t' ( const float)
0:? -3.000000 0:? -3.000000
0:? 'int64_t_to_float32_t' ( const float) 0:? 'int64_t_to_float32_t' ( const float)
0:? -4.000000 0:? -4.000000
0:? 'uint8_t_to_float32_t' ( const float) 0:? 'uint8_t_to_float32_t' ( const float)
0:? 1 (const int) 0:? 1.000000
0:? 'uint16_t_to_float32_t' ( const float) 0:? 'uint16_t_to_float32_t' ( const float)
0:? 2 (const int) 0:? 2.000000
0:? 'uint32_t_to_float32_t' ( const float) 0:? 'uint32_t_to_float32_t' ( const float)
0:? 3.000000 0:? 3.000000
0:? 'uint64_t_to_float32_t' ( const float) 0:? 'uint64_t_to_float32_t' ( const float)
@ -621,17 +621,17 @@ local_size = (1, 1, 1)
0:? 'bool_to_float64_t' ( const double) 0:? 'bool_to_float64_t' ( const double)
0:? 1.000000 0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double) 0:? 'int8_t_to_float64_t' ( const double)
0:? -1 (const int) 0:? -1.000000
0:? 'int16_t_to_float64_t' ( const double) 0:? 'int16_t_to_float64_t' ( const double)
0:? -2 (const int) 0:? -2.000000
0:? 'int32_t_to_float64_t' ( const double) 0:? 'int32_t_to_float64_t' ( const double)
0:? -3.000000 0:? -3.000000
0:? 'int64_t_to_float64_t' ( const double) 0:? 'int64_t_to_float64_t' ( const double)
0:? -4.000000 0:? -4.000000
0:? 'uint8_t_to_float64_t' ( const double) 0:? 'uint8_t_to_float64_t' ( const double)
0:? 1 (const int) 0:? 1.000000
0:? 'uint16_t_to_float64_t' ( const double) 0:? 'uint16_t_to_float64_t' ( const double)
0:? 2 (const int) 0:? 2.000000
0:? 'uint32_t_to_float64_t' ( const double) 0:? 'uint32_t_to_float64_t' ( const double)
0:? 3.000000 0:? 3.000000
0:? 'uint64_t_to_float64_t' ( const double) 0:? 'uint64_t_to_float64_t' ( const double)

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:232: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:233: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:234: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:235: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -597,6 +602,20 @@ ERROR: node is still EOpNull!
0:226 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:226 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:226 'ballot' ( temp 4-component vector of uint) 0:226 'ballot' ( temp 4-component vector of uint)
0:226 'parti' ( temp 4-component vector of uint) 0:226 'parti' ( temp 4-component vector of uint)
0:230 Function Definition: sm_builtins_err( ( global void)
0:230 Function Parameters:
0:232 Sequence
0:232 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV)
0:233 'gl_SMCountNV' ( flat in uint SMCountNV)
0:234 'gl_WarpIDNV' ( flat in uint WarpIDNV)
0:235 'gl_SMIDNV' ( flat in uint SMIDNV)
0:242 Function Definition: sm_builtins( ( global void)
0:242 Function Parameters:
0:244 Sequence
0:244 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV)
0:245 'gl_SMCountNV' ( flat in uint SMCountNV)
0:246 'gl_WarpIDNV' ( flat in uint WarpIDNV)
0:247 'gl_SMIDNV' ( flat in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'data' (layout( location=0) out 4-component vector of uint) 0:? 'data' (layout( location=0) out 4-component vector of uint)
@ -613,6 +632,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:105 Function Definition: main( ( global void) 0:105 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:238: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:239: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:240: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:241: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
invocations = -1 invocations = -1
max_vertices = 1 max_vertices = 1
@ -606,6 +611,20 @@ ERROR: node is still EOpNull!
0:232 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:232 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:232 'ballot' ( temp 4-component vector of uint) 0:232 'ballot' ( temp 4-component vector of uint)
0:232 'parti' ( temp 4-component vector of uint) 0:232 'parti' ( temp 4-component vector of uint)
0:236 Function Definition: sm_builtins_err( ( global void)
0:236 Function Parameters:
0:238 Sequence
0:238 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:239 'gl_SMCountNV' ( in uint SMCountNV)
0:240 'gl_WarpIDNV' ( in uint WarpIDNV)
0:241 'gl_SMIDNV' ( in uint SMIDNV)
0:248 Function Definition: sm_builtins( ( global void)
0:248 Function Parameters:
0:250 Sequence
0:250 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:251 'gl_SMCountNV' ( in uint SMCountNV)
0:252 'gl_WarpIDNV' ( in uint WarpIDNV)
0:253 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
@ -622,6 +641,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
invocations = 1 invocations = 1
max_vertices = 1 max_vertices = 1

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:237: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:238: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:239: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:240: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
vertices = 1 vertices = 1
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
@ -603,6 +608,20 @@ ERROR: node is still EOpNull!
0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:231 'ballot' ( temp 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint)
0:231 'parti' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint)
0:235 Function Definition: sm_builtins_err( ( global void)
0:235 Function Parameters:
0:237 Sequence
0:237 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:238 'gl_SMCountNV' ( in uint SMCountNV)
0:239 'gl_WarpIDNV' ( in uint WarpIDNV)
0:240 'gl_SMIDNV' ( in uint SMIDNV)
0:247 Function Definition: sm_builtins( ( global void)
0:247 Function Parameters:
0:249 Sequence
0:249 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:250 'gl_SMCountNV' ( in uint SMCountNV)
0:251 'gl_WarpIDNV' ( in uint WarpIDNV)
0:252 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
@ -619,6 +638,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
vertices = 1 vertices = 1
ERROR: node is still EOpNull! ERROR: node is still EOpNull!

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:237: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:238: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:239: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:240: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
input primitive = isolines input primitive = isolines
vertex spacing = none vertex spacing = none
@ -605,6 +610,20 @@ ERROR: node is still EOpNull!
0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:231 'ballot' ( temp 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint)
0:231 'parti' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint)
0:235 Function Definition: sm_builtins_err( ( global void)
0:235 Function Parameters:
0:237 Sequence
0:237 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:238 'gl_SMCountNV' ( in uint SMCountNV)
0:239 'gl_WarpIDNV' ( in uint WarpIDNV)
0:240 'gl_SMIDNV' ( in uint SMIDNV)
0:247 Function Definition: sm_builtins( ( global void)
0:247 Function Parameters:
0:249 Sequence
0:249 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:250 'gl_SMCountNV' ( in uint SMCountNV)
0:251 'gl_WarpIDNV' ( in uint WarpIDNV)
0:252 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
@ -621,6 +640,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
input primitive = isolines input primitive = isolines
vertex spacing = equal_spacing vertex spacing = equal_spacing

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:236: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:237: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:238: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:239: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -602,6 +607,20 @@ ERROR: node is still EOpNull!
0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:230 'ballot' ( temp 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint)
0:230 'parti' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint)
0:234 Function Definition: sm_builtins_err( ( global void)
0:234 Function Parameters:
0:236 Sequence
0:236 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:237 'gl_SMCountNV' ( in uint SMCountNV)
0:238 'gl_WarpIDNV' ( in uint WarpIDNV)
0:239 'gl_SMIDNV' ( in uint SMIDNV)
0:246 Function Definition: sm_builtins( ( global void)
0:246 Function Parameters:
0:248 Sequence
0:248 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:249 'gl_SMCountNV' ( in uint SMCountNV)
0:250 'gl_WarpIDNV' ( in uint WarpIDNV)
0:251 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_VertexID' ( gl_VertexId int VertexId)
@ -620,6 +639,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:109 Function Definition: main( ( global void) 0:109 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:242: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:243: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:244: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:245: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
local_size = (8, 8, 1) local_size = (8, 8, 1)
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
@ -631,6 +636,20 @@ ERROR: node is still EOpNull!
0:236 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:236 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:236 'ballot' ( temp 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint)
0:236 'parti' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint)
0:240 Function Definition: sm_builtins_err( ( global void)
0:240 Function Parameters:
0:242 Sequence
0:242 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:243 'gl_SMCountNV' ( in uint SMCountNV)
0:244 'gl_WarpIDNV' ( in uint WarpIDNV)
0:245 'gl_SMIDNV' ( in uint SMIDNV)
0:252 Function Definition: sm_builtins( ( global void)
0:252 Function Parameters:
0:254 Sequence
0:254 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:255 'gl_SMCountNV' ( in uint SMCountNV)
0:256 'gl_WarpIDNV' ( in uint WarpIDNV)
0:257 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint) 0:? 8 (const uint)
@ -651,6 +670,7 @@ Requested GL_KHR_shader_subgroup_quad
Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
local_size = (8, 8, 1) local_size = (8, 8, 1)
ERROR: node is still EOpNull! ERROR: node is still EOpNull!

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:298: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:299: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:300: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:301: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_mesh_shader Requested GL_NV_mesh_shader
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
max_vertices = 81 max_vertices = 81
max_primitives = 32 max_primitives = 32
@ -887,6 +892,20 @@ ERROR: node is still EOpNull!
0:292 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:292 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:292 'ballot' ( temp 4-component vector of uint) 0:292 'ballot' ( temp 4-component vector of uint)
0:292 'parti' ( temp 4-component vector of uint) 0:292 'parti' ( temp 4-component vector of uint)
0:296 Function Definition: sm_builtins_err( ( global void)
0:296 Function Parameters:
0:298 Sequence
0:298 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:299 'gl_SMCountNV' ( in uint SMCountNV)
0:300 'gl_WarpIDNV' ( in uint WarpIDNV)
0:301 'gl_SMIDNV' ( in uint SMIDNV)
0:308 Function Definition: sm_builtins( ( global void)
0:308 Function Parameters:
0:310 Sequence
0:310 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:311 'gl_SMCountNV' ( in uint SMCountNV)
0:312 'gl_WarpIDNV' ( in uint WarpIDNV)
0:313 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 32 (const uint) 0:? 32 (const uint)
@ -910,6 +929,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_mesh_shader Requested GL_NV_mesh_shader
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
max_vertices = 81 max_vertices = 81
max_primitives = 32 max_primitives = 32

View File

@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:259: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:260: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:261: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:262: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -671,6 +676,20 @@ ERROR: node is still EOpNull!
0:253 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:253 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:253 'ballot' ( temp 4-component vector of uint) 0:253 'ballot' ( temp 4-component vector of uint)
0:253 'parti' ( temp 4-component vector of uint) 0:253 'parti' ( temp 4-component vector of uint)
0:257 Function Definition: sm_builtins_err( ( global void)
0:257 Function Parameters:
0:259 Sequence
0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:260 'gl_SMCountNV' ( in uint SMCountNV)
0:261 'gl_WarpIDNV' ( in uint WarpIDNV)
0:262 'gl_SMIDNV' ( in uint SMIDNV)
0:269 Function Definition: sm_builtins( ( global void)
0:269 Function Parameters:
0:271 Sequence
0:271 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:272 'gl_SMCountNV' ( in uint SMCountNV)
0:273 'gl_WarpIDNV' ( in uint WarpIDNV)
0:274 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
@ -688,6 +707,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:106 Function Definition: main( ( global void) 0:106 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:247: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:248: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:249: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:250: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -614,6 +619,20 @@ ERROR: node is still EOpNull!
0:241 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:241 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:241 'ballot' ( temp 4-component vector of uint) 0:241 'ballot' ( temp 4-component vector of uint)
0:241 'parti' ( temp 4-component vector of uint) 0:241 'parti' ( temp 4-component vector of uint)
0:245 Function Definition: sm_builtins_err( ( global void)
0:245 Function Parameters:
0:247 Sequence
0:247 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:248 'gl_SMCountNV' ( in uint SMCountNV)
0:249 'gl_WarpIDNV' ( in uint WarpIDNV)
0:250 'gl_SMIDNV' ( in uint SMIDNV)
0:257 Function Definition: sm_builtins( ( global void)
0:257 Function Parameters:
0:259 Sequence
0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:260 'gl_SMCountNV' ( in uint SMCountNV)
0:261 'gl_WarpIDNV' ( in uint WarpIDNV)
0:262 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) 0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float)
0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) 0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
@ -632,6 +651,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:109 Function Definition: main( ( global void) 0:109 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:257: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:258: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:259: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:260: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -680,6 +685,20 @@ ERROR: node is still EOpNull!
0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:251 'ballot' ( temp 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint)
0:251 'parti' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint)
0:255 Function Definition: sm_builtins_err( ( global void)
0:255 Function Parameters:
0:257 Sequence
0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:258 'gl_SMCountNV' ( in uint SMCountNV)
0:259 'gl_WarpIDNV' ( in uint WarpIDNV)
0:260 'gl_SMIDNV' ( in uint SMIDNV)
0:267 Function Definition: sm_builtins( ( global void)
0:267 Function Parameters:
0:269 Sequence
0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:270 'gl_SMCountNV' ( in uint SMCountNV)
0:271 'gl_WarpIDNV' ( in uint WarpIDNV)
0:272 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
@ -699,6 +718,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:108 Function Definition: main( ( global void) 0:108 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:251: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:252: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:253: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:254: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -644,6 +649,20 @@ ERROR: node is still EOpNull!
0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:245 'ballot' ( temp 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint)
0:245 'parti' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint)
0:249 Function Definition: sm_builtins_err( ( global void)
0:249 Function Parameters:
0:251 Sequence
0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:252 'gl_SMCountNV' ( in uint SMCountNV)
0:253 'gl_WarpIDNV' ( in uint WarpIDNV)
0:254 'gl_SMIDNV' ( in uint SMIDNV)
0:261 Function Definition: sm_builtins( ( global void)
0:261 Function Parameters:
0:263 Sequence
0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:264 'gl_SMCountNV' ( in uint SMCountNV)
0:265 'gl_WarpIDNV' ( in uint WarpIDNV)
0:266 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) 0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV)
@ -664,6 +683,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:113 Function Definition: main( ( global void) 0:113 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:257: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:258: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:259: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:260: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -658,6 +663,20 @@ ERROR: node is still EOpNull!
0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:251 'ballot' ( temp 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint)
0:251 'parti' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint)
0:255 Function Definition: sm_builtins_err( ( global void)
0:255 Function Parameters:
0:257 Sequence
0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:258 'gl_SMCountNV' ( in uint SMCountNV)
0:259 'gl_WarpIDNV' ( in uint WarpIDNV)
0:260 'gl_SMIDNV' ( in uint SMIDNV)
0:267 Function Definition: sm_builtins( ( global void)
0:267 Function Parameters:
0:269 Sequence
0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:270 'gl_SMCountNV' ( in uint SMCountNV)
0:271 'gl_WarpIDNV' ( in uint WarpIDNV)
0:272 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'iAttr' ( hitAttributeNV 4-component vector of float) 0:? 'iAttr' ( hitAttributeNV 4-component vector of float)
@ -675,6 +694,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:108 Function Definition: main( ( global void) 0:108 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:251: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:252: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:253: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:254: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) 0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
@ -652,6 +657,20 @@ ERROR: node is still EOpNull!
0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:245 'ballot' ( temp 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint)
0:245 'parti' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint)
0:249 Function Definition: sm_builtins_err( ( global void)
0:249 Function Parameters:
0:251 Sequence
0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:252 'gl_SMCountNV' ( in uint SMCountNV)
0:253 'gl_WarpIDNV' ( in uint WarpIDNV)
0:254 'gl_SMIDNV' ( in uint SMIDNV)
0:261 Function Definition: sm_builtins( ( global void)
0:261 Function Parameters:
0:263 Sequence
0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:264 'gl_SMCountNV' ( in uint SMCountNV)
0:265 'gl_WarpIDNV' ( in uint WarpIDNV)
0:266 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
@ -671,6 +690,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_ray_tracing Requested GL_NV_ray_tracing
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:109 Function Definition: main( ( global void) 0:109 Function Definition: main( ( global void)

View File

@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
ERROR: 86 compilation errors. No code generated. ERROR: 0:288: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:289: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:290: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:291: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
Shader version: 460 Shader version: 460
@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_mesh_shader Requested GL_NV_mesh_shader
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
local_size = (32, 1, 1) local_size = (32, 1, 1)
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
@ -729,6 +734,20 @@ ERROR: node is still EOpNull!
0:282 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:282 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:282 'ballot' ( temp 4-component vector of uint) 0:282 'ballot' ( temp 4-component vector of uint)
0:282 'parti' ( temp 4-component vector of uint) 0:282 'parti' ( temp 4-component vector of uint)
0:286 Function Definition: sm_builtins_err( ( global void)
0:286 Function Parameters:
0:288 Sequence
0:288 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:289 'gl_SMCountNV' ( in uint SMCountNV)
0:290 'gl_WarpIDNV' ( in uint WarpIDNV)
0:291 'gl_SMIDNV' ( in uint SMIDNV)
0:298 Function Definition: sm_builtins( ( global void)
0:298 Function Parameters:
0:300 Sequence
0:300 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:301 'gl_SMCountNV' ( in uint SMCountNV)
0:302 'gl_WarpIDNV' ( in uint WarpIDNV)
0:303 'gl_SMIDNV' ( in uint SMIDNV)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 32 (const uint) 0:? 32 (const uint)
@ -753,6 +772,7 @@ Requested GL_KHR_shader_subgroup_shuffle
Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_shuffle_relative
Requested GL_KHR_shader_subgroup_vote Requested GL_KHR_shader_subgroup_vote
Requested GL_NV_mesh_shader Requested GL_NV_mesh_shader
Requested GL_NV_shader_sm_builtins
Requested GL_NV_shader_subgroup_partitioned Requested GL_NV_shader_subgroup_partitioned
local_size = (32, 1, 1) local_size = (32, 1, 1)
ERROR: node is still EOpNull! ERROR: node is still EOpNull!

View File

@ -0,0 +1,230 @@
hlsl.specConstant.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6 Function Definition: @main( ( temp 4-component vector of float)
0:6 Function Parameters:
0:? Sequence
0:8 Sequence
0:8 move second child to first child ( temp uint)
0:8 'i' ( temp uint)
0:8 Constant:
0:8 0 (const uint)
0:8 Loop with condition tested first
0:8 Loop Condition
0:8 Compare Less Than ( temp bool)
0:8 'i' ( temp uint)
0:8 indirect index ( const uint)
0:8 Constant:
0:8 10 (const uint)
0:8 20 (const uint)
0:8 30 (const uint)
0:8 40 (const uint)
0:8 'index' ( specialization-constant const uint)
0:8 2 (const uint)
0:8 Loop Body
0:9 move second child to first child ( temp 4-component vector of float)
0:9 'r' ( temp 4-component vector of float)
0:9 Construct vec4 ( temp 4-component vector of float)
0:9 Convert uint to float ( temp float)
0:9 'i' ( temp uint)
0:8 Loop Terminal Expression
0:8 Post-Increment ( temp uint)
0:8 'i' ( temp uint)
0:11 add second child into first child ( temp 4-component vector of float)
0:11 'r' ( temp 4-component vector of float)
0:11 Convert uint to float ( temp float)
0:11 add ( specialization-constant const uint)
0:11 'index' ( specialization-constant const uint)
0:11 2 (const uint)
0:11 'index' ( specialization-constant const uint)
0:11 2 (const uint)
0:12 add second child into first child ( temp 4-component vector of float)
0:12 'r' ( temp 4-component vector of float)
0:12 Convert uint to float ( temp float)
0:12 component-wise multiply ( specialization-constant const uint)
0:12 Constant:
0:12 2 (const uint)
0:12 'index' ( specialization-constant const uint)
0:12 2 (const uint)
0:14 Branch: Return with expression
0:14 'r' ( temp 4-component vector of float)
0:6 Function Definition: main( ( temp void)
0:6 Function Parameters:
0:? Sequence
0:6 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:6 Function Call: @main( ( temp 4-component vector of float)
0:? Linker Objects
0:? 'index' ( specialization-constant const uint)
0:? 2 (const uint)
0:? 'array' ( const 4-element array of uint)
0:? 10 (const uint)
0:? 20 (const uint)
0:? 30 (const uint)
0:? 40 (const uint)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6 Function Definition: @main( ( temp 4-component vector of float)
0:6 Function Parameters:
0:? Sequence
0:8 Sequence
0:8 move second child to first child ( temp uint)
0:8 'i' ( temp uint)
0:8 Constant:
0:8 0 (const uint)
0:8 Loop with condition tested first
0:8 Loop Condition
0:8 Compare Less Than ( temp bool)
0:8 'i' ( temp uint)
0:8 indirect index ( const uint)
0:8 Constant:
0:8 10 (const uint)
0:8 20 (const uint)
0:8 30 (const uint)
0:8 40 (const uint)
0:8 'index' ( specialization-constant const uint)
0:8 2 (const uint)
0:8 Loop Body
0:9 move second child to first child ( temp 4-component vector of float)
0:9 'r' ( temp 4-component vector of float)
0:9 Construct vec4 ( temp 4-component vector of float)
0:9 Convert uint to float ( temp float)
0:9 'i' ( temp uint)
0:8 Loop Terminal Expression
0:8 Post-Increment ( temp uint)
0:8 'i' ( temp uint)
0:11 add second child into first child ( temp 4-component vector of float)
0:11 'r' ( temp 4-component vector of float)
0:11 Convert uint to float ( temp float)
0:11 add ( specialization-constant const uint)
0:11 'index' ( specialization-constant const uint)
0:11 2 (const uint)
0:11 'index' ( specialization-constant const uint)
0:11 2 (const uint)
0:12 add second child into first child ( temp 4-component vector of float)
0:12 'r' ( temp 4-component vector of float)
0:12 Convert uint to float ( temp float)
0:12 component-wise multiply ( specialization-constant const uint)
0:12 Constant:
0:12 2 (const uint)
0:12 'index' ( specialization-constant const uint)
0:12 2 (const uint)
0:14 Branch: Return with expression
0:14 'r' ( temp 4-component vector of float)
0:6 Function Definition: main( ( temp void)
0:6 Function Parameters:
0:? Sequence
0:6 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:6 Function Call: @main( ( temp 4-component vector of float)
0:? Linker Objects
0:? 'index' ( specialization-constant const uint)
0:? 2 (const uint)
0:? 'array' ( const 4-element array of uint)
0:? 10 (const uint)
0:? 20 (const uint)
0:? 30 (const uint)
0:? 40 (const uint)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 61
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 59
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 13 "i"
Name 28 "index"
Name 30 "indexable"
Name 36 "r"
Name 59 "@entryPointOutput"
Decorate 28(index) SpecId 0
Decorate 59(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeFunction 7(fvec4)
11: TypeInt 32 0
12: TypePointer Function 11(int)
14: 11(int) Constant 0
21: 11(int) Constant 4
22: TypeArray 11(int) 21
23: 11(int) Constant 10
24: 11(int) Constant 20
25: 11(int) Constant 30
26: 11(int) Constant 40
27: 22 ConstantComposite 23 24 25 26
28(index): 11(int) SpecConstant 2
29: TypePointer Function 22
33: TypeBool
35: TypePointer Function 7(fvec4)
41: TypeInt 32 1
42: 41(int) Constant 1
44: 11(int) SpecConstantOp 128 28(index) 28(index)
49: 11(int) Constant 2
50: 11(int) SpecConstantOp 132 49 28(index)
58: TypePointer Output 7(fvec4)
59(@entryPointOutput): 58(ptr) Variable Output
4(main): 2 Function None 3
5: Label
60: 7(fvec4) FunctionCall 9(@main()
Store 59(@entryPointOutput) 60
Return
FunctionEnd
9(@main(): 7(fvec4) Function None 8
10: Label
13(i): 12(ptr) Variable Function
30(indexable): 29(ptr) Variable Function
36(r): 35(ptr) Variable Function
Store 13(i) 14
Branch 15
15: Label
LoopMerge 17 18 None
Branch 19
19: Label
20: 11(int) Load 13(i)
Store 30(indexable) 27
31: 12(ptr) AccessChain 30(indexable) 28(index)
32: 11(int) Load 31
34: 33(bool) ULessThan 20 32
BranchConditional 34 16 17
16: Label
37: 11(int) Load 13(i)
38: 6(float) ConvertUToF 37
39: 7(fvec4) CompositeConstruct 38 38 38 38
Store 36(r) 39
Branch 18
18: Label
40: 11(int) Load 13(i)
43: 11(int) IAdd 40 42
Store 13(i) 43
Branch 15
17: Label
45: 6(float) ConvertUToF 44
46: 7(fvec4) Load 36(r)
47: 7(fvec4) CompositeConstruct 45 45 45 45
48: 7(fvec4) FAdd 46 47
Store 36(r) 48
51: 6(float) ConvertUToF 50
52: 7(fvec4) Load 36(r)
53: 7(fvec4) CompositeConstruct 51 51 51 51
54: 7(fvec4) FAdd 52 53
Store 36(r) 54
55: 7(fvec4) Load 36(r)
ReturnValue 55
FunctionEnd

View File

@ -135,7 +135,6 @@ local_size = (256, 1, 1)
0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer) 0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
Validation failed
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 63 // Id's are bound by 63

View File

@ -1,7 +1,7 @@
spv.16bitstorage-int.frag spv.16bitstorage-int.frag
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 172 // Id's are bound by 171
Capability Shader Capability Shader
Capability StorageUniformBufferBlock16 Capability StorageUniformBufferBlock16
@ -209,10 +209,7 @@ spv.16bitstorage-int.frag
114: 20(int) Constant 7 114: 20(int) Constant 7
115: 20(int) Constant 6 115: 20(int) Constant 6
116: TypePointer Uniform 20(int) 116: TypePointer Uniform 20(int)
166: 6(int16_t) Constant 1 166: 39(ivec2) ConstantComposite 32 33
167: 6(int16_t) Constant 2
168: 7(i16vec2) ConstantComposite 166 167
170: 6(int16_t) Constant 3
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
69(x0): 68(ptr) Variable Function 69(x0): 68(ptr) Variable Function
@ -332,9 +329,11 @@ spv.16bitstorage-int.frag
164: 6(int16_t) Load 163 164: 6(int16_t) Load 163
165: 28(ptr) AccessChain 19(b2) 21 165: 28(ptr) AccessChain 19(b2) 21
Store 165 164 Store 165 164
169: 42(ptr) AccessChain 19(b2) 32 167: 7(i16vec2) SConvert 166
Store 169 168 168: 42(ptr) AccessChain 19(b2) 32
171: 28(ptr) AccessChain 19(b2) 21 Store 168 167
Store 171 170 169: 6(int16_t) SConvert 58
170: 28(ptr) AccessChain 19(b2) 21
Store 170 169
Return Return
FunctionEnd FunctionEnd

View File

@ -210,10 +210,8 @@ spv.16bitstorage-uint.frag
115: 20(int) Constant 7 115: 20(int) Constant 7
116: 20(int) Constant 6 116: 20(int) Constant 6
117: TypePointer Uniform 9(int) 117: TypePointer Uniform 9(int)
167: 6(int16_t) Constant 1 167: 39(ivec2) ConstantComposite 82 10
168: 6(int16_t) Constant 2 170: 9(int) Constant 3
169: 7(i16vec2) ConstantComposite 167 168
171: 6(int16_t) Constant 3
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
69(x0): 68(ptr) Variable Function 69(x0): 68(ptr) Variable Function
@ -333,8 +331,10 @@ spv.16bitstorage-uint.frag
165: 6(int16_t) Load 164 165: 6(int16_t) Load 164
166: 28(ptr) AccessChain 19(b2) 21 166: 28(ptr) AccessChain 19(b2) 21
Store 166 165 Store 166 165
170: 42(ptr) AccessChain 19(b2) 32 168: 7(i16vec2) UConvert 167
Store 170 169 169: 42(ptr) AccessChain 19(b2) 32
Store 169 168
171: 6(int16_t) UConvert 170
172: 28(ptr) AccessChain 19(b2) 21 172: 28(ptr) AccessChain 19(b2) 21
Store 172 171 Store 172 171
Return Return

View File

@ -1,7 +1,7 @@
spv.16bitstorage.frag spv.16bitstorage.frag
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 172 // Id's are bound by 173
Capability Shader Capability Shader
Capability StorageUniformBufferBlock16 Capability StorageUniformBufferBlock16
@ -209,10 +209,9 @@ spv.16bitstorage.frag
114: 20(int) Constant 7 114: 20(int) Constant 7
115: 20(int) Constant 6 115: 20(int) Constant 6
116: TypePointer Uniform 20(int) 116: TypePointer Uniform 20(int)
166:6(float16_t) Constant 15360 166: 37(float) Constant 1073741824
167:6(float16_t) Constant 16384 167: 40(fvec2) ConstantComposite 83 166
168: 7(f16vec2) ConstantComposite 166 167 170: 37(float) Constant 1077936128
170:6(float16_t) Constant 16896
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
70(x0): 69(ptr) Variable Function 70(x0): 69(ptr) Variable Function
@ -332,9 +331,11 @@ spv.16bitstorage.frag
164:6(float16_t) Load 163 164:6(float16_t) Load 163
165: 28(ptr) AccessChain 19(b2) 21 165: 28(ptr) AccessChain 19(b2) 21
Store 165 164 Store 165 164
168: 7(f16vec2) FConvert 167
169: 43(ptr) AccessChain 19(b2) 32 169: 43(ptr) AccessChain 19(b2) 32
Store 169 168 Store 169 168
171: 28(ptr) AccessChain 19(b2) 21 171:6(float16_t) FConvert 170
Store 171 170 172: 28(ptr) AccessChain 19(b2) 21
Store 172 171
Return Return
FunctionEnd FunctionEnd

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
spv.8bitstorage-int.frag spv.8bitstorage-int.frag
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 172 // Id's are bound by 171
Capability Shader Capability Shader
Capability UniformAndStorageBuffer8BitAccess Capability UniformAndStorageBuffer8BitAccess
@ -208,10 +208,7 @@ spv.8bitstorage-int.frag
114: 20(int) Constant 7 114: 20(int) Constant 7
115: 20(int) Constant 6 115: 20(int) Constant 6
116: TypePointer Uniform 20(int) 116: TypePointer Uniform 20(int)
166: 6(int8_t) Constant 1 166: 39(ivec2) ConstantComposite 32 33
167: 6(int8_t) Constant 2
168: 7(i8vec2) ConstantComposite 166 167
170: 6(int8_t) Constant 3
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
69(x0): 68(ptr) Variable Function 69(x0): 68(ptr) Variable Function
@ -331,9 +328,11 @@ spv.8bitstorage-int.frag
164: 6(int8_t) Load 163 164: 6(int8_t) Load 163
165: 28(ptr) AccessChain 19(b2) 21 165: 28(ptr) AccessChain 19(b2) 21
Store 165 164 Store 165 164
169: 42(ptr) AccessChain 19(b2) 32 167: 7(i8vec2) SConvert 166
Store 169 168 168: 42(ptr) AccessChain 19(b2) 32
171: 28(ptr) AccessChain 19(b2) 21 Store 168 167
Store 171 170 169: 6(int8_t) SConvert 58
170: 28(ptr) AccessChain 19(b2) 21
Store 170 169
Return Return
FunctionEnd FunctionEnd

View File

@ -209,10 +209,8 @@ spv.8bitstorage-uint.frag
115: 20(int) Constant 7 115: 20(int) Constant 7
116: 20(int) Constant 6 116: 20(int) Constant 6
117: TypePointer Uniform 9(int) 117: TypePointer Uniform 9(int)
167: 6(int8_t) Constant 1 167: 39(ivec2) ConstantComposite 82 10
168: 6(int8_t) Constant 2 170: 9(int) Constant 3
169: 7(i8vec2) ConstantComposite 167 168
171: 6(int8_t) Constant 3
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
69(x0): 68(ptr) Variable Function 69(x0): 68(ptr) Variable Function
@ -332,8 +330,10 @@ spv.8bitstorage-uint.frag
165: 6(int8_t) Load 164 165: 6(int8_t) Load 164
166: 28(ptr) AccessChain 19(b2) 21 166: 28(ptr) AccessChain 19(b2) 21
Store 166 165 Store 166 165
170: 42(ptr) AccessChain 19(b2) 32 168: 7(i8vec2) UConvert 167
Store 170 169 169: 42(ptr) AccessChain 19(b2) 32
Store 169 168
171: 6(int8_t) UConvert 170
172: 28(ptr) AccessChain 19(b2) 21 172: 28(ptr) AccessChain 19(b2) 21
Store 172 171 Store 172 171
Return Return

View File

@ -4,7 +4,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 60 // Id's are bound by 61
Capability Shader Capability Shader
Capability StorageBuffer8BitAccess Capability StorageBuffer8BitAccess
@ -68,7 +68,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
50: 49(ptr) Variable StorageBuffer 50: 49(ptr) Variable StorageBuffer
51: TypePointer StorageBuffer 6(int) 51: TypePointer StorageBuffer 6(int)
54: 31(int) Constant 1 54: 31(int) Constant 1
58: 27(int8_t) Constant 9 58: 6(int) Constant 9
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
20(allOk): 19(ptr) Variable Function 20(allOk): 19(ptr) Variable Function
@ -103,8 +103,9 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
47: Label 47: Label
56: 33(ptr) AccessChain 30 32 56: 33(ptr) AccessChain 30 32
57: 25(ptr) Load 56 57: 25(ptr) Load 56
59: 36(ptr) AccessChain 57 32 59: 27(int8_t) UConvert 58
Store 59 58 Aligned 16 60: 36(ptr) AccessChain 57 32
Store 60 59 Aligned 16
Return Return
FunctionEnd FunctionEnd
12(compare_uint8_t(u1;u1;): 8(bool) Function None 9 12(compare_uint8_t(u1;u1;): 8(bool) Function None 9

View File

@ -0,0 +1,69 @@
spv.conditionalDemote.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 38
Capability Shader
Capability DemoteToHelperInvocationEXT
Extension "SPV_EXT_demote_to_helper_invocation"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 36
ExecutionMode 4 OriginUpperLeft
Source GLSL 460
SourceExtension "GL_EXT_demote_to_helper_invocation"
Name 4 "main"
Name 9 "v"
Name 13 "tex"
Name 17 "coord"
Name 33 "x"
Name 36 "o"
Decorate 13(tex) DescriptorSet 0
Decorate 13(tex) Binding 0
Decorate 17(coord) Location 0
Decorate 36(o) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D sampled format:Unknown
11: TypeSampledImage 10
12: TypePointer UniformConstant 11
13(tex): 12(ptr) Variable UniformConstant
15: TypeVector 6(float) 2
16: TypePointer Input 15(fvec2)
17(coord): 16(ptr) Variable Input
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 6(float) Constant 1050253722
24: 6(float) Constant 1053609165
25: 7(fvec4) ConstantComposite 21 22 23 24
26: TypeBool
27: TypeVector 26(bool) 4
32: TypePointer Function 26(bool)
35: TypePointer Output 7(fvec4)
36(o): 35(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
33(x): 32(ptr) Variable Function
14: 11 Load 13(tex)
18: 15(fvec2) Load 17(coord)
19: 7(fvec4) ImageSampleImplicitLod 14 18
Store 9(v) 19
20: 7(fvec4) Load 9(v)
28: 27(bvec4) FOrdEqual 20 25
29: 26(bool) All 28
SelectionMerge 31 None
BranchConditional 29 30 31
30: Label
DemoteToHelperInvocationEXT
Branch 31
31: Label
34: 26(bool) IsHelperInvocationEXT
Store 33(x) 34
37: 7(fvec4) Load 9(v)
Store 36(o) 37
Return
FunctionEnd

View File

@ -0,0 +1,171 @@
spv.constConstruct.vert
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 150
Capability Shader
Capability Float64
Capability Int64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
Source GLSL 450
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
Name 4 "main"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 16
7:6(float16_t) Constant 15360
8:6(float16_t) Constant 16384
9:6(float16_t) Constant 16896
10:6(float16_t) Constant 17408
11:6(float16_t) Constant 17664
12:6(float16_t) Constant 17920
13:6(float16_t) Constant 18176
14:6(float16_t) Constant 18432
15:6(float16_t) Constant 18560
16:6(float16_t) Constant 18688
17:6(float16_t) Constant 18816
18: TypeFloat 32
19: 18(float) Constant 1099431936
20: 18(float) Constant 1099956224
21: 18(float) Constant 1100480512
22: 18(float) Constant 1101004800
23: 18(float) Constant 1101529088
24: 18(float) Constant 1102053376
25: 18(float) Constant 1102577664
26: 18(float) Constant 1103101952
27: 18(float) Constant 1103626240
28: 18(float) Constant 1104150528
29: 18(float) Constant 1104674816
30: 18(float) Constant 1065353216
31: TypeFloat 64
32:31(float64_t) Constant 0 1077968896
33:31(float64_t) Constant 0 1078001664
34:31(float64_t) Constant 0 1078034432
35:31(float64_t) Constant 0 1078067200
36:31(float64_t) Constant 0 1078099968
37:31(float64_t) Constant 0 1078132736
38:31(float64_t) Constant 0 1078165504
39:31(float64_t) Constant 0 1078198272
40:31(float64_t) Constant 0 1078231040
41:31(float64_t) Constant 0 1078263808
42:31(float64_t) Constant 0 1078296576
43:31(float64_t) Constant 0 1072693248
44: TypeInt 8 1
45: 44(int8_t) Constant 49
46: 44(int8_t) Constant 50
47: 44(int8_t) Constant 51
48: 44(int8_t) Constant 52
49: 44(int8_t) Constant 53
50: 44(int8_t) Constant 54
51: 44(int8_t) Constant 55
52: 44(int8_t) Constant 56
53: 44(int8_t) Constant 57
54: 44(int8_t) Constant 58
55: 44(int8_t) Constant 59
56: 44(int8_t) Constant 1
57: TypeInt 16 1
58: 57(int16_t) Constant 65
59: 57(int16_t) Constant 66
60: 57(int16_t) Constant 67
61: 57(int16_t) Constant 68
62: 57(int16_t) Constant 69
63: 57(int16_t) Constant 70
64: 57(int16_t) Constant 71
65: 57(int16_t) Constant 72
66: 57(int16_t) Constant 73
67: 57(int16_t) Constant 74
68: 57(int16_t) Constant 75
69: 57(int16_t) Constant 1
70: TypeInt 32 1
71: 70(int) Constant 81
72: 70(int) Constant 82
73: 70(int) Constant 83
74: 70(int) Constant 84
75: 70(int) Constant 85
76: 70(int) Constant 86
77: 70(int) Constant 87
78: 70(int) Constant 88
79: 70(int) Constant 89
80: 70(int) Constant 90
81: 70(int) Constant 91
82: 70(int) Constant 1
83: TypeInt 64 1
84: 83(int64_t) Constant 97 0
85: 83(int64_t) Constant 98 0
86: 83(int64_t) Constant 99 0
87: 83(int64_t) Constant 100 0
88: 83(int64_t) Constant 101 0
89: 83(int64_t) Constant 102 0
90: 83(int64_t) Constant 103 0
91: 83(int64_t) Constant 104 0
92: 83(int64_t) Constant 105 0
93: 83(int64_t) Constant 106 0
94: 83(int64_t) Constant 107 0
95: 83(int64_t) Constant 1 0
96: TypeInt 8 0
97: 96(int8_t) Constant 113
98: 96(int8_t) Constant 114
99: 96(int8_t) Constant 115
100: 96(int8_t) Constant 116
101: 96(int8_t) Constant 117
102: 96(int8_t) Constant 118
103: 96(int8_t) Constant 119
104: 96(int8_t) Constant 120
105: 96(int8_t) Constant 121
106: 96(int8_t) Constant 122
107: 96(int8_t) Constant 123
108: 96(int8_t) Constant 1
109: TypeInt 16 0
110:109(int16_t) Constant 129
111:109(int16_t) Constant 130
112:109(int16_t) Constant 131
113:109(int16_t) Constant 65412
114:109(int16_t) Constant 133
115:109(int16_t) Constant 134
116:109(int16_t) Constant 135
117:109(int16_t) Constant 136
118:109(int16_t) Constant 137
119:109(int16_t) Constant 138
120:109(int16_t) Constant 139
121:109(int16_t) Constant 1
122: TypeInt 32 0
123: 122(int) Constant 145
124: 122(int) Constant 146
125: 122(int) Constant 147
126: 122(int) Constant 4294967188
127: 122(int) Constant 149
128: 122(int) Constant 150
129: 122(int) Constant 151
130: 122(int) Constant 152
131: 122(int) Constant 153
132: 122(int) Constant 154
133: 122(int) Constant 155
134: 122(int) Constant 1
135: TypeInt 64 0
136:135(int64_t) Constant 161 0
137:135(int64_t) Constant 162 0
138:135(int64_t) Constant 163 0
139:135(int64_t) Constant 4294967204 4294967295
140:135(int64_t) Constant 165 0
141:135(int64_t) Constant 166 0
142:135(int64_t) Constant 167 0
143:135(int64_t) Constant 168 0
144:135(int64_t) Constant 169 0
145:135(int64_t) Constant 170 0
146:135(int64_t) Constant 171 0
147:135(int64_t) Constant 1 0
148: TypeBool
149: 148(bool) ConstantTrue
4(main): 2 Function None 3
5: Label
Return
FunctionEnd

View File

@ -0,0 +1,6 @@
spv.demoteDisabled.frag
ERROR: 0:9: 'demote' : undeclared identifier
ERROR: 1 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

View File

@ -0,0 +1,62 @@
spv.functionParameterTypes.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 34
Capability Shader
Capability Float16
Capability Int64
Capability Int16
Capability Int8
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 460
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
Name 4 "main"
Name 29 "f(i81;u81;i161;u161;i641;u641;f161;"
Name 22 "i8"
Name 23 "u8"
Name 24 "i16"
Name 25 "u16"
Name 26 "i64"
Name 27 "u64"
Name 28 "f16"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 8 1
7: TypePointer Function 6(int8_t)
8: TypeInt 8 0
9: TypePointer Function 8(int8_t)
10: TypeInt 16 1
11: TypePointer Function 10(int16_t)
12: TypeInt 16 0
13: TypePointer Function 12(int16_t)
14: TypeInt 64 1
15: TypePointer Function 14(int64_t)
16: TypeInt 64 0
17: TypePointer Function 16(int64_t)
18: TypeFloat 16
19: TypePointer Function 18(float16_t)
20: TypeInt 32 1
21: TypeFunction 20(int) 7(ptr) 9(ptr) 11(ptr) 13(ptr) 15(ptr) 17(ptr) 19(ptr)
31: 20(int) Constant 0
4(main): 2 Function None 3
5: Label
Return
FunctionEnd
29(f(i81;u81;i161;u161;i641;u641;f161;): 20(int) Function None 21
22(i8): 7(ptr) FunctionParameter
23(u8): 9(ptr) FunctionParameter
24(i16): 11(ptr) FunctionParameter
25(u16): 13(ptr) FunctionParameter
26(i64): 15(ptr) FunctionParameter
27(u64): 17(ptr) FunctionParameter
28(f16): 19(ptr) FunctionParameter
30: Label
ReturnValue 31
FunctionEnd

View File

@ -1,7 +1,7 @@
spv.memoryScopeSemantics.comp spv.memoryScopeSemantics.comp
// Module Version 10300 // Module Version 10300
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 148 // Id's are bound by 163
Capability Shader Capability Shader
Capability Int64 Capability Int64
@ -23,59 +23,66 @@ spv.memoryScopeSemantics.comp
Name 23 "atomu" Name 23 "atomu"
Name 24 "value" Name 24 "value"
Name 36 "imagei" Name 36 "imagei"
Name 45 "imageu" Name 46 "imageu"
Name 65 "BufferU" Name 66 "BufferU"
MemberName 65(BufferU) 0 "x" MemberName 66(BufferU) 0 "x"
Name 67 "bufferu" Name 68 "bufferu"
Name 72 "y" Name 73 "y"
Name 77 "BufferI" Name 78 "BufferI"
MemberName 77(BufferI) 0 "x" MemberName 78(BufferI) 0 "x"
Name 79 "bufferi" Name 80 "bufferi"
Name 83 "A" Name 84 "A"
MemberName 83(A) 0 "x" MemberName 84(A) 0 "x"
Name 84 "BufferJ" Name 85 "BufferJ"
MemberName 84(BufferJ) 0 "a" MemberName 85(BufferJ) 0 "a"
Name 87 "bufferj" Name 88 "bufferj"
Name 98 "BufferK" Name 99 "BufferK"
MemberName 98(BufferK) 0 "x" MemberName 99(BufferK) 0 "x"
Name 100 "bufferk" Name 101 "bufferk"
Name 110 "imagej" Name 111 "imagej"
Name 122 "samp" Name 123 "samp"
Name 133 "atomu64" Name 134 "atomu64"
Name 138 "atomi64" Name 139 "atomi64"
Name 143 "BufferL" Name 144 "BufferL"
MemberName 143(BufferL) 0 "x" MemberName 144(BufferL) 0 "x"
Name 145 "bufferl" Name 146 "bufferl"
Name 151 "BufferM"
MemberName 151(BufferM) 0 "x"
Name 153 "bufferm"
Decorate 36(imagei) DescriptorSet 0 Decorate 36(imagei) DescriptorSet 0
Decorate 36(imagei) Binding 1 Decorate 36(imagei) Binding 1
Decorate 45(imageu) DescriptorSet 0 Decorate 46(imageu) DescriptorSet 0
Decorate 45(imageu) Binding 0 Decorate 46(imageu) Binding 0
MemberDecorate 65(BufferU) 0 Offset 0 MemberDecorate 66(BufferU) 0 Offset 0
Decorate 65(BufferU) Block Decorate 66(BufferU) Block
Decorate 67(bufferu) DescriptorSet 0 Decorate 68(bufferu) DescriptorSet 0
Decorate 67(bufferu) Binding 2 Decorate 68(bufferu) Binding 2
MemberDecorate 77(BufferI) 0 Offset 0 MemberDecorate 78(BufferI) 0 Offset 0
Decorate 77(BufferI) Block Decorate 78(BufferI) Block
Decorate 79(bufferi) DescriptorSet 0 Decorate 80(bufferi) DescriptorSet 0
Decorate 79(bufferi) Binding 3 Decorate 80(bufferi) Binding 3
Decorate 82 ArrayStride 4 Decorate 83 ArrayStride 4
MemberDecorate 83(A) 0 Offset 0 MemberDecorate 84(A) 0 Offset 0
MemberDecorate 84(BufferJ) 0 Offset 0 MemberDecorate 85(BufferJ) 0 Offset 0
Decorate 84(BufferJ) Block Decorate 85(BufferJ) Block
Decorate 87(bufferj) DescriptorSet 0 Decorate 88(bufferj) DescriptorSet 0
Decorate 87(bufferj) Binding 4 Decorate 88(bufferj) Binding 4
MemberDecorate 98(BufferK) 0 Offset 0 MemberDecorate 99(BufferK) 0 Offset 0
Decorate 98(BufferK) Block Decorate 99(BufferK) Block
Decorate 100(bufferk) DescriptorSet 0 Decorate 101(bufferk) DescriptorSet 0
Decorate 100(bufferk) Binding 7 Decorate 101(bufferk) Binding 7
Decorate 110(imagej) DescriptorSet 0 Decorate 111(imagej) DescriptorSet 0
Decorate 110(imagej) Binding 5 Decorate 111(imagej) Binding 5
Decorate 122(samp) DescriptorSet 0 Decorate 123(samp) DescriptorSet 0
Decorate 122(samp) Binding 6 Decorate 123(samp) Binding 6
MemberDecorate 143(BufferL) 0 Offset 0 MemberDecorate 144(BufferL) 0 Offset 0
Decorate 143(BufferL) Block Decorate 144(BufferL) Block
Decorate 145(bufferl) DescriptorSet 0 Decorate 146(bufferl) DescriptorSet 0
Decorate 145(bufferl) Binding 8 Decorate 146(bufferl) Binding 8
MemberDecorate 151(BufferM) 0 Offset 0
Decorate 151(BufferM) Block
Decorate 153(bufferm) DescriptorSet 0
Decorate 153(bufferm) Binding 9
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -106,67 +113,72 @@ spv.memoryScopeSemantics.comp
38: 6(int) Constant 0 38: 6(int) Constant 0
39: 37(ivec2) ConstantComposite 38 38 39: 37(ivec2) ConstantComposite 38 38
40: TypePointer Image 6(int) 40: TypePointer Image 6(int)
43: TypeImage 15(int) 2D nonsampled format:R32ui 42: 15(int) Constant 32768
44: TypePointer UniformConstant 43 44: TypeImage 15(int) 2D nonsampled format:R32ui
45(imageu): 44(ptr) Variable UniformConstant 45: TypePointer UniformConstant 44
46: 15(int) Constant 3 46(imageu): 45(ptr) Variable UniformConstant
47: TypePointer Image 15(int) 47: 15(int) Constant 3
50: 15(int) Constant 4 48: TypePointer Image 15(int)
52: 15(int) Constant 7 51: 15(int) Constant 4
57: 6(int) Constant 7 53: 15(int) Constant 7
61: 15(int) Constant 10 58: 6(int) Constant 7
63: 15(int) Constant 322 62: 15(int) Constant 10
65(BufferU): TypeStruct 15(int) 64: 15(int) Constant 322
66: TypePointer StorageBuffer 65(BufferU) 66(BufferU): TypeStruct 15(int)
67(bufferu): 66(ptr) Variable StorageBuffer 67: TypePointer StorageBuffer 66(BufferU)
68: TypePointer StorageBuffer 15(int) 68(bufferu): 67(ptr) Variable StorageBuffer
70: 15(int) Constant 1 69: TypePointer StorageBuffer 15(int)
77(BufferI): TypeStruct 15(int) 71: 15(int) Constant 1
78: TypePointer StorageBuffer 77(BufferI) 78(BufferI): TypeStruct 15(int)
79(bufferi): 78(ptr) Variable StorageBuffer 79: TypePointer StorageBuffer 78(BufferI)
82: TypeArray 15(int) 26 80(bufferi): 79(ptr) Variable StorageBuffer
83(A): TypeStruct 82 83: TypeArray 15(int) 26
84(BufferJ): TypeStruct 83(A) 84(A): TypeStruct 83
85: TypeArray 84(BufferJ) 26 85(BufferJ): TypeStruct 84(A)
86: TypePointer StorageBuffer 85 86: TypeArray 85(BufferJ) 26
87(bufferj): 86(ptr) Variable StorageBuffer 87: TypePointer StorageBuffer 86
94: TypePointer StorageBuffer 83(A) 88(bufferj): 87(ptr) Variable StorageBuffer
98(BufferK): TypeStruct 15(int) 95: TypePointer StorageBuffer 84(A)
99: TypePointer Uniform 98(BufferK) 99(BufferK): TypeStruct 15(int)
100(bufferk): 99(ptr) Variable Uniform 100: TypePointer Uniform 99(BufferK)
101: TypePointer Uniform 15(int) 101(bufferk): 100(ptr) Variable Uniform
106: TypeVector 6(int) 4 102: TypePointer Uniform 15(int)
108: TypeArray 34 26 107: TypeVector 6(int) 4
109: TypePointer UniformConstant 108 109: TypeArray 34 26
110(imagej): 109(ptr) Variable UniformConstant 110: TypePointer UniformConstant 109
116: 106(ivec4) ConstantComposite 38 38 38 38 111(imagej): 110(ptr) Variable UniformConstant
117: TypeFloat 32 117: 107(ivec4) ConstantComposite 38 38 38 38
118: TypeImage 117(float) 2D sampled format:Unknown 118: TypeFloat 32
119: TypeSampledImage 118 119: TypeImage 118(float) 2D sampled format:Unknown
120: TypeArray 119 26 120: TypeSampledImage 119
121: TypePointer UniformConstant 120 121: TypeArray 120 26
122(samp): 121(ptr) Variable UniformConstant 122: TypePointer UniformConstant 121
123: TypePointer UniformConstant 119 123(samp): 122(ptr) Variable UniformConstant
126: TypeVector 117(float) 2 124: TypePointer UniformConstant 120
127: 117(float) Constant 0 127: TypeVector 118(float) 2
128: 126(fvec2) ConstantComposite 127 127 128: 118(float) Constant 0
129: TypeVector 117(float) 4 129: 127(fvec2) ConstantComposite 128 128
131: TypeInt 64 0 130: TypeVector 118(float) 4
132: TypePointer Workgroup 131(int64_t) 132: TypeInt 64 0
133(atomu64): 132(ptr) Variable Workgroup 133: TypePointer Workgroup 132(int64_t)
134:131(int64_t) Constant 7 0 134(atomu64): 133(ptr) Variable Workgroup
136: TypeInt 64 1 135:132(int64_t) Constant 7 0
137: TypePointer Workgroup 136(int64_t) 137: TypeInt 64 1
138(atomi64): 137(ptr) Variable Workgroup 138: TypePointer Workgroup 137(int64_t)
139:136(int64_t) Constant 10 0 139(atomi64): 138(ptr) Variable Workgroup
143(BufferL): TypeStruct 15(int) 140:137(int64_t) Constant 10 0
144: TypePointer StorageBuffer 143(BufferL) 144(BufferL): TypeStruct 15(int)
145(bufferl): 144(ptr) Variable StorageBuffer 145: TypePointer StorageBuffer 144(BufferL)
146(bufferl): 145(ptr) Variable StorageBuffer
151(BufferM): TypeStruct 15(int)
152: TypePointer StorageBuffer 151(BufferM)
153(bufferm): 152(ptr) Variable StorageBuffer
161: 6(int) Constant 32768
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(origi): 7(ptr) Variable Function 8(origi): 7(ptr) Variable Function
21(origu): 20(ptr) Variable Function 21(origu): 20(ptr) Variable Function
72(y): 20(ptr) Variable Function 73(y): 20(ptr) Variable Function
19: 6(int) AtomicIAdd 10(atomi) 12 18 11 19: 6(int) AtomicIAdd 10(atomi) 12 18 11
Store 8(origi) 19 Store 8(origi) 19
25: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 25: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
@ -177,77 +189,87 @@ spv.memoryScopeSemantics.comp
32: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 32: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
AtomicStore 23(atomu) 12 33 32 AtomicStore 23(atomu) 12 33 32
41: 40(ptr) ImageTexelPointer 36(imagei) 39 17 41: 40(ptr) ImageTexelPointer 36(imagei) 39 17
42: 6(int) AtomicLoad 41 12 30 43: 6(int) AtomicLoad 41 12 30
Store 8(origi) 42 Store 8(origi) 43
48: 47(ptr) ImageTexelPointer 45(imageu) 39 17 49: 48(ptr) ImageTexelPointer 46(imageu) 39 17
49: 15(int) AtomicIAdd 48 12 30 46 50: 15(int) AtomicIAdd 49 12 30 47
Store 21(origu) 49 Store 21(origu) 50
51: 47(ptr) ImageTexelPointer 45(imageu) 39 17 52: 48(ptr) ImageTexelPointer 46(imageu) 39 17
AtomicStore 51 12 33 50 AtomicStore 52 12 33 51
53: 15(int) AtomicOr 23(atomu) 12 17 52 54: 15(int) AtomicOr 23(atomu) 12 17 53
Store 21(origu) 53
54: 15(int) AtomicXor 23(atomu) 12 17 52
Store 21(origu) 54 Store 21(origu) 54
55: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 55: 15(int) AtomicXor 23(atomu) 12 17 53
56: 15(int) AtomicUMin 23(atomu) 12 17 55 Store 21(origu) 55
Store 21(origu) 56 56: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
58: 6(int) AtomicSMax 10(atomi) 12 17 57 57: 15(int) AtomicUMin 23(atomu) 12 17 56
Store 8(origi) 58 Store 21(origu) 57
59: 6(int) Load 8(origi) 59: 6(int) AtomicSMax 10(atomi) 12 17 58
60: 6(int) AtomicExchange 10(atomi) 12 17 59 Store 8(origi) 59
Store 8(origi) 60 60: 6(int) Load 8(origi)
62: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 61: 6(int) AtomicExchange 10(atomi) 12 17 60
64: 15(int) AtomicCompareExchange 23(atomu) 12 63 63 62 61 Store 8(origi) 61
Store 21(origu) 64 63: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
69: 68(ptr) AccessChain 67(bufferu) 38 65: 15(int) AtomicCompareExchange 23(atomu) 12 64 64 63 62
71: 15(int) AtomicIAdd 69 12 18 70 Store 21(origu) 65
70: 69(ptr) AccessChain 68(bufferu) 38
72: 15(int) AtomicIAdd 70 12 18 71
MemoryBarrier 26 18 MemoryBarrier 26 18
ControlBarrier 26 26 63 ControlBarrier 26 26 64
ControlBarrier 26 26 17 ControlBarrier 26 26 17
73: 68(ptr) AccessChain 67(bufferu) 38 74: 69(ptr) AccessChain 68(bufferu) 38
74: 15(int) Load 73 MakePointerVisibleKHR NonPrivatePointerKHR 26 75: 15(int) Load 74 MakePointerVisibleKHR NonPrivatePointerKHR 26
Store 72(y) 74 Store 73(y) 75
75: 15(int) Load 72(y) 76: 15(int) Load 73(y)
76: 68(ptr) AccessChain 67(bufferu) 38 77: 69(ptr) AccessChain 68(bufferu) 38
Store 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 26 Store 77 76 MakePointerAvailableKHR NonPrivatePointerKHR 26
80: 68(ptr) AccessChain 79(bufferi) 38 81: 69(ptr) AccessChain 80(bufferi) 38
81: 15(int) Load 80 MakePointerVisibleKHR NonPrivatePointerKHR 16 82: 15(int) Load 81 MakePointerVisibleKHR NonPrivatePointerKHR 16
Store 72(y) 81 Store 73(y) 82
88: 68(ptr) AccessChain 87(bufferj) 38 38 38 12 89: 69(ptr) AccessChain 88(bufferj) 38 38 38 12
89: 15(int) Load 88 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 90: 15(int) Load 89 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
Store 72(y) 89 Store 73(y) 90
90: 15(int) Load 72(y) 91: 15(int) Load 73(y)
91: 68(ptr) AccessChain 79(bufferi) 38 92: 69(ptr) AccessChain 80(bufferi) 38
Store 91 90 MakePointerAvailableKHR NonPrivatePointerKHR 16 Store 92 91 MakePointerAvailableKHR NonPrivatePointerKHR 16
92: 15(int) Load 72(y) 93: 15(int) Load 73(y)
93: 68(ptr) AccessChain 87(bufferj) 38 38 38 12 94: 69(ptr) AccessChain 88(bufferj) 38 38 38 12
Store 93 92 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 Store 94 93 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16
95: 94(ptr) AccessChain 87(bufferj) 12 38 96: 95(ptr) AccessChain 88(bufferj) 12 38
96: 83(A) Load 95 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 97: 84(A) Load 96 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
97: 94(ptr) AccessChain 87(bufferj) 38 38 98: 95(ptr) AccessChain 88(bufferj) 38 38
Store 97 96 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 Store 98 97 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16
102: 101(ptr) AccessChain 100(bufferk) 38 103: 102(ptr) AccessChain 101(bufferk) 38
103: 15(int) Load 102 NonPrivatePointerKHR 104: 15(int) Load 103 NonPrivatePointerKHR
104: 68(ptr) AccessChain 79(bufferi) 38 105: 69(ptr) AccessChain 80(bufferi) 38
Store 104 103 MakePointerAvailableKHR NonPrivatePointerKHR 16 Store 105 104 MakePointerAvailableKHR NonPrivatePointerKHR 16
105: 34 Load 36(imagei) 106: 34 Load 36(imagei)
107: 106(ivec4) ImageRead 105 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16 108: 107(ivec4) ImageRead 106 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16
111: 35(ptr) AccessChain 110(imagej) 38 112: 35(ptr) AccessChain 111(imagej) 38
112: 34 Load 111 113: 34 Load 112
113: 106(ivec4) ImageRead 112 39 NonPrivateTexelKHR 114: 107(ivec4) ImageRead 113 39 NonPrivateTexelKHR
114: 35(ptr) AccessChain 110(imagej) 12 115: 35(ptr) AccessChain 111(imagej) 12
115: 34 Load 114 116: 34 Load 115
ImageWrite 115 39 116 NonPrivateTexelKHR ImageWrite 116 39 117 NonPrivateTexelKHR
124: 123(ptr) AccessChain 122(samp) 38 125: 124(ptr) AccessChain 123(samp) 38
125: 119 Load 124 126: 120 Load 125
130: 129(fvec4) ImageSampleExplicitLod 125 128 Lod NonPrivateTexelKHR 127 131: 130(fvec4) ImageSampleExplicitLod 126 129 Lod NonPrivateTexelKHR 128
135:131(int64_t) AtomicUMax 133(atomu64) 12 17 134 136:132(int64_t) AtomicUMax 134(atomu64) 12 17 135
Store 133(atomu64) 135 MakePointerAvailableKHR NonPrivatePointerKHR 26 Store 134(atomu64) 136 MakePointerAvailableKHR NonPrivatePointerKHR 26
140:131(int64_t) Load 133(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26 141:132(int64_t) Load 134(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26
141:136(int64_t) Bitcast 140 142:137(int64_t) Bitcast 141
142:136(int64_t) AtomicCompareExchange 138(atomi64) 12 63 63 141 139 143:137(int64_t) AtomicCompareExchange 139(atomi64) 12 64 64 142 140
146: 68(ptr) AccessChain 145(bufferl) 38 147: 69(ptr) AccessChain 146(bufferl) 38
147: 15(int) Load 146 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 148: 15(int) Load 147 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
Store 72(y) 147 Store 73(y) 148
149: 69(ptr) AccessChain 146(bufferl) 38
150: 15(int) AtomicIAdd 149 16 42 71
154: 69(ptr) AccessChain 153(bufferm) 38
155: 15(int) AtomicOr 154 16 42 26
156: 40(ptr) ImageTexelPointer 36(imagei) 39 17
157: 6(int) AtomicIAdd 156 16 42 11
158: 69(ptr) AccessChain 68(bufferu) 38
159: 15(int) AtomicIAdd 158 12 17 51
160: 69(ptr) AccessChain 68(bufferu) 38
162: 15(int) AtomicIAdd 160 12 42 16
Return Return
FunctionEnd FunctionEnd

View File

@ -11,7 +11,9 @@ ERROR: 0:23: 'atomicAdd' : Semantics must not include multiple of gl_SemanticsRe
ERROR: 0:24: 'atomicCompSwap' : semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:24: 'atomicCompSwap' : semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease
ERROR: 0:25: 'memoryBarrier' : gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:25: 'memoryBarrier' : gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease
ERROR: 0:26: 'memoryBarrier' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:26: 'memoryBarrier' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease
ERROR: 12 compilation errors. No code generated. ERROR: 0:27: 'memoryBarrier' : gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier
ERROR: 0:28: 'atomicCompSwap' : semEqual and semUnequal must either both include gl_SemanticsVolatile or neither
ERROR: 14 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link SPIR-V is not generated for failed compile or link

View File

@ -1,13 +1,13 @@
spv.meshShaderPerViewUserDefined.mesh spv.meshShaderPerViewUserDefined.mesh
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 90 // Id's are bound by 108
Capability MeshShadingNV Capability MeshShadingNV
Extension "SPV_NV_mesh_shader" Extension "SPV_NV_mesh_shader"
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint MeshNV 4 "main" 11 20 21 35 67 EntryPoint MeshNV 4 "main" 11 20 21 35 67 92 95 96 97 102 105 106 107
ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 LocalSize 32 1 1
ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputVertices 81
ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputPrimitivesNV 32
@ -32,6 +32,14 @@ spv.meshShaderPerViewUserDefined.mesh
MemberName 64(perviewBlock) 2 "color7" MemberName 64(perviewBlock) 2 "color7"
MemberName 64(perviewBlock) 3 "color8" MemberName 64(perviewBlock) 3 "color8"
Name 67 "b2" Name 67 "b2"
Name 92 "nonBlk1"
Name 95 "nonBlk2"
Name 96 "nonBlk3"
Name 97 "nonBlk4"
Name 102 "nonBlkArr1"
Name 105 "nonBlkArr2"
Name 106 "nonBlkArr3"
Name 107 "nonBlkArr4"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
@ -50,6 +58,26 @@ spv.meshShaderPerViewUserDefined.mesh
Decorate 64(perviewBlock) Block Decorate 64(perviewBlock) Block
Decorate 67(b2) Location 10 Decorate 67(b2) Location 10
Decorate 89 BuiltIn WorkgroupSize Decorate 89 BuiltIn WorkgroupSize
Decorate 92(nonBlk1) PerViewNV
Decorate 92(nonBlk1) Location 18
Decorate 95(nonBlk2) PerPrimitiveNV
Decorate 95(nonBlk2) PerViewNV
Decorate 95(nonBlk2) Location 19
Decorate 96(nonBlk3) PerViewNV
Decorate 96(nonBlk3) Location 20
Decorate 97(nonBlk4) PerPrimitiveNV
Decorate 97(nonBlk4) PerViewNV
Decorate 97(nonBlk4) Location 21
Decorate 102(nonBlkArr1) PerViewNV
Decorate 102(nonBlkArr1) Location 22
Decorate 105(nonBlkArr2) PerPrimitiveNV
Decorate 105(nonBlkArr2) PerViewNV
Decorate 105(nonBlkArr2) Location 24
Decorate 106(nonBlkArr3) PerViewNV
Decorate 106(nonBlkArr3) Location 26
Decorate 107(nonBlkArr4) PerPrimitiveNV
Decorate 107(nonBlkArr4) PerViewNV
Decorate 107(nonBlkArr4) Location 28
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
@ -106,6 +134,24 @@ spv.meshShaderPerViewUserDefined.mesh
86: 27(fvec4) ConstantComposite 85 85 85 85 86: 27(fvec4) ConstantComposite 85 85 85 85
88: 6(int) Constant 32 88: 6(int) Constant 32
89: 9(ivec3) ConstantComposite 88 60 60 89: 9(ivec3) ConstantComposite 88 60 60
90: TypeArray 63 32
91: TypePointer Output 90
92(nonBlk1): 91(ptr) Variable Output
93: TypeArray 63 88
94: TypePointer Output 93
95(nonBlk2): 94(ptr) Variable Output
96(nonBlk3): 91(ptr) Variable Output
97(nonBlk4): 94(ptr) Variable Output
98: TypeArray 27(fvec4) 62
99: TypeArray 98 17
100: TypeArray 99 32
101: TypePointer Output 100
102(nonBlkArr1): 101(ptr) Variable Output
103: TypeArray 99 88
104: TypePointer Output 103
105(nonBlkArr2): 104(ptr) Variable Output
106(nonBlkArr3): 101(ptr) Variable Output
107(nonBlkArr4): 104(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(iid): 7(ptr) Variable Function 8(iid): 7(ptr) Variable Function

View File

@ -0,0 +1,11 @@
spv.meshShaderPerView_Errors.mesh
ERROR: 0:19: '[]' : only outermost dimension of an array of arrays can be implicitly sized
ERROR: 0:20: '[]' : mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized
ERROR: 0:21: 'perviewNV' : requires a view array dimension
ERROR: 0:25: '[]' : only outermost dimension of an array of arrays can be implicitly sized
ERROR: 0:26: '[]' : mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized
ERROR: 0:27: 'perviewNV' : requires a view array dimension
ERROR: 6 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

View File

@ -1,8 +1,7 @@
spv.multiviewPerViewAttributes.tesc spv.multiviewPerViewAttributes.tesc
Validation failed
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 37 // Id's are bound by 41
Capability Tessellation Capability Tessellation
Capability PerViewAttributesNV Capability PerViewAttributesNV
@ -24,7 +23,7 @@ Validation failed
MemberName 27(gl_PerVertex) 1 "gl_PointSize" MemberName 27(gl_PerVertex) 1 "gl_PointSize"
MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 27(gl_PerVertex) 3 "gl_CullDistance" MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
MemberName 27(gl_PerVertex) 5 "gl_PositionPerViewNV" MemberName 27(gl_PerVertex) 4 "gl_PositionPerViewNV"
Name 31 "gl_in" Name 31 "gl_in"
MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV
MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV
@ -34,6 +33,7 @@ Validation failed
MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
MemberDecorate 27(gl_PerVertex) 4 BuiltIn PositionPerViewNV
Decorate 27(gl_PerVertex) Block Decorate 27(gl_PerVertex) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
@ -61,7 +61,8 @@ Validation failed
30: TypePointer Input 29 30: TypePointer Input 29
31(gl_in): 30(ptr) Variable Input 31(gl_in): 30(ptr) Variable Input
32: TypePointer Input 7(fvec4) 32: TypePointer Input 7(fvec4)
35: TypePointer Output 7(fvec4) 35: 11(int) Constant 4
39: TypePointer Output 7(fvec4)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
20: 11(int) Load 19(gl_InvocationID) 20: 11(int) Load 19(gl_InvocationID)
@ -70,7 +71,10 @@ Validation failed
25: 11(int) Load 19(gl_InvocationID) 25: 11(int) Load 19(gl_InvocationID)
33: 32(ptr) AccessChain 31(gl_in) 21 22 33: 32(ptr) AccessChain 31(gl_in) 21 22
34: 7(fvec4) Load 33 34: 7(fvec4) Load 33
36: 35(ptr) AccessChain 17(gl_out) 25 22 22 36: 32(ptr) AccessChain 31(gl_in) 21 35 22
Store 36 34 37: 7(fvec4) Load 36
38: 7(fvec4) FAdd 34 37
40: 39(ptr) AccessChain 17(gl_out) 25 22 22
Store 40 38
Return Return
FunctionEnd FunctionEnd

View File

@ -0,0 +1,54 @@
spv.privateVariableTypes.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 27
Capability Shader
Capability Float16
Capability Int64
Capability Int16
Capability Int8
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 460
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
Name 4 "main"
Name 8 "i8"
Name 11 "u8"
Name 14 "i16"
Name 17 "u16"
Name 20 "i64"
Name 23 "u64"
Name 26 "f16"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 8 1
7: TypePointer Private 6(int8_t)
8(i8): 7(ptr) Variable Private
9: TypeInt 8 0
10: TypePointer Private 9(int8_t)
11(u8): 10(ptr) Variable Private
12: TypeInt 16 1
13: TypePointer Private 12(int16_t)
14(i16): 13(ptr) Variable Private
15: TypeInt 16 0
16: TypePointer Private 15(int16_t)
17(u16): 16(ptr) Variable Private
18: TypeInt 64 1
19: TypePointer Private 18(int64_t)
20(i64): 19(ptr) Variable Private
21: TypeInt 64 0
22: TypePointer Private 21(int64_t)
23(u64): 22(ptr) Variable Private
24: TypeFloat 16
25: TypePointer Private 24(float16_t)
26(f16): 25(ptr) Variable Private
4(main): 2 Function None 3
5: Label
Return
FunctionEnd

View File

@ -1,10 +1,10 @@
spv.sampleMaskOverrideCoverage.frag spv.sampleMaskOverrideCoverage.frag
Validation failed
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 20 // Id's are bound by 20
Capability Shader Capability Shader
Capability SampleMaskOverrideCoverageNV
Extension "SPV_NV_sample_mask_override_coverage" Extension "SPV_NV_sample_mask_override_coverage"
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450

View File

@ -1,7 +1,7 @@
spv.shaderBallot.comp spv.shaderBallot.comp
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 298 // Id's are bound by 318
Capability Shader Capability Shader
Capability Int64 Capability Int64
@ -9,7 +9,7 @@ spv.shaderBallot.comp
Extension "SPV_KHR_shader_ballot" Extension "SPV_KHR_shader_ballot"
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32 EntryPoint GLCompute 4 "main" 10 12 22 29 36 43 50
ExecutionMode 4 LocalSize 8 8 1 ExecutionMode 4 LocalSize 8 8 1
Source GLSL 450 Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_ARB_gpu_shader_int64"
@ -19,30 +19,30 @@ spv.shaderBallot.comp
Name 10 "gl_SubGroupInvocationARB" Name 10 "gl_SubGroupInvocationARB"
Name 12 "gl_SubGroupSizeARB" Name 12 "gl_SubGroupSizeARB"
Name 19 "relMask" Name 19 "relMask"
Name 21 "gl_SubGroupEqMaskARB" Name 22 "gl_SubGroupEqMaskARB"
Name 23 "gl_SubGroupGeMaskARB" Name 29 "gl_SubGroupGeMaskARB"
Name 26 "gl_SubGroupGtMaskARB" Name 36 "gl_SubGroupGtMaskARB"
Name 29 "gl_SubGroupLeMaskARB" Name 43 "gl_SubGroupLeMaskARB"
Name 32 "gl_SubGroupLtMaskARB" Name 50 "gl_SubGroupLtMaskARB"
Name 52 "Buffers" Name 72 "Buffers"
MemberName 52(Buffers) 0 "f4" MemberName 72(Buffers) 0 "f4"
MemberName 52(Buffers) 1 "i4" MemberName 72(Buffers) 1 "i4"
MemberName 52(Buffers) 2 "u4" MemberName 72(Buffers) 2 "u4"
Name 55 "data" Name 75 "data"
Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId
Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize
Decorate 21(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR Decorate 22(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR
Decorate 23(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR Decorate 29(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
Decorate 26(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR Decorate 36(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR
Decorate 29(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR Decorate 43(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR
Decorate 32(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR Decorate 50(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
MemberDecorate 52(Buffers) 0 Offset 0 MemberDecorate 72(Buffers) 0 Offset 0
MemberDecorate 52(Buffers) 1 Offset 16 MemberDecorate 72(Buffers) 1 Offset 16
MemberDecorate 52(Buffers) 2 Offset 32 MemberDecorate 72(Buffers) 2 Offset 32
Decorate 52(Buffers) BufferBlock Decorate 72(Buffers) BufferBlock
Decorate 55(data) DescriptorSet 0 Decorate 75(data) DescriptorSet 0
Decorate 55(data) Binding 0 Decorate 75(data) Binding 0
Decorate 297 BuiltIn WorkgroupSize Decorate 317 BuiltIn WorkgroupSize
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
@ -53,43 +53,43 @@ spv.shaderBallot.comp
15: 6(int) Constant 4 15: 6(int) Constant 4
17: TypeInt 64 0 17: TypeInt 64 0
18: TypePointer Function 17(int64_t) 18: TypePointer Function 17(int64_t)
20: TypePointer Input 17(int64_t) 20: TypeVector 6(int) 4
21(gl_SubGroupEqMaskARB): 20(ptr) Variable Input 21: TypePointer Input 20(ivec4)
23(gl_SubGroupGeMaskARB): 20(ptr) Variable Input 22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input
26(gl_SubGroupGtMaskARB): 20(ptr) Variable Input 26: TypeVector 6(int) 2
29(gl_SubGroupLeMaskARB): 20(ptr) Variable Input 29(gl_SubGroupGeMaskARB): 21(ptr) Variable Input
32(gl_SubGroupLtMaskARB): 20(ptr) Variable Input 36(gl_SubGroupGtMaskARB): 21(ptr) Variable Input
36: TypeBool 43(gl_SubGroupLeMaskARB): 21(ptr) Variable Input
37: 36(bool) ConstantTrue 50(gl_SubGroupLtMaskARB): 21(ptr) Variable Input
38: TypeVector 6(int) 4 58: TypeBool
42: TypeVector 6(int) 2 59: 58(bool) ConstantTrue
48: TypeFloat 32 68: TypeFloat 32
49: TypeVector 48(float) 4 69: TypeVector 68(float) 4
50: TypeInt 32 1 70: TypeInt 32 1
51: TypeVector 50(int) 4 71: TypeVector 70(int) 4
52(Buffers): TypeStruct 49(fvec4) 51(ivec4) 38(ivec4) 72(Buffers): TypeStruct 69(fvec4) 71(ivec4) 20(ivec4)
53: TypeArray 52(Buffers) 15 73: TypeArray 72(Buffers) 15
54: TypePointer Uniform 53 74: TypePointer Uniform 73
55(data): 54(ptr) Variable Uniform 75(data): 74(ptr) Variable Uniform
57: 50(int) Constant 0 77: 70(int) Constant 0
58: 6(int) Constant 0 78: 6(int) Constant 0
59: TypePointer Uniform 48(float) 79: TypePointer Uniform 68(float)
66: 50(int) Constant 1 86: 70(int) Constant 1
67: TypeVector 48(float) 2 87: TypeVector 68(float) 2
68: TypePointer Uniform 49(fvec4) 88: TypePointer Uniform 69(fvec4)
82: 50(int) Constant 2 102: 70(int) Constant 2
83: TypeVector 48(float) 3 103: TypeVector 68(float) 3
99: 50(int) Constant 3 119: 70(int) Constant 3
114: TypePointer Uniform 50(int) 134: TypePointer Uniform 70(int)
121: TypeVector 50(int) 2 141: TypeVector 70(int) 2
122: TypePointer Uniform 51(ivec4) 142: TypePointer Uniform 71(ivec4)
136: TypeVector 50(int) 3 156: TypeVector 70(int) 3
166: TypePointer Uniform 6(int) 186: TypePointer Uniform 6(int)
173: TypePointer Uniform 38(ivec4) 193: TypePointer Uniform 20(ivec4)
187: TypeVector 6(int) 3 207: TypeVector 6(int) 3
295: 6(int) Constant 8 315: 6(int) Constant 8
296: 6(int) Constant 1 316: 6(int) Constant 1
297: 187(ivec3) ConstantComposite 295 295 296 317: 207(ivec3) ConstantComposite 315 315 316
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(invocation): 7(ptr) Variable Function 8(invocation): 7(ptr) Variable Function
@ -99,275 +99,295 @@ spv.shaderBallot.comp
14: 6(int) IAdd 11 13 14: 6(int) IAdd 11 13
16: 6(int) UMod 14 15 16: 6(int) UMod 14 15
Store 8(invocation) 16 Store 8(invocation) 16
22: 17(int64_t) Load 21(gl_SubGroupEqMaskARB) 23: 20(ivec4) Load 22(gl_SubGroupEqMaskARB)
24: 17(int64_t) Load 23(gl_SubGroupGeMaskARB) 24: 6(int) CompositeExtract 23 0
25: 17(int64_t) IAdd 22 24 25: 6(int) CompositeExtract 23 1
27: 17(int64_t) Load 26(gl_SubGroupGtMaskARB) 27: 26(ivec2) CompositeConstruct 24 25
28: 17(int64_t) IAdd 25 27 28: 17(int64_t) Bitcast 27
30: 17(int64_t) Load 29(gl_SubGroupLeMaskARB) 30: 20(ivec4) Load 29(gl_SubGroupGeMaskARB)
31: 17(int64_t) IAdd 28 30 31: 6(int) CompositeExtract 30 0
33: 17(int64_t) Load 32(gl_SubGroupLtMaskARB) 32: 6(int) CompositeExtract 30 1
34: 17(int64_t) IAdd 31 33 33: 26(ivec2) CompositeConstruct 31 32
Store 19(relMask) 34 34: 17(int64_t) Bitcast 33
35: 17(int64_t) Load 19(relMask) 35: 17(int64_t) IAdd 28 34
39: 38(ivec4) SubgroupBallotKHR 37 37: 20(ivec4) Load 36(gl_SubGroupGtMaskARB)
40: 6(int) CompositeExtract 39 0 38: 6(int) CompositeExtract 37 0
41: 6(int) CompositeExtract 39 1 39: 6(int) CompositeExtract 37 1
43: 42(ivec2) CompositeConstruct 40 41 40: 26(ivec2) CompositeConstruct 38 39
44: 17(int64_t) Bitcast 43 41: 17(int64_t) Bitcast 40
45: 36(bool) IEqual 35 44 42: 17(int64_t) IAdd 35 41
SelectionMerge 47 None 44: 20(ivec4) Load 43(gl_SubGroupLeMaskARB)
BranchConditional 45 46 216 45: 6(int) CompositeExtract 44 0
46: Label 46: 6(int) CompositeExtract 44 1
56: 6(int) Load 8(invocation) 47: 26(ivec2) CompositeConstruct 45 46
60: 59(ptr) AccessChain 55(data) 57 57 58 48: 17(int64_t) Bitcast 47
61: 48(float) Load 60 49: 17(int64_t) IAdd 42 48
62: 6(int) Load 8(invocation) 51: 20(ivec4) Load 50(gl_SubGroupLtMaskARB)
63: 48(float) SubgroupReadInvocationKHR 61 62 52: 6(int) CompositeExtract 51 0
64: 59(ptr) AccessChain 55(data) 56 57 58 53: 6(int) CompositeExtract 51 1
Store 64 63 54: 26(ivec2) CompositeConstruct 52 53
65: 6(int) Load 8(invocation) 55: 17(int64_t) Bitcast 54
69: 68(ptr) AccessChain 55(data) 66 57 56: 17(int64_t) IAdd 49 55
70: 49(fvec4) Load 69 Store 19(relMask) 56
71: 67(fvec2) VectorShuffle 70 70 0 1 57: 17(int64_t) Load 19(relMask)
72: 6(int) Load 8(invocation) 60: 20(ivec4) SubgroupBallotKHR 59
73: 48(float) CompositeExtract 71 0 61: 6(int) CompositeExtract 60 0
74: 48(float) SubgroupReadInvocationKHR 73 72 62: 6(int) CompositeExtract 60 1
75: 48(float) CompositeExtract 71 1 63: 26(ivec2) CompositeConstruct 61 62
76: 48(float) SubgroupReadInvocationKHR 75 72 64: 17(int64_t) Bitcast 63
77: 67(fvec2) CompositeConstruct 74 76 65: 58(bool) IEqual 57 64
78: 68(ptr) AccessChain 55(data) 65 57 SelectionMerge 67 None
79: 49(fvec4) Load 78 BranchConditional 65 66 236
80: 49(fvec4) VectorShuffle 79 77 4 5 2 3 66: Label
Store 78 80 76: 6(int) Load 8(invocation)
81: 6(int) Load 8(invocation) 80: 79(ptr) AccessChain 75(data) 77 77 78
84: 68(ptr) AccessChain 55(data) 82 57 81: 68(float) Load 80
85: 49(fvec4) Load 84 82: 6(int) Load 8(invocation)
86: 83(fvec3) VectorShuffle 85 85 0 1 2 83: 68(float) SubgroupReadInvocationKHR 81 82
87: 6(int) Load 8(invocation) 84: 79(ptr) AccessChain 75(data) 76 77 78
88: 48(float) CompositeExtract 86 0 Store 84 83
89: 48(float) SubgroupReadInvocationKHR 88 87 85: 6(int) Load 8(invocation)
90: 48(float) CompositeExtract 86 1 89: 88(ptr) AccessChain 75(data) 86 77
91: 48(float) SubgroupReadInvocationKHR 90 87 90: 69(fvec4) Load 89
92: 48(float) CompositeExtract 86 2 91: 87(fvec2) VectorShuffle 90 90 0 1
93: 48(float) SubgroupReadInvocationKHR 92 87 92: 6(int) Load 8(invocation)
94: 83(fvec3) CompositeConstruct 89 91 93 93: 68(float) CompositeExtract 91 0
95: 68(ptr) AccessChain 55(data) 81 57 94: 68(float) SubgroupReadInvocationKHR 93 92
96: 49(fvec4) Load 95 95: 68(float) CompositeExtract 91 1
97: 49(fvec4) VectorShuffle 96 94 4 5 6 3 96: 68(float) SubgroupReadInvocationKHR 95 92
Store 95 97 97: 87(fvec2) CompositeConstruct 94 96
98: 6(int) Load 8(invocation) 98: 88(ptr) AccessChain 75(data) 85 77
100: 68(ptr) AccessChain 55(data) 99 57 99: 69(fvec4) Load 98
101: 49(fvec4) Load 100 100: 69(fvec4) VectorShuffle 99 97 4 5 2 3
102: 6(int) Load 8(invocation) Store 98 100
103: 48(float) CompositeExtract 101 0 101: 6(int) Load 8(invocation)
104: 48(float) SubgroupReadInvocationKHR 103 102 104: 88(ptr) AccessChain 75(data) 102 77
105: 48(float) CompositeExtract 101 1 105: 69(fvec4) Load 104
106: 48(float) SubgroupReadInvocationKHR 105 102 106: 103(fvec3) VectorShuffle 105 105 0 1 2
107: 48(float) CompositeExtract 101 2 107: 6(int) Load 8(invocation)
108: 48(float) SubgroupReadInvocationKHR 107 102 108: 68(float) CompositeExtract 106 0
109: 48(float) CompositeExtract 101 3 109: 68(float) SubgroupReadInvocationKHR 108 107
110: 48(float) SubgroupReadInvocationKHR 109 102 110: 68(float) CompositeExtract 106 1
111: 49(fvec4) CompositeConstruct 104 106 108 110 111: 68(float) SubgroupReadInvocationKHR 110 107
112: 68(ptr) AccessChain 55(data) 98 57 112: 68(float) CompositeExtract 106 2
Store 112 111 113: 68(float) SubgroupReadInvocationKHR 112 107
113: 6(int) Load 8(invocation) 114: 103(fvec3) CompositeConstruct 109 111 113
115: 114(ptr) AccessChain 55(data) 57 66 58 115: 88(ptr) AccessChain 75(data) 101 77
116: 50(int) Load 115 116: 69(fvec4) Load 115
117: 6(int) Load 8(invocation) 117: 69(fvec4) VectorShuffle 116 114 4 5 6 3
118: 50(int) SubgroupReadInvocationKHR 116 117 Store 115 117
119: 114(ptr) AccessChain 55(data) 113 66 58 118: 6(int) Load 8(invocation)
Store 119 118 120: 88(ptr) AccessChain 75(data) 119 77
120: 6(int) Load 8(invocation) 121: 69(fvec4) Load 120
123: 122(ptr) AccessChain 55(data) 66 66 122: 6(int) Load 8(invocation)
124: 51(ivec4) Load 123 123: 68(float) CompositeExtract 121 0
125: 121(ivec2) VectorShuffle 124 124 0 1 124: 68(float) SubgroupReadInvocationKHR 123 122
126: 6(int) Load 8(invocation) 125: 68(float) CompositeExtract 121 1
127: 50(int) CompositeExtract 125 0 126: 68(float) SubgroupReadInvocationKHR 125 122
128: 50(int) SubgroupReadInvocationKHR 127 126 127: 68(float) CompositeExtract 121 2
129: 50(int) CompositeExtract 125 1 128: 68(float) SubgroupReadInvocationKHR 127 122
130: 50(int) SubgroupReadInvocationKHR 129 126 129: 68(float) CompositeExtract 121 3
131: 121(ivec2) CompositeConstruct 128 130 130: 68(float) SubgroupReadInvocationKHR 129 122
132: 122(ptr) AccessChain 55(data) 120 66 131: 69(fvec4) CompositeConstruct 124 126 128 130
133: 51(ivec4) Load 132 132: 88(ptr) AccessChain 75(data) 118 77
134: 51(ivec4) VectorShuffle 133 131 4 5 2 3 Store 132 131
Store 132 134 133: 6(int) Load 8(invocation)
135: 6(int) Load 8(invocation) 135: 134(ptr) AccessChain 75(data) 77 86 78
137: 122(ptr) AccessChain 55(data) 82 66 136: 70(int) Load 135
138: 51(ivec4) Load 137 137: 6(int) Load 8(invocation)
139: 136(ivec3) VectorShuffle 138 138 0 1 2 138: 70(int) SubgroupReadInvocationKHR 136 137
139: 134(ptr) AccessChain 75(data) 133 86 78
Store 139 138
140: 6(int) Load 8(invocation) 140: 6(int) Load 8(invocation)
141: 50(int) CompositeExtract 139 0 143: 142(ptr) AccessChain 75(data) 86 86
142: 50(int) SubgroupReadInvocationKHR 141 140 144: 71(ivec4) Load 143
143: 50(int) CompositeExtract 139 1 145: 141(ivec2) VectorShuffle 144 144 0 1
144: 50(int) SubgroupReadInvocationKHR 143 140 146: 6(int) Load 8(invocation)
145: 50(int) CompositeExtract 139 2 147: 70(int) CompositeExtract 145 0
146: 50(int) SubgroupReadInvocationKHR 145 140 148: 70(int) SubgroupReadInvocationKHR 147 146
147: 136(ivec3) CompositeConstruct 142 144 146 149: 70(int) CompositeExtract 145 1
148: 122(ptr) AccessChain 55(data) 135 66 150: 70(int) SubgroupReadInvocationKHR 149 146
149: 51(ivec4) Load 148 151: 141(ivec2) CompositeConstruct 148 150
150: 51(ivec4) VectorShuffle 149 147 4 5 6 3 152: 142(ptr) AccessChain 75(data) 140 86
Store 148 150 153: 71(ivec4) Load 152
151: 6(int) Load 8(invocation) 154: 71(ivec4) VectorShuffle 153 151 4 5 2 3
152: 122(ptr) AccessChain 55(data) 99 66 Store 152 154
153: 51(ivec4) Load 152 155: 6(int) Load 8(invocation)
154: 6(int) Load 8(invocation) 157: 142(ptr) AccessChain 75(data) 102 86
155: 50(int) CompositeExtract 153 0 158: 71(ivec4) Load 157
156: 50(int) SubgroupReadInvocationKHR 155 154 159: 156(ivec3) VectorShuffle 158 158 0 1 2
157: 50(int) CompositeExtract 153 1 160: 6(int) Load 8(invocation)
158: 50(int) SubgroupReadInvocationKHR 157 154 161: 70(int) CompositeExtract 159 0
159: 50(int) CompositeExtract 153 2 162: 70(int) SubgroupReadInvocationKHR 161 160
160: 50(int) SubgroupReadInvocationKHR 159 154 163: 70(int) CompositeExtract 159 1
161: 50(int) CompositeExtract 153 3 164: 70(int) SubgroupReadInvocationKHR 163 160
162: 50(int) SubgroupReadInvocationKHR 161 154 165: 70(int) CompositeExtract 159 2
163: 51(ivec4) CompositeConstruct 156 158 160 162 166: 70(int) SubgroupReadInvocationKHR 165 160
164: 122(ptr) AccessChain 55(data) 151 66 167: 156(ivec3) CompositeConstruct 162 164 166
Store 164 163 168: 142(ptr) AccessChain 75(data) 155 86
165: 6(int) Load 8(invocation) 169: 71(ivec4) Load 168
167: 166(ptr) AccessChain 55(data) 57 82 58 170: 71(ivec4) VectorShuffle 169 167 4 5 6 3
168: 6(int) Load 167 Store 168 170
169: 6(int) Load 8(invocation) 171: 6(int) Load 8(invocation)
170: 6(int) SubgroupReadInvocationKHR 168 169 172: 142(ptr) AccessChain 75(data) 119 86
171: 166(ptr) AccessChain 55(data) 165 82 58 173: 71(ivec4) Load 172
Store 171 170 174: 6(int) Load 8(invocation)
172: 6(int) Load 8(invocation) 175: 70(int) CompositeExtract 173 0
174: 173(ptr) AccessChain 55(data) 66 82 176: 70(int) SubgroupReadInvocationKHR 175 174
175: 38(ivec4) Load 174 177: 70(int) CompositeExtract 173 1
176: 42(ivec2) VectorShuffle 175 175 0 1 178: 70(int) SubgroupReadInvocationKHR 177 174
177: 6(int) Load 8(invocation) 179: 70(int) CompositeExtract 173 2
178: 6(int) CompositeExtract 176 0 180: 70(int) SubgroupReadInvocationKHR 179 174
179: 6(int) SubgroupReadInvocationKHR 178 177 181: 70(int) CompositeExtract 173 3
180: 6(int) CompositeExtract 176 1 182: 70(int) SubgroupReadInvocationKHR 181 174
181: 6(int) SubgroupReadInvocationKHR 180 177 183: 71(ivec4) CompositeConstruct 176 178 180 182
182: 42(ivec2) CompositeConstruct 179 181 184: 142(ptr) AccessChain 75(data) 171 86
183: 173(ptr) AccessChain 55(data) 172 82 Store 184 183
184: 38(ivec4) Load 183 185: 6(int) Load 8(invocation)
185: 38(ivec4) VectorShuffle 184 182 4 5 2 3 187: 186(ptr) AccessChain 75(data) 77 102 78
Store 183 185 188: 6(int) Load 187
186: 6(int) Load 8(invocation) 189: 6(int) Load 8(invocation)
188: 173(ptr) AccessChain 55(data) 82 82 190: 6(int) SubgroupReadInvocationKHR 188 189
189: 38(ivec4) Load 188 191: 186(ptr) AccessChain 75(data) 185 102 78
190: 187(ivec3) VectorShuffle 189 189 0 1 2 Store 191 190
191: 6(int) Load 8(invocation) 192: 6(int) Load 8(invocation)
192: 6(int) CompositeExtract 190 0 194: 193(ptr) AccessChain 75(data) 86 102
193: 6(int) SubgroupReadInvocationKHR 192 191 195: 20(ivec4) Load 194
194: 6(int) CompositeExtract 190 1 196: 26(ivec2) VectorShuffle 195 195 0 1
195: 6(int) SubgroupReadInvocationKHR 194 191 197: 6(int) Load 8(invocation)
196: 6(int) CompositeExtract 190 2 198: 6(int) CompositeExtract 196 0
197: 6(int) SubgroupReadInvocationKHR 196 191 199: 6(int) SubgroupReadInvocationKHR 198 197
198: 187(ivec3) CompositeConstruct 193 195 197 200: 6(int) CompositeExtract 196 1
199: 173(ptr) AccessChain 55(data) 186 82 201: 6(int) SubgroupReadInvocationKHR 200 197
200: 38(ivec4) Load 199 202: 26(ivec2) CompositeConstruct 199 201
201: 38(ivec4) VectorShuffle 200 198 4 5 6 3 203: 193(ptr) AccessChain 75(data) 192 102
Store 199 201 204: 20(ivec4) Load 203
202: 6(int) Load 8(invocation) 205: 20(ivec4) VectorShuffle 204 202 4 5 2 3
203: 173(ptr) AccessChain 55(data) 99 82 Store 203 205
204: 38(ivec4) Load 203 206: 6(int) Load 8(invocation)
205: 6(int) Load 8(invocation) 208: 193(ptr) AccessChain 75(data) 102 102
206: 6(int) CompositeExtract 204 0 209: 20(ivec4) Load 208
207: 6(int) SubgroupReadInvocationKHR 206 205 210: 207(ivec3) VectorShuffle 209 209 0 1 2
208: 6(int) CompositeExtract 204 1 211: 6(int) Load 8(invocation)
209: 6(int) SubgroupReadInvocationKHR 208 205 212: 6(int) CompositeExtract 210 0
210: 6(int) CompositeExtract 204 2 213: 6(int) SubgroupReadInvocationKHR 212 211
211: 6(int) SubgroupReadInvocationKHR 210 205 214: 6(int) CompositeExtract 210 1
212: 6(int) CompositeExtract 204 3 215: 6(int) SubgroupReadInvocationKHR 214 211
213: 6(int) SubgroupReadInvocationKHR 212 205 216: 6(int) CompositeExtract 210 2
214: 38(ivec4) CompositeConstruct 207 209 211 213 217: 6(int) SubgroupReadInvocationKHR 216 211
215: 173(ptr) AccessChain 55(data) 202 82 218: 207(ivec3) CompositeConstruct 213 215 217
Store 215 214 219: 193(ptr) AccessChain 75(data) 206 102
Branch 47 220: 20(ivec4) Load 219
216: Label 221: 20(ivec4) VectorShuffle 220 218 4 5 6 3
217: 6(int) Load 8(invocation) Store 219 221
218: 59(ptr) AccessChain 55(data) 57 57 58
219: 48(float) Load 218
220: 48(float) SubgroupFirstInvocationKHR 219
221: 59(ptr) AccessChain 55(data) 217 57 58
Store 221 220
222: 6(int) Load 8(invocation) 222: 6(int) Load 8(invocation)
223: 68(ptr) AccessChain 55(data) 66 57 223: 193(ptr) AccessChain 75(data) 119 102
224: 49(fvec4) Load 223 224: 20(ivec4) Load 223
225: 67(fvec2) VectorShuffle 224 224 0 1 225: 6(int) Load 8(invocation)
226: 67(fvec2) SubgroupFirstInvocationKHR 225 226: 6(int) CompositeExtract 224 0
227: 68(ptr) AccessChain 55(data) 222 57 227: 6(int) SubgroupReadInvocationKHR 226 225
228: 49(fvec4) Load 227 228: 6(int) CompositeExtract 224 1
229: 49(fvec4) VectorShuffle 228 226 4 5 2 3 229: 6(int) SubgroupReadInvocationKHR 228 225
Store 227 229 230: 6(int) CompositeExtract 224 2
230: 6(int) Load 8(invocation) 231: 6(int) SubgroupReadInvocationKHR 230 225
231: 68(ptr) AccessChain 55(data) 82 57 232: 6(int) CompositeExtract 224 3
232: 49(fvec4) Load 231 233: 6(int) SubgroupReadInvocationKHR 232 225
233: 83(fvec3) VectorShuffle 232 232 0 1 2 234: 20(ivec4) CompositeConstruct 227 229 231 233
234: 83(fvec3) SubgroupFirstInvocationKHR 233 235: 193(ptr) AccessChain 75(data) 222 102
235: 68(ptr) AccessChain 55(data) 230 57 Store 235 234
236: 49(fvec4) Load 235 Branch 67
237: 49(fvec4) VectorShuffle 236 234 4 5 6 3 236: Label
Store 235 237 237: 6(int) Load 8(invocation)
238: 6(int) Load 8(invocation) 238: 79(ptr) AccessChain 75(data) 77 77 78
239: 68(ptr) AccessChain 55(data) 99 57 239: 68(float) Load 238
240: 49(fvec4) Load 239 240: 68(float) SubgroupFirstInvocationKHR 239
241: 49(fvec4) SubgroupFirstInvocationKHR 240 241: 79(ptr) AccessChain 75(data) 237 77 78
242: 68(ptr) AccessChain 55(data) 238 57 Store 241 240
Store 242 241 242: 6(int) Load 8(invocation)
243: 6(int) Load 8(invocation) 243: 88(ptr) AccessChain 75(data) 86 77
244: 114(ptr) AccessChain 55(data) 57 66 58 244: 69(fvec4) Load 243
245: 50(int) Load 244 245: 87(fvec2) VectorShuffle 244 244 0 1
246: 50(int) SubgroupFirstInvocationKHR 245 246: 87(fvec2) SubgroupFirstInvocationKHR 245
247: 114(ptr) AccessChain 55(data) 243 66 58 247: 88(ptr) AccessChain 75(data) 242 77
Store 247 246 248: 69(fvec4) Load 247
248: 6(int) Load 8(invocation) 249: 69(fvec4) VectorShuffle 248 246 4 5 2 3
249: 122(ptr) AccessChain 55(data) 66 66 Store 247 249
250: 51(ivec4) Load 249 250: 6(int) Load 8(invocation)
251: 121(ivec2) VectorShuffle 250 250 0 1 251: 88(ptr) AccessChain 75(data) 102 77
252: 121(ivec2) SubgroupFirstInvocationKHR 251 252: 69(fvec4) Load 251
253: 122(ptr) AccessChain 55(data) 248 66 253: 103(fvec3) VectorShuffle 252 252 0 1 2
254: 51(ivec4) Load 253 254: 103(fvec3) SubgroupFirstInvocationKHR 253
255: 51(ivec4) VectorShuffle 254 252 4 5 2 3 255: 88(ptr) AccessChain 75(data) 250 77
Store 253 255 256: 69(fvec4) Load 255
256: 6(int) Load 8(invocation) 257: 69(fvec4) VectorShuffle 256 254 4 5 6 3
257: 122(ptr) AccessChain 55(data) 82 66 Store 255 257
258: 51(ivec4) Load 257 258: 6(int) Load 8(invocation)
259: 136(ivec3) VectorShuffle 258 258 0 1 2 259: 88(ptr) AccessChain 75(data) 119 77
260: 136(ivec3) SubgroupFirstInvocationKHR 259 260: 69(fvec4) Load 259
261: 122(ptr) AccessChain 55(data) 256 66 261: 69(fvec4) SubgroupFirstInvocationKHR 260
262: 51(ivec4) Load 261 262: 88(ptr) AccessChain 75(data) 258 77
263: 51(ivec4) VectorShuffle 262 260 4 5 6 3 Store 262 261
Store 261 263 263: 6(int) Load 8(invocation)
264: 6(int) Load 8(invocation) 264: 134(ptr) AccessChain 75(data) 77 86 78
265: 122(ptr) AccessChain 55(data) 99 66 265: 70(int) Load 264
266: 51(ivec4) Load 265 266: 70(int) SubgroupFirstInvocationKHR 265
267: 51(ivec4) SubgroupFirstInvocationKHR 266 267: 134(ptr) AccessChain 75(data) 263 86 78
268: 122(ptr) AccessChain 55(data) 264 66 Store 267 266
Store 268 267 268: 6(int) Load 8(invocation)
269: 6(int) Load 8(invocation) 269: 142(ptr) AccessChain 75(data) 86 86
270: 166(ptr) AccessChain 55(data) 57 82 58 270: 71(ivec4) Load 269
271: 6(int) Load 270 271: 141(ivec2) VectorShuffle 270 270 0 1
272: 6(int) SubgroupFirstInvocationKHR 271 272: 141(ivec2) SubgroupFirstInvocationKHR 271
273: 166(ptr) AccessChain 55(data) 269 82 58 273: 142(ptr) AccessChain 75(data) 268 86
Store 273 272 274: 71(ivec4) Load 273
274: 6(int) Load 8(invocation) 275: 71(ivec4) VectorShuffle 274 272 4 5 2 3
275: 173(ptr) AccessChain 55(data) 66 82 Store 273 275
276: 38(ivec4) Load 275 276: 6(int) Load 8(invocation)
277: 42(ivec2) VectorShuffle 276 276 0 1 277: 142(ptr) AccessChain 75(data) 102 86
278: 42(ivec2) SubgroupFirstInvocationKHR 277 278: 71(ivec4) Load 277
279: 173(ptr) AccessChain 55(data) 274 82 279: 156(ivec3) VectorShuffle 278 278 0 1 2
280: 38(ivec4) Load 279 280: 156(ivec3) SubgroupFirstInvocationKHR 279
281: 38(ivec4) VectorShuffle 280 278 4 5 2 3 281: 142(ptr) AccessChain 75(data) 276 86
Store 279 281 282: 71(ivec4) Load 281
282: 6(int) Load 8(invocation) 283: 71(ivec4) VectorShuffle 282 280 4 5 6 3
283: 173(ptr) AccessChain 55(data) 82 82 Store 281 283
284: 38(ivec4) Load 283 284: 6(int) Load 8(invocation)
285: 187(ivec3) VectorShuffle 284 284 0 1 2 285: 142(ptr) AccessChain 75(data) 119 86
286: 187(ivec3) SubgroupFirstInvocationKHR 285 286: 71(ivec4) Load 285
287: 173(ptr) AccessChain 55(data) 282 82 287: 71(ivec4) SubgroupFirstInvocationKHR 286
288: 38(ivec4) Load 287 288: 142(ptr) AccessChain 75(data) 284 86
289: 38(ivec4) VectorShuffle 288 286 4 5 6 3 Store 288 287
Store 287 289 289: 6(int) Load 8(invocation)
290: 6(int) Load 8(invocation) 290: 186(ptr) AccessChain 75(data) 77 102 78
291: 173(ptr) AccessChain 55(data) 99 82 291: 6(int) Load 290
292: 38(ivec4) Load 291 292: 6(int) SubgroupFirstInvocationKHR 291
293: 38(ivec4) SubgroupFirstInvocationKHR 292 293: 186(ptr) AccessChain 75(data) 289 102 78
294: 173(ptr) AccessChain 55(data) 290 82 Store 293 292
Store 294 293 294: 6(int) Load 8(invocation)
Branch 47 295: 193(ptr) AccessChain 75(data) 86 102
47: Label 296: 20(ivec4) Load 295
297: 26(ivec2) VectorShuffle 296 296 0 1
298: 26(ivec2) SubgroupFirstInvocationKHR 297
299: 193(ptr) AccessChain 75(data) 294 102
300: 20(ivec4) Load 299
301: 20(ivec4) VectorShuffle 300 298 4 5 2 3
Store 299 301
302: 6(int) Load 8(invocation)
303: 193(ptr) AccessChain 75(data) 102 102
304: 20(ivec4) Load 303
305: 207(ivec3) VectorShuffle 304 304 0 1 2
306: 207(ivec3) SubgroupFirstInvocationKHR 305
307: 193(ptr) AccessChain 75(data) 302 102
308: 20(ivec4) Load 307
309: 20(ivec4) VectorShuffle 308 306 4 5 6 3
Store 307 309
310: 6(int) Load 8(invocation)
311: 193(ptr) AccessChain 75(data) 119 102
312: 20(ivec4) Load 311
313: 20(ivec4) SubgroupFirstInvocationKHR 312
314: 193(ptr) AccessChain 75(data) 310 102
Store 314 313
Branch 67
67: Label
Return Return
FunctionEnd FunctionEnd

View File

@ -0,0 +1,50 @@
spv.smBuiltins.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 20
Capability Shader
Capability ShaderSMBuiltinsNV
Extension "SPV_NV_shader_sm_builtins"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 11 13 15 17
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_NV_shader_sm_builtins"
Name 4 "main"
Name 9 "data"
Name 11 "gl_WarpsPerSMNV"
Name 13 "gl_SMCountNV"
Name 15 "gl_WarpIDNV"
Name 17 "gl_SMIDNV"
Decorate 9(data) Location 0
Decorate 11(gl_WarpsPerSMNV) Flat
Decorate 11(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV
Decorate 13(gl_SMCountNV) Flat
Decorate 13(gl_SMCountNV) BuiltIn SMCountNV
Decorate 15(gl_WarpIDNV) Flat
Decorate 15(gl_WarpIDNV) BuiltIn WarpIDNV
Decorate 17(gl_SMIDNV) Flat
Decorate 17(gl_SMIDNV) BuiltIn SMIDNV
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypeVector 6(int) 4
8: TypePointer Output 7(ivec4)
9(data): 8(ptr) Variable Output
10: TypePointer Input 6(int)
11(gl_WarpsPerSMNV): 10(ptr) Variable Input
13(gl_SMCountNV): 10(ptr) Variable Input
15(gl_WarpIDNV): 10(ptr) Variable Input
17(gl_SMIDNV): 10(ptr) Variable Input
4(main): 2 Function None 3
5: Label
12: 6(int) Load 11(gl_WarpsPerSMNV)
14: 6(int) Load 13(gl_SMCountNV)
16: 6(int) Load 15(gl_WarpIDNV)
18: 6(int) Load 17(gl_SMIDNV)
19: 7(ivec4) CompositeConstruct 12 14 16 18
Store 9(data) 19
Return
FunctionEnd

View File

@ -0,0 +1,62 @@
spv.smBuiltins.vert
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 29
Capability Shader
Capability ShaderSMBuiltinsNV
Extension "SPV_NV_shader_sm_builtins"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 15 18 20 22 24
Source GLSL 450
SourceExtension "GL_NV_shader_sm_builtins"
Name 4 "main"
Name 9 "Output"
MemberName 9(Output) 0 "result"
Name 11 ""
Name 15 "gl_VertexIndex"
Name 18 "gl_WarpsPerSMNV"
Name 20 "gl_SMCountNV"
Name 22 "gl_WarpIDNV"
Name 24 "gl_SMIDNV"
Decorate 8 ArrayStride 16
MemberDecorate 9(Output) 0 Offset 0
Decorate 9(Output) BufferBlock
Decorate 11 DescriptorSet 0
Decorate 11 Binding 0
Decorate 15(gl_VertexIndex) BuiltIn VertexIndex
Decorate 18(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV
Decorate 20(gl_SMCountNV) BuiltIn SMCountNV
Decorate 22(gl_WarpIDNV) BuiltIn WarpIDNV
Decorate 24(gl_SMIDNV) BuiltIn SMIDNV
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypeVector 6(int) 4
8: TypeRuntimeArray 7(ivec4)
9(Output): TypeStruct 8
10: TypePointer Uniform 9(Output)
11: 10(ptr) Variable Uniform
12: TypeInt 32 1
13: 12(int) Constant 0
14: TypePointer Input 12(int)
15(gl_VertexIndex): 14(ptr) Variable Input
17: TypePointer Input 6(int)
18(gl_WarpsPerSMNV): 17(ptr) Variable Input
20(gl_SMCountNV): 17(ptr) Variable Input
22(gl_WarpIDNV): 17(ptr) Variable Input
24(gl_SMIDNV): 17(ptr) Variable Input
27: TypePointer Uniform 7(ivec4)
4(main): 2 Function None 3
5: Label
16: 12(int) Load 15(gl_VertexIndex)
19: 6(int) Load 18(gl_WarpsPerSMNV)
21: 6(int) Load 20(gl_SMCountNV)
23: 6(int) Load 22(gl_WarpIDNV)
25: 6(int) Load 24(gl_SMIDNV)
26: 7(ivec4) CompositeConstruct 19 21 23 25
28: 27(ptr) AccessChain 11 13 16
Store 28 26
Return
FunctionEnd

View File

@ -0,0 +1,6 @@
spv.specConstArrayCheck.vert
ERROR: 0:13: '[' : array index out of range '6'
ERROR: 1 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

View File

@ -11,7 +11,7 @@ spv.specConstant.vert
Source GLSL 400 Source GLSL 400
Name 4 "main" Name 4 "main"
Name 9 "arraySize" Name 9 "arraySize"
Name 14 "foo(vf4[s2765];" Name 14 "foo(vf4[s2769];"
Name 13 "p" Name 13 "p"
Name 17 "builtin_spec_constant(" Name 17 "builtin_spec_constant("
Name 20 "color" Name 20 "color"
@ -102,10 +102,10 @@ spv.specConstant.vert
Store 20(color) 46 Store 20(color) 46
48: 10 Load 22(ucol) 48: 10 Load 22(ucol)
Store 47(param) 48 Store 47(param) 48
49: 2 FunctionCall 14(foo(vf4[s2765];) 47(param) 49: 2 FunctionCall 14(foo(vf4[s2769];) 47(param)
Return Return
FunctionEnd FunctionEnd
14(foo(vf4[s2765];): 2 Function None 12 14(foo(vf4[s2769];): 2 Function None 12
13(p): 11(ptr) FunctionParameter 13(p): 11(ptr) FunctionParameter
15: Label 15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23 54: 24(ptr) AccessChain 53(dupUcol) 23

View File

@ -1,8 +1,7 @@
spv.stereoViewRendering.tesc spv.stereoViewRendering.tesc
Validation failed
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 38 // Id's are bound by 42
Capability Geometry Capability Geometry
Capability Tessellation Capability Tessellation
@ -14,7 +13,7 @@ Validation failed
Extension "SPV_NV_viewport_array2" Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 16 18 31 37 EntryPoint TessellationControl 4 "main" 16 18 31 41
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
Source GLSL 450 Source GLSL 450
SourceExtension "GL_NV_stereo_view_rendering" SourceExtension "GL_NV_stereo_view_rendering"
@ -32,7 +31,7 @@ Validation failed
MemberName 27(gl_PerVertex) 3 "gl_CullDistance" MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV" MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV"
Name 31 "gl_in" Name 31 "gl_in"
Name 37 "gl_Layer" Name 41 "gl_Layer"
MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV
MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV
Decorate 12(gl_PerVertex) Block Decorate 12(gl_PerVertex) Block
@ -41,10 +40,11 @@ Validation failed
MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
MemberDecorate 27(gl_PerVertex) 4 BuiltIn SecondaryPositionNV
Decorate 27(gl_PerVertex) Block Decorate 27(gl_PerVertex) Block
Decorate 37(gl_Layer) BuiltIn Layer Decorate 41(gl_Layer) BuiltIn Layer
Decorate 37(gl_Layer) ViewportRelativeNV Decorate 41(gl_Layer) ViewportRelativeNV
Decorate 37(gl_Layer) SecondaryViewportRelativeNV 1 Decorate 41(gl_Layer) SecondaryViewportRelativeNV 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -71,8 +71,9 @@ Validation failed
30: TypePointer Input 29 30: TypePointer Input 29
31(gl_in): 30(ptr) Variable Input 31(gl_in): 30(ptr) Variable Input
32: TypePointer Input 7(fvec4) 32: TypePointer Input 7(fvec4)
35: TypePointer Output 7(fvec4) 35: 8(int) Constant 4
37(gl_Layer): 22(ptr) Variable Output 39: TypePointer Output 7(fvec4)
41(gl_Layer): 22(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
19: 8(int) Load 18(gl_InvocationID) 19: 8(int) Load 18(gl_InvocationID)
@ -81,7 +82,10 @@ Validation failed
24: 8(int) Load 18(gl_InvocationID) 24: 8(int) Load 18(gl_InvocationID)
33: 32(ptr) AccessChain 31(gl_in) 20 21 33: 32(ptr) AccessChain 31(gl_in) 20 21
34: 7(fvec4) Load 33 34: 7(fvec4) Load 33
36: 35(ptr) AccessChain 16(gl_out) 24 21 36: 32(ptr) AccessChain 31(gl_in) 20 35
Store 36 34 37: 7(fvec4) Load 36
38: 7(fvec4) FAdd 34 37
40: 39(ptr) AccessChain 16(gl_out) 24 21
Store 40 38
Return Return
FunctionEnd FunctionEnd

View File

@ -226,3 +226,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -232,3 +232,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -231,3 +231,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -230,3 +230,24 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti);
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -230,3 +230,24 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -236,3 +236,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -291,3 +291,24 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveOrNV(ballot, parti);
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -253,3 +253,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -241,3 +241,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -251,3 +251,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -245,3 +245,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -251,3 +251,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -245,3 +245,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

View File

@ -282,3 +282,23 @@ void partitioned_works(vec4 f4)
subgroupPartitionedExclusiveXorNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti);
} }
// tests for NV_shader_sm_builtins
void sm_builtins_err()
{
gl_WarpsPerSMNV; // ERROR, no extension
gl_SMCountNV; // ERROR, no extension
gl_WarpIDNV; // ERROR, no extension
gl_SMIDNV; // ERROR, no extension
}
#ifdef GL_NV_shader_sm_builtins
#extension GL_NV_shader_sm_builtins : enable
#endif
void sm_builtins()
{
gl_WarpsPerSMNV;
gl_SMCountNV;
gl_WarpIDNV;
gl_SMIDNV;
}

15
Test/hlsl.specConstant.frag Executable file
View File

@ -0,0 +1,15 @@
[[vk::constant_id(0)]] const uint index = 2;
static const uint array[] = { 10, 20, 30, 40 };
float4 main( ) : SV_TARGET
{
float4 r;
for(uint i = 0; i < array[index]; i++)
r = i;
r += index + index;
r += 2 * index;
return r;
}

View File

@ -239,6 +239,13 @@ $EXE -D -E hlsl.pp.expand.frag > $TARGETDIR/hlsl.pp.expand.frag.out 2> $TARGETDI
diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1 diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1
diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1 diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1
#
# Test --nan-clamp
#
echo "Testing nan-clamp"
$EXE --nan-clamp -H --aml --amb spv.400.frag > $TARGETDIR/spv.400.frag.nanclamp.out
diff -b $BASEDIR/spv.400.frag.nanclamp.out $TARGETDIR/spv.400.frag.nanclamp.out || HASERROR=1
# #
# Final checking # Final checking
# #

View File

@ -0,0 +1,18 @@
#version 460 core
#extension GL_EXT_demote_to_helper_invocation : enable
layout(set = 0, binding = 0) uniform sampler2D tex;
layout(location = 0) in vec2 coord;
layout(location = 0) out vec4 o;
void main (void)
{
vec4 v = texture(tex, coord);
if (v == vec4(0.1,0.2,0.3,0.4))
demote;
bool x = helperInvocationEXT();
o = v;
}

View File

@ -0,0 +1,158 @@
#version 450
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_float32 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_float64 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
precision highp float;
void main()
{
float16_t(float16_t(0x1));
float16_t(float32_t(0x2));
float16_t(float64_t(0x3));
float16_t(int8_t (0x4));
float16_t(int16_t (0x5));
float16_t(int32_t (0x6));
float16_t(int64_t (0x7));
float16_t(uint8_t (0x8));
float16_t(uint16_t (0x9));
float16_t(uint32_t (0xA));
float16_t(uint64_t (0xB));
float16_t(bool (0xC));
float32_t(float16_t(0x11));
float32_t(float32_t(0x12));
float32_t(float64_t(0x13));
float32_t(int8_t (0x14));
float32_t(int16_t (0x15));
float32_t(int32_t (0x16));
float32_t(int64_t (0x17));
float32_t(uint8_t (0x18));
float32_t(uint16_t (0x19));
float32_t(uint32_t (0x1A));
float32_t(uint64_t (0x1B));
float32_t(bool (0x1C));
float64_t(float16_t(0x21));
float64_t(float32_t(0x22));
float64_t(float64_t(0x23));
float64_t(int8_t (0x24));
float64_t(int16_t (0x25));
float64_t(int32_t (0x26));
float64_t(int64_t (0x27));
float64_t(uint8_t (0x28));
float64_t(uint16_t (0x29));
float64_t(uint32_t (0x2A));
float64_t(uint64_t (0x2B));
float64_t(bool (0x2C));
int8_t(float16_t(0x31));
int8_t(float32_t(0x32));
int8_t(float64_t(0x33));
int8_t(int8_t (0x34));
int8_t(int16_t (0x35));
int8_t(int32_t (0x36));
int8_t(int64_t (0x37));
int8_t(uint8_t (0x38));
int8_t(uint16_t (0x39));
int8_t(uint32_t (0x3A));
int8_t(uint64_t (0x3B));
int8_t(bool (0x3C));
int16_t(float16_t(0x41));
int16_t(float32_t(0x42));
int16_t(float64_t(0x43));
int16_t(int8_t (0x44));
int16_t(int16_t (0x45));
int16_t(int32_t (0x46));
int16_t(int64_t (0x47));
int16_t(uint8_t (0x48));
int16_t(uint16_t (0x49));
int16_t(uint32_t (0x4A));
int16_t(uint64_t (0x4B));
int16_t(bool (0x4C));
int32_t(float16_t(0x51));
int32_t(float32_t(0x52));
int32_t(float64_t(0x53));
int32_t(int8_t (0x54));
int32_t(int16_t (0x55));
int32_t(int32_t (0x56));
int32_t(int64_t (0x57));
int32_t(uint8_t (0x58));
int32_t(uint16_t (0x59));
int32_t(uint32_t (0x5A));
int32_t(uint64_t (0x5B));
int32_t(bool (0x5C));
int64_t(float16_t(0x61));
int64_t(float32_t(0x62));
int64_t(float64_t(0x63));
int64_t(int8_t (0x64));
int64_t(int16_t (0x65));
int64_t(int32_t (0x66));
int64_t(int64_t (0x67));
int64_t(uint8_t (0x68));
int64_t(uint16_t (0x69));
int64_t(uint32_t (0x6A));
int64_t(uint64_t (0x6B));
int64_t(bool (0x6C));
uint8_t(float16_t(0x71));
uint8_t(float32_t(0x72));
uint8_t(float64_t(0x73));
uint8_t(int8_t (0x74));
uint8_t(int16_t (0x75));
uint8_t(int32_t (0x76));
uint8_t(int64_t (0x77));
uint8_t(uint8_t (0x78));
uint8_t(uint16_t (0x79));
uint8_t(uint32_t (0x7A));
uint8_t(uint64_t (0x7B));
uint8_t(bool (0x7C));
uint16_t(float16_t(0x81));
uint16_t(float32_t(0x82));
uint16_t(float64_t(0x83));
uint16_t(int8_t (0x84));
uint16_t(int16_t (0x85));
uint16_t(int32_t (0x86));
uint16_t(int64_t (0x87));
uint16_t(uint8_t (0x88));
uint16_t(uint16_t (0x89));
uint16_t(uint32_t (0x8A));
uint16_t(uint64_t (0x8B));
uint16_t(bool (0x8C));
uint32_t(float16_t(0x91));
uint32_t(float32_t(0x92));
uint32_t(float64_t(0x93));
uint32_t(int8_t (0x94));
uint32_t(int16_t (0x95));
uint32_t(int32_t (0x96));
uint32_t(int64_t (0x97));
uint32_t(uint8_t (0x98));
uint32_t(uint16_t (0x99));
uint32_t(uint32_t (0x9A));
uint32_t(uint64_t (0x9B));
uint32_t(bool (0x9C));
uint64_t(float16_t(0xA1));
uint64_t(float32_t(0xA2));
uint64_t(float64_t(0xA3));
uint64_t(int8_t (0xA4));
uint64_t(int16_t (0xA5));
uint64_t(int32_t (0xA6));
uint64_t(int64_t (0xA7));
uint64_t(uint8_t (0xA8));
uint64_t(uint16_t (0xA9));
uint64_t(uint32_t (0xAA));
uint64_t(uint64_t (0xAB));
uint64_t(bool (0xAC));
bool(float16_t(0xB1));
bool(float32_t(0xB2));
bool(float64_t(0xB3));
bool(int8_t (0xB4));
bool(int16_t (0xB5));
bool(int32_t (0xB6));
bool(int64_t (0xB7));
bool(uint8_t (0xB8));
bool(uint16_t (0xB9));
bool(uint32_t (0xBA));
bool(uint64_t (0xBB));
bool(bool (0xBC));
}

View File

@ -0,0 +1,10 @@
#version 460 core
void main (void)
{
{
int demote = 0;
demote;
}
demote;
}

View File

@ -0,0 +1,20 @@
#version 460 core
#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
int f(int8_t i8,
uint8_t u8,
int16_t i16,
uint16_t u16,
int64_t i64,
uint64_t u64,
float16_t f16)
{
return 0;
}
void main()
{
}

View File

@ -19,6 +19,7 @@ layout (binding = 7) nonprivate uniform BufferK { uint x; } bufferk;
shared uint64_t atomu64; shared uint64_t atomu64;
shared int64_t atomi64; shared int64_t atomi64;
layout (binding = 8) volatile buffer BufferL { uint x; } bufferl; layout (binding = 8) volatile buffer BufferL { uint x; } bufferl;
layout (binding = 9) buffer BufferM { volatile uint x; } bufferm;
void main() void main()
@ -60,5 +61,10 @@ void main()
atomicCompSwap(atomi64, int64_t(10), int64_t(atomu64), gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); atomicCompSwap(atomi64, int64_t(10), int64_t(atomu64), gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire);
y = bufferl.x; y = bufferl.x;
atomicAdd(bufferl.x, 1);
atomicOr(bufferm.x, 2);
imageAtomicAdd(imagei, ivec2(0,0), 3);
atomicAdd(bufferu.x, 4u, gl_ScopeDevice, 0, 0);
atomicAdd(bufferu.x, 5u, gl_ScopeDevice, 0, gl_SemanticsVolatile);
} }

View File

@ -24,5 +24,7 @@ void main()
uint origu = atomicCompSwap(atomu, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); uint origu = atomicCompSwap(atomu, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease);
memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeVisible); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeVisible);
memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeAvailable); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeAvailable);
memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsVolatile);
atomicCompSwap(bufferi.x, 10u, 10u, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile, gl_StorageSemanticsBuffer, gl_SemanticsAcquire);
} }

View File

@ -22,18 +22,30 @@ layout(triangles) out;
layout(location=0) out block { layout(location=0) out block {
perprimitiveNV perviewNV vec4 color1[][3]; // Implicitly sized perprimitiveNV perviewNV vec4 color1[][3]; // Implicitly sized
perprimitiveNV vec4 color2[3]; perprimitiveNV vec4 color2[3];
perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized
vec4 color4; vec4 color4;
} b[]; } b[];
// per-view block // per-view block attributes
perviewNV layout(location=10) out perviewBlock { perviewNV layout(location=10) out perviewBlock {
perprimitiveNV vec4 color5[]; // Implicitly sized perprimitiveNV vec4 color5[]; // Implicitly sized
perprimitiveNV vec4 color6[MAX_VIEWS][3]; // Explicitly sized perprimitiveNV vec4 color6[MAX_VIEWS][3]; // Explicitly sized
vec4 color7[][3]; // Implicitly sized vec4 color7[][3]; // Implicitly sized
vec4 color8[MAX_VIEWS]; // Explicitly sized vec4 color8[MAX_VIEWS]; // Explicitly sized
} b2[]; } b2[];
// per-view non-block attributes
perviewNV layout(location=18) out vec4 nonBlk1[MAX_VER][MAX_VIEWS]; // Explicit+Explicit
perviewNV perprimitiveNV layout(location=19) out vec4 nonBlk2[MAX_PRIM][]; // Explicit+Implicit
perviewNV layout(location=20) out vec4 nonBlk3[][MAX_VIEWS]; // Implicit+Explicit
perviewNV perprimitiveNV layout(location=21) out vec4 nonBlk4[][]; // Implicit+Implicit
// per-view non-block array attributes
perviewNV layout(location=22) out vec4 nonBlkArr1[MAX_VER][MAX_VIEWS][2]; // Explicit+Explicit
perviewNV perprimitiveNV layout(location=24) out vec4 nonBlkArr2[MAX_PRIM][][2]; // Explicit+Implicit
perviewNV layout(location=26) out vec4 nonBlkArr3[][MAX_VIEWS][2]; // Implicit+Explicit
perviewNV perprimitiveNV layout(location=28) out vec4 nonBlkArr4[][][2]; // Implicit+Implicit
void main() void main()
{ {
uint iid = gl_LocalInvocationID.x; uint iid = gl_LocalInvocationID.x;

View File

@ -0,0 +1,32 @@
#version 450
#define MAX_VER 81
#define MAX_PRIM 32
#define MAX_VIEWS gl_MaxMeshViewCountNV
#extension GL_NV_mesh_shader : enable
layout(local_size_x = 32) in;
layout(max_vertices=MAX_VER) out;
layout(max_primitives=MAX_PRIM) out;
layout(triangles) out;
// test error checks for use of incorrect per-view attributes
// per-view block attributes
perviewNV layout(location=0) out perviewBlock {
vec4 missingInnermostDimSize1[][];
vec4 incorrectViewDimSize1[MAX_VIEWS+1];
vec4 missingViewDim1;
} b2[];
// per-view non-block attributes
perviewNV layout(location=10) out vec4 missingInnermostDimSize2[][][];
perviewNV layout(location=11) out vec4 incorrectViewDimSize2[][MAX_VIEWS-1];
perviewNV layout(location=12) out vec4 missingViewDim2[];
void main()
{
}

View File

@ -10,5 +10,5 @@ out gl_PerVertex {
void main() void main()
{ {
gl_out[gl_InvocationID].gl_ViewportMaskPerViewNV[0] = 1; gl_out[gl_InvocationID].gl_ViewportMaskPerViewNV[0] = 1;
gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position; gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position + gl_in[1].gl_PositionPerViewNV[0];
} }

View File

@ -0,0 +1,17 @@
#version 460 core
#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
int8_t i8;
uint8_t u8;
int16_t i16;
uint16_t u16;
int64_t i64;
uint64_t u64;
float16_t f16;
void main()
{
}

7
Test/spv.smBuiltins.frag Normal file
View File

@ -0,0 +1,7 @@
#version 450
#extension GL_NV_shader_sm_builtins: enable
layout(location = 0) out uvec4 data;
void main (void)
{
data = uvec4(gl_WarpsPerSMNV, gl_SMCountNV, gl_WarpIDNV, gl_SMIDNV);
}

11
Test/spv.smBuiltins.vert Normal file
View File

@ -0,0 +1,11 @@
#version 450
#extension GL_NV_shader_sm_builtins: enable
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_VertexIndex] = uvec4(gl_WarpsPerSMNV, gl_SMCountNV, gl_WarpIDNV, gl_SMIDNV);
}

View File

@ -0,0 +1,14 @@
#version 450
layout(constant_id = 0) const uint a = 1;
layout(constant_id = 1) const uint b = 2;
layout(location = 0) out uint o;
void main() {
uint arr1[a+a];
uint arr2[b];
o = arr1[1];
o = arr2[1];
o = arr1[6];
o = arr2[6];
}

View File

@ -15,5 +15,5 @@ layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer;
void main() void main()
{ {
gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0] = 1; gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0] = 1;
gl_out[gl_InvocationID].gl_SecondaryPositionNV = gl_in[1].gl_Position; gl_out[gl_InvocationID].gl_SecondaryPositionNV = gl_in[1].gl_Position + gl_in[1].gl_SecondaryPositionNV;
} }

View File

@ -275,6 +275,12 @@ enum TBuiltInVariable {
EbvMeshViewIndicesNV, EbvMeshViewIndicesNV,
#endif #endif
// sm builtins
EbvWarpsPerSM,
EbvSMCount,
EbvWarpID,
EbvSMID,
// HLSL built-ins that live only temporarily, until they get remapped // HLSL built-ins that live only temporarily, until they get remapped
// to one of the above. // to one of the above.
EbvFragDepthGreater, EbvFragDepthGreater,
@ -460,6 +466,11 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
case EbvMeshViewIndicesNV: return "MeshViewIndicesNV"; case EbvMeshViewIndicesNV: return "MeshViewIndicesNV";
#endif #endif
case EbvWarpsPerSM: return "WarpsPerSMNV";
case EbvSMCount: return "SMCountNV";
case EbvWarpID: return "WarpIDNV";
case EbvSMID: return "SMIDNV";
default: return "unknown built-in variable"; default: return "unknown built-in variable";
} }
} }

View File

@ -514,8 +514,9 @@ public:
const char* semanticName; const char* semanticName;
TStorageQualifier storage : 6; TStorageQualifier storage : 6;
TBuiltInVariable builtIn : 8; TBuiltInVariable builtIn : 9;
TBuiltInVariable declaredBuiltIn : 8; TBuiltInVariable declaredBuiltIn : 9;
static_assert(EbvLast < 256, "need to increase size of TBuiltInVariable bitfields!");
TPrecisionQualifier precision : 3; TPrecisionQualifier precision : 3;
bool invariant : 1; // require canonical treatment for cross-shader invariance bool invariant : 1; // require canonical treatment for cross-shader invariance
bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects

View File

@ -624,6 +624,8 @@ enum TOperator {
EOpBeginInvocationInterlock, // Fragment only EOpBeginInvocationInterlock, // Fragment only
EOpEndInvocationInterlock, // Fragment only EOpEndInvocationInterlock, // Fragment only
EOpIsHelperInvocation,
// //
// Branch // Branch
// //
@ -634,6 +636,7 @@ enum TOperator {
EOpContinue, EOpContinue,
EOpCase, EOpCase,
EOpDefault, EOpDefault,
EOpDemote, // Fragment only
// //
// Constructors // Constructors
@ -651,9 +654,21 @@ enum TOperator {
EOpConstructBool, EOpConstructBool,
EOpConstructFloat, EOpConstructFloat,
EOpConstructDouble, EOpConstructDouble,
// Keep vector and matrix constructors in a consistent relative order for
// TParseContext::constructBuiltIn, which converts between 8/16/32 bit
// vector constructors
EOpConstructVec2, EOpConstructVec2,
EOpConstructVec3, EOpConstructVec3,
EOpConstructVec4, EOpConstructVec4,
EOpConstructMat2x2,
EOpConstructMat2x3,
EOpConstructMat2x4,
EOpConstructMat3x2,
EOpConstructMat3x3,
EOpConstructMat3x4,
EOpConstructMat4x2,
EOpConstructMat4x3,
EOpConstructMat4x4,
EOpConstructDVec2, EOpConstructDVec2,
EOpConstructDVec3, EOpConstructDVec3,
EOpConstructDVec4, EOpConstructDVec4,
@ -684,15 +699,6 @@ enum TOperator {
EOpConstructU64Vec2, EOpConstructU64Vec2,
EOpConstructU64Vec3, EOpConstructU64Vec3,
EOpConstructU64Vec4, EOpConstructU64Vec4,
EOpConstructMat2x2,
EOpConstructMat2x3,
EOpConstructMat2x4,
EOpConstructMat3x2,
EOpConstructMat3x3,
EOpConstructMat3x4,
EOpConstructMat4x2,
EOpConstructMat4x3,
EOpConstructMat4x4,
EOpConstructDMat2x2, EOpConstructDMat2x2,
EOpConstructDMat2x3, EOpConstructDMat2x3,
EOpConstructDMat2x4, EOpConstructDMat2x4,
@ -999,6 +1005,10 @@ enum TOperator {
EOpWaveGetLaneIndex, // Will decompose to gl_SubgroupInvocationID. EOpWaveGetLaneIndex, // Will decompose to gl_SubgroupInvocationID.
EOpWaveActiveCountBits, // Will decompose to subgroupBallotBitCount(subgroupBallot()). EOpWaveActiveCountBits, // Will decompose to subgroupBallotBitCount(subgroupBallot()).
EOpWavePrefixCountBits, // Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()). EOpWavePrefixCountBits, // Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()).
// Shader Clock Ops
EOpReadClockSubgroupKHR,
EOpReadClockDeviceKHR,
}; };
class TIntermTraverser; class TIntermTraverser;

View File

@ -1,3 +1,3 @@
// This header is generated by the make-revision script. // This header is generated by the make-revision script.
#define GLSLANG_PATCH_LEVEL 3226 #define GLSLANG_PATCH_LEVEL 3321

31
glslang/MachineIndependent/Constant.cpp Normal file → Executable file
View File

@ -415,8 +415,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EOpEmitStreamVertex: case EOpEmitStreamVertex:
case EOpEndStreamPrimitive: case EOpEndStreamPrimitive:
// These don't actually fold // These don't fold
return 0; return nullptr;
case EOpPackSnorm2x16: case EOpPackSnorm2x16:
case EOpPackUnorm2x16: case EOpPackUnorm2x16:
@ -491,8 +491,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
break; break;
} }
// TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out
case EOpPackSnorm2x16: case EOpPackSnorm2x16:
case EOpPackUnorm2x16: case EOpPackUnorm2x16:
case EOpPackHalf2x16: case EOpPackHalf2x16:
@ -510,7 +508,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EOpDeterminant: case EOpDeterminant:
case EOpMatrixInverse: case EOpMatrixInverse:
case EOpTranspose: case EOpTranspose:
return 0; return nullptr;
default: default:
assert(componentWise); assert(componentWise);
@ -538,7 +536,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break; case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break;
case EbtUint64: newConstArray[i].setU64Const(static_cast<unsigned long long>(-static_cast<long long>(unionArray[i].getU64Const()))); break; case EbtUint64: newConstArray[i].setU64Const(static_cast<unsigned long long>(-static_cast<long long>(unionArray[i].getU64Const()))); break;
default: default:
return 0; return nullptr;
} }
break; break;
case EOpLogicalNot: case EOpLogicalNot:
@ -546,7 +544,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
switch (getType().getBasicType()) { switch (getType().getBasicType()) {
case EbtBool: newConstArray[i].setBConst(!unionArray[i].getBConst()); break; case EbtBool: newConstArray[i].setBConst(!unionArray[i].getBConst()); break;
default: default:
return 0; return nullptr;
} }
break; break;
case EOpBitwiseNot: case EOpBitwiseNot:
@ -970,7 +968,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EOpInt16BitsToFloat16: case EOpInt16BitsToFloat16:
case EOpUint16BitsToFloat16: case EOpUint16BitsToFloat16:
default: default:
return 0; return nullptr;
} }
} }
@ -1201,12 +1199,17 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
newConstArray[comp].setBConst(childConstUnions[0][arg0comp] != childConstUnions[1][arg1comp]); newConstArray[comp].setBConst(childConstUnions[0][arg0comp] != childConstUnions[1][arg1comp]);
break; break;
case EOpMix: case EOpMix:
if (children[2]->getAsTyped()->getBasicType() == EbtBool) if (!children[0]->getAsTyped()->isFloatingDomain())
newConstArray[comp].setDConst(childConstUnions[2][arg2comp].getBConst() ? childConstUnions[1][arg1comp].getDConst() : return aggrNode;
childConstUnions[0][arg0comp].getDConst()); if (children[2]->getAsTyped()->getBasicType() == EbtBool) {
else newConstArray[comp].setDConst(childConstUnions[2][arg2comp].getBConst()
newConstArray[comp].setDConst(childConstUnions[0][arg0comp].getDConst() * (1.0 - childConstUnions[2][arg2comp].getDConst()) + ? childConstUnions[1][arg1comp].getDConst()
childConstUnions[1][arg1comp].getDConst() * childConstUnions[2][arg2comp].getDConst()); : childConstUnions[0][arg0comp].getDConst());
} else {
newConstArray[comp].setDConst(
childConstUnions[0][arg0comp].getDConst() * (1.0 - childConstUnions[2][arg2comp].getDConst()) +
childConstUnions[1][arg1comp].getDConst() * childConstUnions[2][arg2comp].getDConst());
}
break; break;
case EOpStep: case EOpStep:
newConstArray[comp].setDConst(childConstUnions[1][arg1comp].getDConst() < childConstUnions[0][arg0comp].getDConst() ? 0.0 : 1.0); newConstArray[comp].setDConst(childConstUnions[1][arg1comp].getDConst() < childConstUnions[0][arg0comp].getDConst() ? 0.0 : 1.0);

Some files were not shown because too many files have changed in this diff Show More