Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Johannes van Waveren 2016-06-27 22:05:17 -05:00
commit 5a00501ad3
129 changed files with 20289 additions and 3652 deletions

12
.clang-format Normal file
View File

@ -0,0 +1,12 @@
Language: Cpp
IndentWidth: 4
BreakBeforeBraces: Custom
BraceWrapping: { AfterFunction: true, AfterControlStatement: true }
IndentCaseLabels: false
ReflowComments: false
ColumnLimit: 120
AccessModifierOffset: -4
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false

View File

@ -8,6 +8,7 @@ set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
project(glslang) project(glslang)
if(WIN32) if(WIN32)
set(CMAKE_DEBUG_POSTFIX "d")
include(ChooseMSVCCRT.cmake) include(ChooseMSVCCRT.cmake)
add_definitions(-DGLSLANG_OSINCLUDE_WIN32) add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
elseif(UNIX) elseif(UNIX)
@ -23,6 +24,17 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
add_definitions(-std=c++11) add_definitions(-std=c++11)
endif() endif()
function(glslang_set_link_args TARGET)
# For MinGW compiles, statically link against the GCC and C++ runtimes.
# This avoids the need to ship those runtimes as DLLs.
if(WIN32)
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
set_target_properties(${TARGET} PROPERTIES
LINK_FLAGS "-static -static-libgcc -static-libstdc++")
endif()
endif(WIN32)
endfunction(glslang_set_link_args)
# We depend on these for later projects, so they should come first. # We depend on these for later projects, so they should come first.
add_subdirectory(External) add_subdirectory(External)

View File

@ -1,5 +1,5 @@
// //
//Copyright (C) 2014-2015 LunarG, Inc. //Copyright (C) 2014-2016 LunarG, Inc.
//Copyright (C) 2015-2016 Google, Inc. //Copyright (C) 2015-2016 Google, Inc.
// //
//All rights reserved. //All rights reserved.
@ -111,7 +111,7 @@ public:
protected: protected:
spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier);
spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool member); spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration);
spv::ImageFormat TranslateImageFormat(const glslang::TType& type); spv::ImageFormat TranslateImageFormat(const glslang::TType& type);
spv::Id createSpvVariable(const glslang::TIntermSymbol*); spv::Id createSpvVariable(const glslang::TIntermSymbol*);
spv::Id getSampledType(const glslang::TSampler&); spv::Id getSampledType(const glslang::TSampler&);
@ -124,7 +124,7 @@ protected:
int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix); int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix); int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking, glslang::TLayoutMatrix); void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking, glslang::TLayoutMatrix);
void declareClipCullCapability(const glslang::TTypeList& members, int member); void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember);
bool isShaderEntrypoint(const glslang::TIntermAggregate* node); bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
void makeFunctions(const glslang::TIntermSequence&); void makeFunctions(const glslang::TIntermSequence&);
@ -229,16 +229,18 @@ spv::StorageClass TranslateStorageClass(const glslang::TType& type)
return spv::StorageClassInput; return spv::StorageClassInput;
else if (type.getQualifier().isPipeOutput()) else if (type.getQualifier().isPipeOutput())
return spv::StorageClassOutput; return spv::StorageClassOutput;
else if (type.getBasicType() == glslang::EbtSampler)
return spv::StorageClassUniformConstant;
else if (type.getBasicType() == glslang::EbtAtomicUint)
return spv::StorageClassAtomicCounter;
else if (type.getQualifier().isUniformOrBuffer()) { else if (type.getQualifier().isUniformOrBuffer()) {
if (type.getQualifier().layoutPushConstant) if (type.getQualifier().layoutPushConstant)
return spv::StorageClassPushConstant; return spv::StorageClassPushConstant;
if (type.getBasicType() == glslang::EbtBlock) if (type.getBasicType() == glslang::EbtBlock)
return spv::StorageClassUniform; return spv::StorageClassUniform;
else if (type.getBasicType() == glslang::EbtAtomicUint)
return spv::StorageClassAtomicCounter;
else else
return spv::StorageClassUniformConstant; return spv::StorageClassUniformConstant;
// TODO: how are we distuingishing between default and non-default non-writable uniforms? Do default uniforms even exist? // TODO: how are we distinguishing between default and non-default non-writable uniforms? Do default uniforms even exist?
} else { } else {
switch (type.getQualifier().storage) { switch (type.getQualifier().storage) {
case glslang::EvqShared: return spv::StorageClassWorkgroup; break; case glslang::EvqShared: return spv::StorageClassWorkgroup; break;
@ -403,21 +405,28 @@ spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qual
return (spv::Decoration)spv::BadValue; return (spv::Decoration)spv::BadValue;
} }
// Translate glslang built-in variable to SPIR-V built in decoration. // Translate a glslang built-in variable to a SPIR-V built in decoration. Also generate
spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, bool member) // associated capabilities when required. For some built-in variables, a capability
// is generated only when using the variable in an executable instruction, but not when
// just declaring a struct member variable with it. This is true for PointSize,
// ClipDistance, and CullDistance.
spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, bool memberDeclaration)
{ {
switch (builtIn) { switch (builtIn) {
case glslang::EbvPointSize: case glslang::EbvPointSize:
switch (glslangIntermediate->getStage()) { // Defer adding the capability until the built-in is actually used.
case EShLangGeometry: if (!memberDeclaration) {
builder.addCapability(spv::CapabilityGeometryPointSize); switch (glslangIntermediate->getStage()) {
break; case EShLangGeometry:
case EShLangTessControl: builder.addCapability(spv::CapabilityGeometryPointSize);
case EShLangTessEvaluation: break;
builder.addCapability(spv::CapabilityTessellationPointSize); case EShLangTessControl:
break; case EShLangTessEvaluation:
default: builder.addCapability(spv::CapabilityTessellationPointSize);
break; break;
default:
break;
}
} }
return spv::BuiltInPointSize; return spv::BuiltInPointSize;
@ -428,13 +437,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
// use needed is to trigger the capability. // use needed is to trigger the capability.
// //
case glslang::EbvClipDistance: case glslang::EbvClipDistance:
if (! member) if (!memberDeclaration)
builder.addCapability(spv::CapabilityClipDistance); builder.addCapability(spv::CapabilityClipDistance);
return spv::BuiltInClipDistance; return spv::BuiltInClipDistance;
case glslang::EbvCullDistance: case glslang::EbvCullDistance:
if (! member) if (!memberDeclaration)
builder.addCapability(spv::CapabilityCullDistance); builder.addCapability(spv::CapabilityCullDistance);
return spv::BuiltInCullDistance; return spv::BuiltInCullDistance;
case glslang::EbvViewportIndex: case glslang::EbvViewportIndex:
@ -636,9 +645,9 @@ bool HasNonLayoutQualifiers(const glslang::TQualifier& qualifier)
{ {
// This should list qualifiers that simultaneous satisfy: // This should list qualifiers that simultaneous satisfy:
// - struct members can inherit from a struct declaration // - struct members can inherit from a struct declaration
// - effect decorations on the struct members (note smooth does not, and expecting something like volatile to effect the whole object) // - affect decorations on the struct members (note smooth does not, and expecting something like volatile to effect the whole object)
// - are not part of the offset/st430/etc or row/column-major layout // - are not part of the offset/st430/etc or row/column-major layout
return qualifier.invariant || qualifier.nopersp || qualifier.flat || qualifier.centroid || qualifier.patch || qualifier.sample || qualifier.hasLocation(); return qualifier.invariant || qualifier.hasLocation();
} }
// //
@ -925,30 +934,34 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
// Add the next element in the chain // Add the next element in the chain
int index = node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); const int glslangIndex = node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst();
if (node->getLeft()->getBasicType() == glslang::EbtBlock && node->getOp() == glslang::EOpIndexDirectStruct) {
// This may be, e.g., an anonymous block-member selection, which generally need
// index remapping due to hidden members in anonymous blocks.
std::vector<int>& remapper = memberRemapper[node->getLeft()->getType().getStruct()];
assert(remapper.size() > 0);
index = remapper[index];
}
if (! node->getLeft()->getType().isArray() && if (! node->getLeft()->getType().isArray() &&
node->getLeft()->getType().isVector() && node->getLeft()->getType().isVector() &&
node->getOp() == glslang::EOpIndexDirect) { node->getOp() == glslang::EOpIndexDirect) {
// This is essentially a hard-coded vector swizzle of size 1, // This is essentially a hard-coded vector swizzle of size 1,
// so short circuit the access-chain stuff with a swizzle. // so short circuit the access-chain stuff with a swizzle.
std::vector<unsigned> swizzle; std::vector<unsigned> swizzle;
swizzle.push_back(node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst()); swizzle.push_back(glslangIndex);
builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType())); builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()));
} else { } else {
// normal case for indexing array or structure or block int spvIndex = glslangIndex;
builder.accessChainPush(builder.makeIntConstant(index)); if (node->getLeft()->getBasicType() == glslang::EbtBlock &&
node->getOp() == glslang::EOpIndexDirectStruct)
{
// This may be, e.g., an anonymous block-member selection, which generally need
// index remapping due to hidden members in anonymous blocks.
std::vector<int>& remapper = memberRemapper[node->getLeft()->getType().getStruct()];
assert(remapper.size() > 0);
spvIndex = remapper[glslangIndex];
}
// Add capabilities here for accessing clip/cull distance // normal case for indexing array or structure or block
builder.accessChainPush(builder.makeIntConstant(spvIndex));
// Add capabilities here for accessing PointSize and clip/cull distance.
// We have deferred generation of associated capabilities until now.
if (node->getLeft()->getType().isStruct() && ! node->getLeft()->getType().isArray()) if (node->getLeft()->getType().isStruct() && ! node->getLeft()->getType().isArray())
declareClipCullCapability(*node->getLeft()->getType().getStruct(), index); declareUseOfStructMember(*(node->getLeft()->getType().getStruct()), glslangIndex);
} }
} }
return false; return false;
@ -1394,6 +1407,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpMemoryBarrierImage: case glslang::EOpMemoryBarrierImage:
case glslang::EOpMemoryBarrierShared: case glslang::EOpMemoryBarrierShared:
case glslang::EOpGroupMemoryBarrier: case glslang::EOpGroupMemoryBarrier:
case glslang::EOpAllMemoryBarrierWithGroupSync:
case glslang::EOpGroupMemoryBarrierWithGroupSync:
case glslang::EOpWorkgroupMemoryBarrier:
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
noReturnValue = true; noReturnValue = true;
// These all have 0 operands and will naturally finish up in the code below for 0 operands // These all have 0 operands and will naturally finish up in the code below for 0 operands
break; break;
@ -1902,8 +1919,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType)); addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType));
// Add interpolation and auxiliary storage decorations only to top-level members of Input and Output storage classes // Add interpolation and auxiliary storage decorations only to top-level members of Input and Output storage classes
if (type.getQualifier().storage == glslang::EvqVaryingIn || type.getQualifier().storage == glslang::EvqVaryingOut) { if (type.getQualifier().storage == glslang::EvqVaryingIn || type.getQualifier().storage == glslang::EvqVaryingOut) {
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier)); if (type.getBasicType() == glslang::EbtBlock) {
addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier)); addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier));
addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier));
}
} }
addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier)); addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier));
@ -2205,12 +2224,23 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& /*structTy
nextOffset = currentOffset + memberSize; nextOffset = currentOffset + memberSize;
} }
void TGlslangToSpvTraverser::declareClipCullCapability(const glslang::TTypeList& members, int member) void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember)
{ {
if (members[member].type->getQualifier().builtIn == glslang::EbvClipDistance) const glslang::TBuiltInVariable glslangBuiltIn = members[glslangMember].type->getQualifier().builtIn;
builder.addCapability(spv::CapabilityClipDistance); switch (glslangBuiltIn)
if (members[member].type->getQualifier().builtIn == glslang::EbvCullDistance) {
builder.addCapability(spv::CapabilityCullDistance); case glslang::EbvClipDistance:
case glslang::EbvCullDistance:
case glslang::EbvPointSize:
// Generate the associated capability. Delegate to TranslateBuiltInDecoration.
// Alternately, we could just call this for any glslang built-in, since the
// capability already guards against duplicates.
TranslateBuiltInDecoration(glslangBuiltIn, false);
break;
default:
// Capabilities were already generated when the struct was declared.
break;
}
} }
bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate* node) bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate* node)
@ -2250,7 +2280,9 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
for (int p = 0; p < (int)parameters.size(); ++p) { for (int p = 0; p < (int)parameters.size(); ++p) {
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType(); const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
spv::Id typeId = convertGlslangToSpvType(paramType); spv::Id typeId = convertGlslangToSpvType(paramType);
if (paramType.getQualifier().storage != glslang::EvqConstReadOnly) if (paramType.isOpaque())
typeId = builder.makePointer(TranslateStorageClass(paramType), typeId);
else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
typeId = builder.makePointer(spv::StorageClassFunction, typeId); typeId = builder.makePointer(spv::StorageClassFunction, typeId);
else else
constReadOnlyParameters.insert(parameters[p]->getAsSymbolNode()->getId()); constReadOnlyParameters.insert(parameters[p]->getAsSymbolNode()->getId());
@ -2560,6 +2592,13 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
bias = true; bias = true;
} }
// See if the sampler param should really be just the SPV image part
if (cracked.fetch) {
// a fetch needs to have the image extracted first
if (builder.isSampledImage(params.sampler))
params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
}
// set the rest of the arguments // set the rest of the arguments
params.coords = arguments[1]; params.coords = arguments[1];
@ -2575,14 +2614,16 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
++extraArgs; ++extraArgs;
} else if (sampler.shadow) { } else if (sampler.shadow) {
std::vector<spv::Id> indexes; std::vector<spv::Id> indexes;
int comp; int dRefComp;
if (cracked.proj) if (cracked.proj)
comp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref" dRefComp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref"
else else
comp = builder.getNumComponents(params.coords) - 1; dRefComp = builder.getNumComponents(params.coords) - 1;
indexes.push_back(comp); indexes.push_back(dRefComp);
params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes); params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes);
} }
// lod
if (cracked.lod) { if (cracked.lod) {
params.lod = arguments[2]; params.lod = arguments[2];
++extraArgs; ++extraArgs;
@ -2590,15 +2631,21 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
// we need to invent the default lod for an explicit lod instruction for a non-fragment stage // we need to invent the default lod for an explicit lod instruction for a non-fragment stage
noImplicitLod = true; noImplicitLod = true;
} }
// multisample
if (sampler.ms) { if (sampler.ms) {
params.sample = arguments[2]; // For MS, "sample" should be specified params.sample = arguments[2]; // For MS, "sample" should be specified
++extraArgs; ++extraArgs;
} }
// gradient
if (cracked.grad) { if (cracked.grad) {
params.gradX = arguments[2 + extraArgs]; params.gradX = arguments[2 + extraArgs];
params.gradY = arguments[3 + extraArgs]; params.gradY = arguments[3 + extraArgs];
extraArgs += 2; extraArgs += 2;
} }
// offset and offsets
if (cracked.offset) { if (cracked.offset) {
params.offset = arguments[2 + extraArgs]; params.offset = arguments[2 + extraArgs];
++extraArgs; ++extraArgs;
@ -2606,25 +2653,57 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
params.offsets = arguments[2 + extraArgs]; params.offsets = arguments[2 + extraArgs];
++extraArgs; ++extraArgs;
} }
// lod clamp
if (cracked.lodClamp) { if (cracked.lodClamp) {
params.lodClamp = arguments[2 + extraArgs]; params.lodClamp = arguments[2 + extraArgs];
++extraArgs; ++extraArgs;
} }
// sparse
if (sparse) { if (sparse) {
params.texelOut = arguments[2 + extraArgs]; params.texelOut = arguments[2 + extraArgs];
++extraArgs; ++extraArgs;
} }
// bias
if (bias) { if (bias) {
params.bias = arguments[2 + extraArgs]; params.bias = arguments[2 + extraArgs];
++extraArgs; ++extraArgs;
} }
// gather component
if (cracked.gather && ! sampler.shadow) { if (cracked.gather && ! sampler.shadow) {
// default component is 0, if missing, otherwise an argument // default component is 0, if missing, otherwise an argument
if (2 + extraArgs < (int)arguments.size()) { if (2 + extraArgs < (int)arguments.size()) {
params.comp = arguments[2 + extraArgs]; params.component = arguments[2 + extraArgs];
++extraArgs; ++extraArgs;
} else { } else {
params.comp = builder.makeIntConstant(0); params.component = builder.makeIntConstant(0);
}
}
// projective component (might not to move)
// GLSL: "The texture coordinates consumed from P, not including the last component of P,
// are divided by the last component of P."
// SPIR-V: "... (u [, v] [, w], q)... It may be a vector larger than needed, but all
// unused components will appear after all used components."
if (cracked.proj) {
int projSourceComp = builder.getNumComponents(params.coords) - 1;
int projTargetComp;
switch (sampler.dim) {
case glslang::Esd1D: projTargetComp = 1; break;
case glslang::Esd2D: projTargetComp = 2; break;
case glslang::EsdRect: projTargetComp = 2; break;
default: projTargetComp = projSourceComp; break;
}
// copy the projective coordinate if we have to
if (projTargetComp != projSourceComp) {
spv::Id projComp = builder.createCompositeExtract(params.coords,
builder.getScalarTypeId(builder.getTypeId(params.coords)),
projSourceComp);
params.coords = builder.createCompositeInsert(projComp, params.coords,
builder.getTypeId(params.coords), projTargetComp);
} }
} }
@ -2659,8 +2738,8 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
builder.clearAccessChain(); builder.clearAccessChain();
glslangArgs[a]->traverse(this); glslangArgs[a]->traverse(this);
argTypes.push_back(&paramType); argTypes.push_back(&paramType);
// keep outputs as and samplers l-values, evaluate input-only as r-values // keep outputs as and opaque objects l-values, evaluate input-only as r-values
if (qualifiers[a] != glslang::EvqConstReadOnly || paramType.getBasicType() == glslang::EbtSampler) { if (qualifiers[a] != glslang::EvqConstReadOnly || paramType.isOpaque()) {
// save l-value // save l-value
lValues.push_back(builder.getAccessChain()); lValues.push_back(builder.getAccessChain());
} else { } else {
@ -2679,7 +2758,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
for (int a = 0; a < (int)glslangArgs.size(); ++a) { for (int a = 0; a < (int)glslangArgs.size(); ++a) {
const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType(); const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
spv::Id arg; spv::Id arg;
if (paramType.getBasicType() == glslang::EbtSampler) { if (paramType.isOpaque()) {
builder.setAccessChain(lValues[lValueCount]); builder.setAccessChain(lValues[lValueCount]);
arg = builder.accessChainGetLValue(); arg = builder.accessChainGetLValue();
++lValueCount; ++lValueCount;
@ -3001,7 +3080,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, spv::Dec
return builder.setPrecision(result, precision); return builder.setPrecision(result, precision);
} }
// Handle component-wise +, -, *, and / for all combinations of type. // Handle component-wise +, -, *, %, and / for all combinations of type.
// The result type of all of them is the same type as the (a) matrix operand. // The result type of all of them is the same type as the (a) matrix operand.
// The algorithm is to: // The algorithm is to:
// - break the matrix(es) into vectors // - break the matrix(es) into vectors
@ -3012,6 +3091,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, spv::Dec
case spv::OpFAdd: case spv::OpFAdd:
case spv::OpFSub: case spv::OpFSub:
case spv::OpFDiv: case spv::OpFDiv:
case spv::OpFMod:
case spv::OpFMul: case spv::OpFMul:
{ {
// one time set up... // one time set up...
@ -3178,6 +3258,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
case glslang::EOpIsInf: case glslang::EOpIsInf:
unaryOp = spv::OpIsInf; unaryOp = spv::OpIsInf;
break; break;
case glslang::EOpIsFinite:
unaryOp = spv::OpIsFinite;
break;
case glslang::EOpFloatBitsToInt: case glslang::EOpFloatBitsToInt:
case glslang::EOpFloatBitsToUint: case glslang::EOpFloatBitsToUint:
@ -3889,8 +3972,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
builder.createNoResultOp(spv::OpEndPrimitive); builder.createNoResultOp(spv::OpEndPrimitive);
return 0; return 0;
case glslang::EOpBarrier: case glslang::EOpBarrier:
if (glslangIntermediate->getProfile() != EEsProfile)
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone); builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
return 0; return 0;
case glslang::EOpMemoryBarrier: case glslang::EOpMemoryBarrier:
@ -3911,6 +3992,21 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
case glslang::EOpGroupMemoryBarrier: case glslang::EOpGroupMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
return 0; return 0;
case glslang::EOpAllMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsAllMemory);
return 0;
case glslang::EOpGroupMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
return 0;
case glslang::EOpWorkgroupMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
return 0;
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
return 0;
default: default:
logger->missingFunctionality("unknown operation with no arguments"); logger->missingFunctionality("unknown operation with no arguments");
return 0; return 0;
@ -4044,7 +4140,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n
// We now know we have a specialization constant to build // We now know we have a specialization constant to build
// gl_WorkgroupSize is a special case until the front-end handles hierarchical specialization constants, // gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants,
// even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ... // even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ...
if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) { if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) {
std::vector<spv::Id> dimConstId; std::vector<spv::Id> dimConstId;

View File

@ -926,8 +926,17 @@ namespace spv {
// Count function variable use // Count function variable use
process( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
if (opCode == spv::OpVariable) { ++varUseCount[asId(start+2)]; return true; } if (opCode == spv::OpVariable) {
return false; ++varUseCount[asId(start+2)];
return true;
} else if (opCode == spv::OpEntryPoint) {
const int wordCount = asWordCount(start);
for (int i = 4; i < wordCount; i++) {
++varUseCount[asId(start+i)];
}
return true;
} else
return false;
}, },
[&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; } [&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }

View File

@ -1430,10 +1430,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
bool explicitLod = false; bool explicitLod = false;
texArgs[numArgs++] = parameters.sampler; texArgs[numArgs++] = parameters.sampler;
texArgs[numArgs++] = parameters.coords; texArgs[numArgs++] = parameters.coords;
if (parameters.Dref) if (parameters.Dref != NoResult)
texArgs[numArgs++] = parameters.Dref; texArgs[numArgs++] = parameters.Dref;
if (parameters.comp) if (parameters.component != NoResult)
texArgs[numArgs++] = parameters.comp; texArgs[numArgs++] = parameters.component;
// //
// Set up the optional arguments // Set up the optional arguments
@ -1830,6 +1830,9 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
int numCols = getTypeNumColumns(resultTypeId); int numCols = getTypeNumColumns(resultTypeId);
int numRows = getTypeNumRows(resultTypeId); int numRows = getTypeNumRows(resultTypeId);
Instruction* instr = module.getInstruction(componentTypeId);
Id bitCount = instr->getIdOperand(0);
// Will use a two step process // Will use a two step process
// 1. make a compile-time 2D array of values // 1. make a compile-time 2D array of values
// 2. construct a matrix from that array // 2. construct a matrix from that array
@ -1838,8 +1841,8 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
// initialize the array to the identity matrix // initialize the array to the identity matrix
Id ids[maxMatrixSize][maxMatrixSize]; Id ids[maxMatrixSize][maxMatrixSize];
Id one = makeFloatConstant(1.0); Id one = (bitCount == 64 ? makeDoubleConstant(1.0) : makeFloatConstant(1.0));
Id zero = makeFloatConstant(0.0); Id zero = (bitCount == 64 ? makeDoubleConstant(0.0) : makeFloatConstant(0.0));
for (int col = 0; col < 4; ++col) { for (int col = 0; col < 4; ++col) {
for (int row = 0; row < 4; ++row) { for (int row = 0; row < 4; ++row) {
if (col == row) if (col == row)

View File

@ -321,7 +321,7 @@ public:
Id gradX; Id gradX;
Id gradY; Id gradY;
Id sample; Id sample;
Id comp; Id component;
Id texelOut; Id texelOut;
Id lodClamp; Id lodClamp;
}; };

View File

@ -67,10 +67,7 @@ const Id NoType = 0;
const unsigned int BadValue = 0xFFFFFFFF; const unsigned int BadValue = 0xFFFFFFFF;
const Decoration NoPrecision = (Decoration)BadValue; const Decoration NoPrecision = (Decoration)BadValue;
const MemorySemanticsMask MemorySemanticsAllMemory = const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsAcquireMask | (MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsReleaseMask |
MemorySemanticsAcquireReleaseMask |
MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsUniformMemoryMask | MemorySemanticsUniformMemoryMask |
MemorySemanticsSubgroupMemoryMask | MemorySemanticsSubgroupMemoryMask |
MemorySemanticsWorkgroupMemoryMask | MemorySemanticsWorkgroupMemoryMask |

View File

@ -15,6 +15,8 @@ add_executable(glslangValidator ${SOURCES})
add_executable(spirv-remap ${REMAPPER_SOURCES}) add_executable(spirv-remap ${REMAPPER_SOURCES})
set_property(TARGET glslangValidator PROPERTY FOLDER tools) set_property(TARGET glslangValidator PROPERTY FOLDER tools)
set_property(TARGET spirv-remap PROPERTY FOLDER tools) set_property(TARGET spirv-remap PROPERTY FOLDER tools)
glslang_set_link_args(glslangValidator)
glslang_set_link_args(spirv-remap)
set(LIBRARIES set(LIBRARIES
glslang glslang

View File

@ -213,6 +213,12 @@ float fooinit()
int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer
#ifdef GL_EXT_shader_non_constant_global_initializers
#extension GL_EXT_shader_non_constant_global_initializers : enable
#endif
int init2 = gl_FrontFacing ? 1 : 2;
#pragma STDGL invariant(all) #pragma STDGL invariant(all)
#line 3000 #line 3000

View File

@ -78,8 +78,8 @@ uniform writeonly iimage2DArray ii2da;
layout(r32i) uniform iimage2D iimg2D; layout(r32i) uniform iimage2D iimg2D;
layout(rgba32i) uniform readonly iimage2D iimg2Drgba; layout(rgba32i) uniform readonly iimage2D iimg2Drgba;
layout(rgba32f) uniform readonly image2D img2Drgba; layout(rgba32f) uniform readonly image2D img2Drgba; // ERROR, no default
layout(r32ui) uniform uimage2D uimg2D; layout(r32ui) uniform uimage2D uimg2D; // ERROR, no default
void qux() void qux()
{ {
@ -111,9 +111,9 @@ void passrc()
passr(iimg2D); passr(iimg2D);
} }
layout(rg8i) uniform readonly uimage2D i1bad; // ERROR, type mismatch highp layout(rg8i) uniform readonly uimage2D i1bad; // ERROR, type mismatch
layout(rgba32i) uniform readonly image2D i2bad; // ERROR, type mismatch highp layout(rgba32i) uniform readonly image2D i2bad; // ERROR, type mismatch
layout(rgba32f) uniform readonly uimage2D i3bad; // ERROR, type mismatch highp layout(rgba32f) uniform readonly uimage2D i3bad; // ERROR, type mismatch
layout(r8_snorm) uniform readonly iimage2D i4bad; // ERROR, type mismatch layout(r8_snorm) uniform readonly iimage2D i4bad; // ERROR, type mismatch
layout(rgba32ui) uniform readonly iimage2D i5bad; // ERROR, type mismatch layout(rgba32ui) uniform readonly iimage2D i5bad; // ERROR, type mismatch
layout(r8ui) uniform readonly iimage2D i6bad; // ERROR, type mismatch layout(r8ui) uniform readonly iimage2D i6bad; // ERROR, type mismatch
@ -170,17 +170,17 @@ precise int pfoo; // ERROR, reserved
dmat2x4 dm; // ERROR dmat2x4 dm; // ERROR
uniform samplerCubeArray sca; // ERROR uniform samplerCubeArray sca; // ERROR
uniform iimage2DRect i2dr; // ERROR uniform iimage2DRect i2dr; // ERROR
uniform image2DMS i2dms; // ERROR highp uniform image2DMS i2dms; // ERROR
uniform uimage2DMSArray u2dmsa; // ERROR uniform uimage2DMSArray u2dmsa; // ERROR
layout(r32f) coherent volatile restrict readonly writeonly uniform image2D okay1; highp layout(r32f) coherent volatile restrict readonly writeonly uniform image2D okay1;
layout(r32i) coherent volatile restrict readonly uniform iimage2D okay2; layout(r32i) coherent volatile restrict readonly uniform iimage2D okay2;
layout(r32ui) coherent volatile restrict writeonly uniform uimage2D okay3; highp layout(r32ui) coherent volatile restrict writeonly uniform uimage2D okay3;
layout(r32f) coherent volatile restrict uniform image2D okay4; highp layout(r32f) coherent volatile restrict uniform image2D okay4;
layout(rgba32f) coherent volatile restrict uniform image2D badQ1; // ERROR, bad qualifiers highp layout(rgba32f) coherent volatile restrict uniform image2D badQ1; // ERROR, bad qualifiers
layout(rgba8i) coherent volatile restrict uniform iimage2D badQ2; // ERROR, bad qualifiers layout(rgba8i) coherent volatile restrict uniform iimage2D badQ2; // ERROR, bad qualifiers
layout(rgba16ui) coherent volatile restrict uniform uimage2D badQ3; // ERROR, bad qualifiers highp layout(rgba16ui) coherent volatile restrict uniform uimage2D badQ3; // ERROR, bad qualifiers
writeonly buffer woblock writeonly buffer woblock
{ {

View File

@ -62,11 +62,11 @@ void foo23()
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.
layout(binding=2) uniform writeonly image2D i2D; highp layout(binding=2) uniform writeonly image2D i2D;
layout(binding=4) uniform readonly image3D i3D; layout(binding=4) uniform readonly image3D i3D; // ERROR, no default precision
layout(binding=5) uniform imageCube iCube; layout(binding=5) uniform imageCube iCube; // ERROR, no default precision
layout(binding=6) uniform image2DArray i2DA; layout(binding=6) uniform image2DArray i2DA; // ERROR, no default precision
layout(binding=6) uniform coherent volatile restrict image2D i2Dqualified; layout(binding=6) uniform coherent volatile restrict image2D i2Dqualified; // ERROR, no default precision
layout(binding = 1) uniform bb { layout(binding = 1) uniform bb {
int foo; int foo;
@ -93,7 +93,7 @@ layout(shared) uniform bshar {
in smooth vec4 smoothIn; in smooth vec4 smoothIn;
in flat int flatIn; in flat int flatIn;
uniform sampler2DMS s2dms; uniform sampler2DMS s2dms; // ERROR, no default precision qualifier
void foots() void foots()
{ {
@ -108,7 +108,7 @@ void foots()
} }
out bool bout; // ERROR out bool bout; // ERROR
out image2D imageOut; // ERROR highp out image2D imageOut; // ERROR
out mat2x3 mout; // ERROR out mat2x3 mout; // ERROR
in bool inb; // ERROR in bool inb; // ERROR
@ -201,7 +201,7 @@ uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2]; layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[4]; uniform ubName { int i; } ubInst[4];
buffer bbName { int i; } bbInst[4]; buffer bbName { int i; } bbInst[4];
uniform writeonly image2D iArray[5]; highp uniform writeonly image2D iArray[5];
const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
void pfooBad() void pfooBad()

View File

@ -147,7 +147,7 @@ uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2]; layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[4]; uniform ubName { int i; } ubInst[4];
buffer bbName { int i; } bbInst[4]; buffer bbName { int i; } bbInst[4];
uniform writeonly image2D iArray[5]; highp uniform writeonly image2D iArray[5];
const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
void pfooBad() void pfooBad()
@ -158,10 +158,10 @@ void pfooBad()
auArray[sIndex + 1]; auArray[sIndex + 1];
ubInst[1]; ubInst[1];
bbInst[2]; bbInst[2];
ubInst[sIndex + 1]; // ERRRO, not supported ubInst[sIndex + 1]; // ERROR, not supported
bbInst[sIndex]; // ERRRO, not supported bbInst[sIndex]; // ERROR, not supported
iArray[2]; iArray[2];
iArray[sIndex * 2]; // ERRRO, not supported iArray[sIndex * 2]; // ERROR, not supported
textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); // ERROR, offset not constant textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); // ERROR, offset not constant
textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); // ERROR, not available textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); // ERROR, not available
} }

View File

@ -148,3 +148,5 @@ void fooKeyMem()
{ {
KeyMem.precise; KeyMem.precise;
} }
layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range

9
Test/400.vert Normal file
View File

@ -0,0 +1,9 @@
#version 400 core
in double d; // ERROR, no doubles
in dvec3 d3; // ERROR, no doubles
in dmat4 dm4; // ERROR, no doubles
void main()
{
}

9
Test/410.vert Normal file
View File

@ -0,0 +1,9 @@
#version 410 core
in double d;
in dvec3 d3;
in dmat4 dm4;
void main()
{
}

30
Test/420.comp Executable file
View File

@ -0,0 +1,30 @@
#version 420
layout(local_size_x = 2) in; // ERROR, no compute
#extension GL_ARB_compute_shader : enable
layout(local_size_x = 2, local_size_y = 4, local_size_z = 6) in;
shared vec3 sfoo;
void main()
{
sfoo = vec3(gl_WorkGroupSize.x, gl_WorkGroupSize.y, gl_WorkGroupSize.z);
sfoo += gl_WorkGroupSize + gl_NumWorkGroups + gl_WorkGroupID + gl_LocalInvocationID + gl_GlobalInvocationID;
sfoo *= gl_LocalInvocationIndex;
sfoo += gl_MaxComputeWorkGroupCount + gl_MaxComputeWorkGroupSize;
sfoo *= gl_MaxComputeUniformComponents +
gl_MaxComputeTextureImageUnits +
gl_MaxComputeImageUniforms +
gl_MaxComputeAtomicCounters +
gl_MaxComputeAtomicCounterBuffers;
barrier();
memoryBarrier();
memoryBarrierAtomicCounter();
memoryBarrierBuffer();
memoryBarrierImage();
memoryBarrierShared();
groupMemoryBarrier();
}

View File

@ -82,7 +82,7 @@ ERROR: 0:192: '.' : cannot apply to an array: nothing
ERROR: 0:193: '.length' : not supported for this version or the enabled extensions ERROR: 0:193: '.length' : not supported for this version or the enabled extensions
ERROR: 0:194: '.' : cannot apply to an array: method ERROR: 0:194: '.' : cannot apply to an array: method
ERROR: 0:194: 'a' : can't use function syntax on variable ERROR: 0:194: 'a' : can't use function syntax on variable
ERROR: 0:214: 'non-constant global initializer' : not supported with this profile: es ERROR: 0:214: 'non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)' : not supported for this version or the enabled extensions
ERROR: 0:3000: '#error' : line of this error should be 3000 ERROR: 0:3000: '#error' : line of this error should be 3000
ERROR: 0:3002: '' : syntax error ERROR: 0:3002: '' : syntax error
ERROR: 77 compilation errors. No code generated. ERROR: 77 compilation errors. No code generated.
@ -90,6 +90,7 @@ ERROR: 77 compilation errors. No code generated.
Shader version: 100 Shader version: 100
Requested GL_EXT_frag_depth Requested GL_EXT_frag_depth
Requested GL_EXT_shader_non_constant_global_initializers
Requested GL_EXT_shader_texture_lod Requested GL_EXT_shader_texture_lod
Requested GL_OES_EGL_image_external Requested GL_OES_EGL_image_external
Requested GL_OES_standard_derivatives Requested GL_OES_standard_derivatives
@ -376,6 +377,18 @@ ERROR: node is still EOpNull!
0:214 false case 0:214 false case
0:214 Constant: 0:214 Constant:
0:214 2 (const int) 0:214 2 (const int)
0:220 Sequence
0:220 move second child to first child (temp mediump int)
0:220 'init2' (global mediump int)
0:220 Test condition and select (temp mediump int)
0:220 Condition
0:220 'gl_FrontFacing' (gl_FrontFacing bool Face)
0:220 true case
0:220 Constant:
0:220 1 (const int)
0:220 false case
0:220 Constant:
0:220 2 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'a' (global 3-element array of mediump int) 0:? 'a' (global 3-element array of mediump int)
0:? 'uint' (global mediump int) 0:? 'uint' (global mediump int)
@ -407,6 +420,7 @@ ERROR: node is still EOpNull!
0:? 'fi3' (const mediump float) 0:? 'fi3' (const mediump float)
0:? 5.000000 0:? 5.000000
0:? 'init1' (global mediump int) 0:? 'init1' (global mediump int)
0:? 'init2' (global mediump int)
Linked fragment stage: Linked fragment stage:
@ -414,6 +428,7 @@ Linked fragment stage:
Shader version: 100 Shader version: 100
Requested GL_EXT_frag_depth Requested GL_EXT_frag_depth
Requested GL_EXT_shader_non_constant_global_initializers
Requested GL_EXT_shader_texture_lod Requested GL_EXT_shader_texture_lod
Requested GL_OES_EGL_image_external Requested GL_OES_EGL_image_external
Requested GL_OES_standard_derivatives Requested GL_OES_standard_derivatives
@ -700,6 +715,18 @@ ERROR: node is still EOpNull!
0:214 false case 0:214 false case
0:214 Constant: 0:214 Constant:
0:214 2 (const int) 0:214 2 (const int)
0:220 Sequence
0:220 move second child to first child (temp mediump int)
0:220 'init2' (global mediump int)
0:220 Test condition and select (temp mediump int)
0:220 Condition
0:220 'gl_FrontFacing' (gl_FrontFacing bool Face)
0:220 true case
0:220 Constant:
0:220 1 (const int)
0:220 false case
0:220 Constant:
0:220 2 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'a' (global 3-element array of mediump int) 0:? 'a' (global 3-element array of mediump int)
0:? 'uint' (global mediump int) 0:? 'uint' (global mediump int)
@ -731,4 +758,5 @@ ERROR: node is still EOpNull!
0:? 'fi3' (const mediump float) 0:? 'fi3' (const mediump float)
0:? 5.000000 0:? 5.000000
0:? 'init1' (global mediump int) 0:? 'init1' (global mediump int)
0:? 'init2' (global mediump int)

View File

@ -136,24 +136,24 @@ ERROR: node is still EOpNull!
0:53 isinf (global 4-component vector of bool) 0:53 isinf (global 4-component vector of bool)
0:53 'v4' (global mediump 4-component vector of float) 0:53 'v4' (global mediump 4-component vector of float)
0:56 Sequence 0:56 Sequence
0:56 move second child to first child (temp mediump int) 0:56 move second child to first child (temp highp int)
0:56 'i' (temp mediump int) 0:56 'i' (temp mediump int)
0:56 floatBitsToInt (global mediump int) 0:56 floatBitsToInt (global highp int)
0:56 'f' (global mediump float) 0:56 'f' (global mediump float)
0:57 Sequence 0:57 Sequence
0:57 move second child to first child (temp mediump 4-component vector of uint) 0:57 move second child to first child (temp highp 4-component vector of uint)
0:57 'uv11' (temp mediump 4-component vector of uint) 0:57 'uv11' (temp mediump 4-component vector of uint)
0:57 floatBitsToUint (global mediump 4-component vector of uint) 0:57 floatBitsToUint (global highp 4-component vector of uint)
0:57 'v4' (global mediump 4-component vector of float) 0:57 'v4' (global mediump 4-component vector of float)
0:58 Sequence 0:58 Sequence
0:58 move second child to first child (temp mediump 4-component vector of float) 0:58 move second child to first child (temp highp 4-component vector of float)
0:58 'v14' (temp mediump 4-component vector of float) 0:58 'v14' (temp mediump 4-component vector of float)
0:58 intBitsToFloat (global mediump 4-component vector of float) 0:58 intBitsToFloat (global highp 4-component vector of float)
0:58 'iv4a' (global mediump 4-component vector of int) 0:58 'iv4a' (global mediump 4-component vector of int)
0:59 Sequence 0:59 Sequence
0:59 move second child to first child (temp mediump 2-component vector of float) 0:59 move second child to first child (temp highp 2-component vector of float)
0:59 'v15' (temp mediump 2-component vector of float) 0:59 'v15' (temp mediump 2-component vector of float)
0:59 uintBitsToFloat (global mediump 2-component vector of float) 0:59 uintBitsToFloat (global highp 2-component vector of float)
0:59 'uv2c' (global mediump 2-component vector of uint) 0:59 'uv2c' (global mediump 2-component vector of uint)
0:62 Sequence 0:62 Sequence
0:62 move second child to first child (temp highp uint) 0:62 move second child to first child (temp highp uint)
@ -343,24 +343,24 @@ ERROR: node is still EOpNull!
0:53 isinf (global 4-component vector of bool) 0:53 isinf (global 4-component vector of bool)
0:53 'v4' (global mediump 4-component vector of float) 0:53 'v4' (global mediump 4-component vector of float)
0:56 Sequence 0:56 Sequence
0:56 move second child to first child (temp mediump int) 0:56 move second child to first child (temp highp int)
0:56 'i' (temp mediump int) 0:56 'i' (temp mediump int)
0:56 floatBitsToInt (global mediump int) 0:56 floatBitsToInt (global highp int)
0:56 'f' (global mediump float) 0:56 'f' (global mediump float)
0:57 Sequence 0:57 Sequence
0:57 move second child to first child (temp mediump 4-component vector of uint) 0:57 move second child to first child (temp highp 4-component vector of uint)
0:57 'uv11' (temp mediump 4-component vector of uint) 0:57 'uv11' (temp mediump 4-component vector of uint)
0:57 floatBitsToUint (global mediump 4-component vector of uint) 0:57 floatBitsToUint (global highp 4-component vector of uint)
0:57 'v4' (global mediump 4-component vector of float) 0:57 'v4' (global mediump 4-component vector of float)
0:58 Sequence 0:58 Sequence
0:58 move second child to first child (temp mediump 4-component vector of float) 0:58 move second child to first child (temp highp 4-component vector of float)
0:58 'v14' (temp mediump 4-component vector of float) 0:58 'v14' (temp mediump 4-component vector of float)
0:58 intBitsToFloat (global mediump 4-component vector of float) 0:58 intBitsToFloat (global highp 4-component vector of float)
0:58 'iv4a' (global mediump 4-component vector of int) 0:58 'iv4a' (global mediump 4-component vector of int)
0:59 Sequence 0:59 Sequence
0:59 move second child to first child (temp mediump 2-component vector of float) 0:59 move second child to first child (temp highp 2-component vector of float)
0:59 'v15' (temp mediump 2-component vector of float) 0:59 'v15' (temp mediump 2-component vector of float)
0:59 uintBitsToFloat (global mediump 2-component vector of float) 0:59 uintBitsToFloat (global highp 2-component vector of float)
0:59 'uv2c' (global mediump 2-component vector of uint) 0:59 'uv2c' (global mediump 2-component vector of uint)
0:62 Sequence 0:62 Sequence
0:62 move second child to first child (temp highp uint) 0:62 move second child to first child (temp highp uint)

View File

@ -17,6 +17,8 @@ ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer)
ERROR: 0:66: 'buffer' : buffers can be declared only as blocks ERROR: 0:66: 'buffer' : buffers can be declared only as blocks
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:76: '' : image variables not declared 'writeonly' must have a format layout qualifier ERROR: 0:76: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic
ERROR: 0:88: 'imageAtomicAdd' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:88: 'imageAtomicAdd' : required extension not requested: GL_OES_shader_image_atomic
ERROR: 0:89: 'imageAtomicMin' : required extension not requested: GL_OES_shader_image_atomic ERROR: 0:89: 'imageAtomicMin' : required extension not requested: GL_OES_shader_image_atomic
@ -79,7 +81,7 @@ ERROR: 0:227: 'input block' : not supported in this stage: compute
ERROR: 0:231: 'output block' : not supported in this stage: compute ERROR: 0:231: 'output block' : not supported in this stage: compute
WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved
WARNING: 0:238: '#define' : names containing consecutive underscores are reserved: __D WARNING: 0:238: '#define' : names containing consecutive underscores are reserved: __D
ERROR: 77 compilation errors. No code generated. ERROR: 79 compilation errors. No code generated.
Shader version: 310 Shader version: 310
@ -143,7 +145,7 @@ ERROR: node is still EOpNull!
0:87 'i' (temp highp int) 0:87 'i' (temp highp int)
0:87 'i' (temp highp int) 0:87 'i' (temp highp int)
0:88 imageAtomicAdd (global highp uint) 0:88 imageAtomicAdd (global highp uint)
0:88 'uimg2D' (layout(r32ui ) uniform highp uimage2D) 0:88 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:88 Construct ivec2 (temp highp 2-component vector of int) 0:88 Construct ivec2 (temp highp 2-component vector of int)
0:88 'i' (temp highp int) 0:88 'i' (temp highp int)
0:88 'i' (temp highp int) 0:88 'i' (temp highp int)
@ -177,7 +179,7 @@ ERROR: node is still EOpNull!
0:92 0 (const int) 0:92 0 (const int)
0:92 0 (const int) 0:92 0 (const int)
0:93 imageLoad (global highp 4-component vector of float) 0:93 imageLoad (global highp 4-component vector of float)
0:93 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D) 0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:93 Construct ivec2 (temp highp 2-component vector of int) 0:93 Construct ivec2 (temp highp 2-component vector of int)
0:93 'i' (temp highp int) 0:93 'i' (temp highp int)
0:93 'i' (temp highp int) 0:93 'i' (temp highp int)
@ -467,14 +469,14 @@ ERROR: node is still EOpNull!
0:? 'ii2da' (writeonly uniform highp iimage2DArray) 0:? 'ii2da' (writeonly uniform highp iimage2DArray)
0:? 'iimg2D' (layout(r32i ) uniform highp iimage2D) 0:? 'iimg2D' (layout(r32i ) uniform highp iimage2D)
0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D) 0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D) 0:? 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:? 'uimg2D' (layout(r32ui ) uniform highp uimage2D) 0:? 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:? 'vol' (volatile temp highp float) 0:? 'vol' (volatile temp highp float)
0:? 'vol2' (readonly temp highp int) 0:? 'vol2' (readonly temp highp int)
0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D) 0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)
0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D) 0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)
0:? 'i1bad' (layout(rg8i ) readonly uniform highp uimage2D) 0:? 'i1bad' (layout(rg8i ) readonly uniform highp uimage2D)
0:? 'i2bad' (layout(rgba32i ) readonly uniform lowp image2D) 0:? 'i2bad' (layout(rgba32i ) readonly uniform highp image2D)
0:? 'i3bad' (layout(rgba32f ) readonly uniform highp uimage2D) 0:? 'i3bad' (layout(rgba32f ) readonly uniform highp uimage2D)
0:? 'i4bad' (layout(r8_snorm ) readonly uniform highp iimage2D) 0:? 'i4bad' (layout(r8_snorm ) readonly uniform highp iimage2D)
0:? 'i5bad' (layout(rgba32ui ) readonly uniform highp iimage2D) 0:? 'i5bad' (layout(rgba32ui ) readonly uniform highp iimage2D)
@ -489,13 +491,13 @@ ERROR: node is still EOpNull!
0:? 'dm' (global 2X4 matrix of double) 0:? 'dm' (global 2X4 matrix of double)
0:? 'sca' (uniform mediump samplerCubeArray) 0:? 'sca' (uniform mediump samplerCubeArray)
0:? 'i2dr' (uniform mediump iimage2DRect) 0:? 'i2dr' (uniform mediump iimage2DRect)
0:? 'i2dms' (uniform lowp image2DMS) 0:? 'i2dms' (uniform highp image2DMS)
0:? 'u2dmsa' (uniform mediump uimage2DMSArray) 0:? 'u2dmsa' (uniform mediump uimage2DMSArray)
0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform lowp image2D) 0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform highp image2D)
0:? 'okay2' (layout(r32i ) coherent volatile restrict readonly uniform highp iimage2D) 0:? 'okay2' (layout(r32i ) coherent volatile restrict readonly uniform highp iimage2D)
0:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D) 0:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform lowp image2D) 0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform lowp image2D) 0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D) 0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D)
0:? 'badQ3' (layout(rgba16ui ) coherent volatile restrict uniform highp uimage2D) 0:? 'badQ3' (layout(rgba16ui ) coherent volatile restrict uniform highp uimage2D)
0:? 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) 0:? 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})
@ -570,7 +572,7 @@ ERROR: node is still EOpNull!
0:87 'i' (temp highp int) 0:87 'i' (temp highp int)
0:87 'i' (temp highp int) 0:87 'i' (temp highp int)
0:88 imageAtomicAdd (global highp uint) 0:88 imageAtomicAdd (global highp uint)
0:88 'uimg2D' (layout(r32ui ) uniform highp uimage2D) 0:88 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:88 Construct ivec2 (temp highp 2-component vector of int) 0:88 Construct ivec2 (temp highp 2-component vector of int)
0:88 'i' (temp highp int) 0:88 'i' (temp highp int)
0:88 'i' (temp highp int) 0:88 'i' (temp highp int)
@ -604,7 +606,7 @@ ERROR: node is still EOpNull!
0:92 0 (const int) 0:92 0 (const int)
0:92 0 (const int) 0:92 0 (const int)
0:93 imageLoad (global highp 4-component vector of float) 0:93 imageLoad (global highp 4-component vector of float)
0:93 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D) 0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:93 Construct ivec2 (temp highp 2-component vector of int) 0:93 Construct ivec2 (temp highp 2-component vector of int)
0:93 'i' (temp highp int) 0:93 'i' (temp highp int)
0:93 'i' (temp highp int) 0:93 'i' (temp highp int)
@ -894,14 +896,14 @@ ERROR: node is still EOpNull!
0:? 'ii2da' (writeonly uniform highp iimage2DArray) 0:? 'ii2da' (writeonly uniform highp iimage2DArray)
0:? 'iimg2D' (layout(r32i ) uniform highp iimage2D) 0:? 'iimg2D' (layout(r32i ) uniform highp iimage2D)
0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D) 0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D) 0:? 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:? 'uimg2D' (layout(r32ui ) uniform highp uimage2D) 0:? 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:? 'vol' (volatile temp highp float) 0:? 'vol' (volatile temp highp float)
0:? 'vol2' (readonly temp highp int) 0:? 'vol2' (readonly temp highp int)
0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D) 0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)
0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D) 0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)
0:? 'i1bad' (layout(rg8i ) readonly uniform highp uimage2D) 0:? 'i1bad' (layout(rg8i ) readonly uniform highp uimage2D)
0:? 'i2bad' (layout(rgba32i ) readonly uniform lowp image2D) 0:? 'i2bad' (layout(rgba32i ) readonly uniform highp image2D)
0:? 'i3bad' (layout(rgba32f ) readonly uniform highp uimage2D) 0:? 'i3bad' (layout(rgba32f ) readonly uniform highp uimage2D)
0:? 'i4bad' (layout(r8_snorm ) readonly uniform highp iimage2D) 0:? 'i4bad' (layout(r8_snorm ) readonly uniform highp iimage2D)
0:? 'i5bad' (layout(rgba32ui ) readonly uniform highp iimage2D) 0:? 'i5bad' (layout(rgba32ui ) readonly uniform highp iimage2D)
@ -916,13 +918,13 @@ ERROR: node is still EOpNull!
0:? 'dm' (global 2X4 matrix of double) 0:? 'dm' (global 2X4 matrix of double)
0:? 'sca' (uniform mediump samplerCubeArray) 0:? 'sca' (uniform mediump samplerCubeArray)
0:? 'i2dr' (uniform mediump iimage2DRect) 0:? 'i2dr' (uniform mediump iimage2DRect)
0:? 'i2dms' (uniform lowp image2DMS) 0:? 'i2dms' (uniform highp image2DMS)
0:? 'u2dmsa' (uniform mediump uimage2DMSArray) 0:? 'u2dmsa' (uniform mediump uimage2DMSArray)
0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform lowp image2D) 0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform highp image2D)
0:? 'okay2' (layout(r32i ) coherent volatile restrict readonly uniform highp iimage2D) 0:? 'okay2' (layout(r32i ) coherent volatile restrict readonly uniform highp iimage2D)
0:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D) 0:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform lowp image2D) 0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform lowp image2D) 0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D) 0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D)
0:? 'badQ3' (layout(rgba16ui ) coherent volatile restrict uniform highp uimage2D) 0:? 'badQ3' (layout(rgba16ui ) coherent volatile restrict uniform highp uimage2D)
0:? 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) 0:? 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

View File

@ -20,9 +20,11 @@ ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:66: '' : image variables not declared 'writeonly' must have a format layout qualifier ERROR: 0:66: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:67: '' : image variables not declared 'writeonly' must have a format layout qualifier ERROR: 0:67: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:68: '' : image variables not declared 'writeonly' must have a format layout qualifier ERROR: 0:68: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:69: '' : image variables not declared 'writeonly' must have a format layout qualifier ERROR: 0:69: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type
ERROR: 0:77: 'location' : location is too large ERROR: 0:77: 'location' : location is too large
@ -31,6 +33,7 @@ ERROR: 0:82: 'location' : too large for fragment output
ERROR: 0:82: 'location' : overlapping use of location 40 ERROR: 0:82: 'location' : overlapping use of location 40
ERROR: 0:83: 'non-literal layout-id value' : not supported with this profile: es ERROR: 0:83: 'non-literal layout-id value' : not supported with this profile: es
ERROR: 0:83: 'layout-id value' : cannot be negative ERROR: 0:83: 'layout-id value' : cannot be negative
ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:110: 'out' : cannot be bool ERROR: 0:110: 'out' : cannot be bool
ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut
ERROR: 0:111: '' : image variables not declared 'writeonly' must have a format layout qualifier ERROR: 0:111: '' : image variables not declared 'writeonly' must have a format layout qualifier
@ -130,7 +133,7 @@ ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:429: 'blend_support' : unknown blend equation ERROR: 0:429: 'blend_support' : unknown blend equation
ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es
ERROR: 122 compilation errors. No code generated. ERROR: 125 compilation errors. No code generated.
Shader version: 310 Shader version: 310
@ -351,7 +354,7 @@ ERROR: node is still EOpNull!
0:102 move second child to first child (temp highp 2-component vector of int) 0:102 move second child to first child (temp highp 2-component vector of int)
0:102 'v2' (temp highp 2-component vector of int) 0:102 'v2' (temp highp 2-component vector of int)
0:102 textureSize (global highp 2-component vector of int) 0:102 textureSize (global highp 2-component vector of int)
0:102 's2dms' (uniform highp sampler2DMS) 0:102 's2dms' (uniform mediump sampler2DMS)
0:103 move second child to first child (temp highp 2-component vector of int) 0:103 move second child to first child (temp highp 2-component vector of int)
0:103 'v2' (temp highp 2-component vector of int) 0:103 'v2' (temp highp 2-component vector of int)
0:103 imageQuerySize (global highp 2-component vector of int) 0:103 imageQuerySize (global highp 2-component vector of int)
@ -363,7 +366,7 @@ ERROR: node is still EOpNull!
0:105 move second child to first child (temp highp 2-component vector of int) 0:105 move second child to first child (temp highp 2-component vector of int)
0:105 'v2' (temp highp 2-component vector of int) 0:105 'v2' (temp highp 2-component vector of int)
0:105 imageQuerySize (global highp 2-component vector of int) 0:105 imageQuerySize (global highp 2-component vector of int)
0:105 'iCube' (layout(binding=5 ) uniform lowp imageCube) 0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:106 move second child to first child (temp highp 3-component vector of int) 0:106 move second child to first child (temp highp 3-component vector of int)
0:106 'v3' (temp highp 3-component vector of int) 0:106 'v3' (temp highp 3-component vector of int)
0:106 imageQuerySize (global highp 3-component vector of int) 0:106 imageQuerySize (global highp 3-component vector of int)
@ -371,7 +374,7 @@ ERROR: node is still EOpNull!
0:107 move second child to first child (temp highp 2-component vector of int) 0:107 move second child to first child (temp highp 2-component vector of int)
0:107 'v2' (temp highp 2-component vector of int) 0:107 'v2' (temp highp 2-component vector of int)
0:107 imageQuerySize (global highp 2-component vector of int) 0:107 imageQuerySize (global highp 2-component vector of int)
0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D) 0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:165 Function Definition: fooIO( (global void) 0:165 Function Definition: fooIO( (global void)
0:165 Function Parameters: 0:165 Function Parameters:
0:167 Sequence 0:167 Sequence
@ -928,9 +931,9 @@ ERROR: node is still EOpNull!
0:? 's2' (layout(binding=3 ) uniform highp sampler2D) 0:? 's2' (layout(binding=3 ) uniform highp sampler2D)
0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D) 0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D)
0:? 'i3D' (layout(binding=4 ) readonly uniform mediump image3D) 0:? 'i3D' (layout(binding=4 ) readonly uniform mediump image3D)
0:? 'iCube' (layout(binding=5 ) uniform lowp imageCube) 0:? 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:? 'i2DA' (layout(binding=6 ) uniform mediump image2DArray) 0:? 'i2DA' (layout(binding=6 ) uniform mediump image2DArray)
0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D) 0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:? 'bbi' (layout(binding=1 column_major shared ) uniform block{layout(column_major shared ) uniform mediump int foo, layout(binding=2 column_major shared ) uniform mediump float f}) 0:? 'bbi' (layout(binding=1 column_major shared ) uniform block{layout(column_major shared ) uniform mediump int foo, layout(binding=2 column_major shared ) uniform mediump float f})
0:? 'centroidIn' (centroid smooth in mediump 4-component vector of float) 0:? 'centroidIn' (centroid smooth in mediump 4-component vector of float)
0:? 'bigl' (uniform mediump 4-component vector of float) 0:? 'bigl' (uniform mediump 4-component vector of float)
@ -941,7 +944,7 @@ ERROR: node is still EOpNull!
0:? 'bshari' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int i}) 0:? 'bshari' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int i})
0:? 'smoothIn' (smooth in mediump 4-component vector of float) 0:? 'smoothIn' (smooth in mediump 4-component vector of float)
0:? 'flatIn' (flat in mediump int) 0:? 'flatIn' (flat in mediump int)
0:? 's2dms' (uniform highp sampler2DMS) 0:? 's2dms' (uniform mediump sampler2DMS)
0:? 'bout' (out bool) 0:? 'bout' (out bool)
0:? 'imageOut' (out highp image2D) 0:? 'imageOut' (out highp image2D)
0:? 'mout' (out mediump 2X3 matrix of float) 0:? 'mout' (out mediump 2X3 matrix of float)
@ -1232,7 +1235,7 @@ ERROR: node is still EOpNull!
0:102 move second child to first child (temp highp 2-component vector of int) 0:102 move second child to first child (temp highp 2-component vector of int)
0:102 'v2' (temp highp 2-component vector of int) 0:102 'v2' (temp highp 2-component vector of int)
0:102 textureSize (global highp 2-component vector of int) 0:102 textureSize (global highp 2-component vector of int)
0:102 's2dms' (uniform highp sampler2DMS) 0:102 's2dms' (uniform mediump sampler2DMS)
0:103 move second child to first child (temp highp 2-component vector of int) 0:103 move second child to first child (temp highp 2-component vector of int)
0:103 'v2' (temp highp 2-component vector of int) 0:103 'v2' (temp highp 2-component vector of int)
0:103 imageQuerySize (global highp 2-component vector of int) 0:103 imageQuerySize (global highp 2-component vector of int)
@ -1244,7 +1247,7 @@ ERROR: node is still EOpNull!
0:105 move second child to first child (temp highp 2-component vector of int) 0:105 move second child to first child (temp highp 2-component vector of int)
0:105 'v2' (temp highp 2-component vector of int) 0:105 'v2' (temp highp 2-component vector of int)
0:105 imageQuerySize (global highp 2-component vector of int) 0:105 imageQuerySize (global highp 2-component vector of int)
0:105 'iCube' (layout(binding=5 ) uniform lowp imageCube) 0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:106 move second child to first child (temp highp 3-component vector of int) 0:106 move second child to first child (temp highp 3-component vector of int)
0:106 'v3' (temp highp 3-component vector of int) 0:106 'v3' (temp highp 3-component vector of int)
0:106 imageQuerySize (global highp 3-component vector of int) 0:106 imageQuerySize (global highp 3-component vector of int)
@ -1252,7 +1255,7 @@ ERROR: node is still EOpNull!
0:107 move second child to first child (temp highp 2-component vector of int) 0:107 move second child to first child (temp highp 2-component vector of int)
0:107 'v2' (temp highp 2-component vector of int) 0:107 'v2' (temp highp 2-component vector of int)
0:107 imageQuerySize (global highp 2-component vector of int) 0:107 imageQuerySize (global highp 2-component vector of int)
0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D) 0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:165 Function Definition: fooIO( (global void) 0:165 Function Definition: fooIO( (global void)
0:165 Function Parameters: 0:165 Function Parameters:
0:167 Sequence 0:167 Sequence
@ -1809,9 +1812,9 @@ ERROR: node is still EOpNull!
0:? 's2' (layout(binding=3 ) uniform highp sampler2D) 0:? 's2' (layout(binding=3 ) uniform highp sampler2D)
0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D) 0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D)
0:? 'i3D' (layout(binding=4 ) readonly uniform mediump image3D) 0:? 'i3D' (layout(binding=4 ) readonly uniform mediump image3D)
0:? 'iCube' (layout(binding=5 ) uniform lowp imageCube) 0:? 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:? 'i2DA' (layout(binding=6 ) uniform mediump image2DArray) 0:? 'i2DA' (layout(binding=6 ) uniform mediump image2DArray)
0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D) 0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:? 'bbi' (layout(binding=1 column_major shared ) uniform block{layout(column_major shared ) uniform mediump int foo, layout(binding=2 column_major shared ) uniform mediump float f}) 0:? 'bbi' (layout(binding=1 column_major shared ) uniform block{layout(column_major shared ) uniform mediump int foo, layout(binding=2 column_major shared ) uniform mediump float f})
0:? 'centroidIn' (centroid smooth in mediump 4-component vector of float) 0:? 'centroidIn' (centroid smooth in mediump 4-component vector of float)
0:? 'bigl' (uniform mediump 4-component vector of float) 0:? 'bigl' (uniform mediump 4-component vector of float)
@ -1822,7 +1825,7 @@ ERROR: node is still EOpNull!
0:? 'bshari' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int i}) 0:? 'bshari' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int i})
0:? 'smoothIn' (smooth in mediump 4-component vector of float) 0:? 'smoothIn' (smooth in mediump 4-component vector of float)
0:? 'flatIn' (flat in mediump int) 0:? 'flatIn' (flat in mediump int)
0:? 's2dms' (uniform highp sampler2DMS) 0:? 's2dms' (uniform mediump sampler2DMS)
0:? 'bout' (out bool) 0:? 'bout' (out bool)
0:? 'imageOut' (out highp image2D) 0:? 'imageOut' (out highp image2D)
0:? 'mout' (out mediump 2X3 matrix of float) 0:? 'mout' (out mediump 2X3 matrix of float)

View File

@ -291,8 +291,8 @@ ERROR: node is still EOpNull!
0:156 'inf' (in highp 2-component vector of float) 0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float) 0:156 'ing' (in highp 2-component vector of float)
0:156 'h' (noContraction temp highp 2-component vector of float) 0:156 'h' (noContraction temp highp 2-component vector of float)
0:157 indirect index (temp highp sampler2D) 0:157 indirect index (temp lowp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D) 0:157 'sArray' (uniform 4-element array of lowp sampler2D)
0:157 add (temp highp int) 0:157 add (temp highp int)
0:157 'sIndex' (uniform highp int) 0:157 'sIndex' (uniform highp int)
0:157 Constant: 0:157 Constant:
@ -330,19 +330,19 @@ ERROR: node is still EOpNull!
0:164 'sIndex' (uniform highp int) 0:164 'sIndex' (uniform highp int)
0:164 Constant: 0:164 Constant:
0:164 2 (const int) 0:164 2 (const int)
0:165 textureGatherOffset (global highp 4-component vector of float) 0:165 textureGatherOffset (global lowp 4-component vector of float)
0:165 direct index (temp highp sampler2D) 0:165 direct index (temp lowp sampler2D)
0:165 'sArray' (uniform 4-element array of highp sampler2D) 0:165 'sArray' (uniform 4-element array of lowp sampler2D)
0:165 Constant: 0:165 Constant:
0:165 0 (const int) 0:165 0 (const int)
0:165 Constant: 0:165 Constant:
0:165 0.100000 0:165 0.100000
0:165 0.100000 0:165 0.100000
0:165 Convert float to int (temp highp 2-component vector of int) 0:165 Convert float to int (temp lowp 2-component vector of int)
0:165 'inf' (in highp 2-component vector of float) 0:165 'inf' (in highp 2-component vector of float)
0:166 textureGatherOffsets (global highp 4-component vector of float) 0:166 textureGatherOffsets (global lowp 4-component vector of float)
0:166 direct index (temp highp sampler2D) 0:166 direct index (temp lowp sampler2D)
0:166 'sArray' (uniform 4-element array of highp sampler2D) 0:166 'sArray' (uniform 4-element array of lowp sampler2D)
0:166 Constant: 0:166 Constant:
0:166 0 (const int) 0:166 0 (const int)
0:166 Constant: 0:166 Constant:
@ -366,8 +366,8 @@ ERROR: node is still EOpNull!
0:174 'inf' (in highp 2-component vector of float) 0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float) 0:174 'ing' (in highp 2-component vector of float)
0:174 'h' (noContraction temp highp 2-component vector of float) 0:174 'h' (noContraction temp highp 2-component vector of float)
0:175 indirect index (temp highp sampler2D) 0:175 indirect index (temp lowp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D) 0:175 'sArray' (uniform 4-element array of lowp sampler2D)
0:175 add (temp highp int) 0:175 add (temp highp int)
0:175 'sIndex' (uniform highp int) 0:175 'sIndex' (uniform highp int)
0:175 Constant: 0:175 Constant:
@ -394,19 +394,19 @@ ERROR: node is still EOpNull!
0:179 'sIndex' (uniform highp int) 0:179 'sIndex' (uniform highp int)
0:179 Constant: 0:179 Constant:
0:179 2 (const int) 0:179 2 (const int)
0:180 textureGatherOffset (global highp 4-component vector of float) 0:180 textureGatherOffset (global lowp 4-component vector of float)
0:180 direct index (temp highp sampler2D) 0:180 direct index (temp lowp sampler2D)
0:180 'sArray' (uniform 4-element array of highp sampler2D) 0:180 'sArray' (uniform 4-element array of lowp sampler2D)
0:180 Constant: 0:180 Constant:
0:180 0 (const int) 0:180 0 (const int)
0:180 Constant: 0:180 Constant:
0:180 0.100000 0:180 0.100000
0:180 0.100000 0:180 0.100000
0:180 Convert float to int (temp highp 2-component vector of int) 0:180 Convert float to int (temp lowp 2-component vector of int)
0:180 'inf' (in highp 2-component vector of float) 0:180 'inf' (in highp 2-component vector of float)
0:181 textureGatherOffsets (global highp 4-component vector of float) 0:181 textureGatherOffsets (global lowp 4-component vector of float)
0:181 direct index (temp highp sampler2D) 0:181 direct index (temp lowp sampler2D)
0:181 'sArray' (uniform 4-element array of highp sampler2D) 0:181 'sArray' (uniform 4-element array of lowp sampler2D)
0:181 Constant: 0:181 Constant:
0:181 0 (const int) 0:181 0 (const int)
0:181 Constant: 0:181 Constant:
@ -421,9 +421,9 @@ ERROR: node is still EOpNull!
0:181 0 (const int) 0:181 0 (const int)
0:181 0 (const int) 0:181 0 (const int)
0:181 0 (const int) 0:181 0 (const int)
0:182 textureGatherOffsets (global highp 4-component vector of float) 0:182 textureGatherOffsets (global lowp 4-component vector of float)
0:182 direct index (temp highp sampler2D) 0:182 direct index (temp lowp sampler2D)
0:182 'sArray' (uniform 4-element array of highp sampler2D) 0:182 'sArray' (uniform 4-element array of lowp sampler2D)
0:182 Constant: 0:182 Constant:
0:182 0 (const int) 0:182 0 (const int)
0:182 Constant: 0:182 Constant:
@ -927,7 +927,7 @@ ERROR: node is still EOpNull!
0:? 'us2dms' (uniform highp usampler2DMS) 0:? 'us2dms' (uniform highp usampler2DMS)
0:? 'us2dmsa' (uniform mediump usampler2DMSArray) 0:? 'us2dmsa' (uniform mediump usampler2DMSArray)
0:? 'outb' (smooth out bool) 0:? 'outb' (smooth out bool)
0:? 'outo' (smooth out highp sampler2D) 0:? 'outo' (smooth out lowp sampler2D)
0:? 'outa' (smooth out 4-element array of highp float) 0:? 'outa' (smooth out 4-element array of highp float)
0:? 'outaa' (smooth out 4-element array of 2-element array of highp float) 0:? 'outaa' (smooth out 4-element array of 2-element array of highp float)
0:? 'outs' (smooth out structure{global highp float f}) 0:? 'outs' (smooth out structure{global highp float f})
@ -949,7 +949,7 @@ ERROR: node is still EOpNull!
0:? 'inf' (in highp 2-component vector of float) 0:? 'inf' (in highp 2-component vector of float)
0:? 'ing' (in highp 2-component vector of float) 0:? 'ing' (in highp 2-component vector of float)
0:? 'offsets' (uniform 4-element array of highp 2-component vector of int) 0:? 'offsets' (uniform 4-element array of highp 2-component vector of int)
0:? 'sArray' (uniform 4-element array of highp sampler2D) 0:? 'sArray' (uniform 4-element array of lowp sampler2D)
0:? 'sIndex' (uniform highp int) 0:? 'sIndex' (uniform highp int)
0:? 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint) 0:? 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i}) 0:? 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i})
@ -1222,8 +1222,8 @@ ERROR: node is still EOpNull!
0:156 'inf' (in highp 2-component vector of float) 0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float) 0:156 'ing' (in highp 2-component vector of float)
0:156 'h' (noContraction temp highp 2-component vector of float) 0:156 'h' (noContraction temp highp 2-component vector of float)
0:157 indirect index (temp highp sampler2D) 0:157 indirect index (temp lowp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D) 0:157 'sArray' (uniform 4-element array of lowp sampler2D)
0:157 add (temp highp int) 0:157 add (temp highp int)
0:157 'sIndex' (uniform highp int) 0:157 'sIndex' (uniform highp int)
0:157 Constant: 0:157 Constant:
@ -1261,19 +1261,19 @@ ERROR: node is still EOpNull!
0:164 'sIndex' (uniform highp int) 0:164 'sIndex' (uniform highp int)
0:164 Constant: 0:164 Constant:
0:164 2 (const int) 0:164 2 (const int)
0:165 textureGatherOffset (global highp 4-component vector of float) 0:165 textureGatherOffset (global lowp 4-component vector of float)
0:165 direct index (temp highp sampler2D) 0:165 direct index (temp lowp sampler2D)
0:165 'sArray' (uniform 4-element array of highp sampler2D) 0:165 'sArray' (uniform 4-element array of lowp sampler2D)
0:165 Constant: 0:165 Constant:
0:165 0 (const int) 0:165 0 (const int)
0:165 Constant: 0:165 Constant:
0:165 0.100000 0:165 0.100000
0:165 0.100000 0:165 0.100000
0:165 Convert float to int (temp highp 2-component vector of int) 0:165 Convert float to int (temp lowp 2-component vector of int)
0:165 'inf' (in highp 2-component vector of float) 0:165 'inf' (in highp 2-component vector of float)
0:166 textureGatherOffsets (global highp 4-component vector of float) 0:166 textureGatherOffsets (global lowp 4-component vector of float)
0:166 direct index (temp highp sampler2D) 0:166 direct index (temp lowp sampler2D)
0:166 'sArray' (uniform 4-element array of highp sampler2D) 0:166 'sArray' (uniform 4-element array of lowp sampler2D)
0:166 Constant: 0:166 Constant:
0:166 0 (const int) 0:166 0 (const int)
0:166 Constant: 0:166 Constant:
@ -1297,8 +1297,8 @@ ERROR: node is still EOpNull!
0:174 'inf' (in highp 2-component vector of float) 0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float) 0:174 'ing' (in highp 2-component vector of float)
0:174 'h' (noContraction temp highp 2-component vector of float) 0:174 'h' (noContraction temp highp 2-component vector of float)
0:175 indirect index (temp highp sampler2D) 0:175 indirect index (temp lowp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D) 0:175 'sArray' (uniform 4-element array of lowp sampler2D)
0:175 add (temp highp int) 0:175 add (temp highp int)
0:175 'sIndex' (uniform highp int) 0:175 'sIndex' (uniform highp int)
0:175 Constant: 0:175 Constant:
@ -1325,19 +1325,19 @@ ERROR: node is still EOpNull!
0:179 'sIndex' (uniform highp int) 0:179 'sIndex' (uniform highp int)
0:179 Constant: 0:179 Constant:
0:179 2 (const int) 0:179 2 (const int)
0:180 textureGatherOffset (global highp 4-component vector of float) 0:180 textureGatherOffset (global lowp 4-component vector of float)
0:180 direct index (temp highp sampler2D) 0:180 direct index (temp lowp sampler2D)
0:180 'sArray' (uniform 4-element array of highp sampler2D) 0:180 'sArray' (uniform 4-element array of lowp sampler2D)
0:180 Constant: 0:180 Constant:
0:180 0 (const int) 0:180 0 (const int)
0:180 Constant: 0:180 Constant:
0:180 0.100000 0:180 0.100000
0:180 0.100000 0:180 0.100000
0:180 Convert float to int (temp highp 2-component vector of int) 0:180 Convert float to int (temp lowp 2-component vector of int)
0:180 'inf' (in highp 2-component vector of float) 0:180 'inf' (in highp 2-component vector of float)
0:181 textureGatherOffsets (global highp 4-component vector of float) 0:181 textureGatherOffsets (global lowp 4-component vector of float)
0:181 direct index (temp highp sampler2D) 0:181 direct index (temp lowp sampler2D)
0:181 'sArray' (uniform 4-element array of highp sampler2D) 0:181 'sArray' (uniform 4-element array of lowp sampler2D)
0:181 Constant: 0:181 Constant:
0:181 0 (const int) 0:181 0 (const int)
0:181 Constant: 0:181 Constant:
@ -1352,9 +1352,9 @@ ERROR: node is still EOpNull!
0:181 0 (const int) 0:181 0 (const int)
0:181 0 (const int) 0:181 0 (const int)
0:181 0 (const int) 0:181 0 (const int)
0:182 textureGatherOffsets (global highp 4-component vector of float) 0:182 textureGatherOffsets (global lowp 4-component vector of float)
0:182 direct index (temp highp sampler2D) 0:182 direct index (temp lowp sampler2D)
0:182 'sArray' (uniform 4-element array of highp sampler2D) 0:182 'sArray' (uniform 4-element array of lowp sampler2D)
0:182 Constant: 0:182 Constant:
0:182 0 (const int) 0:182 0 (const int)
0:182 Constant: 0:182 Constant:
@ -1858,7 +1858,7 @@ ERROR: node is still EOpNull!
0:? 'us2dms' (uniform highp usampler2DMS) 0:? 'us2dms' (uniform highp usampler2DMS)
0:? 'us2dmsa' (uniform mediump usampler2DMSArray) 0:? 'us2dmsa' (uniform mediump usampler2DMSArray)
0:? 'outb' (smooth out bool) 0:? 'outb' (smooth out bool)
0:? 'outo' (smooth out highp sampler2D) 0:? 'outo' (smooth out lowp sampler2D)
0:? 'outa' (smooth out 4-element array of highp float) 0:? 'outa' (smooth out 4-element array of highp float)
0:? 'outaa' (smooth out 4-element array of 2-element array of highp float) 0:? 'outaa' (smooth out 4-element array of 2-element array of highp float)
0:? 'outs' (smooth out structure{global highp float f}) 0:? 'outs' (smooth out structure{global highp float f})
@ -1880,7 +1880,7 @@ ERROR: node is still EOpNull!
0:? 'inf' (in highp 2-component vector of float) 0:? 'inf' (in highp 2-component vector of float)
0:? 'ing' (in highp 2-component vector of float) 0:? 'ing' (in highp 2-component vector of float)
0:? 'offsets' (uniform 4-element array of highp 2-component vector of int) 0:? 'offsets' (uniform 4-element array of highp 2-component vector of int)
0:? 'sArray' (uniform 4-element array of highp sampler2D) 0:? 'sArray' (uniform 4-element array of lowp sampler2D)
0:? 'sIndex' (uniform highp int) 0:? 'sIndex' (uniform highp int)
0:? 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint) 0:? 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i}) 0:? 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i})

View File

@ -37,7 +37,8 @@ ERROR: 0:140: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:140: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' ERROR: 0:140: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:141: 'textureQueryLod' : no matching overloaded function found ERROR: 0:141: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:141: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' ERROR: 0:141: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 38 compilation errors. No code generated. ERROR: 0:152: 'index' : value must be 0 or 1
ERROR: 39 compilation errors. No code generated.
Shader version: 330 Shader version: 330
@ -122,6 +123,7 @@ ERROR: node is still EOpNull!
0:? 'samp2Ds' (uniform sampler2DShadow) 0:? 'samp2Ds' (uniform sampler2DShadow)
0:? 'precise' (global int) 0:? 'precise' (global int)
0:? 'KeyMem' (global structure{global int precise}) 0:? 'KeyMem' (global structure{global int precise})
0:? 'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)
Linked fragment stage: Linked fragment stage:
@ -211,4 +213,5 @@ ERROR: node is still EOpNull!
0:? 'samp2Ds' (uniform sampler2DShadow) 0:? 'samp2Ds' (uniform sampler2DShadow)
0:? 'precise' (global int) 0:? 'precise' (global int)
0:? 'KeyMem' (global structure{global int precise}) 0:? 'KeyMem' (global structure{global int precise})
0:? 'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)

34
Test/baseResults/400.vert.out Executable file
View File

@ -0,0 +1,34 @@
400.vert
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:4: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:5: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 3 compilation errors. No code generated.
Shader version: 400
ERROR: node is still EOpNull!
0:7 Function Definition: main( (global void)
0:7 Function Parameters:
0:? Linker Objects
0:? 'd' (in double)
0:? 'd3' (in 3-component vector of double)
0:? 'dm4' (in 4X4 matrix of double)
0:? 'gl_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)
Linked vertex stage:
Shader version: 400
ERROR: node is still EOpNull!
0:7 Function Definition: main( (global void)
0:7 Function Parameters:
0:? Linker Objects
0:? 'd' (in double)
0:? 'd3' (in 3-component vector of double)
0:? 'dm4' (in 4X4 matrix of double)
0:? 'gl_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)

29
Test/baseResults/410.vert.out Executable file
View File

@ -0,0 +1,29 @@
410.vert
Warning, version 410 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 410
0:? Sequence
0:7 Function Definition: main( (global void)
0:7 Function Parameters:
0:? Linker Objects
0:? 'd' (in double)
0:? 'd3' (in 3-component vector of double)
0:? 'dm4' (in 4X4 matrix of double)
0:? 'gl_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)
Linked vertex stage:
Shader version: 410
0:? Sequence
0:7 Function Definition: main( (global void)
0:7 Function Parameters:
0:? Linker Objects
0:? 'd' (in double)
0:? 'd3' (in 3-component vector of double)
0:? 'dm4' (in 4X4 matrix of double)
0:? 'gl_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)

122
Test/baseResults/420.comp.out Executable file
View File

@ -0,0 +1,122 @@
420.comp
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'gl_WorkGroupSize' : not supported for this version or the enabled extensions
ERROR: 1 compilation errors. No code generated.
Shader version: 420
Requested GL_ARB_compute_shader
local_size = (2, 4, 6)
ERROR: node is still EOpNull!
0:11 Function Definition: main( (global void)
0:11 Function Parameters:
0:13 Sequence
0:13 move second child to first child (temp 3-component vector of float)
0:13 'sfoo' (shared 3-component vector of float)
0:13 Constant:
0:13 2.000000
0:13 4.000000
0:13 6.000000
0:14 add second child into first child (temp 3-component vector of float)
0:14 'sfoo' (shared 3-component vector of float)
0:14 Convert uint to float (temp 3-component vector of float)
0:14 add (temp 3-component vector of uint)
0:14 add (temp 3-component vector of uint)
0:14 add (temp 3-component vector of uint)
0:14 add (temp 3-component vector of uint)
0:14 Constant:
0:14 2 (const uint)
0:14 4 (const uint)
0:14 6 (const uint)
0:14 'gl_NumWorkGroups' (in 3-component vector of uint NumWorkGroups)
0:14 'gl_WorkGroupID' (in 3-component vector of uint WorkGroupID)
0:14 'gl_LocalInvocationID' (in 3-component vector of uint LocalInvocationID)
0:14 'gl_GlobalInvocationID' (in 3-component vector of uint GlobalInvocationID)
0:15 vector scale second child into first child (temp 3-component vector of float)
0:15 'sfoo' (shared 3-component vector of float)
0:15 Convert uint to float (temp float)
0:15 'gl_LocalInvocationIndex' (in uint LocalInvocationIndex)
0:16 add second child into first child (temp 3-component vector of float)
0:16 'sfoo' (shared 3-component vector of float)
0:16 Constant:
0:16 66559.000000
0:16 66559.000000
0:16 65599.000000
0:17 vector scale second child into first child (temp 3-component vector of float)
0:17 'sfoo' (shared 3-component vector of float)
0:17 Constant:
0:17 1057.000000
0:23 Barrier (global void)
0:24 MemoryBarrier (global void)
0:25 MemoryBarrierAtomicCounter (global void)
0:26 MemoryBarrierBuffer (global void)
0:27 MemoryBarrierImage (global void)
0:28 MemoryBarrierShared (global void)
0:29 GroupMemoryBarrier (global void)
0:? Linker Objects
0:? 'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize)
0:? 2 (const uint)
0:? 4 (const uint)
0:? 6 (const uint)
0:? 'sfoo' (shared 3-component vector of float)
Linked compute stage:
Shader version: 420
Requested GL_ARB_compute_shader
local_size = (2, 4, 6)
ERROR: node is still EOpNull!
0:11 Function Definition: main( (global void)
0:11 Function Parameters:
0:13 Sequence
0:13 move second child to first child (temp 3-component vector of float)
0:13 'sfoo' (shared 3-component vector of float)
0:13 Constant:
0:13 2.000000
0:13 4.000000
0:13 6.000000
0:14 add second child into first child (temp 3-component vector of float)
0:14 'sfoo' (shared 3-component vector of float)
0:14 Convert uint to float (temp 3-component vector of float)
0:14 add (temp 3-component vector of uint)
0:14 add (temp 3-component vector of uint)
0:14 add (temp 3-component vector of uint)
0:14 add (temp 3-component vector of uint)
0:14 Constant:
0:14 2 (const uint)
0:14 4 (const uint)
0:14 6 (const uint)
0:14 'gl_NumWorkGroups' (in 3-component vector of uint NumWorkGroups)
0:14 'gl_WorkGroupID' (in 3-component vector of uint WorkGroupID)
0:14 'gl_LocalInvocationID' (in 3-component vector of uint LocalInvocationID)
0:14 'gl_GlobalInvocationID' (in 3-component vector of uint GlobalInvocationID)
0:15 vector scale second child into first child (temp 3-component vector of float)
0:15 'sfoo' (shared 3-component vector of float)
0:15 Convert uint to float (temp float)
0:15 'gl_LocalInvocationIndex' (in uint LocalInvocationIndex)
0:16 add second child into first child (temp 3-component vector of float)
0:16 'sfoo' (shared 3-component vector of float)
0:16 Constant:
0:16 66559.000000
0:16 66559.000000
0:16 65599.000000
0:17 vector scale second child into first child (temp 3-component vector of float)
0:17 'sfoo' (shared 3-component vector of float)
0:17 Constant:
0:17 1057.000000
0:23 Barrier (global void)
0:24 MemoryBarrier (global void)
0:25 MemoryBarrierAtomicCounter (global void)
0:26 MemoryBarrierBuffer (global void)
0:27 MemoryBarrierImage (global void)
0:28 MemoryBarrierShared (global void)
0:29 GroupMemoryBarrier (global void)
0:? Linker Objects
0:? 'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize)
0:? 2 (const uint)
0:? 4 (const uint)
0:? 6 (const uint)
0:? 'sfoo' (shared 3-component vector of float)

View File

@ -0,0 +1,181 @@
hlsl.array.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float)
0:8 Function Parameters:
0:8 'i' (in int)
0:8 'input' (in 3-element array of 4-component vector of float)
0:? Sequence
0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 Constant:
0:10 1 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'input' (in 3-element array of 4-component vector of float)
0:10 Constant:
0:10 2 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'input' (in 3-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'b' (temp 10-element array of 4-component vector of float)
0:10 Constant:
0:10 5 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'b' (temp 10-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 indirect index (temp 4-component vector of float)
0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
0:10 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:10 'i' (in int)
0:10 Constant:
0:10 0 (const int)
0:10 'i' (in int)
0:? Linker Objects
0:? 'a' (temp 4-element array of 4-component vector of float)
0:? 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float)
0:8 Function Parameters:
0:8 'i' (in int)
0:8 'input' (in 3-element array of 4-component vector of float)
0:? Sequence
0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 Constant:
0:10 1 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'input' (in 3-element array of 4-component vector of float)
0:10 Constant:
0:10 2 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'input' (in 3-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'b' (temp 10-element array of 4-component vector of float)
0:10 Constant:
0:10 5 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'b' (temp 10-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 indirect index (temp 4-component vector of float)
0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
0:10 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:10 'i' (in int)
0:10 Constant:
0:10 0 (const int)
0:10 'i' (in int)
0:? Linker Objects
0:? 'a' (temp 4-element array of 4-component vector of float)
0:? 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 63
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 19 27
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 12 "a"
Name 19 "i"
Name 27 "input"
Name 40 "b"
Name 50 ""
MemberName 50 0 "m"
Name 54 "s"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 4
10: TypeArray 7(fvec4) 9
11: TypePointer Function 10
13: TypeInt 32 1
14: 13(int) Constant 1
15: TypePointer Function 7(fvec4)
18: TypePointer Input 13(int)
19(i): 18(ptr) Variable Input
24: 8(int) Constant 3
25: TypeArray 7(fvec4) 24
26: TypePointer Input 25
27(input): 26(ptr) Variable Input
28: 13(int) Constant 2
29: TypePointer Input 7(fvec4)
37: 8(int) Constant 10
38: TypeArray 7(fvec4) 37
39: TypePointer Function 38
41: 13(int) Constant 5
48: 8(int) Constant 7
49: TypeArray 7(fvec4) 48
50: TypeStruct 49
51: 8(int) Constant 11
52: TypeArray 50(struct) 51
53: TypePointer Function 52
56: 13(int) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
12(a): 11(ptr) Variable Function
40(b): 39(ptr) Variable Function
54(s): 53(ptr) Variable Function
16: 15(ptr) AccessChain 12(a) 14
17: 7(fvec4) Load 16
20: 13(int) Load 19(i)
21: 15(ptr) AccessChain 12(a) 20
22: 7(fvec4) Load 21
23: 7(fvec4) FAdd 17 22
30: 29(ptr) AccessChain 27(input) 28
31: 7(fvec4) Load 30
32: 13(int) Load 19(i)
33: 29(ptr) AccessChain 27(input) 32
34: 7(fvec4) Load 33
35: 7(fvec4) FAdd 31 34
36: 7(fvec4) FAdd 23 35
42: 15(ptr) AccessChain 40(b) 41
43: 7(fvec4) Load 42
44: 13(int) Load 19(i)
45: 15(ptr) AccessChain 40(b) 44
46: 7(fvec4) Load 45
47: 7(fvec4) FAdd 43 46
55: 13(int) Load 19(i)
57: 13(int) Load 19(i)
58: 15(ptr) AccessChain 54(s) 55 56 57
59: 7(fvec4) Load 58
60: 7(fvec4) FAdd 47 59
61: 7(fvec4) FAdd 36 60
ReturnValue 61
FunctionEnd

View File

@ -1,70 +1,70 @@
hlsl.assoc.frag hlsl.assoc.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:8 Function Parameters: 0:8 Function Parameters:
0:8 'a1' (temp 4-component vector of float) 0:8 'a1' (in 4-component vector of float)
0:8 'a2' (temp 4-component vector of float) 0:8 'a2' (in 4-component vector of float)
0:8 'a3' (temp 4-component vector of float) 0:8 'a3' (in 4-component vector of float)
0:8 'a4' (temp 4-component vector of float) 0:8 'a4' (in 4-component vector of float)
0:8 'a5' (temp 4-component vector of float) 0:8 'a5' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a1' (temp 4-component vector of float) 0:9 'a1' (in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a2' (temp 4-component vector of float) 0:9 'a2' (in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a3' (temp 4-component vector of float) 0:9 'a3' (in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a4' (temp 4-component vector of float) 0:9 'a4' (in 4-component vector of float)
0:9 'a5' (temp 4-component vector of float) 0:9 'a5' (in 4-component vector of float)
0:10 Branch: Return with expression 0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 'a1' (temp 4-component vector of float) 0:10 'a1' (in 4-component vector of float)
0:10 'a2' (temp 4-component vector of float) 0:10 'a2' (in 4-component vector of float)
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 'a3' (temp 4-component vector of float) 0:10 'a3' (in 4-component vector of float)
0:10 'a4' (temp 4-component vector of float) 0:10 'a4' (in 4-component vector of float)
0:10 'a5' (temp 4-component vector of float) 0:10 'a5' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:8 Function Parameters: 0:8 Function Parameters:
0:8 'a1' (temp 4-component vector of float) 0:8 'a1' (in 4-component vector of float)
0:8 'a2' (temp 4-component vector of float) 0:8 'a2' (in 4-component vector of float)
0:8 'a3' (temp 4-component vector of float) 0:8 'a3' (in 4-component vector of float)
0:8 'a4' (temp 4-component vector of float) 0:8 'a4' (in 4-component vector of float)
0:8 'a5' (temp 4-component vector of float) 0:8 'a5' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a1' (temp 4-component vector of float) 0:9 'a1' (in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a2' (temp 4-component vector of float) 0:9 'a2' (in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a3' (temp 4-component vector of float) 0:9 'a3' (in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float) 0:9 move second child to first child (temp 4-component vector of float)
0:9 'a4' (temp 4-component vector of float) 0:9 'a4' (in 4-component vector of float)
0:9 'a5' (temp 4-component vector of float) 0:9 'a5' (in 4-component vector of float)
0:10 Branch: Return with expression 0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 'a1' (temp 4-component vector of float) 0:10 'a1' (in 4-component vector of float)
0:10 'a2' (temp 4-component vector of float) 0:10 'a2' (in 4-component vector of float)
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 'a3' (temp 4-component vector of float) 0:10 'a3' (in 4-component vector of float)
0:10 'a4' (temp 4-component vector of float) 0:10 'a4' (in 4-component vector of float)
0:10 'a5' (temp 4-component vector of float) 0:10 'a5' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000
@ -74,9 +74,9 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction" 9 10 11 12 13
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 9 "a1" Name 9 "a1"
Name 10 "a2" Name 10 "a2"
@ -87,14 +87,14 @@ gl_FragCoord origin is upper left
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeVector 6(float) 4 7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4) 8: TypePointer Input 7(fvec4)
9(a1): 8(ptr) Variable Input
10(a2): 8(ptr) Variable Input
11(a3): 8(ptr) Variable Input
12(a4): 8(ptr) Variable Input
13(a5): 8(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
9(a1): 8(ptr) Variable Function
10(a2): 8(ptr) Variable Function
11(a3): 8(ptr) Variable Function
12(a4): 8(ptr) Variable Function
13(a5): 8(ptr) Variable Function
14: 7(fvec4) Load 13(a5) 14: 7(fvec4) Load 13(a5)
Store 12(a4) 14 Store 12(a4) 14
Store 11(a3) 14 Store 11(a3) 14

View File

@ -0,0 +1,57 @@
hlsl.attribute.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Constant:
0:11 0 (const int)
0:11 true case is null
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Constant:
0:11 0 (const int)
0:11 true case is null
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 10
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: 6(int) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
SelectionMerge 9 None
BranchConditional 7 8 9
8: Label
Branch 9
9: Label
Return
FunctionEnd

View File

@ -0,0 +1,86 @@
hlsl.cast.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Branch: Return with expression
0:3 add (temp 4-component vector of float)
0:3 add (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 'input' (in 4-component vector of float)
0:3 Convert int to float (temp 4-component vector of float)
0:3 Convert float to int (temp 4-component vector of int)
0:3 'input' (in 4-component vector of float)
0:3 Constant:
0:3 1.198000
0:3 1.198000
0:3 1.198000
0:3 1.198000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Branch: Return with expression
0:3 add (temp 4-component vector of float)
0:3 add (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 'input' (in 4-component vector of float)
0:3 Convert int to float (temp 4-component vector of float)
0:3 Convert float to int (temp 4-component vector of int)
0:3 'input' (in 4-component vector of float)
0:3 Constant:
0:3 1.198000
0:3 1.198000
0:3 1.198000
0:3 1.198000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 26
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 9
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "input"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Input 7(fvec4)
9(input): 8(ptr) Variable Input
17: TypeInt 32 1
18: TypeVector 17(int) 4
22: 6(float) Constant 1067014160
23: 7(fvec4) ConstantComposite 22 22 22 22
4(PixelShaderFunction): 2 Function None 3
5: Label
10: 7(fvec4) Load 9(input)
11: 6(float) CompositeExtract 10 0
12: 6(float) CompositeExtract 10 1
13: 6(float) CompositeExtract 10 2
14: 6(float) CompositeExtract 10 3
15: 7(fvec4) CompositeConstruct 11 12 13 14
16: 7(fvec4) Load 9(input)
19: 18(ivec4) ConvertFToS 16
20: 7(fvec4) ConvertSToF 19
21: 7(fvec4) FAdd 15 20
24: 7(fvec4) FAdd 21 23
ReturnValue 24
FunctionEnd

View File

@ -0,0 +1,116 @@
hlsl.doLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Loop with condition not tested first
0:3 Loop Condition
0:3 Constant:
0:3 false (const bool)
0:3 No loop body
0:4 Loop with condition not tested first
0:4 Loop Condition
0:4 Constant:
0:4 false (const bool)
0:4 No loop body
0:5 Loop with condition not tested first
0:5 Loop Condition
0:5 Compare Equal (temp bool)
0:5 'input' (in 4-component vector of float)
0:5 'input' (in 4-component vector of float)
0:5 Loop Body
0:5 Branch: Return with expression
0:5 'input' (in 4-component vector of float)
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Loop with condition not tested first
0:3 Loop Condition
0:3 Constant:
0:3 false (const bool)
0:3 No loop body
0:4 Loop with condition not tested first
0:4 Loop Condition
0:4 Constant:
0:4 false (const bool)
0:4 No loop body
0:5 Loop with condition not tested first
0:5 Loop Condition
0:5 Compare Equal (temp bool)
0:5 'input' (in 4-component vector of float)
0:5 'input' (in 4-component vector of float)
0:5 Loop Body
0:5 Branch: Return with expression
0:5 'input' (in 4-component vector of float)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 31
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 23
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 23 "input"
2: TypeVoid
3: TypeFunction 2
10: TypeBool
11: 10(bool) ConstantFalse
20: TypeFloat 32
21: TypeVector 20(float) 4
22: TypePointer Input 21(fvec4)
23(input): 22(ptr) Variable Input
28: TypeVector 10(bool) 4
4(PixelShaderFunction): 2 Function None 3
5: Label
Branch 6
6: Label
LoopMerge 8 9 None
Branch 7
7: Label
Branch 9
9: Label
BranchConditional 11 6 8
8: Label
Branch 12
12: Label
LoopMerge 14 15 None
Branch 13
13: Label
Branch 15
15: Label
BranchConditional 11 12 14
14: Label
Branch 16
16: Label
LoopMerge 18 19 None
Branch 17
17: Label
24: 21(fvec4) Load 23(input)
ReturnValue 24
19: Label
26: 21(fvec4) Load 23(input)
27: 21(fvec4) Load 23(input)
29: 28(bvec4) FOrdEqual 26 27
30: 10(bool) All 29
BranchConditional 30 16 18
18: Label
Return
FunctionEnd

View File

@ -1,5 +1,5 @@
hlsl.float1.frag hlsl.float1.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 1-component vector of float) 0:1 move second child to first child (temp 1-component vector of float)
@ -12,8 +12,8 @@ gl_FragCoord origin is upper left
0:2 2.000000 0:2 2.000000
0:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:5 Function Parameters: 0:5 Function Parameters:
0:5 'inFloat1' (temp 1-component vector of float) 0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (temp float) 0:5 'inScalar' (in float)
0:? Sequence 0:? Sequence
0:6 Branch: Return with expression 0:6 Branch: Return with expression
0:6 add (temp 1-component vector of float) 0:6 add (temp 1-component vector of float)
@ -21,8 +21,8 @@ gl_FragCoord origin is upper left
0:6 'f1' (temp 1-component vector of float) 0:6 'f1' (temp 1-component vector of float)
0:6 'scalar' (temp float) 0:6 'scalar' (temp float)
0:6 vector-scale (temp 1-component vector of float) 0:6 vector-scale (temp 1-component vector of float)
0:6 'inFloat1' (temp 1-component vector of float) 0:6 'inFloat1' (in 1-component vector of float)
0:6 'inScalar' (temp float) 0:6 'inScalar' (in float)
0:? Linker Objects 0:? Linker Objects
0:? 'f1' (temp 1-component vector of float) 0:? 'f1' (temp 1-component vector of float)
0:? 'scalar' (temp float) 0:? 'scalar' (temp float)
@ -31,7 +31,7 @@ gl_FragCoord origin is upper left
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 1-component vector of float) 0:1 move second child to first child (temp 1-component vector of float)
@ -44,8 +44,8 @@ gl_FragCoord origin is upper left
0:2 2.000000 0:2 2.000000
0:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:5 Function Parameters: 0:5 Function Parameters:
0:5 'inFloat1' (temp 1-component vector of float) 0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (temp float) 0:5 'inScalar' (in float)
0:? Sequence 0:? Sequence
0:6 Branch: Return with expression 0:6 Branch: Return with expression
0:6 add (temp 1-component vector of float) 0:6 add (temp 1-component vector of float)
@ -53,8 +53,8 @@ gl_FragCoord origin is upper left
0:6 'f1' (temp 1-component vector of float) 0:6 'f1' (temp 1-component vector of float)
0:6 'scalar' (temp float) 0:6 'scalar' (temp float)
0:6 vector-scale (temp 1-component vector of float) 0:6 vector-scale (temp 1-component vector of float)
0:6 'inFloat1' (temp 1-component vector of float) 0:6 'inFloat1' (in 1-component vector of float)
0:6 'inScalar' (temp float) 0:6 'inScalar' (in float)
0:? Linker Objects 0:? Linker Objects
0:? 'f1' (temp 1-component vector of float) 0:? 'f1' (temp 1-component vector of float)
0:? 'scalar' (temp float) 0:? 'scalar' (temp float)
@ -68,7 +68,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;" Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1" Name 9 "inFloat1"

View File

@ -1,5 +1,5 @@
hlsl.float4.frag hlsl.float4.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 4-component vector of float) 0:1 move second child to first child (temp 4-component vector of float)
@ -9,22 +9,26 @@ gl_FragCoord origin is upper left
0:? 0.500000 0:? 0.500000
0:? 0.000000 0:? 0.000000
0:? 1.000000 0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:12 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:4 Function Parameters: 0:9 Function Parameters:
0:4 'input' (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:5 Branch: Return with expression 0:10 Branch: Return with expression
0:5 component-wise multiply (temp 4-component vector of float) 0:10 component-wise multiply (temp 4-component vector of float)
0:5 'input' (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float)
0:5 'AmbientColor' (temp 4-component vector of float) 0:10 'AmbientColor' (temp 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float) 0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'ff1' (temp bool Face)
0:? 'ff2' (temp 4-component vector of float)
0:? 'ff3' (temp 4-component vector of float)
0:? 'ff4' (temp 4-component vector of float FragCoord)
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 4-component vector of float) 0:1 move second child to first child (temp 4-component vector of float)
@ -34,37 +38,49 @@ gl_FragCoord origin is upper left
0:? 0.500000 0:? 0.500000
0:? 0.000000 0:? 0.000000
0:? 1.000000 0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:12 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:4 Function Parameters: 0:9 Function Parameters:
0:4 'input' (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:5 Branch: Return with expression 0:10 Branch: Return with expression
0:5 component-wise multiply (temp 4-component vector of float) 0:10 component-wise multiply (temp 4-component vector of float)
0:5 'input' (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float)
0:5 'AmbientColor' (temp 4-component vector of float) 0:10 'AmbientColor' (temp 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float) 0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'ff1' (temp bool Face)
0:? 'ff2' (temp 4-component vector of float)
0:? 'ff3' (temp 4-component vector of float)
0:? 'ff4' (temp 4-component vector of float FragCoord)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 19 // Id's are bound by 25
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;" Name 11 "ShaderFunction(vf4;"
Name 10 "input" Name 10 "input"
Name 14 "AmbientColor" Name 14 "AmbientColor"
Name 21 "ff1"
Name 22 "ff2"
Name 23 "ff3"
Name 24 "ff4"
Decorate 21(ff1) BuiltIn FrontFacing
Decorate 24(ff4) BuiltIn FragCoord
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeVector 6(float) 4 7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4) 8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr) 9: TypeFunction 7(fvec4) 8(ptr)
19: TypeBool
20: TypePointer Function 19(bool)
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
FunctionEnd FunctionEnd
@ -72,6 +88,10 @@ gl_FragCoord origin is upper left
10(input): 8(ptr) FunctionParameter 10(input): 8(ptr) FunctionParameter
12: Label 12: Label
14(AmbientColor): 8(ptr) Variable Function 14(AmbientColor): 8(ptr) Variable Function
21(ff1): 20(ptr) Variable Function
22(ff2): 8(ptr) Variable Function
23(ff3): 8(ptr) Variable Function
24(ff4): 8(ptr) Variable Function
13: 7(fvec4) Load 10(input) 13: 7(fvec4) Load 10(input)
15: 7(fvec4) Load 14(AmbientColor) 15: 7(fvec4) Load 14(AmbientColor)
16: 7(fvec4) FMul 13 15 16: 7(fvec4) FMul 13 15

View File

@ -0,0 +1,220 @@
hlsl.forLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:? Sequence
0:3 Loop with condition tested first
0:3 No loop condition
0:3 No loop body
0:4 Sequence
0:4 Pre-Increment (temp 4-component vector of float)
0:4 'input' (in 4-component vector of float)
0:4 Loop with condition tested first
0:4 No loop condition
0:4 No loop body
0:? Sequence
0:5 Loop with condition tested first
0:5 Loop Condition
0:5 Compare Not Equal (temp bool)
0:5 'input' (in 4-component vector of float)
0:5 'input' (in 4-component vector of float)
0:5 No loop body
0:? Sequence
0:6 Loop with condition tested first
0:6 Loop Condition
0:6 Compare Not Equal (temp bool)
0:6 'input' (in 4-component vector of float)
0:6 'input' (in 4-component vector of float)
0:6 Loop Body
0:? Sequence
0:6 Branch: Return with expression
0:6 Negate value (temp 4-component vector of float)
0:6 'input' (in 4-component vector of float)
0:7 Sequence
0:7 Pre-Decrement (temp 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Loop with condition tested first
0:7 Loop Condition
0:7 Compare Not Equal (temp bool)
0:7 'input' (in 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Loop Body
0:? Sequence
0:7 Branch: Return with expression
0:7 Negate value (temp 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Loop Terminal Expression
0:7 add second child into first child (temp 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Constant:
0:7 2.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:? Sequence
0:3 Loop with condition tested first
0:3 No loop condition
0:3 No loop body
0:4 Sequence
0:4 Pre-Increment (temp 4-component vector of float)
0:4 'input' (in 4-component vector of float)
0:4 Loop with condition tested first
0:4 No loop condition
0:4 No loop body
0:? Sequence
0:5 Loop with condition tested first
0:5 Loop Condition
0:5 Compare Not Equal (temp bool)
0:5 'input' (in 4-component vector of float)
0:5 'input' (in 4-component vector of float)
0:5 No loop body
0:? Sequence
0:6 Loop with condition tested first
0:6 Loop Condition
0:6 Compare Not Equal (temp bool)
0:6 'input' (in 4-component vector of float)
0:6 'input' (in 4-component vector of float)
0:6 Loop Body
0:? Sequence
0:6 Branch: Return with expression
0:6 Negate value (temp 4-component vector of float)
0:6 'input' (in 4-component vector of float)
0:7 Sequence
0:7 Pre-Decrement (temp 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Loop with condition tested first
0:7 Loop Condition
0:7 Compare Not Equal (temp bool)
0:7 'input' (in 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Loop Body
0:? Sequence
0:7 Branch: Return with expression
0:7 Negate value (temp 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Loop Terminal Expression
0:7 add second child into first child (temp 4-component vector of float)
0:7 'input' (in 4-component vector of float)
0:7 Constant:
0:7 2.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 64
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 13
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 13 "input"
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
11: TypeVector 10(float) 4
12: TypePointer Input 11(fvec4)
13(input): 12(ptr) Variable Input
15: 10(float) Constant 1065353216
29: TypeBool
30: TypeVector 29(bool) 4
60: 10(float) Constant 1073741824
4(PixelShaderFunction): 2 Function None 3
5: Label
Branch 6
6: Label
LoopMerge 8 9 None
Branch 7
7: Label
Branch 9
9: Label
Branch 6
8: Label
14: 11(fvec4) Load 13(input)
16: 11(fvec4) CompositeConstruct 15 15 15 15
17: 11(fvec4) FAdd 14 16
Store 13(input) 17
Branch 18
18: Label
LoopMerge 20 21 None
Branch 19
19: Label
Branch 21
21: Label
Branch 18
20: Label
Branch 22
22: Label
LoopMerge 24 25 None
Branch 26
26: Label
27: 11(fvec4) Load 13(input)
28: 11(fvec4) Load 13(input)
31: 30(bvec4) FOrdNotEqual 27 28
32: 29(bool) Any 31
BranchConditional 32 23 24
23: Label
Branch 25
25: Label
Branch 22
24: Label
Branch 33
33: Label
LoopMerge 35 36 None
Branch 37
37: Label
38: 11(fvec4) Load 13(input)
39: 11(fvec4) Load 13(input)
40: 30(bvec4) FOrdNotEqual 38 39
41: 29(bool) Any 40
BranchConditional 41 34 35
34: Label
42: 11(fvec4) Load 13(input)
43: 11(fvec4) FNegate 42
ReturnValue 43
36: Label
Branch 33
35: Label
45: 11(fvec4) Load 13(input)
46: 11(fvec4) CompositeConstruct 15 15 15 15
47: 11(fvec4) FSub 45 46
Store 13(input) 47
Branch 48
48: Label
LoopMerge 50 51 None
Branch 52
52: Label
53: 11(fvec4) Load 13(input)
54: 11(fvec4) Load 13(input)
55: 30(bvec4) FOrdNotEqual 53 54
56: 29(bool) Any 55
BranchConditional 56 49 50
49: Label
57: 11(fvec4) Load 13(input)
58: 11(fvec4) FNegate 57
ReturnValue 58
51: Label
61: 11(fvec4) Load 13(input)
62: 11(fvec4) CompositeConstruct 60 60 60 60
63: 11(fvec4) FAdd 61 62
Store 13(input) 63
Branch 48
50: Label
Return
FunctionEnd

View File

@ -1,5 +1,5 @@
hlsl.frag hlsl.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 4-component vector of float) 0:1 move second child to first child (temp 4-component vector of float)
@ -15,47 +15,47 @@ gl_FragCoord origin is upper left
0:2 0.100000 0:2 0.100000
0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Parameters: 0:5 Function Parameters:
0:5 'input' (temp 4-component vector of float) 0:5 'input' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:6 Branch: Return with expression 0:6 Branch: Return with expression
0:6 add (temp 4-component vector of float) 0:6 add (temp 4-component vector of float)
0:6 vector-scale (temp 4-component vector of float) 0:6 vector-scale (temp 4-component vector of float)
0:6 'input' (temp 4-component vector of float) 0:6 'input' (in 4-component vector of float)
0:6 'AmbientIntensity' (temp float) 0:6 'AmbientIntensity' (temp float)
0:6 'AmbientColor' (temp 4-component vector of float) 0:6 'AmbientColor' (temp 4-component vector of float)
0:7 Branch: Return with expression 0:7 Branch: Return with expression
0:7 add (temp 4-component vector of float) 0:7 add (temp 4-component vector of float)
0:7 component-wise multiply (temp 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:7 component-wise multiply (temp 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:8 Branch: Return with expression 0:8 Branch: Return with expression
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:8 component-wise multiply (temp 4-component vector of float) 0:8 component-wise multiply (temp 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:9 Branch: Return with expression 0:9 Branch: Return with expression
0:9 component-wise multiply (temp 4-component vector of float) 0:9 component-wise multiply (temp 4-component vector of float)
0:9 Pre-Increment (temp 4-component vector of float) 0:9 Pre-Increment (temp 4-component vector of float)
0:9 'input' (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float)
0:9 Negate value (temp 4-component vector of float) 0:9 Negate value (temp 4-component vector of float)
0:9 Negate value (temp 4-component vector of float) 0:9 Negate value (temp 4-component vector of float)
0:9 Pre-Decrement (temp 4-component vector of float) 0:9 Pre-Decrement (temp 4-component vector of float)
0:9 'input' (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float)
0:10 Branch: Return with expression 0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 Post-Increment (temp 4-component vector of float) 0:10 Post-Increment (temp 4-component vector of float)
0:10 'input' (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float)
0:10 Pre-Increment (temp 4-component vector of float) 0:10 Pre-Increment (temp 4-component vector of float)
0:10 'input' (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float)
0:11 Branch: Return with expression 0:11 Branch: Return with expression
0:11 sine (global 4-component vector of float) 0:11 sine (global 4-component vector of float)
0:11 'input' (temp 4-component vector of float) 0:11 'input' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float) 0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'AmbientIntensity' (temp float) 0:? 'AmbientIntensity' (temp float)
@ -64,7 +64,7 @@ gl_FragCoord origin is upper left
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 4-component vector of float) 0:1 move second child to first child (temp 4-component vector of float)
@ -80,81 +80,82 @@ gl_FragCoord origin is upper left
0:2 0.100000 0:2 0.100000
0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Parameters: 0:5 Function Parameters:
0:5 'input' (temp 4-component vector of float) 0:5 'input' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:6 Branch: Return with expression 0:6 Branch: Return with expression
0:6 add (temp 4-component vector of float) 0:6 add (temp 4-component vector of float)
0:6 vector-scale (temp 4-component vector of float) 0:6 vector-scale (temp 4-component vector of float)
0:6 'input' (temp 4-component vector of float) 0:6 'input' (in 4-component vector of float)
0:6 'AmbientIntensity' (temp float) 0:6 'AmbientIntensity' (temp float)
0:6 'AmbientColor' (temp 4-component vector of float) 0:6 'AmbientColor' (temp 4-component vector of float)
0:7 Branch: Return with expression 0:7 Branch: Return with expression
0:7 add (temp 4-component vector of float) 0:7 add (temp 4-component vector of float)
0:7 component-wise multiply (temp 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:7 component-wise multiply (temp 4-component vector of float) 0:7 component-wise multiply (temp 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:7 'input' (temp 4-component vector of float) 0:7 'input' (in 4-component vector of float)
0:8 Branch: Return with expression 0:8 Branch: Return with expression
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:8 component-wise multiply (temp 4-component vector of float) 0:8 component-wise multiply (temp 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:8 'input' (temp 4-component vector of float) 0:8 'input' (in 4-component vector of float)
0:9 Branch: Return with expression 0:9 Branch: Return with expression
0:9 component-wise multiply (temp 4-component vector of float) 0:9 component-wise multiply (temp 4-component vector of float)
0:9 Pre-Increment (temp 4-component vector of float) 0:9 Pre-Increment (temp 4-component vector of float)
0:9 'input' (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float)
0:9 Negate value (temp 4-component vector of float) 0:9 Negate value (temp 4-component vector of float)
0:9 Negate value (temp 4-component vector of float) 0:9 Negate value (temp 4-component vector of float)
0:9 Pre-Decrement (temp 4-component vector of float) 0:9 Pre-Decrement (temp 4-component vector of float)
0:9 'input' (temp 4-component vector of float) 0:9 'input' (in 4-component vector of float)
0:10 Branch: Return with expression 0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float)
0:10 Post-Increment (temp 4-component vector of float) 0:10 Post-Increment (temp 4-component vector of float)
0:10 'input' (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float)
0:10 Pre-Increment (temp 4-component vector of float) 0:10 Pre-Increment (temp 4-component vector of float)
0:10 'input' (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float)
0:11 Branch: Return with expression 0:11 Branch: Return with expression
0:11 sine (global 4-component vector of float) 0:11 sine (global 4-component vector of float)
0:11 'input' (temp 4-component vector of float) 0:11 'input' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float) 0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'AmbientIntensity' (temp float) 0:? 'AmbientIntensity' (temp float)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 57 // Id's are bound by 58
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction" 9
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 9 "input" Name 9 "input"
Name 12 "AmbientIntensity" Name 12 "AmbientIntensity"
Name 15 "AmbientColor" Name 16 "AmbientColor"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeVector 6(float) 4 7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4) 8: TypePointer Input 7(fvec4)
9(input): 8(ptr) Variable Input
11: TypePointer Function 6(float) 11: TypePointer Function 6(float)
36: 6(float) Constant 1065353216 15: TypePointer Function 7(fvec4)
37: 6(float) Constant 1065353216
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
9(input): 8(ptr) Variable Function
12(AmbientIntensity): 11(ptr) Variable Function 12(AmbientIntensity): 11(ptr) Variable Function
15(AmbientColor): 8(ptr) Variable Function 16(AmbientColor): 15(ptr) Variable Function
10: 7(fvec4) Load 9(input) 10: 7(fvec4) Load 9(input)
13: 6(float) Load 12(AmbientIntensity) 13: 6(float) Load 12(AmbientIntensity)
14: 7(fvec4) VectorTimesScalar 10 13 14: 7(fvec4) VectorTimesScalar 10 13
16: 7(fvec4) Load 15(AmbientColor) 17: 7(fvec4) Load 16(AmbientColor)
17: 7(fvec4) FAdd 14 16 18: 7(fvec4) FAdd 14 17
ReturnValue 17 ReturnValue 18
FunctionEnd FunctionEnd

223
Test/baseResults/hlsl.if.frag.out Executable file
View File

@ -0,0 +1,223 @@
hlsl.if.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Test condition and select (temp void)
0:3 Condition
0:3 Compare Equal (temp bool)
0:3 'input' (in 4-component vector of float)
0:3 'input' (in 4-component vector of float)
0:3 true case
0:4 Branch: Return with expression
0:4 'input' (in 4-component vector of float)
0:6 Test condition and select (temp void)
0:6 Condition
0:6 Compare Equal (temp bool)
0:6 'input' (in 4-component vector of float)
0:6 'input' (in 4-component vector of float)
0:6 true case
0:7 Branch: Return with expression
0:7 'input' (in 4-component vector of float)
0:6 false case
0:9 Branch: Return with expression
0:9 Negate value (temp 4-component vector of float)
0:9 'input' (in 4-component vector of float)
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Compare Equal (temp bool)
0:11 'input' (in 4-component vector of float)
0:11 'input' (in 4-component vector of float)
0:11 true case is null
0:14 Test condition and select (temp void)
0:14 Condition
0:14 Compare Equal (temp bool)
0:14 'input' (in 4-component vector of float)
0:14 'input' (in 4-component vector of float)
0:14 true case is null
0:19 Test condition and select (temp void)
0:19 Condition
0:19 Compare Equal (temp bool)
0:19 'input' (in 4-component vector of float)
0:19 'input' (in 4-component vector of float)
0:19 true case
0:? Sequence
0:20 Branch: Return with expression
0:20 'input' (in 4-component vector of float)
0:23 Test condition and select (temp void)
0:23 Condition
0:23 Compare Equal (temp bool)
0:23 'input' (in 4-component vector of float)
0:23 'input' (in 4-component vector of float)
0:23 true case
0:? Sequence
0:24 Branch: Return with expression
0:24 'input' (in 4-component vector of float)
0:23 false case
0:? Sequence
0:26 Branch: Return with expression
0:26 Negate value (temp 4-component vector of float)
0:26 'input' (in 4-component vector of float)
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Test condition and select (temp void)
0:3 Condition
0:3 Compare Equal (temp bool)
0:3 'input' (in 4-component vector of float)
0:3 'input' (in 4-component vector of float)
0:3 true case
0:4 Branch: Return with expression
0:4 'input' (in 4-component vector of float)
0:6 Test condition and select (temp void)
0:6 Condition
0:6 Compare Equal (temp bool)
0:6 'input' (in 4-component vector of float)
0:6 'input' (in 4-component vector of float)
0:6 true case
0:7 Branch: Return with expression
0:7 'input' (in 4-component vector of float)
0:6 false case
0:9 Branch: Return with expression
0:9 Negate value (temp 4-component vector of float)
0:9 'input' (in 4-component vector of float)
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Compare Equal (temp bool)
0:11 'input' (in 4-component vector of float)
0:11 'input' (in 4-component vector of float)
0:11 true case is null
0:14 Test condition and select (temp void)
0:14 Condition
0:14 Compare Equal (temp bool)
0:14 'input' (in 4-component vector of float)
0:14 'input' (in 4-component vector of float)
0:14 true case is null
0:19 Test condition and select (temp void)
0:19 Condition
0:19 Compare Equal (temp bool)
0:19 'input' (in 4-component vector of float)
0:19 'input' (in 4-component vector of float)
0:19 true case
0:? Sequence
0:20 Branch: Return with expression
0:20 'input' (in 4-component vector of float)
0:23 Test condition and select (temp void)
0:23 Condition
0:23 Compare Equal (temp bool)
0:23 'input' (in 4-component vector of float)
0:23 'input' (in 4-component vector of float)
0:23 true case
0:? Sequence
0:24 Branch: Return with expression
0:24 'input' (in 4-component vector of float)
0:23 false case
0:? Sequence
0:26 Branch: Return with expression
0:26 Negate value (temp 4-component vector of float)
0:26 'input' (in 4-component vector of float)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 64
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 9
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "input"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Input 7(fvec4)
9(input): 8(ptr) Variable Input
12: TypeBool
13: TypeVector 12(bool) 4
4(PixelShaderFunction): 2 Function None 3
5: Label
10: 7(fvec4) Load 9(input)
11: 7(fvec4) Load 9(input)
14: 13(bvec4) FOrdEqual 10 11
15: 12(bool) All 14
SelectionMerge 17 None
BranchConditional 15 16 17
16: Label
18: 7(fvec4) Load 9(input)
ReturnValue 18
17: Label
20: 7(fvec4) Load 9(input)
21: 7(fvec4) Load 9(input)
22: 13(bvec4) FOrdEqual 20 21
23: 12(bool) All 22
SelectionMerge 25 None
BranchConditional 23 24 28
24: Label
26: 7(fvec4) Load 9(input)
ReturnValue 26
28: Label
29: 7(fvec4) Load 9(input)
30: 7(fvec4) FNegate 29
ReturnValue 30
25: Label
32: 7(fvec4) Load 9(input)
33: 7(fvec4) Load 9(input)
34: 13(bvec4) FOrdEqual 32 33
35: 12(bool) All 34
SelectionMerge 37 None
BranchConditional 35 36 37
36: Label
Branch 37
37: Label
38: 7(fvec4) Load 9(input)
39: 7(fvec4) Load 9(input)
40: 13(bvec4) FOrdEqual 38 39
41: 12(bool) All 40
SelectionMerge 43 None
BranchConditional 41 42 43
42: Label
Branch 43
43: Label
44: 7(fvec4) Load 9(input)
45: 7(fvec4) Load 9(input)
46: 13(bvec4) FOrdEqual 44 45
47: 12(bool) All 46
SelectionMerge 49 None
BranchConditional 47 48 49
48: Label
50: 7(fvec4) Load 9(input)
ReturnValue 50
49: Label
52: 7(fvec4) Load 9(input)
53: 7(fvec4) Load 9(input)
54: 13(bvec4) FOrdEqual 52 53
55: 12(bool) All 54
SelectionMerge 57 None
BranchConditional 55 56 60
56: Label
58: 7(fvec4) Load 9(input)
ReturnValue 58
60: Label
61: 7(fvec4) Load 9(input)
62: 7(fvec4) FNegate 61
ReturnValue 62
57: Label
Return
FunctionEnd

View File

@ -0,0 +1,70 @@
hlsl.intrinsics.barriers.comp
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: ComputeShaderFunction( (temp float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
0:5 AllMemoryBarrierWithGroupSync (global void)
0:6 GroupMemoryBarrier (global void)
0:7 GroupMemoryBarrierWithGroupSync (global void)
0:8 WorkgroupMemoryBarrier (global void)
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:? Linker Objects
Linked compute stage:
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: ComputeShaderFunction( (temp float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
0:5 AllMemoryBarrierWithGroupSync (global void)
0:6 GroupMemoryBarrier (global void)
0:7 GroupMemoryBarrierWithGroupSync (global void)
0:8 WorkgroupMemoryBarrier (global void)
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 15
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "ComputeShaderFunction"
ExecutionMode 4 LocalSize 1 1 1
Source HLSL 450
Name 4 "ComputeShaderFunction"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 1
8: 6(int) Constant 4048
9: 6(int) Constant 512
10: 6(int) Constant 2
11: 6(int) Constant 256
12: TypeFloat 32
13: 12(float) Constant 0
4(ComputeShaderFunction): 2 Function None 3
5: Label
MemoryBarrier 7 8
ControlBarrier 7 7 8
MemoryBarrier 7 9
ControlBarrier 7 7 9
MemoryBarrier 10 11
ControlBarrier 10 10 11
ReturnValue 13
FunctionEnd

View File

@ -0,0 +1,768 @@
hlsl.intrinsics.comp
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:44 Function Definition: ComputeShaderFunction(f1;f1;f1;u1;u1; (temp float)
0:17 Function Parameters:
0:17 'inF0' (in float)
0:17 'inF1' (in float)
0:17 'inF2' (in float)
0:17 'inU0' (in uint)
0:17 'inU1' (in uint)
0:? Sequence
0:21 all (global bool)
0:21 'inF0' (in float)
0:24 AtomicAdd (global void)
0:24 'gs_ua' (temp uint)
0:24 'gs_ub' (temp uint)
0:25 move second child to first child (temp uint)
0:25 'out_u1' (temp uint)
0:25 AtomicAdd (temp uint)
0:25 'gs_ua' (temp uint)
0:25 'gs_ub' (temp uint)
0:26 AtomicAnd (global void)
0:26 'gs_ua' (temp uint)
0:26 'gs_ub' (temp uint)
0:27 move second child to first child (temp uint)
0:27 'out_u1' (temp uint)
0:27 AtomicAnd (temp uint)
0:27 'gs_ua' (temp uint)
0:27 'gs_ub' (temp uint)
0:28 move second child to first child (temp uint)
0:28 'out_u1' (temp uint)
0:28 AtomicCompSwap (temp uint)
0:28 'gs_ua' (temp uint)
0:28 'gs_ub' (temp uint)
0:28 'gs_uc' (temp uint)
0:29 move second child to first child (temp uint)
0:29 'out_u1' (temp uint)
0:29 AtomicExchange (temp uint)
0:29 'gs_ua' (temp uint)
0:29 'gs_ub' (temp uint)
0:30 AtomicMax (global void)
0:30 'gs_ua' (temp uint)
0:30 'gs_ub' (temp uint)
0:31 move second child to first child (temp uint)
0:31 'out_u1' (temp uint)
0:31 AtomicMax (temp uint)
0:31 'gs_ua' (temp uint)
0:31 'gs_ub' (temp uint)
0:32 AtomicMin (global void)
0:32 'gs_ua' (temp uint)
0:32 'gs_ub' (temp uint)
0:33 move second child to first child (temp uint)
0:33 'out_u1' (temp uint)
0:33 AtomicMin (temp uint)
0:33 'gs_ua' (temp uint)
0:33 'gs_ub' (temp uint)
0:34 AtomicOr (global void)
0:34 'gs_ua' (temp uint)
0:34 'gs_ub' (temp uint)
0:35 move second child to first child (temp uint)
0:35 'out_u1' (temp uint)
0:35 AtomicOr (temp uint)
0:35 'gs_ua' (temp uint)
0:35 'gs_ub' (temp uint)
0:36 AtomicXor (global void)
0:36 'gs_ua' (temp uint)
0:36 'gs_ub' (temp uint)
0:37 move second child to first child (temp uint)
0:37 'out_u1' (temp uint)
0:37 AtomicXor (temp uint)
0:37 'gs_ua' (temp uint)
0:37 'gs_ub' (temp uint)
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
0:50 Function Definition: ComputeShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 1-component vector of float)
0:45 'inF1' (in 1-component vector of float)
0:45 'inF2' (in 1-component vector of float)
0:? Sequence
0:47 Branch: Return with expression
0:47 Constant:
0:47 0.000000
0:77 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
0:51 Function Parameters:
0:51 'inF0' (in 2-component vector of float)
0:51 'inF1' (in 2-component vector of float)
0:51 'inF2' (in 2-component vector of float)
0:51 'inU0' (in 2-component vector of uint)
0:51 'inU1' (in 2-component vector of uint)
0:? Sequence
0:55 all (global bool)
0:55 'inF0' (in 2-component vector of float)
0:58 AtomicAdd (global void)
0:58 'gs_ua2' (temp 2-component vector of uint)
0:58 'gs_ub2' (temp 2-component vector of uint)
0:59 move second child to first child (temp 2-component vector of uint)
0:59 'out_u2' (temp 2-component vector of uint)
0:59 AtomicAdd (temp 2-component vector of uint)
0:59 'gs_ua2' (temp 2-component vector of uint)
0:59 'gs_ub2' (temp 2-component vector of uint)
0:60 AtomicAnd (global void)
0:60 'gs_ua2' (temp 2-component vector of uint)
0:60 'gs_ub2' (temp 2-component vector of uint)
0:61 move second child to first child (temp 2-component vector of uint)
0:61 'out_u2' (temp 2-component vector of uint)
0:61 AtomicAnd (temp 2-component vector of uint)
0:61 'gs_ua2' (temp 2-component vector of uint)
0:61 'gs_ub2' (temp 2-component vector of uint)
0:62 move second child to first child (temp 2-component vector of uint)
0:62 'out_u2' (temp 2-component vector of uint)
0:62 AtomicCompSwap (temp 2-component vector of uint)
0:62 'gs_ua2' (temp 2-component vector of uint)
0:62 'gs_ub2' (temp 2-component vector of uint)
0:62 'gs_uc2' (temp 2-component vector of uint)
0:63 move second child to first child (temp 2-component vector of uint)
0:63 'out_u2' (temp 2-component vector of uint)
0:63 AtomicExchange (temp 2-component vector of uint)
0:63 'gs_ua2' (temp 2-component vector of uint)
0:63 'gs_ub2' (temp 2-component vector of uint)
0:64 AtomicMax (global void)
0:64 'gs_ua2' (temp 2-component vector of uint)
0:64 'gs_ub2' (temp 2-component vector of uint)
0:65 move second child to first child (temp 2-component vector of uint)
0:65 'out_u2' (temp 2-component vector of uint)
0:65 AtomicMax (temp 2-component vector of uint)
0:65 'gs_ua2' (temp 2-component vector of uint)
0:65 'gs_ub2' (temp 2-component vector of uint)
0:66 AtomicMin (global void)
0:66 'gs_ua2' (temp 2-component vector of uint)
0:66 'gs_ub2' (temp 2-component vector of uint)
0:67 move second child to first child (temp 2-component vector of uint)
0:67 'out_u2' (temp 2-component vector of uint)
0:67 AtomicMin (temp 2-component vector of uint)
0:67 'gs_ua2' (temp 2-component vector of uint)
0:67 'gs_ub2' (temp 2-component vector of uint)
0:68 AtomicOr (global void)
0:68 'gs_ua2' (temp 2-component vector of uint)
0:68 'gs_ub2' (temp 2-component vector of uint)
0:69 move second child to first child (temp 2-component vector of uint)
0:69 'out_u2' (temp 2-component vector of uint)
0:69 AtomicOr (temp 2-component vector of uint)
0:69 'gs_ua2' (temp 2-component vector of uint)
0:69 'gs_ub2' (temp 2-component vector of uint)
0:70 AtomicXor (global void)
0:70 'gs_ua2' (temp 2-component vector of uint)
0:70 'gs_ub2' (temp 2-component vector of uint)
0:71 move second child to first child (temp 2-component vector of uint)
0:71 'out_u2' (temp 2-component vector of uint)
0:71 AtomicXor (temp 2-component vector of uint)
0:71 'gs_ua2' (temp 2-component vector of uint)
0:71 'gs_ub2' (temp 2-component vector of uint)
0:74 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:104 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
0:78 Function Parameters:
0:78 'inF0' (in 3-component vector of float)
0:78 'inF1' (in 3-component vector of float)
0:78 'inF2' (in 3-component vector of float)
0:78 'inU0' (in 3-component vector of uint)
0:78 'inU1' (in 3-component vector of uint)
0:? Sequence
0:82 all (global bool)
0:82 'inF0' (in 3-component vector of float)
0:85 AtomicAdd (global void)
0:85 'gs_ua3' (temp 3-component vector of uint)
0:85 'gs_ub3' (temp 3-component vector of uint)
0:86 move second child to first child (temp 3-component vector of uint)
0:86 'out_u3' (temp 3-component vector of uint)
0:86 AtomicAdd (temp 3-component vector of uint)
0:86 'gs_ua3' (temp 3-component vector of uint)
0:86 'gs_ub3' (temp 3-component vector of uint)
0:87 AtomicAnd (global void)
0:87 'gs_ua3' (temp 3-component vector of uint)
0:87 'gs_ub3' (temp 3-component vector of uint)
0:88 move second child to first child (temp 3-component vector of uint)
0:88 'out_u3' (temp 3-component vector of uint)
0:88 AtomicAnd (temp 3-component vector of uint)
0:88 'gs_ua3' (temp 3-component vector of uint)
0:88 'gs_ub3' (temp 3-component vector of uint)
0:89 move second child to first child (temp 3-component vector of uint)
0:89 'out_u3' (temp 3-component vector of uint)
0:89 AtomicCompSwap (temp 3-component vector of uint)
0:89 'gs_ua3' (temp 3-component vector of uint)
0:89 'gs_ub3' (temp 3-component vector of uint)
0:89 'gs_uc3' (temp 3-component vector of uint)
0:90 move second child to first child (temp 3-component vector of uint)
0:90 'out_u3' (temp 3-component vector of uint)
0:90 AtomicExchange (temp 3-component vector of uint)
0:90 'gs_ua3' (temp 3-component vector of uint)
0:90 'gs_ub3' (temp 3-component vector of uint)
0:91 AtomicMax (global void)
0:91 'gs_ua3' (temp 3-component vector of uint)
0:91 'gs_ub3' (temp 3-component vector of uint)
0:92 move second child to first child (temp 3-component vector of uint)
0:92 'out_u3' (temp 3-component vector of uint)
0:92 AtomicMax (temp 3-component vector of uint)
0:92 'gs_ua3' (temp 3-component vector of uint)
0:92 'gs_ub3' (temp 3-component vector of uint)
0:93 AtomicMin (global void)
0:93 'gs_ua3' (temp 3-component vector of uint)
0:93 'gs_ub3' (temp 3-component vector of uint)
0:94 move second child to first child (temp 3-component vector of uint)
0:94 'out_u3' (temp 3-component vector of uint)
0:94 AtomicMin (temp 3-component vector of uint)
0:94 'gs_ua3' (temp 3-component vector of uint)
0:94 'gs_ub3' (temp 3-component vector of uint)
0:95 AtomicOr (global void)
0:95 'gs_ua3' (temp 3-component vector of uint)
0:95 'gs_ub3' (temp 3-component vector of uint)
0:96 move second child to first child (temp 3-component vector of uint)
0:96 'out_u3' (temp 3-component vector of uint)
0:96 AtomicOr (temp 3-component vector of uint)
0:96 'gs_ua3' (temp 3-component vector of uint)
0:96 'gs_ub3' (temp 3-component vector of uint)
0:97 AtomicXor (global void)
0:97 'gs_ua3' (temp 3-component vector of uint)
0:97 'gs_ub3' (temp 3-component vector of uint)
0:98 move second child to first child (temp 3-component vector of uint)
0:98 'out_u3' (temp 3-component vector of uint)
0:98 AtomicXor (temp 3-component vector of uint)
0:98 'gs_ua3' (temp 3-component vector of uint)
0:98 'gs_ub3' (temp 3-component vector of uint)
0:101 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:130 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
0:105 Function Parameters:
0:105 'inF0' (in 4-component vector of float)
0:105 'inF1' (in 4-component vector of float)
0:105 'inF2' (in 4-component vector of float)
0:105 'inU0' (in 4-component vector of uint)
0:105 'inU1' (in 4-component vector of uint)
0:? Sequence
0:109 all (global bool)
0:109 'inF0' (in 4-component vector of float)
0:112 AtomicAdd (global void)
0:112 'gs_ua4' (temp 4-component vector of uint)
0:112 'gs_ub4' (temp 4-component vector of uint)
0:113 move second child to first child (temp 4-component vector of uint)
0:113 'out_u4' (temp 4-component vector of uint)
0:113 AtomicAdd (temp 4-component vector of uint)
0:113 'gs_ua4' (temp 4-component vector of uint)
0:113 'gs_ub4' (temp 4-component vector of uint)
0:114 AtomicAnd (global void)
0:114 'gs_ua4' (temp 4-component vector of uint)
0:114 'gs_ub4' (temp 4-component vector of uint)
0:115 move second child to first child (temp 4-component vector of uint)
0:115 'out_u4' (temp 4-component vector of uint)
0:115 AtomicAnd (temp 4-component vector of uint)
0:115 'gs_ua4' (temp 4-component vector of uint)
0:115 'gs_ub4' (temp 4-component vector of uint)
0:116 move second child to first child (temp 4-component vector of uint)
0:116 'out_u4' (temp 4-component vector of uint)
0:116 AtomicCompSwap (temp 4-component vector of uint)
0:116 'gs_ua4' (temp 4-component vector of uint)
0:116 'gs_ub4' (temp 4-component vector of uint)
0:116 'gs_uc4' (temp 4-component vector of uint)
0:117 move second child to first child (temp 4-component vector of uint)
0:117 'out_u4' (temp 4-component vector of uint)
0:117 AtomicExchange (temp 4-component vector of uint)
0:117 'gs_ua4' (temp 4-component vector of uint)
0:117 'gs_ub4' (temp 4-component vector of uint)
0:118 AtomicMax (global void)
0:118 'gs_ua4' (temp 4-component vector of uint)
0:118 'gs_ub4' (temp 4-component vector of uint)
0:119 move second child to first child (temp 4-component vector of uint)
0:119 'out_u4' (temp 4-component vector of uint)
0:119 AtomicMax (temp 4-component vector of uint)
0:119 'gs_ua4' (temp 4-component vector of uint)
0:119 'gs_ub4' (temp 4-component vector of uint)
0:120 AtomicMin (global void)
0:120 'gs_ua4' (temp 4-component vector of uint)
0:120 'gs_ub4' (temp 4-component vector of uint)
0:121 move second child to first child (temp 4-component vector of uint)
0:121 'out_u4' (temp 4-component vector of uint)
0:121 AtomicMin (temp 4-component vector of uint)
0:121 'gs_ua4' (temp 4-component vector of uint)
0:121 'gs_ub4' (temp 4-component vector of uint)
0:122 AtomicOr (global void)
0:122 'gs_ua4' (temp 4-component vector of uint)
0:122 'gs_ub4' (temp 4-component vector of uint)
0:123 move second child to first child (temp 4-component vector of uint)
0:123 'out_u4' (temp 4-component vector of uint)
0:123 AtomicOr (temp 4-component vector of uint)
0:123 'gs_ua4' (temp 4-component vector of uint)
0:123 'gs_ub4' (temp 4-component vector of uint)
0:124 AtomicXor (global void)
0:124 'gs_ua4' (temp 4-component vector of uint)
0:124 'gs_ub4' (temp 4-component vector of uint)
0:125 move second child to first child (temp 4-component vector of uint)
0:125 'out_u4' (temp 4-component vector of uint)
0:125 AtomicXor (temp 4-component vector of uint)
0:125 'gs_ua4' (temp 4-component vector of uint)
0:125 'gs_ub4' (temp 4-component vector of uint)
0:128 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
0:? 'gs_ua' (temp uint)
0:? 'gs_ub' (temp uint)
0:? 'gs_uc' (temp uint)
0:? 'gs_ua2' (temp 2-component vector of uint)
0:? 'gs_ub2' (temp 2-component vector of uint)
0:? 'gs_uc2' (temp 2-component vector of uint)
0:? 'gs_ua3' (temp 3-component vector of uint)
0:? 'gs_ub3' (temp 3-component vector of uint)
0:? 'gs_uc3' (temp 3-component vector of uint)
0:? 'gs_ua4' (temp 4-component vector of uint)
0:? 'gs_ub4' (temp 4-component vector of uint)
0:? 'gs_uc4' (temp 4-component vector of uint)
Linked compute stage:
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:44 Function Definition: ComputeShaderFunction(f1;f1;f1;u1;u1; (temp float)
0:17 Function Parameters:
0:17 'inF0' (in float)
0:17 'inF1' (in float)
0:17 'inF2' (in float)
0:17 'inU0' (in uint)
0:17 'inU1' (in uint)
0:? Sequence
0:21 all (global bool)
0:21 'inF0' (in float)
0:24 AtomicAdd (global void)
0:24 'gs_ua' (temp uint)
0:24 'gs_ub' (temp uint)
0:25 move second child to first child (temp uint)
0:25 'out_u1' (temp uint)
0:25 AtomicAdd (temp uint)
0:25 'gs_ua' (temp uint)
0:25 'gs_ub' (temp uint)
0:26 AtomicAnd (global void)
0:26 'gs_ua' (temp uint)
0:26 'gs_ub' (temp uint)
0:27 move second child to first child (temp uint)
0:27 'out_u1' (temp uint)
0:27 AtomicAnd (temp uint)
0:27 'gs_ua' (temp uint)
0:27 'gs_ub' (temp uint)
0:28 move second child to first child (temp uint)
0:28 'out_u1' (temp uint)
0:28 AtomicCompSwap (temp uint)
0:28 'gs_ua' (temp uint)
0:28 'gs_ub' (temp uint)
0:28 'gs_uc' (temp uint)
0:29 move second child to first child (temp uint)
0:29 'out_u1' (temp uint)
0:29 AtomicExchange (temp uint)
0:29 'gs_ua' (temp uint)
0:29 'gs_ub' (temp uint)
0:30 AtomicMax (global void)
0:30 'gs_ua' (temp uint)
0:30 'gs_ub' (temp uint)
0:31 move second child to first child (temp uint)
0:31 'out_u1' (temp uint)
0:31 AtomicMax (temp uint)
0:31 'gs_ua' (temp uint)
0:31 'gs_ub' (temp uint)
0:32 AtomicMin (global void)
0:32 'gs_ua' (temp uint)
0:32 'gs_ub' (temp uint)
0:33 move second child to first child (temp uint)
0:33 'out_u1' (temp uint)
0:33 AtomicMin (temp uint)
0:33 'gs_ua' (temp uint)
0:33 'gs_ub' (temp uint)
0:34 AtomicOr (global void)
0:34 'gs_ua' (temp uint)
0:34 'gs_ub' (temp uint)
0:35 move second child to first child (temp uint)
0:35 'out_u1' (temp uint)
0:35 AtomicOr (temp uint)
0:35 'gs_ua' (temp uint)
0:35 'gs_ub' (temp uint)
0:36 AtomicXor (global void)
0:36 'gs_ua' (temp uint)
0:36 'gs_ub' (temp uint)
0:37 move second child to first child (temp uint)
0:37 'out_u1' (temp uint)
0:37 AtomicXor (temp uint)
0:37 'gs_ua' (temp uint)
0:37 'gs_ub' (temp uint)
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
0:50 Function Definition: ComputeShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 1-component vector of float)
0:45 'inF1' (in 1-component vector of float)
0:45 'inF2' (in 1-component vector of float)
0:? Sequence
0:47 Branch: Return with expression
0:47 Constant:
0:47 0.000000
0:77 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
0:51 Function Parameters:
0:51 'inF0' (in 2-component vector of float)
0:51 'inF1' (in 2-component vector of float)
0:51 'inF2' (in 2-component vector of float)
0:51 'inU0' (in 2-component vector of uint)
0:51 'inU1' (in 2-component vector of uint)
0:? Sequence
0:55 all (global bool)
0:55 'inF0' (in 2-component vector of float)
0:58 AtomicAdd (global void)
0:58 'gs_ua2' (temp 2-component vector of uint)
0:58 'gs_ub2' (temp 2-component vector of uint)
0:59 move second child to first child (temp 2-component vector of uint)
0:59 'out_u2' (temp 2-component vector of uint)
0:59 AtomicAdd (temp 2-component vector of uint)
0:59 'gs_ua2' (temp 2-component vector of uint)
0:59 'gs_ub2' (temp 2-component vector of uint)
0:60 AtomicAnd (global void)
0:60 'gs_ua2' (temp 2-component vector of uint)
0:60 'gs_ub2' (temp 2-component vector of uint)
0:61 move second child to first child (temp 2-component vector of uint)
0:61 'out_u2' (temp 2-component vector of uint)
0:61 AtomicAnd (temp 2-component vector of uint)
0:61 'gs_ua2' (temp 2-component vector of uint)
0:61 'gs_ub2' (temp 2-component vector of uint)
0:62 move second child to first child (temp 2-component vector of uint)
0:62 'out_u2' (temp 2-component vector of uint)
0:62 AtomicCompSwap (temp 2-component vector of uint)
0:62 'gs_ua2' (temp 2-component vector of uint)
0:62 'gs_ub2' (temp 2-component vector of uint)
0:62 'gs_uc2' (temp 2-component vector of uint)
0:63 move second child to first child (temp 2-component vector of uint)
0:63 'out_u2' (temp 2-component vector of uint)
0:63 AtomicExchange (temp 2-component vector of uint)
0:63 'gs_ua2' (temp 2-component vector of uint)
0:63 'gs_ub2' (temp 2-component vector of uint)
0:64 AtomicMax (global void)
0:64 'gs_ua2' (temp 2-component vector of uint)
0:64 'gs_ub2' (temp 2-component vector of uint)
0:65 move second child to first child (temp 2-component vector of uint)
0:65 'out_u2' (temp 2-component vector of uint)
0:65 AtomicMax (temp 2-component vector of uint)
0:65 'gs_ua2' (temp 2-component vector of uint)
0:65 'gs_ub2' (temp 2-component vector of uint)
0:66 AtomicMin (global void)
0:66 'gs_ua2' (temp 2-component vector of uint)
0:66 'gs_ub2' (temp 2-component vector of uint)
0:67 move second child to first child (temp 2-component vector of uint)
0:67 'out_u2' (temp 2-component vector of uint)
0:67 AtomicMin (temp 2-component vector of uint)
0:67 'gs_ua2' (temp 2-component vector of uint)
0:67 'gs_ub2' (temp 2-component vector of uint)
0:68 AtomicOr (global void)
0:68 'gs_ua2' (temp 2-component vector of uint)
0:68 'gs_ub2' (temp 2-component vector of uint)
0:69 move second child to first child (temp 2-component vector of uint)
0:69 'out_u2' (temp 2-component vector of uint)
0:69 AtomicOr (temp 2-component vector of uint)
0:69 'gs_ua2' (temp 2-component vector of uint)
0:69 'gs_ub2' (temp 2-component vector of uint)
0:70 AtomicXor (global void)
0:70 'gs_ua2' (temp 2-component vector of uint)
0:70 'gs_ub2' (temp 2-component vector of uint)
0:71 move second child to first child (temp 2-component vector of uint)
0:71 'out_u2' (temp 2-component vector of uint)
0:71 AtomicXor (temp 2-component vector of uint)
0:71 'gs_ua2' (temp 2-component vector of uint)
0:71 'gs_ub2' (temp 2-component vector of uint)
0:74 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:104 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
0:78 Function Parameters:
0:78 'inF0' (in 3-component vector of float)
0:78 'inF1' (in 3-component vector of float)
0:78 'inF2' (in 3-component vector of float)
0:78 'inU0' (in 3-component vector of uint)
0:78 'inU1' (in 3-component vector of uint)
0:? Sequence
0:82 all (global bool)
0:82 'inF0' (in 3-component vector of float)
0:85 AtomicAdd (global void)
0:85 'gs_ua3' (temp 3-component vector of uint)
0:85 'gs_ub3' (temp 3-component vector of uint)
0:86 move second child to first child (temp 3-component vector of uint)
0:86 'out_u3' (temp 3-component vector of uint)
0:86 AtomicAdd (temp 3-component vector of uint)
0:86 'gs_ua3' (temp 3-component vector of uint)
0:86 'gs_ub3' (temp 3-component vector of uint)
0:87 AtomicAnd (global void)
0:87 'gs_ua3' (temp 3-component vector of uint)
0:87 'gs_ub3' (temp 3-component vector of uint)
0:88 move second child to first child (temp 3-component vector of uint)
0:88 'out_u3' (temp 3-component vector of uint)
0:88 AtomicAnd (temp 3-component vector of uint)
0:88 'gs_ua3' (temp 3-component vector of uint)
0:88 'gs_ub3' (temp 3-component vector of uint)
0:89 move second child to first child (temp 3-component vector of uint)
0:89 'out_u3' (temp 3-component vector of uint)
0:89 AtomicCompSwap (temp 3-component vector of uint)
0:89 'gs_ua3' (temp 3-component vector of uint)
0:89 'gs_ub3' (temp 3-component vector of uint)
0:89 'gs_uc3' (temp 3-component vector of uint)
0:90 move second child to first child (temp 3-component vector of uint)
0:90 'out_u3' (temp 3-component vector of uint)
0:90 AtomicExchange (temp 3-component vector of uint)
0:90 'gs_ua3' (temp 3-component vector of uint)
0:90 'gs_ub3' (temp 3-component vector of uint)
0:91 AtomicMax (global void)
0:91 'gs_ua3' (temp 3-component vector of uint)
0:91 'gs_ub3' (temp 3-component vector of uint)
0:92 move second child to first child (temp 3-component vector of uint)
0:92 'out_u3' (temp 3-component vector of uint)
0:92 AtomicMax (temp 3-component vector of uint)
0:92 'gs_ua3' (temp 3-component vector of uint)
0:92 'gs_ub3' (temp 3-component vector of uint)
0:93 AtomicMin (global void)
0:93 'gs_ua3' (temp 3-component vector of uint)
0:93 'gs_ub3' (temp 3-component vector of uint)
0:94 move second child to first child (temp 3-component vector of uint)
0:94 'out_u3' (temp 3-component vector of uint)
0:94 AtomicMin (temp 3-component vector of uint)
0:94 'gs_ua3' (temp 3-component vector of uint)
0:94 'gs_ub3' (temp 3-component vector of uint)
0:95 AtomicOr (global void)
0:95 'gs_ua3' (temp 3-component vector of uint)
0:95 'gs_ub3' (temp 3-component vector of uint)
0:96 move second child to first child (temp 3-component vector of uint)
0:96 'out_u3' (temp 3-component vector of uint)
0:96 AtomicOr (temp 3-component vector of uint)
0:96 'gs_ua3' (temp 3-component vector of uint)
0:96 'gs_ub3' (temp 3-component vector of uint)
0:97 AtomicXor (global void)
0:97 'gs_ua3' (temp 3-component vector of uint)
0:97 'gs_ub3' (temp 3-component vector of uint)
0:98 move second child to first child (temp 3-component vector of uint)
0:98 'out_u3' (temp 3-component vector of uint)
0:98 AtomicXor (temp 3-component vector of uint)
0:98 'gs_ua3' (temp 3-component vector of uint)
0:98 'gs_ub3' (temp 3-component vector of uint)
0:101 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:130 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
0:105 Function Parameters:
0:105 'inF0' (in 4-component vector of float)
0:105 'inF1' (in 4-component vector of float)
0:105 'inF2' (in 4-component vector of float)
0:105 'inU0' (in 4-component vector of uint)
0:105 'inU1' (in 4-component vector of uint)
0:? Sequence
0:109 all (global bool)
0:109 'inF0' (in 4-component vector of float)
0:112 AtomicAdd (global void)
0:112 'gs_ua4' (temp 4-component vector of uint)
0:112 'gs_ub4' (temp 4-component vector of uint)
0:113 move second child to first child (temp 4-component vector of uint)
0:113 'out_u4' (temp 4-component vector of uint)
0:113 AtomicAdd (temp 4-component vector of uint)
0:113 'gs_ua4' (temp 4-component vector of uint)
0:113 'gs_ub4' (temp 4-component vector of uint)
0:114 AtomicAnd (global void)
0:114 'gs_ua4' (temp 4-component vector of uint)
0:114 'gs_ub4' (temp 4-component vector of uint)
0:115 move second child to first child (temp 4-component vector of uint)
0:115 'out_u4' (temp 4-component vector of uint)
0:115 AtomicAnd (temp 4-component vector of uint)
0:115 'gs_ua4' (temp 4-component vector of uint)
0:115 'gs_ub4' (temp 4-component vector of uint)
0:116 move second child to first child (temp 4-component vector of uint)
0:116 'out_u4' (temp 4-component vector of uint)
0:116 AtomicCompSwap (temp 4-component vector of uint)
0:116 'gs_ua4' (temp 4-component vector of uint)
0:116 'gs_ub4' (temp 4-component vector of uint)
0:116 'gs_uc4' (temp 4-component vector of uint)
0:117 move second child to first child (temp 4-component vector of uint)
0:117 'out_u4' (temp 4-component vector of uint)
0:117 AtomicExchange (temp 4-component vector of uint)
0:117 'gs_ua4' (temp 4-component vector of uint)
0:117 'gs_ub4' (temp 4-component vector of uint)
0:118 AtomicMax (global void)
0:118 'gs_ua4' (temp 4-component vector of uint)
0:118 'gs_ub4' (temp 4-component vector of uint)
0:119 move second child to first child (temp 4-component vector of uint)
0:119 'out_u4' (temp 4-component vector of uint)
0:119 AtomicMax (temp 4-component vector of uint)
0:119 'gs_ua4' (temp 4-component vector of uint)
0:119 'gs_ub4' (temp 4-component vector of uint)
0:120 AtomicMin (global void)
0:120 'gs_ua4' (temp 4-component vector of uint)
0:120 'gs_ub4' (temp 4-component vector of uint)
0:121 move second child to first child (temp 4-component vector of uint)
0:121 'out_u4' (temp 4-component vector of uint)
0:121 AtomicMin (temp 4-component vector of uint)
0:121 'gs_ua4' (temp 4-component vector of uint)
0:121 'gs_ub4' (temp 4-component vector of uint)
0:122 AtomicOr (global void)
0:122 'gs_ua4' (temp 4-component vector of uint)
0:122 'gs_ub4' (temp 4-component vector of uint)
0:123 move second child to first child (temp 4-component vector of uint)
0:123 'out_u4' (temp 4-component vector of uint)
0:123 AtomicOr (temp 4-component vector of uint)
0:123 'gs_ua4' (temp 4-component vector of uint)
0:123 'gs_ub4' (temp 4-component vector of uint)
0:124 AtomicXor (global void)
0:124 'gs_ua4' (temp 4-component vector of uint)
0:124 'gs_ub4' (temp 4-component vector of uint)
0:125 move second child to first child (temp 4-component vector of uint)
0:125 'out_u4' (temp 4-component vector of uint)
0:125 AtomicXor (temp 4-component vector of uint)
0:125 'gs_ua4' (temp 4-component vector of uint)
0:125 'gs_ub4' (temp 4-component vector of uint)
0:128 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
0:? 'gs_ua' (temp uint)
0:? 'gs_ub' (temp uint)
0:? 'gs_uc' (temp uint)
0:? 'gs_ua2' (temp 2-component vector of uint)
0:? 'gs_ub2' (temp 2-component vector of uint)
0:? 'gs_uc2' (temp 2-component vector of uint)
0:? 'gs_ua3' (temp 3-component vector of uint)
0:? 'gs_ub3' (temp 3-component vector of uint)
0:? 'gs_uc3' (temp 3-component vector of uint)
0:? 'gs_ua4' (temp 4-component vector of uint)
0:? 'gs_ub4' (temp 4-component vector of uint)
0:? 'gs_uc4' (temp 4-component vector of uint)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 182
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "ComputeShaderFunction" 8 54 98 141
ExecutionMode 4 LocalSize 1 1 1
Source HLSL 450
Name 4 "ComputeShaderFunction"
Name 8 "inF0"
Name 14 "gs_ua"
Name 15 "gs_ub"
Name 20 "out_u1"
Name 28 "gs_uc"
Name 54 "inF0"
Name 59 "gs_ua2"
Name 60 "gs_ub2"
Name 63 "out_u2"
Name 71 "gs_uc2"
Name 98 "inF0"
Name 103 "gs_ua3"
Name 104 "gs_ub3"
Name 107 "out_u3"
Name 115 "gs_uc3"
Name 141 "inF0"
Name 146 "gs_ua4"
Name 147 "gs_ub4"
Name 150 "out_u4"
Name 158 "gs_uc4"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Input 6(float)
8(inF0): 7(ptr) Variable Input
10: TypeBool
12: TypeInt 32 0
13: TypePointer Function 12(int)
17: 12(int) Constant 1
18: 12(int) Constant 0
49: 6(float) Constant 0
52: TypeVector 6(float) 2
53: TypePointer Input 52(fvec2)
54(inF0): 53(ptr) Variable Input
57: TypeVector 12(int) 2
58: TypePointer Function 57(ivec2)
92: 6(float) Constant 1065353216
93: 6(float) Constant 1073741824
94: 52(fvec2) ConstantComposite 92 93
96: TypeVector 6(float) 3
97: TypePointer Input 96(fvec3)
98(inF0): 97(ptr) Variable Input
101: TypeVector 12(int) 3
102: TypePointer Function 101(ivec3)
136: 6(float) Constant 1077936128
137: 96(fvec3) ConstantComposite 92 93 136
139: TypeVector 6(float) 4
140: TypePointer Input 139(fvec4)
141(inF0): 140(ptr) Variable Input
144: TypeVector 12(int) 4
145: TypePointer Function 144(ivec4)
179: 6(float) Constant 1082130432
180: 139(fvec4) ConstantComposite 92 93 136 179
4(ComputeShaderFunction): 2 Function None 3
5: Label
14(gs_ua): 13(ptr) Variable Function
15(gs_ub): 13(ptr) Variable Function
20(out_u1): 13(ptr) Variable Function
28(gs_uc): 13(ptr) Variable Function
59(gs_ua2): 58(ptr) Variable Function
60(gs_ub2): 58(ptr) Variable Function
63(out_u2): 58(ptr) Variable Function
71(gs_uc2): 58(ptr) Variable Function
103(gs_ua3): 102(ptr) Variable Function
104(gs_ub3): 102(ptr) Variable Function
107(out_u3): 102(ptr) Variable Function
115(gs_uc3): 102(ptr) Variable Function
146(gs_ua4): 145(ptr) Variable Function
147(gs_ub4): 145(ptr) Variable Function
150(out_u4): 145(ptr) Variable Function
158(gs_uc4): 145(ptr) Variable Function
9: 6(float) Load 8(inF0)
11: 10(bool) All 9
16: 12(int) Load 15(gs_ub)
19: 2 AtomicIAdd 14(gs_ua) 17 18 16
21: 12(int) Load 15(gs_ub)
22: 12(int) AtomicIAdd 14(gs_ua) 17 18 21
Store 20(out_u1) 22
23: 12(int) Load 15(gs_ub)
24: 2 AtomicAnd 14(gs_ua) 17 18 23
25: 12(int) Load 15(gs_ub)
26: 12(int) AtomicAnd 14(gs_ua) 17 18 25
Store 20(out_u1) 26
27: 12(int) Load 15(gs_ub)
29: 12(int) Load 28(gs_uc)
30: 12(int) AtomicCompareExchange 14(gs_ua) 17 18 18 29 27
Store 20(out_u1) 30
31: 12(int) Load 15(gs_ub)
32: 12(int) AtomicExchange 14(gs_ua) 17 18 31
Store 20(out_u1) 32
33: 12(int) Load 15(gs_ub)
34: 2 AtomicSMax 14(gs_ua) 17 18 33
35: 12(int) Load 15(gs_ub)
36: 12(int) AtomicUMax 14(gs_ua) 17 18 35
Store 20(out_u1) 36
37: 12(int) Load 15(gs_ub)
38: 2 AtomicSMin 14(gs_ua) 17 18 37
39: 12(int) Load 15(gs_ub)
40: 12(int) AtomicUMin 14(gs_ua) 17 18 39
Store 20(out_u1) 40
41: 12(int) Load 15(gs_ub)
42: 2 AtomicOr 14(gs_ua) 17 18 41
43: 12(int) Load 15(gs_ub)
44: 12(int) AtomicOr 14(gs_ua) 17 18 43
Store 20(out_u1) 44
45: 12(int) Load 15(gs_ub)
46: 2 AtomicXor 14(gs_ua) 17 18 45
47: 12(int) Load 15(gs_ub)
48: 12(int) AtomicXor 14(gs_ua) 17 18 47
Store 20(out_u1) 48
ReturnValue 49
FunctionEnd

View File

@ -0,0 +1,160 @@
hlsl.intrinsics.evalfns.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:3 Function Parameters:
0:3 'inF1' (in float)
0:3 'inF2' (in 2-component vector of float)
0:3 'inF3' (in 3-component vector of float)
0:3 'inF4' (in 4-component vector of float)
0:3 'inI2' (in 2-component vector of int)
0:? Sequence
0:4 interpolateAtOffset (temp float)
0:4 'inF1' (in float)
0:? Constant:
0:? -0.500000
0:? -0.062500
0:5 interpolateAtOffset (temp 2-component vector of float)
0:5 'inF2' (in 2-component vector of float)
0:? Constant:
0:? 0.000000
0:? 0.062500
0:6 interpolateAtOffset (temp 3-component vector of float)
0:6 'inF3' (in 3-component vector of float)
0:? Constant:
0:? 0.187500
0:? -0.375000
0:7 interpolateAtOffset (temp 4-component vector of float)
0:7 'inF4' (in 4-component vector of float)
0:? Constant:
0:? 0.437500
0:? -0.500000
0:9 interpolateAtOffset (temp float)
0:9 'inF1' (in float)
0:9 vector-scale (temp 2-component vector of float)
0:9 Convert int to float (temp 2-component vector of float)
0:9 right-shift (temp 2-component vector of int)
0:9 left-shift (temp 2-component vector of int)
0:9 'inI2' (in 2-component vector of int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 0.062500
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:3 Function Parameters:
0:3 'inF1' (in float)
0:3 'inF2' (in 2-component vector of float)
0:3 'inF3' (in 3-component vector of float)
0:3 'inF4' (in 4-component vector of float)
0:3 'inI2' (in 2-component vector of int)
0:? Sequence
0:4 interpolateAtOffset (temp float)
0:4 'inF1' (in float)
0:? Constant:
0:? -0.500000
0:? -0.062500
0:5 interpolateAtOffset (temp 2-component vector of float)
0:5 'inF2' (in 2-component vector of float)
0:? Constant:
0:? 0.000000
0:? 0.062500
0:6 interpolateAtOffset (temp 3-component vector of float)
0:6 'inF3' (in 3-component vector of float)
0:? Constant:
0:? 0.187500
0:? -0.375000
0:7 interpolateAtOffset (temp 4-component vector of float)
0:7 'inF4' (in 4-component vector of float)
0:? Constant:
0:? 0.437500
0:? -0.500000
0:9 interpolateAtOffset (temp float)
0:9 'inF1' (in float)
0:9 vector-scale (temp 2-component vector of float)
0:9 Convert int to float (temp 2-component vector of float)
0:9 right-shift (temp 2-component vector of int)
0:9 left-shift (temp 2-component vector of int)
0:9 'inI2' (in 2-component vector of int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 0.062500
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 46
Capability Shader
Capability InterpolationFunction
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 8 15 22 29 36
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "main"
Name 8 "inF1"
Name 15 "inF2"
Name 22 "inF3"
Name 29 "inF4"
Name 36 "inI2"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Input 6(float)
8(inF1): 7(ptr) Variable Input
9: TypeVector 6(float) 2
10: 6(float) Constant 3204448256
11: 6(float) Constant 3179282432
12: 9(fvec2) ConstantComposite 10 11
14: TypePointer Input 9(fvec2)
15(inF2): 14(ptr) Variable Input
16: 6(float) Constant 0
17: 6(float) Constant 1031798784
18: 9(fvec2) ConstantComposite 16 17
20: TypeVector 6(float) 3
21: TypePointer Input 20(fvec3)
22(inF3): 21(ptr) Variable Input
23: 6(float) Constant 1044381696
24: 6(float) Constant 3200253952
25: 9(fvec2) ConstantComposite 23 24
27: TypeVector 6(float) 4
28: TypePointer Input 27(fvec4)
29(inF4): 28(ptr) Variable Input
30: 6(float) Constant 1054867456
31: 9(fvec2) ConstantComposite 30 10
33: TypeInt 32 1
34: TypeVector 33(int) 2
35: TypePointer Input 34(ivec2)
36(inI2): 35(ptr) Variable Input
38: 33(int) Constant 28
4(main): 2 Function None 3
5: Label
13: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 12
19: 9(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 15(inF2) 18
26: 20(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 22(inF3) 25
32: 27(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 29(inF4) 31
37: 34(ivec2) Load 36(inI2)
39: 34(ivec2) CompositeConstruct 38 38
40: 34(ivec2) ShiftLeftLogical 37 39
41: 34(ivec2) CompositeConstruct 38 38
42: 34(ivec2) ShiftRightArithmetic 40 41
43: 9(fvec2) ConvertSToF 42
44: 9(fvec2) VectorTimesScalar 43 17
45: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 44
Return
FunctionEnd

View File

@ -0,0 +1,129 @@
hlsl.intrinsics.f1632.frag
ERROR: 0:3: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:16: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:23: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:30: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 4 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
0:3 ERROR: Bad unary op
(global uint)
0:3 'inF0' (in float)
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
0:16 ERROR: Bad unary op
(global 2-component vector of uint)
0:16 'inF0' (in 2-component vector of float)
0:18 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
0:23 ERROR: Bad unary op
(global 3-component vector of uint)
0:23 'inF0' (in 3-component vector of float)
0:25 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:? Sequence
0:30 ERROR: Bad unary op
(global 4-component vector of uint)
0:30 'inF0' (in 4-component vector of float)
0:32 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
0:3 ERROR: Bad unary op
(global uint)
0:3 'inF0' (in float)
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
0:16 ERROR: Bad unary op
(global 2-component vector of uint)
0:16 'inF0' (in 2-component vector of float)
0:18 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
0:23 ERROR: Bad unary op
(global 3-component vector of uint)
0:23 'inF0' (in 3-component vector of float)
0:25 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:? Sequence
0:30 ERROR: Bad unary op
(global 4-component vector of uint)
0:30 'inF0' (in 4-component vector of float)
0:32 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
SPIR-V is not generated for failed compile or link

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,134 @@
hlsl.intrinsics.lit.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
0:2 Function Parameters:
0:2 'n_dot_l' (in float)
0:2 'n_dot_h' (in float)
0:2 'm' (in float)
0:? Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 1.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
0:2 Function Parameters:
0:2 'n_dot_l' (in float)
0:2 'n_dot_h' (in float)
0:2 'm' (in float)
0:? Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 1.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 33
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 12 19 28
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "r0"
Name 12 "n_dot_l"
Name 19 "n_dot_h"
Name 28 "m"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: 6(float) Constant 1065353216
11: TypePointer Input 6(float)
12(n_dot_l): 11(ptr) Variable Input
14: 6(float) Constant 0
16: TypePointer Function 6(float)
19(n_dot_h): 11(ptr) Variable Input
22: TypeBool
28(m): 11(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
9(r0): 8(ptr) Variable Function
17: 16(ptr) Variable Function
13: 6(float) Load 12(n_dot_l)
15: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 13 14
18: 6(float) Load 12(n_dot_l)
20: 6(float) Load 19(n_dot_h)
21: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 18 20
23: 22(bool) FOrdLessThan 21 14
SelectionMerge 25 None
BranchConditional 23 24 26
24: Label
Store 17 14
Branch 25
26: Label
27: 6(float) Load 19(n_dot_h)
29: 6(float) Load 28(m)
30: 6(float) FMul 27 29
Store 17 30
Branch 25
25: Label
31: 6(float) Load 17
32: 7(fvec4) CompositeConstruct 10 15 31 10
Store 9(r0) 32
Return
FunctionEnd

View File

@ -0,0 +1,886 @@
hlsl.intrinsics.negative.comp
ERROR: 0:7: 'asdouble' : no matching overloaded function found
ERROR: 0:8: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:9: 'clip' : no matching overloaded function found
ERROR: 0:10: 'countbits' : no matching overloaded function found
ERROR: 0:11: 'cross' : no matching overloaded function found
ERROR: 0:12: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:13: 'ddx' : no matching overloaded function found
ERROR: 0:14: 'ddx_coarse' : no matching overloaded function found
ERROR: 0:15: 'ddx_fine' : no matching overloaded function found
ERROR: 0:16: 'ddy' : no matching overloaded function found
ERROR: 0:17: 'ddy_coarse' : no matching overloaded function found
ERROR: 0:18: 'ddy_fine' : no matching overloaded function found
ERROR: 0:19: 'determinant' : no matching overloaded function found
ERROR: 0:20: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
ERROR: 0:21: 'EvaluateAttributeAtSample' : no matching overloaded function found
ERROR: 0:22: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:23: 'f16tof32' : no matching overloaded function found
ERROR: 0:24: 'firstbithigh' : no matching overloaded function found
ERROR: 0:25: 'firstbitlow' : no matching overloaded function found
ERROR: 0:26: 'fma' : no matching overloaded function found
ERROR: 0:27: 'fwidth' : no matching overloaded function found
ERROR: 0:28: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:29: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:30: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:31: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:32: 'InterlockedCompareExchange' : no matching overloaded function found
ERROR: 0:33: 'InterlockedExchange' : no matching overloaded function found
ERROR: 0:34: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:35: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:36: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:37: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:38: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:39: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:40: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:41: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:42: 'length' : no matching overloaded function found
ERROR: 0:43: 'msad4' : no matching overloaded function found
ERROR: 0:44: 'normalize' : no matching overloaded function found
ERROR: 0:45: 'reflect' : no matching overloaded function found
ERROR: 0:46: 'refract' : no matching overloaded function found
ERROR: 0:47: 'refract' : no matching overloaded function found
ERROR: 0:48: 'reversebits' : no matching overloaded function found
ERROR: 0:49: 'transpose' : no matching overloaded function found
ERROR: 0:60: 'GetRenderTargetSamplePosition' : no matching overloaded function found
ERROR: 0:69: 'asdouble' : no matching overloaded function found
ERROR: 0:70: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:71: 'countbits' : no matching overloaded function found
ERROR: 0:72: 'cross' : no matching overloaded function found
ERROR: 0:73: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:74: 'ddx' : no matching overloaded function found
ERROR: 0:75: 'ddx_coarse' : no matching overloaded function found
ERROR: 0:76: 'ddx_fine' : no matching overloaded function found
ERROR: 0:77: 'ddy' : no matching overloaded function found
ERROR: 0:78: 'ddy_coarse' : no matching overloaded function found
ERROR: 0:79: 'ddy_fine' : no matching overloaded function found
ERROR: 0:80: 'determinant' : no matching overloaded function found
ERROR: 0:81: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
ERROR: 0:82: 'EvaluateAttributeAtSample' : no matching overloaded function found
ERROR: 0:83: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:84: 'f16tof32' : no matching overloaded function found
ERROR: 0:85: 'firstbithigh' : no matching overloaded function found
ERROR: 0:86: 'firstbitlow' : no matching overloaded function found
ERROR: 0:87: 'fma' : no matching overloaded function found
ERROR: 0:88: 'fwidth' : no matching overloaded function found
ERROR: 0:89: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:90: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:91: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:92: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:93: 'InterlockedCompareExchange' : no matching overloaded function found
ERROR: 0:94: 'InterlockedExchange' : no matching overloaded function found
ERROR: 0:95: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:96: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:97: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:98: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:99: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:100: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:101: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:102: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:103: 'noise' : no matching overloaded function found
ERROR: 0:104: 'reversebits' : no matching overloaded function found
ERROR: 0:105: 'transpose' : no matching overloaded function found
ERROR: 0:116: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:117: 'countbits' : no matching overloaded function found
ERROR: 0:118: 'ddx' : no matching overloaded function found
ERROR: 0:119: 'ddx_coarse' : no matching overloaded function found
ERROR: 0:120: 'ddx_fine' : no matching overloaded function found
ERROR: 0:121: 'ddy' : no matching overloaded function found
ERROR: 0:122: 'ddy_coarse' : no matching overloaded function found
ERROR: 0:123: 'ddy_fine' : no matching overloaded function found
ERROR: 0:124: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:125: 'determinant' : no matching overloaded function found
ERROR: 0:126: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
ERROR: 0:127: 'EvaluateAttributeAtSample' : no matching overloaded function found
ERROR: 0:128: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:129: 'f16tof32' : no matching overloaded function found
ERROR: 0:130: 'firstbithigh' : no matching overloaded function found
ERROR: 0:131: 'firstbitlow' : no matching overloaded function found
ERROR: 0:132: 'fma' : no matching overloaded function found
ERROR: 0:133: 'fwidth' : no matching overloaded function found
ERROR: 0:134: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:135: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:136: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:137: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:138: 'InterlockedCompareExchange' : no matching overloaded function found
ERROR: 0:139: 'InterlockedExchange' : no matching overloaded function found
ERROR: 0:140: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:141: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:142: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:143: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:144: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:145: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:146: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:147: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:148: 'noise' : no matching overloaded function found
ERROR: 0:149: 'reversebits' : no matching overloaded function found
ERROR: 0:150: 'transpose' : no matching overloaded function found
ERROR: 0:161: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:162: 'countbits' : no matching overloaded function found
ERROR: 0:163: 'cross' : no matching overloaded function found
ERROR: 0:164: 'determinant' : no matching overloaded function found
ERROR: 0:165: 'ddx' : no matching overloaded function found
ERROR: 0:166: 'ddx_coarse' : no matching overloaded function found
ERROR: 0:167: 'ddx_fine' : no matching overloaded function found
ERROR: 0:168: 'ddy' : no matching overloaded function found
ERROR: 0:169: 'ddy_coarse' : no matching overloaded function found
ERROR: 0:170: 'ddy_fine' : no matching overloaded function found
ERROR: 0:171: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
ERROR: 0:172: 'EvaluateAttributeAtSample' : no matching overloaded function found
ERROR: 0:173: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:174: 'f16tof32' : no matching overloaded function found
ERROR: 0:175: 'firstbithigh' : no matching overloaded function found
ERROR: 0:176: 'firstbitlow' : no matching overloaded function found
ERROR: 0:177: 'fma' : no matching overloaded function found
ERROR: 0:178: 'fwidth' : no matching overloaded function found
ERROR: 0:179: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:180: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:181: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:182: 'InterlockedAnd' : no matching overloaded function found
ERROR: 0:183: 'InterlockedCompareExchange' : no matching overloaded function found
ERROR: 0:184: 'InterlockedExchange' : no matching overloaded function found
ERROR: 0:185: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:186: 'InterlockedMax' : no matching overloaded function found
ERROR: 0:187: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:188: 'InterlockedMin' : no matching overloaded function found
ERROR: 0:189: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:190: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:191: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:192: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:193: 'noise' : no matching overloaded function found
ERROR: 0:194: 'reversebits' : no matching overloaded function found
ERROR: 0:195: 'transpose' : no matching overloaded function found
ERROR: 151 compilation errors. No code generated.
Shader version: 450
local_size = (1, 1, 1)
ERROR: node is still EOpNull!
0:56 Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
0:7 Constant:
0:7 0.000000
0:8 Constant:
0:8 0.000000
0:9 Constant:
0:9 0.000000
0:10 Constant:
0:10 0.000000
0:11 Constant:
0:11 0.000000
0:12 Constant:
0:12 0.000000
0:13 Constant:
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:16 Constant:
0:16 0.000000
0:17 Constant:
0:17 0.000000
0:18 Constant:
0:18 0.000000
0:19 Constant:
0:19 0.000000
0:20 Constant:
0:20 0.000000
0:21 Constant:
0:21 0.000000
0:22 Constant:
0:22 0.000000
0:23 Constant:
0:23 0.000000
0:24 Constant:
0:24 0.000000
0:25 Constant:
0:25 0.000000
0:26 Constant:
0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
0:28 0.000000
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:33 Constant:
0:33 0.000000
0:34 Constant:
0:34 0.000000
0:35 Constant:
0:35 0.000000
0:36 Constant:
0:36 0.000000
0:37 Constant:
0:37 0.000000
0:38 Constant:
0:38 0.000000
0:39 Constant:
0:39 0.000000
0:40 Constant:
0:40 0.000000
0:41 Constant:
0:41 0.000000
0:42 Constant:
0:42 0.000000
0:43 Constant:
0:43 0.000000
0:44 Constant:
0:44 0.000000
0:45 Constant:
0:45 0.000000
0:46 Constant:
0:46 0.000000
0:47 Constant:
0:47 0.000000
0:48 Constant:
0:48 0.000000
0:49 Constant:
0:49 0.000000
0:53 Branch: Return with expression
0:53 Constant:
0:53 0.000000
0:65 Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:57 Function Parameters:
0:57 'inF0' (in 1-component vector of float)
0:57 'inF1' (in 1-component vector of float)
0:57 'inF2' (in 1-component vector of float)
0:57 'inI0' (in 1-component vector of int)
0:? Sequence
0:60 Constant:
0:60 0.000000
0:62 Branch: Return with expression
0:62 Constant:
0:62 0.000000
0:112 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:66 Function Parameters:
0:66 'inF0' (in 2-component vector of float)
0:66 'inF1' (in 2-component vector of float)
0:66 'inF2' (in 2-component vector of float)
0:66 'inI0' (in 2-component vector of int)
0:? Sequence
0:69 Constant:
0:69 0.000000
0:70 Constant:
0:70 0.000000
0:71 Constant:
0:71 0.000000
0:72 Constant:
0:72 0.000000
0:73 Constant:
0:73 0.000000
0:74 Constant:
0:74 0.000000
0:75 Constant:
0:75 0.000000
0:76 Constant:
0:76 0.000000
0:77 Constant:
0:77 0.000000
0:78 Constant:
0:78 0.000000
0:79 Constant:
0:79 0.000000
0:80 Constant:
0:80 0.000000
0:81 Constant:
0:81 0.000000
0:82 Constant:
0:82 0.000000
0:83 Constant:
0:83 0.000000
0:84 Constant:
0:84 0.000000
0:85 Constant:
0:85 0.000000
0:86 Constant:
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
0:89 0.000000
0:90 Constant:
0:90 0.000000
0:91 Constant:
0:91 0.000000
0:92 Constant:
0:92 0.000000
0:93 Constant:
0:93 0.000000
0:94 Constant:
0:94 0.000000
0:95 Constant:
0:95 0.000000
0:96 Constant:
0:96 0.000000
0:97 Constant:
0:97 0.000000
0:98 Constant:
0:98 0.000000
0:99 Constant:
0:99 0.000000
0:100 Constant:
0:100 0.000000
0:101 Constant:
0:101 0.000000
0:102 Constant:
0:102 0.000000
0:103 Constant:
0:103 0.000000
0:104 Constant:
0:104 0.000000
0:105 Constant:
0:105 0.000000
0:109 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:157 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:113 Function Parameters:
0:113 'inF0' (in 3-component vector of float)
0:113 'inF1' (in 3-component vector of float)
0:113 'inF2' (in 3-component vector of float)
0:113 'inI0' (in 3-component vector of int)
0:? Sequence
0:116 Constant:
0:116 0.000000
0:117 Constant:
0:117 0.000000
0:118 Constant:
0:118 0.000000
0:119 Constant:
0:119 0.000000
0:120 Constant:
0:120 0.000000
0:121 Constant:
0:121 0.000000
0:122 Constant:
0:122 0.000000
0:123 Constant:
0:123 0.000000
0:124 Constant:
0:124 0.000000
0:125 Constant:
0:125 0.000000
0:126 Constant:
0:126 0.000000
0:127 Constant:
0:127 0.000000
0:128 Constant:
0:128 0.000000
0:129 Constant:
0:129 0.000000
0:130 Constant:
0:130 0.000000
0:131 Constant:
0:131 0.000000
0:132 Constant:
0:132 0.000000
0:133 Constant:
0:133 0.000000
0:134 Constant:
0:134 0.000000
0:135 Constant:
0:135 0.000000
0:136 Constant:
0:136 0.000000
0:137 Constant:
0:137 0.000000
0:138 Constant:
0:138 0.000000
0:139 Constant:
0:139 0.000000
0:140 Constant:
0:140 0.000000
0:141 Constant:
0:141 0.000000
0:142 Constant:
0:142 0.000000
0:143 Constant:
0:143 0.000000
0:144 Constant:
0:144 0.000000
0:145 Constant:
0:145 0.000000
0:146 Constant:
0:146 0.000000
0:147 Constant:
0:147 0.000000
0:148 Constant:
0:148 0.000000
0:149 Constant:
0:149 0.000000
0:150 Constant:
0:150 0.000000
0:154 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:158 Function Parameters:
0:158 'inF0' (in 4-component vector of float)
0:158 'inF1' (in 4-component vector of float)
0:158 'inF2' (in 4-component vector of float)
0:158 'inI0' (in 4-component vector of int)
0:? Sequence
0:161 Constant:
0:161 0.000000
0:162 Constant:
0:162 0.000000
0:163 Constant:
0:163 0.000000
0:164 Constant:
0:164 0.000000
0:165 Constant:
0:165 0.000000
0:166 Constant:
0:166 0.000000
0:167 Constant:
0:167 0.000000
0:168 Constant:
0:168 0.000000
0:169 Constant:
0:169 0.000000
0:170 Constant:
0:170 0.000000
0:171 Constant:
0:171 0.000000
0:172 Constant:
0:172 0.000000
0:173 Constant:
0:173 0.000000
0:174 Constant:
0:174 0.000000
0:175 Constant:
0:175 0.000000
0:176 Constant:
0:176 0.000000
0:177 Constant:
0:177 0.000000
0:178 Constant:
0:178 0.000000
0:179 Constant:
0:179 0.000000
0:180 Constant:
0:180 0.000000
0:181 Constant:
0:181 0.000000
0:182 Constant:
0:182 0.000000
0:183 Constant:
0:183 0.000000
0:184 Constant:
0:184 0.000000
0:185 Constant:
0:185 0.000000
0:186 Constant:
0:186 0.000000
0:187 Constant:
0:187 0.000000
0:188 Constant:
0:188 0.000000
0:189 Constant:
0:189 0.000000
0:190 Constant:
0:190 0.000000
0:191 Constant:
0:191 0.000000
0:192 Constant:
0:192 0.000000
0:193 Constant:
0:193 0.000000
0:194 Constant:
0:194 0.000000
0:195 Constant:
0:195 0.000000
0:199 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
Linked compute stage:
Shader version: 450
local_size = (1, 1, 1)
ERROR: node is still EOpNull!
0:56 Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
0:7 Constant:
0:7 0.000000
0:8 Constant:
0:8 0.000000
0:9 Constant:
0:9 0.000000
0:10 Constant:
0:10 0.000000
0:11 Constant:
0:11 0.000000
0:12 Constant:
0:12 0.000000
0:13 Constant:
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:16 Constant:
0:16 0.000000
0:17 Constant:
0:17 0.000000
0:18 Constant:
0:18 0.000000
0:19 Constant:
0:19 0.000000
0:20 Constant:
0:20 0.000000
0:21 Constant:
0:21 0.000000
0:22 Constant:
0:22 0.000000
0:23 Constant:
0:23 0.000000
0:24 Constant:
0:24 0.000000
0:25 Constant:
0:25 0.000000
0:26 Constant:
0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
0:28 0.000000
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:33 Constant:
0:33 0.000000
0:34 Constant:
0:34 0.000000
0:35 Constant:
0:35 0.000000
0:36 Constant:
0:36 0.000000
0:37 Constant:
0:37 0.000000
0:38 Constant:
0:38 0.000000
0:39 Constant:
0:39 0.000000
0:40 Constant:
0:40 0.000000
0:41 Constant:
0:41 0.000000
0:42 Constant:
0:42 0.000000
0:43 Constant:
0:43 0.000000
0:44 Constant:
0:44 0.000000
0:45 Constant:
0:45 0.000000
0:46 Constant:
0:46 0.000000
0:47 Constant:
0:47 0.000000
0:48 Constant:
0:48 0.000000
0:49 Constant:
0:49 0.000000
0:53 Branch: Return with expression
0:53 Constant:
0:53 0.000000
0:65 Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:57 Function Parameters:
0:57 'inF0' (in 1-component vector of float)
0:57 'inF1' (in 1-component vector of float)
0:57 'inF2' (in 1-component vector of float)
0:57 'inI0' (in 1-component vector of int)
0:? Sequence
0:60 Constant:
0:60 0.000000
0:62 Branch: Return with expression
0:62 Constant:
0:62 0.000000
0:112 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:66 Function Parameters:
0:66 'inF0' (in 2-component vector of float)
0:66 'inF1' (in 2-component vector of float)
0:66 'inF2' (in 2-component vector of float)
0:66 'inI0' (in 2-component vector of int)
0:? Sequence
0:69 Constant:
0:69 0.000000
0:70 Constant:
0:70 0.000000
0:71 Constant:
0:71 0.000000
0:72 Constant:
0:72 0.000000
0:73 Constant:
0:73 0.000000
0:74 Constant:
0:74 0.000000
0:75 Constant:
0:75 0.000000
0:76 Constant:
0:76 0.000000
0:77 Constant:
0:77 0.000000
0:78 Constant:
0:78 0.000000
0:79 Constant:
0:79 0.000000
0:80 Constant:
0:80 0.000000
0:81 Constant:
0:81 0.000000
0:82 Constant:
0:82 0.000000
0:83 Constant:
0:83 0.000000
0:84 Constant:
0:84 0.000000
0:85 Constant:
0:85 0.000000
0:86 Constant:
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
0:89 0.000000
0:90 Constant:
0:90 0.000000
0:91 Constant:
0:91 0.000000
0:92 Constant:
0:92 0.000000
0:93 Constant:
0:93 0.000000
0:94 Constant:
0:94 0.000000
0:95 Constant:
0:95 0.000000
0:96 Constant:
0:96 0.000000
0:97 Constant:
0:97 0.000000
0:98 Constant:
0:98 0.000000
0:99 Constant:
0:99 0.000000
0:100 Constant:
0:100 0.000000
0:101 Constant:
0:101 0.000000
0:102 Constant:
0:102 0.000000
0:103 Constant:
0:103 0.000000
0:104 Constant:
0:104 0.000000
0:105 Constant:
0:105 0.000000
0:109 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:157 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:113 Function Parameters:
0:113 'inF0' (in 3-component vector of float)
0:113 'inF1' (in 3-component vector of float)
0:113 'inF2' (in 3-component vector of float)
0:113 'inI0' (in 3-component vector of int)
0:? Sequence
0:116 Constant:
0:116 0.000000
0:117 Constant:
0:117 0.000000
0:118 Constant:
0:118 0.000000
0:119 Constant:
0:119 0.000000
0:120 Constant:
0:120 0.000000
0:121 Constant:
0:121 0.000000
0:122 Constant:
0:122 0.000000
0:123 Constant:
0:123 0.000000
0:124 Constant:
0:124 0.000000
0:125 Constant:
0:125 0.000000
0:126 Constant:
0:126 0.000000
0:127 Constant:
0:127 0.000000
0:128 Constant:
0:128 0.000000
0:129 Constant:
0:129 0.000000
0:130 Constant:
0:130 0.000000
0:131 Constant:
0:131 0.000000
0:132 Constant:
0:132 0.000000
0:133 Constant:
0:133 0.000000
0:134 Constant:
0:134 0.000000
0:135 Constant:
0:135 0.000000
0:136 Constant:
0:136 0.000000
0:137 Constant:
0:137 0.000000
0:138 Constant:
0:138 0.000000
0:139 Constant:
0:139 0.000000
0:140 Constant:
0:140 0.000000
0:141 Constant:
0:141 0.000000
0:142 Constant:
0:142 0.000000
0:143 Constant:
0:143 0.000000
0:144 Constant:
0:144 0.000000
0:145 Constant:
0:145 0.000000
0:146 Constant:
0:146 0.000000
0:147 Constant:
0:147 0.000000
0:148 Constant:
0:148 0.000000
0:149 Constant:
0:149 0.000000
0:150 Constant:
0:150 0.000000
0:154 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:158 Function Parameters:
0:158 'inF0' (in 4-component vector of float)
0:158 'inF1' (in 4-component vector of float)
0:158 'inF2' (in 4-component vector of float)
0:158 'inI0' (in 4-component vector of int)
0:? Sequence
0:161 Constant:
0:161 0.000000
0:162 Constant:
0:162 0.000000
0:163 Constant:
0:163 0.000000
0:164 Constant:
0:164 0.000000
0:165 Constant:
0:165 0.000000
0:166 Constant:
0:166 0.000000
0:167 Constant:
0:167 0.000000
0:168 Constant:
0:168 0.000000
0:169 Constant:
0:169 0.000000
0:170 Constant:
0:170 0.000000
0:171 Constant:
0:171 0.000000
0:172 Constant:
0:172 0.000000
0:173 Constant:
0:173 0.000000
0:174 Constant:
0:174 0.000000
0:175 Constant:
0:175 0.000000
0:176 Constant:
0:176 0.000000
0:177 Constant:
0:177 0.000000
0:178 Constant:
0:178 0.000000
0:179 Constant:
0:179 0.000000
0:180 Constant:
0:180 0.000000
0:181 Constant:
0:181 0.000000
0:182 Constant:
0:182 0.000000
0:183 Constant:
0:183 0.000000
0:184 Constant:
0:184 0.000000
0:185 Constant:
0:185 0.000000
0:186 Constant:
0:186 0.000000
0:187 Constant:
0:187 0.000000
0:188 Constant:
0:188 0.000000
0:189 Constant:
0:189 0.000000
0:190 Constant:
0:190 0.000000
0:191 Constant:
0:191 0.000000
0:192 Constant:
0:192 0.000000
0:193 Constant:
0:193 0.000000
0:194 Constant:
0:194 0.000000
0:195 Constant:
0:195 0.000000
0:199 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
SPIR-V is not generated for failed compile or link

View File

@ -0,0 +1,702 @@
hlsl.intrinsics.negative.frag
ERROR: 0:5: 'asdouble' : no matching overloaded function found
ERROR: 0:6: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:7: 'countbits' : no matching overloaded function found
ERROR: 0:8: 'cross' : no matching overloaded function found
ERROR: 0:9: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:10: 'determinant' : no matching overloaded function found
ERROR: 0:12: 'f16tof32' : no matching overloaded function found
ERROR: 0:13: 'firstbithigh' : no matching overloaded function found
ERROR: 0:14: 'firstbitlow' : no matching overloaded function found
ERROR: 0:15: 'fma' : no matching overloaded function found
ERROR: 0:23: 'length' : no matching overloaded function found
ERROR: 0:24: 'msad4' : no matching overloaded function found
ERROR: 0:25: 'normalize' : no matching overloaded function found
ERROR: 0:26: 'reflect' : no matching overloaded function found
ERROR: 0:27: 'refract' : no matching overloaded function found
ERROR: 0:28: 'refract' : no matching overloaded function found
ERROR: 0:29: 'reversebits' : no matching overloaded function found
ERROR: 0:30: 'transpose' : no matching overloaded function found
ERROR: 0:39: 'GetRenderTargetSamplePosition' : no matching overloaded function found
ERROR: 0:46: 'asdouble' : no matching overloaded function found
ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:48: 'countbits' : no matching overloaded function found
ERROR: 0:49: 'cross' : no matching overloaded function found
ERROR: 0:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:51: 'determinant' : no matching overloaded function found
ERROR: 0:52: 'f16tof32' : no matching overloaded function found
ERROR: 0:53: 'firstbithigh' : no matching overloaded function found
ERROR: 0:54: 'firstbitlow' : no matching overloaded function found
ERROR: 0:55: 'fma' : no matching overloaded function found
ERROR: 0:56: 'reversebits' : no matching overloaded function found
ERROR: 0:57: 'transpose' : no matching overloaded function found
ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:65: 'countbits' : no matching overloaded function found
ERROR: 0:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:67: 'determinant' : no matching overloaded function found
ERROR: 0:68: 'f16tof32' : no matching overloaded function found
ERROR: 0:69: 'firstbithigh' : no matching overloaded function found
ERROR: 0:70: 'firstbitlow' : no matching overloaded function found
ERROR: 0:71: 'fma' : no matching overloaded function found
ERROR: 0:72: 'reversebits' : no matching overloaded function found
ERROR: 0:73: 'transpose' : no matching overloaded function found
ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:82: 'countbits' : no matching overloaded function found
ERROR: 0:83: 'cross' : no matching overloaded function found
ERROR: 0:84: 'determinant' : no matching overloaded function found
ERROR: 0:85: 'f16tof32' : no matching overloaded function found
ERROR: 0:86: 'firstbithigh' : no matching overloaded function found
ERROR: 0:87: 'firstbitlow' : no matching overloaded function found
ERROR: 0:88: 'fma' : no matching overloaded function found
ERROR: 0:89: 'reversebits' : no matching overloaded function found
ERROR: 0:90: 'transpose' : no matching overloaded function found
ERROR: 0:118: 'countbits' : no matching overloaded function found
ERROR: 0:118: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:118: 'cross' : no matching overloaded function found
ERROR: 0:118: 'f16tof32' : no matching overloaded function found
ERROR: 0:118: 'firstbithigh' : no matching overloaded function found
ERROR: 0:118: 'firstbitlow' : no matching overloaded function found
ERROR: 0:118: 'fma' : no matching overloaded function found
ERROR: 0:118: 'reversebits' : no matching overloaded function found
ERROR: 0:118: 'length' : no matching overloaded function found
ERROR: 0:118: 'noise' : no matching overloaded function found
ERROR: 0:118: 'normalize' : no matching overloaded function found
ERROR: 0:118: 'reflect' : no matching overloaded function found
ERROR: 0:118: 'refract' : no matching overloaded function found
ERROR: 0:118: 'reversebits' : no matching overloaded function found
ERROR: 0:126: 'countbits' : no matching overloaded function found
ERROR: 0:126: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:126: 'cross' : no matching overloaded function found
ERROR: 0:126: 'f16tof32' : no matching overloaded function found
ERROR: 0:126: 'firstbithigh' : no matching overloaded function found
ERROR: 0:126: 'firstbitlow' : no matching overloaded function found
ERROR: 0:126: 'fma' : no matching overloaded function found
ERROR: 0:126: 'reversebits' : no matching overloaded function found
ERROR: 0:126: 'length' : no matching overloaded function found
ERROR: 0:126: 'noise' : no matching overloaded function found
ERROR: 0:126: 'normalize' : no matching overloaded function found
ERROR: 0:126: 'reflect' : no matching overloaded function found
ERROR: 0:126: 'refract' : no matching overloaded function found
ERROR: 0:126: 'reversebits' : no matching overloaded function found
ERROR: 0:134: 'countbits' : no matching overloaded function found
ERROR: 0:134: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:134: 'cross' : no matching overloaded function found
ERROR: 0:134: 'f16tof32' : no matching overloaded function found
ERROR: 0:134: 'firstbithigh' : no matching overloaded function found
ERROR: 0:134: 'firstbitlow' : no matching overloaded function found
ERROR: 0:134: 'fma' : no matching overloaded function found
ERROR: 0:134: 'reversebits' : no matching overloaded function found
ERROR: 0:134: 'length' : no matching overloaded function found
ERROR: 0:134: 'noise' : no matching overloaded function found
ERROR: 0:134: 'normalize' : no matching overloaded function found
ERROR: 0:134: 'reflect' : no matching overloaded function found
ERROR: 0:134: 'refract' : no matching overloaded function found
ERROR: 0:134: 'reversebits' : no matching overloaded function found
ERROR: 93 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:35 Function Definition: PixelShaderFunction(f1;f1;f1;i1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
0:5 Constant:
0:5 0.000000
0:6 Constant:
0:6 0.000000
0:7 Constant:
0:7 0.000000
0:8 Constant:
0:8 0.000000
0:9 Constant:
0:9 0.000000
0:10 Constant:
0:10 0.000000
0:12 Constant:
0:12 0.000000
0:13 Constant:
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:23 Constant:
0:23 0.000000
0:24 Constant:
0:24 0.000000
0:25 Constant:
0:25 0.000000
0:26 Constant:
0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
0:28 0.000000
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
0:44 Function Definition: PixelShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:36 Function Parameters:
0:36 'inF0' (in 1-component vector of float)
0:36 'inF1' (in 1-component vector of float)
0:36 'inF2' (in 1-component vector of float)
0:36 'inI0' (in 1-component vector of int)
0:? Sequence
0:39 Constant:
0:39 0.000000
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
0:62 Function Definition: PixelShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 2-component vector of float)
0:45 'inF1' (in 2-component vector of float)
0:45 'inF2' (in 2-component vector of float)
0:45 'inI0' (in 2-component vector of int)
0:? Sequence
0:46 Constant:
0:46 0.000000
0:47 Constant:
0:47 0.000000
0:48 Constant:
0:48 0.000000
0:49 Constant:
0:49 0.000000
0:50 Constant:
0:50 0.000000
0:51 Constant:
0:51 0.000000
0:52 Constant:
0:52 0.000000
0:53 Constant:
0:53 0.000000
0:54 Constant:
0:54 0.000000
0:55 Constant:
0:55 0.000000
0:56 Constant:
0:56 0.000000
0:57 Constant:
0:57 0.000000
0:59 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:79 Function Definition: PixelShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:63 Function Parameters:
0:63 'inF0' (in 3-component vector of float)
0:63 'inF1' (in 3-component vector of float)
0:63 'inF2' (in 3-component vector of float)
0:63 'inI0' (in 3-component vector of int)
0:? Sequence
0:64 Constant:
0:64 0.000000
0:65 Constant:
0:65 0.000000
0:66 Constant:
0:66 0.000000
0:67 Constant:
0:67 0.000000
0:68 Constant:
0:68 0.000000
0:69 Constant:
0:69 0.000000
0:70 Constant:
0:70 0.000000
0:71 Constant:
0:71 0.000000
0:72 Constant:
0:72 0.000000
0:73 Constant:
0:73 0.000000
0:76 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:115 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:80 Function Parameters:
0:80 'inF0' (in 4-component vector of float)
0:80 'inF1' (in 4-component vector of float)
0:80 'inF2' (in 4-component vector of float)
0:80 'inI0' (in 4-component vector of int)
0:? Sequence
0:81 Constant:
0:81 0.000000
0:82 Constant:
0:82 0.000000
0:83 Constant:
0:83 0.000000
0:84 Constant:
0:84 0.000000
0:85 Constant:
0:85 0.000000
0:86 Constant:
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
0:89 0.000000
0:90 Constant:
0:90 0.000000
0:92 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:123 Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
0:116 Function Parameters:
0:116 'inF0' (in 2X2 matrix of float)
0:116 'inF1' (in 2X2 matrix of float)
0:116 'inF2' (in 2X2 matrix of float)
0:? Sequence
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:120 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:131 Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
0:124 Function Parameters:
0:124 'inF0' (in 3X3 matrix of float)
0:124 'inF1' (in 3X3 matrix of float)
0:124 'inF2' (in 3X3 matrix of float)
0:? Sequence
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:128 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:138 Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
0:132 Function Parameters:
0:132 'inF0' (in 4X4 matrix of float)
0:132 'inF1' (in 4X4 matrix of float)
0:132 'inF2' (in 4X4 matrix of float)
0:? Sequence
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:136 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:35 Function Definition: PixelShaderFunction(f1;f1;f1;i1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
0:5 Constant:
0:5 0.000000
0:6 Constant:
0:6 0.000000
0:7 Constant:
0:7 0.000000
0:8 Constant:
0:8 0.000000
0:9 Constant:
0:9 0.000000
0:10 Constant:
0:10 0.000000
0:12 Constant:
0:12 0.000000
0:13 Constant:
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:23 Constant:
0:23 0.000000
0:24 Constant:
0:24 0.000000
0:25 Constant:
0:25 0.000000
0:26 Constant:
0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
0:28 0.000000
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
0:44 Function Definition: PixelShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:36 Function Parameters:
0:36 'inF0' (in 1-component vector of float)
0:36 'inF1' (in 1-component vector of float)
0:36 'inF2' (in 1-component vector of float)
0:36 'inI0' (in 1-component vector of int)
0:? Sequence
0:39 Constant:
0:39 0.000000
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
0:62 Function Definition: PixelShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 2-component vector of float)
0:45 'inF1' (in 2-component vector of float)
0:45 'inF2' (in 2-component vector of float)
0:45 'inI0' (in 2-component vector of int)
0:? Sequence
0:46 Constant:
0:46 0.000000
0:47 Constant:
0:47 0.000000
0:48 Constant:
0:48 0.000000
0:49 Constant:
0:49 0.000000
0:50 Constant:
0:50 0.000000
0:51 Constant:
0:51 0.000000
0:52 Constant:
0:52 0.000000
0:53 Constant:
0:53 0.000000
0:54 Constant:
0:54 0.000000
0:55 Constant:
0:55 0.000000
0:56 Constant:
0:56 0.000000
0:57 Constant:
0:57 0.000000
0:59 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:79 Function Definition: PixelShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:63 Function Parameters:
0:63 'inF0' (in 3-component vector of float)
0:63 'inF1' (in 3-component vector of float)
0:63 'inF2' (in 3-component vector of float)
0:63 'inI0' (in 3-component vector of int)
0:? Sequence
0:64 Constant:
0:64 0.000000
0:65 Constant:
0:65 0.000000
0:66 Constant:
0:66 0.000000
0:67 Constant:
0:67 0.000000
0:68 Constant:
0:68 0.000000
0:69 Constant:
0:69 0.000000
0:70 Constant:
0:70 0.000000
0:71 Constant:
0:71 0.000000
0:72 Constant:
0:72 0.000000
0:73 Constant:
0:73 0.000000
0:76 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:115 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:80 Function Parameters:
0:80 'inF0' (in 4-component vector of float)
0:80 'inF1' (in 4-component vector of float)
0:80 'inF2' (in 4-component vector of float)
0:80 'inI0' (in 4-component vector of int)
0:? Sequence
0:81 Constant:
0:81 0.000000
0:82 Constant:
0:82 0.000000
0:83 Constant:
0:83 0.000000
0:84 Constant:
0:84 0.000000
0:85 Constant:
0:85 0.000000
0:86 Constant:
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
0:89 0.000000
0:90 Constant:
0:90 0.000000
0:92 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:123 Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
0:116 Function Parameters:
0:116 'inF0' (in 2X2 matrix of float)
0:116 'inF1' (in 2X2 matrix of float)
0:116 'inF2' (in 2X2 matrix of float)
0:? Sequence
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:120 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:131 Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
0:124 Function Parameters:
0:124 'inF0' (in 3X3 matrix of float)
0:124 'inF1' (in 3X3 matrix of float)
0:124 'inF2' (in 3X3 matrix of float)
0:? Sequence
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:128 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:138 Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
0:132 Function Parameters:
0:132 'inF0' (in 4X4 matrix of float)
0:132 'inF1' (in 4X4 matrix of float)
0:132 'inF2' (in 4X4 matrix of float)
0:? Sequence
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:136 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? 4.000000
0:? Linker Objects
SPIR-V is not generated for failed compile or link

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
hlsl.matType.frag hlsl.matType.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 1-component vector of float) 0:1 move second child to first child (temp 1-component vector of float)
@ -8,8 +8,8 @@ gl_FragCoord origin is upper left
0:1 1.000000 0:1 1.000000
0:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:9 Function Parameters: 0:9 Function Parameters:
0:9 'inFloat1' (temp 1-component vector of float) 0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (temp float) 0:9 'inScalar' (in float)
0:? Linker Objects 0:? Linker Objects
0:? 'f1' (temp 1-component vector of float) 0:? 'f1' (temp 1-component vector of float)
0:? 'fmat11' (temp 1X1 matrix of float) 0:? 'fmat11' (temp 1X1 matrix of float)
@ -22,7 +22,7 @@ gl_FragCoord origin is upper left
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:1 move second child to first child (temp 1-component vector of float) 0:1 move second child to first child (temp 1-component vector of float)
@ -31,8 +31,8 @@ gl_FragCoord origin is upper left
0:1 1.000000 0:1 1.000000
0:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:9 Function Parameters: 0:9 Function Parameters:
0:9 'inFloat1' (temp 1-component vector of float) 0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (temp float) 0:9 'inScalar' (in float)
0:? Linker Objects 0:? Linker Objects
0:? 'f1' (temp 1-component vector of float) 0:? 'f1' (temp 1-component vector of float)
0:? 'fmat11' (temp 1X1 matrix of float) 0:? 'fmat11' (temp 1X1 matrix of float)
@ -51,7 +51,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;" Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1" Name 9 "inFloat1"

View File

@ -1,34 +1,34 @@
hlsl.max.frag hlsl.max.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float) 0:5 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
0:2 Function Parameters: 0:2 Function Parameters:
0:2 'input1' (temp 4-component vector of float) 0:2 'input1' (in 4-component vector of float)
0:2 'input2' (temp 4-component vector of float) 0:2 'input2' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:3 Branch: Return with expression 0:3 Branch: Return with expression
0:3 max (global 4-component vector of float) 0:3 max (global 4-component vector of float)
0:3 'input1' (temp 4-component vector of float) 0:3 'input1' (in 4-component vector of float)
0:3 'input2' (temp 4-component vector of float) 0:3 'input2' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float) 0:5 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
0:2 Function Parameters: 0:2 Function Parameters:
0:2 'input1' (temp 4-component vector of float) 0:2 'input1' (in 4-component vector of float)
0:2 'input2' (temp 4-component vector of float) 0:2 'input2' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:3 Branch: Return with expression 0:3 Branch: Return with expression
0:3 max (global 4-component vector of float) 0:3 max (global 4-component vector of float)
0:3 'input1' (temp 4-component vector of float) 0:3 'input1' (in 4-component vector of float)
0:3 'input2' (temp 4-component vector of float) 0:3 'input2' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000
@ -38,9 +38,9 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction" 9 11
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 9 "input1" Name 9 "input1"
Name 11 "input2" Name 11 "input2"
@ -48,11 +48,11 @@ gl_FragCoord origin is upper left
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeVector 6(float) 4 7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4) 8: TypePointer Input 7(fvec4)
9(input1): 8(ptr) Variable Input
11(input2): 8(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
9(input1): 8(ptr) Variable Function
11(input2): 8(ptr) Variable Function
10: 7(fvec4) Load 9(input1) 10: 7(fvec4) Load 9(input1)
12: 7(fvec4) Load 11(input2) 12: 7(fvec4) Load 11(input2)
13: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 10 12 13: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 10 12

View File

@ -1,46 +1,46 @@
hlsl.precedence.frag hlsl.precedence.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:7 Function Parameters: 0:7 Function Parameters:
0:7 'a1' (temp 4-component vector of float) 0:7 'a1' (in 4-component vector of float)
0:7 'a2' (temp 4-component vector of float) 0:7 'a2' (in 4-component vector of float)
0:7 'a3' (temp 4-component vector of float) 0:7 'a3' (in 4-component vector of float)
0:7 'a4' (temp 4-component vector of float) 0:7 'a4' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:8 Branch: Return with expression 0:8 Branch: Return with expression
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 'a1' (temp 4-component vector of float) 0:8 'a1' (in 4-component vector of float)
0:8 component-wise multiply (temp 4-component vector of float) 0:8 component-wise multiply (temp 4-component vector of float)
0:8 'a2' (temp 4-component vector of float) 0:8 'a2' (in 4-component vector of float)
0:8 'a3' (temp 4-component vector of float) 0:8 'a3' (in 4-component vector of float)
0:8 'a4' (temp 4-component vector of float) 0:8 'a4' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:7 Function Parameters: 0:7 Function Parameters:
0:7 'a1' (temp 4-component vector of float) 0:7 'a1' (in 4-component vector of float)
0:7 'a2' (temp 4-component vector of float) 0:7 'a2' (in 4-component vector of float)
0:7 'a3' (temp 4-component vector of float) 0:7 'a3' (in 4-component vector of float)
0:7 'a4' (temp 4-component vector of float) 0:7 'a4' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:8 Branch: Return with expression 0:8 Branch: Return with expression
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 add (temp 4-component vector of float) 0:8 add (temp 4-component vector of float)
0:8 'a1' (temp 4-component vector of float) 0:8 'a1' (in 4-component vector of float)
0:8 component-wise multiply (temp 4-component vector of float) 0:8 component-wise multiply (temp 4-component vector of float)
0:8 'a2' (temp 4-component vector of float) 0:8 'a2' (in 4-component vector of float)
0:8 'a3' (temp 4-component vector of float) 0:8 'a3' (in 4-component vector of float)
0:8 'a4' (temp 4-component vector of float) 0:8 'a4' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000
@ -50,9 +50,9 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction" 9 11 13 17
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 9 "a1" Name 9 "a1"
Name 11 "a2" Name 11 "a2"
@ -62,13 +62,13 @@ gl_FragCoord origin is upper left
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeVector 6(float) 4 7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4) 8: TypePointer Input 7(fvec4)
9(a1): 8(ptr) Variable Input
11(a2): 8(ptr) Variable Input
13(a3): 8(ptr) Variable Input
17(a4): 8(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
9(a1): 8(ptr) Variable Function
11(a2): 8(ptr) Variable Function
13(a3): 8(ptr) Variable Function
17(a4): 8(ptr) Variable Function
10: 7(fvec4) Load 9(a1) 10: 7(fvec4) Load 9(a1)
12: 7(fvec4) Load 11(a2) 12: 7(fvec4) Load 11(a2)
14: 7(fvec4) Load 13(a3) 14: 7(fvec4) Load 13(a3)

View File

@ -1,62 +1,62 @@
hlsl.precedence2.frag hlsl.precedence2.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int) 0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
0:7 Function Parameters: 0:7 Function Parameters:
0:7 'a1' (temp int) 0:7 'a1' (in int)
0:7 'a2' (temp int) 0:7 'a2' (in int)
0:7 'a3' (temp int) 0:7 'a3' (in int)
0:7 'a4' (temp int) 0:7 'a4' (in int)
0:? Sequence 0:? Sequence
0:8 Branch: Return with expression 0:8 Branch: Return with expression
0:8 add (temp int) 0:8 add (temp int)
0:8 left-shift (temp int) 0:8 left-shift (temp int)
0:8 add (temp int) 0:8 add (temp int)
0:8 component-wise multiply (temp int) 0:8 component-wise multiply (temp int)
0:8 'a1' (temp int) 0:8 'a1' (in int)
0:8 'a2' (temp int) 0:8 'a2' (in int)
0:8 'a3' (temp int) 0:8 'a3' (in int)
0:8 'a4' (temp int) 0:8 'a4' (in int)
0:8 left-shift (temp int) 0:8 left-shift (temp int)
0:8 'a1' (temp int) 0:8 'a1' (in int)
0:8 add (temp int) 0:8 add (temp int)
0:8 'a2' (temp int) 0:8 'a2' (in int)
0:8 component-wise multiply (temp int) 0:8 component-wise multiply (temp int)
0:8 'a3' (temp int) 0:8 'a3' (in int)
0:8 'a4' (temp int) 0:8 'a4' (in int)
0:? Linker Objects 0:? Linker Objects
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int) 0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
0:7 Function Parameters: 0:7 Function Parameters:
0:7 'a1' (temp int) 0:7 'a1' (in int)
0:7 'a2' (temp int) 0:7 'a2' (in int)
0:7 'a3' (temp int) 0:7 'a3' (in int)
0:7 'a4' (temp int) 0:7 'a4' (in int)
0:? Sequence 0:? Sequence
0:8 Branch: Return with expression 0:8 Branch: Return with expression
0:8 add (temp int) 0:8 add (temp int)
0:8 left-shift (temp int) 0:8 left-shift (temp int)
0:8 add (temp int) 0:8 add (temp int)
0:8 component-wise multiply (temp int) 0:8 component-wise multiply (temp int)
0:8 'a1' (temp int) 0:8 'a1' (in int)
0:8 'a2' (temp int) 0:8 'a2' (in int)
0:8 'a3' (temp int) 0:8 'a3' (in int)
0:8 'a4' (temp int) 0:8 'a4' (in int)
0:8 left-shift (temp int) 0:8 left-shift (temp int)
0:8 'a1' (temp int) 0:8 'a1' (in int)
0:8 add (temp int) 0:8 add (temp int)
0:8 'a2' (temp int) 0:8 'a2' (in int)
0:8 component-wise multiply (temp int) 0:8 component-wise multiply (temp int)
0:8 'a3' (temp int) 0:8 'a3' (in int)
0:8 'a4' (temp int) 0:8 'a4' (in int)
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000
@ -66,9 +66,9 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction" 8 10 13 16
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 8 "a1" Name 8 "a1"
Name 10 "a2" Name 10 "a2"
@ -77,13 +77,13 @@ gl_FragCoord origin is upper left
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
7: TypePointer Function 6(int) 7: TypePointer Input 6(int)
8(a1): 7(ptr) Variable Input
10(a2): 7(ptr) Variable Input
13(a3): 7(ptr) Variable Input
16(a4): 7(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
8(a1): 7(ptr) Variable Function
10(a2): 7(ptr) Variable Function
13(a3): 7(ptr) Variable Function
16(a4): 7(ptr) Variable Function
9: 6(int) Load 8(a1) 9: 6(int) Load 8(a1)
11: 6(int) Load 10(a2) 11: 6(int) Load 10(a2)
12: 6(int) IMul 9 11 12: 6(int) IMul 9 11

View File

@ -0,0 +1,150 @@
hlsl.scope.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:31 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:4 'x' (temp int)
0:? Sequence
0:7 'x' (temp float)
0:? Sequence
0:10 'x' (temp bool)
0:? Sequence
0:13 'x' (temp 3-component vector of float)
0:15 'x' (temp bool)
0:17 'x' (temp float)
0:19 'x' (temp int)
0:21 Test condition and select (temp void)
0:21 Condition
0:21 Compare Greater Than (temp bool)
0:21 'x' (temp int)
0:21 Constant:
0:21 0 (const int)
0:21 true case is null
0:24 Loop with condition tested first
0:24 Loop Condition
0:24 Compare Greater Than (temp bool)
0:24 'x' (temp int)
0:24 Constant:
0:24 0 (const int)
0:24 No loop body
0:27 Loop with condition not tested first
0:27 Loop Condition
0:29 Compare Greater Than (temp bool)
0:29 'x' (temp int)
0:29 Constant:
0:29 0 (const int)
0:27 No loop body
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:31 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:4 'x' (temp int)
0:? Sequence
0:7 'x' (temp float)
0:? Sequence
0:10 'x' (temp bool)
0:? Sequence
0:13 'x' (temp 3-component vector of float)
0:15 'x' (temp bool)
0:17 'x' (temp float)
0:19 'x' (temp int)
0:21 Test condition and select (temp void)
0:21 Condition
0:21 Compare Greater Than (temp bool)
0:21 'x' (temp int)
0:21 Constant:
0:21 0 (const int)
0:21 true case is null
0:24 Loop with condition tested first
0:24 Loop Condition
0:24 Compare Greater Than (temp bool)
0:24 'x' (temp int)
0:24 Constant:
0:24 0 (const int)
0:24 No loop body
0:27 Loop with condition not tested first
0:27 Loop Condition
0:29 Compare Greater Than (temp bool)
0:29 'x' (temp int)
0:29 Constant:
0:29 0 (const int)
0:27 No loop body
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 36
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "x"
Name 11 "x"
Name 14 "x"
Name 17 "x"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: TypeFloat 32
10: TypePointer Function 9(float)
12: TypeBool
13: TypePointer Function 12(bool)
15: TypeVector 9(float) 3
16: TypePointer Function 15(fvec3)
19: 6(int) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
8(x): 7(ptr) Variable Function
11(x): 10(ptr) Variable Function
14(x): 13(ptr) Variable Function
17(x): 16(ptr) Variable Function
18: 6(int) Load 8(x)
20: 12(bool) SGreaterThan 18 19
SelectionMerge 22 None
BranchConditional 20 21 22
21: Label
Branch 22
22: Label
Branch 23
23: Label
LoopMerge 25 26 None
Branch 27
27: Label
28: 6(int) Load 8(x)
29: 12(bool) SGreaterThan 28 19
BranchConditional 29 24 25
24: Label
Branch 26
26: Label
Branch 23
25: Label
Branch 30
30: Label
LoopMerge 32 33 None
Branch 31
31: Label
Branch 33
33: Label
34: 6(int) Load 8(x)
35: 12(bool) SGreaterThan 34 19
BranchConditional 35 30 32
32: Label
Return
FunctionEnd

View File

@ -1,30 +1,30 @@
hlsl.sin.frag hlsl.sin.frag
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters: 0:2 Function Parameters:
0:2 'input' (temp 4-component vector of float) 0:2 'input' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:3 Branch: Return with expression 0:3 Branch: Return with expression
0:3 sine (global 4-component vector of float) 0:3 sine (global 4-component vector of float)
0:3 'input' (temp 4-component vector of float) 0:3 'input' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
Linked fragment stage: Linked fragment stage:
Shader version: 100 Shader version: 450
gl_FragCoord origin is upper left gl_FragCoord origin is upper left
0:? Sequence 0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters: 0:2 Function Parameters:
0:2 'input' (temp 4-component vector of float) 0:2 'input' (in 4-component vector of float)
0:? Sequence 0:? Sequence
0:3 Branch: Return with expression 0:3 Branch: Return with expression
0:3 sine (global 4-component vector of float) 0:3 sine (global 4-component vector of float)
0:3 'input' (temp 4-component vector of float) 0:3 'input' (in 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000
@ -34,19 +34,19 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" EntryPoint Fragment 4 "PixelShaderFunction" 9
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 100 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 9 "input" Name 9 "input"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeVector 6(float) 4 7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4) 8: TypePointer Input 7(fvec4)
9(input): 8(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
9(input): 8(ptr) Variable Function
10: 7(fvec4) Load 9(input) 10: 7(fvec4) Load 9(input)
11: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 10 11: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 10
ReturnValue 11 ReturnValue 11

View File

@ -0,0 +1,133 @@
hlsl.struct.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:31 Function Parameters:
0:31 'input' (in 4-component vector of float)
0:? Sequence
0:36 Compare Equal (temp bool)
0:36 's3' (temp structure{temp 3-component vector of bool b3})
0:36 's3' (temp structure{temp 3-component vector of bool b3})
0:37 move second child to first child (temp 4-component vector of float)
0:37 i: direct index for structure (temp 4-component vector of float)
0:37 's2' (temp structure{temp 4-component vector of float i})
0:37 Constant:
0:37 0 (const int)
0:37 ff4: direct index for structure (temp 4-component vector of float FragCoord)
0:37 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37 Constant:
0:37 7 (const int)
0:39 Branch: Return with expression
0:39 'input' (in 4-component vector of float)
0:? Linker Objects
0:? 's1' (temp structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (temp structure{temp 4-component vector of float i})
0:? 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:31 Function Parameters:
0:31 'input' (in 4-component vector of float)
0:? Sequence
0:36 Compare Equal (temp bool)
0:36 's3' (temp structure{temp 3-component vector of bool b3})
0:36 's3' (temp structure{temp 3-component vector of bool b3})
0:37 move second child to first child (temp 4-component vector of float)
0:37 i: direct index for structure (temp 4-component vector of float)
0:37 's2' (temp structure{temp 4-component vector of float i})
0:37 Constant:
0:37 0 (const int)
0:37 ff4: direct index for structure (temp 4-component vector of float FragCoord)
0:37 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37 Constant:
0:37 7 (const int)
0:39 Branch: Return with expression
0:39 'input' (in 4-component vector of float)
0:? Linker Objects
0:? 's1' (temp structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (temp structure{temp 4-component vector of float i})
0:? 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 40
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 34
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "FS"
MemberName 8(FS) 0 "b3"
Name 10 "s3"
Name 19 ""
MemberName 19 0 "i"
Name 21 "s2"
Name 25 ""
MemberName 25 0 "a"
MemberName 25 1 "b"
MemberName 25 2 "c"
MemberName 25 3 "d"
MemberName 25 4 "ff1"
MemberName 25 5 "ff2"
MemberName 25 6 "ff3"
MemberName 25 7 "ff4"
Name 27 "s4"
Name 34 "input"
Name 37 "myS"
MemberName 37(myS) 0 "b"
MemberName 37(myS) 1 "c"
MemberName 37(myS) 2 "a"
MemberName 37(myS) 3 "d"
Name 39 "s1"
MemberDecorate 25 4 BuiltIn FrontFacing
MemberDecorate 25 7 BuiltIn FragCoord
2: TypeVoid
3: TypeFunction 2
6: TypeBool
7: TypeVector 6(bool) 3
8(FS): TypeStruct 7(bvec3)
9: TypePointer Function 8(FS)
17: TypeFloat 32
18: TypeVector 17(float) 4
19: TypeStruct 18(fvec4)
20: TypePointer Function 19(struct)
22: TypeInt 32 1
23: 22(int) Constant 0
24: TypeVector 17(float) 2
25: TypeStruct 18(fvec4) 6(bool) 17(float) 24(fvec2) 6(bool) 6(bool) 6(bool) 18(fvec4)
26: TypePointer Function 25(struct)
28: 22(int) Constant 7
29: TypePointer Function 18(fvec4)
33: TypePointer Input 18(fvec4)
34(input): 33(ptr) Variable Input
37(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
38: TypePointer Function 37(myS)
4(PixelShaderFunction): 2 Function None 3
5: Label
10(s3): 9(ptr) Variable Function
21(s2): 20(ptr) Variable Function
27(s4): 26(ptr) Variable Function
39(s1): 38(ptr) Variable Function
11: 8(FS) Load 10(s3)
12: 8(FS) Load 10(s3)
13: 7(bvec3) CompositeExtract 11 0
14: 7(bvec3) CompositeExtract 12 0
15: 7(bvec3) LogicalEqual 13 14
16: 6(bool) All 15
30: 29(ptr) AccessChain 27(s4) 28
31: 18(fvec4) Load 30
32: 29(ptr) AccessChain 21(s2) 23
Store 32 31
35: 18(fvec4) Load 34(input)
ReturnValue 35
FunctionEnd

View File

@ -0,0 +1,113 @@
hlsl.swizzle.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:? Sequence
0:5 Branch: Return with expression
0:5 component-wise multiply (temp 4-component vector of float)
0:5 vector swizzle (temp 4-component vector of float)
0:5 'input' (in 4-component vector of float)
0:5 Sequence
0:5 Constant:
0:5 3 (const int)
0:5 Constant:
0:5 3 (const int)
0:5 Constant:
0:5 1 (const int)
0:5 Constant:
0:5 0 (const int)
0:5 Construct vec4 (temp 4-component vector of float)
0:5 direct index (temp float)
0:5 'AmbientColor' (temp 4-component vector of float)
0:5 Constant:
0:5 2 (const int)
0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:? Sequence
0:5 Branch: Return with expression
0:5 component-wise multiply (temp 4-component vector of float)
0:5 vector swizzle (temp 4-component vector of float)
0:5 'input' (in 4-component vector of float)
0:5 Sequence
0:5 Constant:
0:5 3 (const int)
0:5 Constant:
0:5 3 (const int)
0:5 Constant:
0:5 1 (const int)
0:5 Constant:
0:5 0 (const int)
0:5 Construct vec4 (temp 4-component vector of float)
0:5 direct index (temp float)
0:5 'AmbientColor' (temp 4-component vector of float)
0:5 Constant:
0:5 2 (const int)
0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 25
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
Name 15 "AmbientColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
16: TypeInt 32 0
17: 16(int) Constant 2
18: TypePointer Function 6(float)
4(PixelShaderFunction): 2 Function None 3
5: Label
FunctionEnd
11(ShaderFunction(vf4;): 7(fvec4) Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
15(AmbientColor): 8(ptr) Variable Function
13: 7(fvec4) Load 10(input)
14: 7(fvec4) VectorShuffle 13 13 3 3 1 0
19: 18(ptr) AccessChain 15(AmbientColor) 17
20: 6(float) Load 19
21: 7(fvec4) CompositeConstruct 20 20 20 20
22: 7(fvec4) FMul 14 21
ReturnValue 22
FunctionEnd

View File

@ -0,0 +1,64 @@
hlsl.void.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo1( (temp void)
0:1 Function Parameters:
0:4 Function Definition: foo2( (temp void)
0:2 Function Parameters:
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Parameters:
0:5 'input' (in 4-component vector of float)
0:? Sequence
0:6 Function Call: foo1( (temp void)
0:7 Function Call: foo2( (temp void)
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo1( (temp void)
0:1 Function Parameters:
0:4 Function Definition: foo2( (temp void)
0:2 Function Parameters:
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Parameters:
0:5 'input' (in 4-component vector of float)
0:? Sequence
0:6 Function Call: foo1( (temp void)
0:7 Function Call: foo2( (temp void)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 12
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 6 "foo1("
Name 8 "foo2("
2: TypeVoid
3: TypeFunction 2
4(PixelShaderFunction): 2 Function None 3
5: Label
10: 2 FunctionCall 6(foo1()
11: 2 FunctionCall 8(foo2()
Return
FunctionEnd
6(foo1(): 2 Function None 3
7: Label
Return
FunctionEnd
8(foo2(): 2 Function None 3
9: Label
Return
FunctionEnd

View File

@ -0,0 +1,145 @@
hlsl.whileLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Loop with condition tested first
0:3 Loop Condition
0:3 Compare Not Equal (temp bool)
0:3 'input' (in 4-component vector of float)
0:3 'input' (in 4-component vector of float)
0:3 Loop Body
0:? Sequence
0:3 Branch: Return with expression
0:3 'input' (in 4-component vector of float)
0:4 Loop with condition tested first
0:4 Loop Condition
0:4 Constant:
0:4 false (const bool)
0:4 No loop body
0:5 Loop with condition tested first
0:5 Loop Condition
0:5 Constant:
0:5 false (const bool)
0:5 No loop body
0:6 Loop with condition tested first
0:6 Loop Condition
0:6 Constant:
0:6 false (const bool)
0:6 No loop body
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Loop with condition tested first
0:3 Loop Condition
0:3 Compare Not Equal (temp bool)
0:3 'input' (in 4-component vector of float)
0:3 'input' (in 4-component vector of float)
0:3 Loop Body
0:? Sequence
0:3 Branch: Return with expression
0:3 'input' (in 4-component vector of float)
0:4 Loop with condition tested first
0:4 Loop Condition
0:4 Constant:
0:4 false (const bool)
0:4 No loop body
0:5 Loop with condition tested first
0:5 Loop Condition
0:5 Constant:
0:5 false (const bool)
0:5 No loop body
0:6 Loop with condition tested first
0:6 Loop Condition
0:6 Constant:
0:6 false (const bool)
0:6 No loop body
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 39
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 14
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 14 "input"
2: TypeVoid
3: TypeFunction 2
11: TypeFloat 32
12: TypeVector 11(float) 4
13: TypePointer Input 12(fvec4)
14(input): 13(ptr) Variable Input
17: TypeBool
18: TypeVector 17(bool) 4
28: 17(bool) ConstantFalse
4(PixelShaderFunction): 2 Function None 3
5: Label
Branch 6
6: Label
LoopMerge 8 9 None
Branch 10
10: Label
15: 12(fvec4) Load 14(input)
16: 12(fvec4) Load 14(input)
19: 18(bvec4) FOrdNotEqual 15 16
20: 17(bool) Any 19
BranchConditional 20 7 8
7: Label
21: 12(fvec4) Load 14(input)
ReturnValue 21
9: Label
Branch 6
8: Label
Branch 23
23: Label
LoopMerge 25 26 None
Branch 27
27: Label
BranchConditional 28 24 25
24: Label
Branch 26
26: Label
Branch 23
25: Label
Branch 29
29: Label
LoopMerge 31 32 None
Branch 33
33: Label
BranchConditional 28 30 31
30: Label
Branch 32
32: Label
Branch 29
31: Label
Branch 34
34: Label
LoopMerge 36 37 None
Branch 38
38: Label
BranchConditional 28 35 36
35: Label
Branch 37
37: Label
Branch 34
36: Label
Return
FunctionEnd

View File

@ -0,0 +1,234 @@
spv.310.bitcast.frag
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 153
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 14 26 37 48 89 98 107 116 122 130 139 148
ExecutionMode 4 OriginUpperLeft
Source ESSL 310
Name 4 "main"
Name 9 "idata"
Name 14 "f1"
Name 26 "f2"
Name 37 "f3"
Name 48 "f4"
Name 55 "udata"
Name 85 "fdata"
Name 89 "i1"
Name 98 "i2"
Name 107 "i3"
Name 116 "i4"
Name 122 "u1"
Name 130 "u2"
Name 139 "u3"
Name 148 "u4"
Decorate 14(f1) RelaxedPrecision
Decorate 15 RelaxedPrecision
Decorate 26(f2) RelaxedPrecision
Decorate 27 RelaxedPrecision
Decorate 37(f3) RelaxedPrecision
Decorate 38 RelaxedPrecision
Decorate 57 RelaxedPrecision
Decorate 64 RelaxedPrecision
Decorate 72 RelaxedPrecision
Decorate 89(i1) RelaxedPrecision
Decorate 89(i1) Flat
Decorate 90 RelaxedPrecision
Decorate 98(i2) RelaxedPrecision
Decorate 98(i2) Flat
Decorate 99 RelaxedPrecision
Decorate 107(i3) RelaxedPrecision
Decorate 107(i3) Flat
Decorate 108 RelaxedPrecision
Decorate 116(i4) Flat
Decorate 122(u1) RelaxedPrecision
Decorate 122(u1) Flat
Decorate 123 RelaxedPrecision
Decorate 130(u2) RelaxedPrecision
Decorate 130(u2) Flat
Decorate 131 RelaxedPrecision
Decorate 139(u3) RelaxedPrecision
Decorate 139(u3) Flat
Decorate 140 RelaxedPrecision
Decorate 148(u4) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypeVector 6(int) 4
8: TypePointer Function 7(ivec4)
10: 6(int) Constant 0
11: 7(ivec4) ConstantComposite 10 10 10 10
12: TypeFloat 32
13: TypePointer Input 12(float)
14(f1): 13(ptr) Variable Input
17: TypeInt 32 0
18: 17(int) Constant 0
19: TypePointer Function 6(int)
24: TypeVector 12(float) 2
25: TypePointer Input 24(fvec2)
26(f2): 25(ptr) Variable Input
28: TypeVector 6(int) 2
35: TypeVector 12(float) 3
36: TypePointer Input 35(fvec3)
37(f3): 36(ptr) Variable Input
39: TypeVector 6(int) 3
46: TypeVector 12(float) 4
47: TypePointer Input 46(fvec4)
48(f4): 47(ptr) Variable Input
53: TypeVector 17(int) 4
54: TypePointer Function 53(ivec4)
56: 53(ivec4) ConstantComposite 18 18 18 18
59: TypePointer Function 17(int)
65: TypeVector 17(int) 2
73: TypeVector 17(int) 3
84: TypePointer Function 46(fvec4)
86: 12(float) Constant 0
87: 46(fvec4) ConstantComposite 86 86 86 86
88: TypePointer Input 6(int)
89(i1): 88(ptr) Variable Input
92: TypePointer Function 12(float)
97: TypePointer Input 28(ivec2)
98(i2): 97(ptr) Variable Input
106: TypePointer Input 39(ivec3)
107(i3): 106(ptr) Variable Input
115: TypePointer Input 7(ivec4)
116(i4): 115(ptr) Variable Input
121: TypePointer Input 17(int)
122(u1): 121(ptr) Variable Input
129: TypePointer Input 65(ivec2)
130(u2): 129(ptr) Variable Input
138: TypePointer Input 73(ivec3)
139(u3): 138(ptr) Variable Input
147: TypePointer Input 53(ivec4)
148(u4): 147(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(idata): 8(ptr) Variable Function
55(udata): 54(ptr) Variable Function
85(fdata): 84(ptr) Variable Function
Store 9(idata) 11
15: 12(float) Load 14(f1)
16: 6(int) Bitcast 15
20: 19(ptr) AccessChain 9(idata) 18
21: 6(int) Load 20
22: 6(int) IAdd 21 16
23: 19(ptr) AccessChain 9(idata) 18
Store 23 22
27: 24(fvec2) Load 26(f2)
29: 28(ivec2) Bitcast 27
30: 7(ivec4) Load 9(idata)
31: 28(ivec2) VectorShuffle 30 30 0 1
32: 28(ivec2) IAdd 31 29
33: 7(ivec4) Load 9(idata)
34: 7(ivec4) VectorShuffle 33 32 4 5 2 3
Store 9(idata) 34
38: 35(fvec3) Load 37(f3)
40: 39(ivec3) Bitcast 38
41: 7(ivec4) Load 9(idata)
42: 39(ivec3) VectorShuffle 41 41 0 1 2
43: 39(ivec3) IAdd 42 40
44: 7(ivec4) Load 9(idata)
45: 7(ivec4) VectorShuffle 44 43 4 5 6 3
Store 9(idata) 45
49: 46(fvec4) Load 48(f4)
50: 7(ivec4) Bitcast 49
51: 7(ivec4) Load 9(idata)
52: 7(ivec4) IAdd 51 50
Store 9(idata) 52
Store 55(udata) 56
57: 12(float) Load 14(f1)
58: 17(int) Bitcast 57
60: 59(ptr) AccessChain 55(udata) 18
61: 17(int) Load 60
62: 17(int) IAdd 61 58
63: 59(ptr) AccessChain 55(udata) 18
Store 63 62
64: 24(fvec2) Load 26(f2)
66: 65(ivec2) Bitcast 64
67: 53(ivec4) Load 55(udata)
68: 65(ivec2) VectorShuffle 67 67 0 1
69: 65(ivec2) IAdd 68 66
70: 53(ivec4) Load 55(udata)
71: 53(ivec4) VectorShuffle 70 69 4 5 2 3
Store 55(udata) 71
72: 35(fvec3) Load 37(f3)
74: 73(ivec3) Bitcast 72
75: 53(ivec4) Load 55(udata)
76: 73(ivec3) VectorShuffle 75 75 0 1 2
77: 73(ivec3) IAdd 76 74
78: 53(ivec4) Load 55(udata)
79: 53(ivec4) VectorShuffle 78 77 4 5 6 3
Store 55(udata) 79
80: 46(fvec4) Load 48(f4)
81: 53(ivec4) Bitcast 80
82: 53(ivec4) Load 55(udata)
83: 53(ivec4) IAdd 82 81
Store 55(udata) 83
Store 85(fdata) 87
90: 6(int) Load 89(i1)
91: 12(float) Bitcast 90
93: 92(ptr) AccessChain 85(fdata) 18
94: 12(float) Load 93
95: 12(float) FAdd 94 91
96: 92(ptr) AccessChain 85(fdata) 18
Store 96 95
99: 28(ivec2) Load 98(i2)
100: 24(fvec2) Bitcast 99
101: 46(fvec4) Load 85(fdata)
102: 24(fvec2) VectorShuffle 101 101 0 1
103: 24(fvec2) FAdd 102 100
104: 46(fvec4) Load 85(fdata)
105: 46(fvec4) VectorShuffle 104 103 4 5 2 3
Store 85(fdata) 105
108: 39(ivec3) Load 107(i3)
109: 35(fvec3) Bitcast 108
110: 46(fvec4) Load 85(fdata)
111: 35(fvec3) VectorShuffle 110 110 0 1 2
112: 35(fvec3) FAdd 111 109
113: 46(fvec4) Load 85(fdata)
114: 46(fvec4) VectorShuffle 113 112 4 5 6 3
Store 85(fdata) 114
117: 7(ivec4) Load 116(i4)
118: 46(fvec4) Bitcast 117
119: 46(fvec4) Load 85(fdata)
120: 46(fvec4) FAdd 119 118
Store 85(fdata) 120
123: 17(int) Load 122(u1)
124: 12(float) Bitcast 123
125: 92(ptr) AccessChain 85(fdata) 18
126: 12(float) Load 125
127: 12(float) FAdd 126 124
128: 92(ptr) AccessChain 85(fdata) 18
Store 128 127
131: 65(ivec2) Load 130(u2)
132: 24(fvec2) Bitcast 131
133: 46(fvec4) Load 85(fdata)
134: 24(fvec2) VectorShuffle 133 133 0 1
135: 24(fvec2) FAdd 134 132
136: 46(fvec4) Load 85(fdata)
137: 46(fvec4) VectorShuffle 136 135 4 5 2 3
Store 85(fdata) 137
140: 73(ivec3) Load 139(u3)
141: 35(fvec3) Bitcast 140
142: 46(fvec4) Load 85(fdata)
143: 35(fvec3) VectorShuffle 142 142 0 1 2
144: 35(fvec3) FAdd 143 141
145: 46(fvec4) Load 85(fdata)
146: 46(fvec4) VectorShuffle 145 144 4 5 6 3
Store 85(fdata) 146
149: 53(ivec4) Load 148(u4)
150: 46(fvec4) Bitcast 149
151: 46(fvec4) Load 85(fdata)
152: 46(fvec4) FAdd 151 150
Store 85(fdata) 152
Return
FunctionEnd

File diff suppressed because it is too large Load Diff

View File

@ -7,173 +7,171 @@ Linked tessellation control stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 94 // Id's are bound by 93
Capability Tessellation Capability Tessellation
Capability TessellationPointSize Capability TessellationPointSize
Capability ClipDistance Capability ClipDistance
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 24 41 44 47 55 69 74 80 84 85 88 89 92 93 EntryPoint TessellationControl 4 "main" 23 40 43 46 54 68 73 79 83 84 87 88 91 92
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
Source GLSL 400 Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
Name 4 "main" Name 4 "main"
Name 12 "a" Name 11 "a"
Name 17 "p" Name 16 "p"
Name 20 "gl_PerVertex" Name 19 "gl_PerVertex"
MemberName 20(gl_PerVertex) 0 "gl_Position" MemberName 19(gl_PerVertex) 0 "gl_Position"
MemberName 20(gl_PerVertex) 1 "gl_PointSize" MemberName 19(gl_PerVertex) 1 "gl_PointSize"
MemberName 20(gl_PerVertex) 2 "gl_ClipDistance" MemberName 19(gl_PerVertex) 2 "gl_ClipDistance"
Name 24 "gl_in" Name 23 "gl_in"
Name 31 "ps" Name 30 "ps"
Name 35 "cd" Name 34 "cd"
Name 39 "pvi" Name 38 "pvi"
Name 41 "gl_PatchVerticesIn" Name 40 "gl_PatchVerticesIn"
Name 43 "pid" Name 42 "pid"
Name 44 "gl_PrimitiveID" Name 43 "gl_PrimitiveID"
Name 46 "iid" Name 45 "iid"
Name 47 "gl_InvocationID" Name 46 "gl_InvocationID"
Name 51 "gl_PerVertex" Name 50 "gl_PerVertex"
MemberName 51(gl_PerVertex) 0 "gl_Position" MemberName 50(gl_PerVertex) 0 "gl_Position"
MemberName 51(gl_PerVertex) 1 "gl_PointSize" MemberName 50(gl_PerVertex) 1 "gl_PointSize"
MemberName 51(gl_PerVertex) 2 "gl_ClipDistance" MemberName 50(gl_PerVertex) 2 "gl_ClipDistance"
Name 55 "gl_out" Name 54 "gl_out"
Name 69 "gl_TessLevelOuter" Name 68 "gl_TessLevelOuter"
Name 74 "gl_TessLevelInner" Name 73 "gl_TessLevelInner"
Name 79 "outa" Name 78 "outa"
Name 80 "patchOut" Name 79 "patchOut"
Name 84 "inb" Name 83 "inb"
Name 85 "ind" Name 84 "ind"
Name 88 "ivla" Name 87 "ivla"
Name 89 "ivlb" Name 88 "ivlb"
Name 92 "ovla" Name 91 "ovla"
Name 93 "ovlb" Name 92 "ovlb"
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 20(gl_PerVertex) Block Decorate 19(gl_PerVertex) Block
Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 40(gl_PatchVerticesIn) BuiltIn PatchVertices
Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 43(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 47(gl_InvocationID) BuiltIn InvocationId Decorate 46(gl_InvocationID) BuiltIn InvocationId
MemberDecorate 51(gl_PerVertex) 0 BuiltIn Position MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 51(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 51(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 51(gl_PerVertex) Block Decorate 50(gl_PerVertex) Block
Decorate 69(gl_TessLevelOuter) Patch Decorate 68(gl_TessLevelOuter) Patch
Decorate 69(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 68(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 74(gl_TessLevelInner) Patch Decorate 73(gl_TessLevelInner) Patch
Decorate 74(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner
Decorate 80(patchOut) Patch Decorate 79(patchOut) Patch
Decorate 88(ivla) Location 3 Decorate 87(ivla) Location 3
Decorate 89(ivlb) Location 4 Decorate 88(ivlb) Location 4
Decorate 92(ovla) Location 3 Decorate 91(ovla) Location 3
Decorate 93(ovlb) Location 4 Decorate 92(ovlb) Location 4
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
7: 6(int) Constant 1 7: 6(int) Constant 1
8: 6(int) Constant 4062 8: 6(int) Constant 0
9: 6(int) Constant 0 9: TypeInt 32 1
10: TypeInt 32 1 10: TypePointer Function 9(int)
11: TypePointer Function 10(int) 12: 9(int) Constant 5392
13: 10(int) Constant 5392 13: TypeFloat 32
14: TypeFloat 32 14: TypeVector 13(float) 4
15: TypeVector 14(float) 4 15: TypePointer Function 14(fvec4)
16: TypePointer Function 15(fvec4) 17: 6(int) Constant 3
18: 6(int) Constant 3 18: TypeArray 13(float) 17
19: TypeArray 14(float) 18 19(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 18
20(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 19 20: 6(int) Constant 32
21: 6(int) Constant 32 21: TypeArray 19(gl_PerVertex) 20
22: TypeArray 20(gl_PerVertex) 21 22: TypePointer Input 21
23: TypePointer Input 22 23(gl_in): 22(ptr) Variable Input
24(gl_in): 23(ptr) Variable Input 24: 9(int) Constant 1
25: 10(int) Constant 1 25: 9(int) Constant 0
26: 10(int) Constant 0 26: TypePointer Input 14(fvec4)
27: TypePointer Input 15(fvec4) 29: TypePointer Function 13(float)
30: TypePointer Function 14(float) 31: TypePointer Input 13(float)
32: TypePointer Input 14(float) 35: 9(int) Constant 2
36: 10(int) Constant 2 39: TypePointer Input 9(int)
40: TypePointer Input 10(int) 40(gl_PatchVerticesIn): 39(ptr) Variable Input
41(gl_PatchVerticesIn): 40(ptr) Variable Input 43(gl_PrimitiveID): 39(ptr) Variable Input
44(gl_PrimitiveID): 40(ptr) Variable Input 46(gl_InvocationID): 39(ptr) Variable Input
47(gl_InvocationID): 40(ptr) Variable Input 48: 6(int) Constant 2
49: 6(int) Constant 2 49: TypeArray 13(float) 48
50: TypeArray 14(float) 49 50(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 49
51(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 50 51: 6(int) Constant 4
52: 6(int) Constant 4 52: TypeArray 50(gl_PerVertex) 51
53: TypeArray 51(gl_PerVertex) 52 53: TypePointer Output 52
54: TypePointer Output 53 54(gl_out): 53(ptr) Variable Output
55(gl_out): 54(ptr) Variable Output 57: TypePointer Output 14(fvec4)
58: TypePointer Output 15(fvec4) 61: TypePointer Output 13(float)
62: TypePointer Output 14(float) 66: TypeArray 13(float) 51
67: TypeArray 14(float) 52 67: TypePointer Output 66
68: TypePointer Output 67 68(gl_TessLevelOuter): 67(ptr) Variable Output
69(gl_TessLevelOuter): 68(ptr) Variable Output 69: 9(int) Constant 3
70: 10(int) Constant 3 70: 13(float) Constant 1078774989
71: 14(float) Constant 1078774989 72: TypePointer Output 49
73: TypePointer Output 50 73(gl_TessLevelInner): 72(ptr) Variable Output
74(gl_TessLevelInner): 73(ptr) Variable Output 74: 13(float) Constant 1067869798
75: 14(float) Constant 1067869798 76: TypeArray 9(int) 51
77: TypeArray 10(int) 52 77: TypePointer Private 76
78: TypePointer Private 77 78(outa): 77(ptr) Variable Private
79(outa): 78(ptr) Variable Private 79(patchOut): 57(ptr) Variable Output
80(patchOut): 58(ptr) Variable Output 80: TypeVector 13(float) 2
81: TypeVector 14(float) 2 81: TypeArray 80(fvec2) 20
82: TypeArray 81(fvec2) 21 82: TypePointer Input 81
83: TypePointer Input 82 83(inb): 82(ptr) Variable Input
84(inb): 83(ptr) Variable Input 84(ind): 82(ptr) Variable Input
85(ind): 83(ptr) Variable Input 85: TypeArray 14(fvec4) 20
86: TypeArray 15(fvec4) 21 86: TypePointer Input 85
87: TypePointer Input 86 87(ivla): 86(ptr) Variable Input
88(ivla): 87(ptr) Variable Input 88(ivlb): 86(ptr) Variable Input
89(ivlb): 87(ptr) Variable Input 89: TypeArray 14(fvec4) 51
90: TypeArray 15(fvec4) 52 90: TypePointer Output 89
91: TypePointer Output 90 91(ovla): 90(ptr) Variable Output
92(ovla): 91(ptr) Variable Output 92(ovlb): 90(ptr) Variable Output
93(ovlb): 91(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
12(a): 11(ptr) Variable Function 11(a): 10(ptr) Variable Function
17(p): 16(ptr) Variable Function 16(p): 15(ptr) Variable Function
31(ps): 30(ptr) Variable Function 30(ps): 29(ptr) Variable Function
35(cd): 30(ptr) Variable Function 34(cd): 29(ptr) Variable Function
39(pvi): 11(ptr) Variable Function 38(pvi): 10(ptr) Variable Function
43(pid): 11(ptr) Variable Function 42(pid): 10(ptr) Variable Function
46(iid): 11(ptr) Variable Function 45(iid): 10(ptr) Variable Function
MemoryBarrier 7 8 ControlBarrier 7 7 8
ControlBarrier 7 7 9 Store 11(a) 12
Store 12(a) 13 27: 26(ptr) AccessChain 23(gl_in) 24 25
28: 27(ptr) AccessChain 24(gl_in) 25 26 28: 14(fvec4) Load 27
29: 15(fvec4) Load 28 Store 16(p) 28
Store 17(p) 29 32: 31(ptr) AccessChain 23(gl_in) 24 24
33: 32(ptr) AccessChain 24(gl_in) 25 25 33: 13(float) Load 32
34: 14(float) Load 33 Store 30(ps) 33
Store 31(ps) 34 36: 31(ptr) AccessChain 23(gl_in) 24 35 35
37: 32(ptr) AccessChain 24(gl_in) 25 36 36 37: 13(float) Load 36
38: 14(float) Load 37 Store 34(cd) 37
Store 35(cd) 38 41: 9(int) Load 40(gl_PatchVerticesIn)
42: 10(int) Load 41(gl_PatchVerticesIn) Store 38(pvi) 41
Store 39(pvi) 42 44: 9(int) Load 43(gl_PrimitiveID)
45: 10(int) Load 44(gl_PrimitiveID) Store 42(pid) 44
Store 43(pid) 45 47: 9(int) Load 46(gl_InvocationID)
48: 10(int) Load 47(gl_InvocationID) Store 45(iid) 47
Store 46(iid) 48 55: 9(int) Load 46(gl_InvocationID)
56: 10(int) Load 47(gl_InvocationID) 56: 14(fvec4) Load 16(p)
57: 15(fvec4) Load 17(p) 58: 57(ptr) AccessChain 54(gl_out) 55 25
59: 58(ptr) AccessChain 55(gl_out) 56 26 Store 58 56
Store 59 57 59: 9(int) Load 46(gl_InvocationID)
60: 10(int) Load 47(gl_InvocationID) 60: 13(float) Load 30(ps)
61: 14(float) Load 31(ps) 62: 61(ptr) AccessChain 54(gl_out) 59 24
63: 62(ptr) AccessChain 55(gl_out) 60 25 Store 62 60
Store 63 61 63: 9(int) Load 46(gl_InvocationID)
64: 10(int) Load 47(gl_InvocationID) 64: 13(float) Load 34(cd)
65: 14(float) Load 35(cd) 65: 61(ptr) AccessChain 54(gl_out) 63 35 24
66: 62(ptr) AccessChain 55(gl_out) 64 36 25 Store 65 64
Store 66 65 71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69
72: 62(ptr) AccessChain 69(gl_TessLevelOuter) 70 Store 71 70
Store 72 71 75: 61(ptr) AccessChain 73(gl_TessLevelInner) 24
76: 62(ptr) AccessChain 74(gl_TessLevelInner) 25 Store 75 74
Store 76 75
Return Return
FunctionEnd FunctionEnd

View File

@ -10,6 +10,7 @@ Linked vertex stage:
// Id's are bound by 66 // Id's are bound by 66
Capability Shader Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 12 23 34 38 41 42 62 65 EntryPoint Vertex 4 "main" 12 23 34 38 41 42 62 65
@ -62,9 +63,6 @@ Linked vertex stage:
Decorate 55(sampb2) Binding 5 Decorate 55(sampb2) Binding 5
Decorate 56(sampb4) DescriptorSet 0 Decorate 56(sampb4) DescriptorSet 0
Decorate 56(sampb4) Binding 31 Decorate 56(sampb4) Binding 31
MemberDecorate 60(SS) 0 Flat
MemberDecorate 60(SS) 1 Flat
MemberDecorate 60(SS) 2 Flat
Decorate 62(var) Location 0 Decorate 62(var) Location 0
MemberDecorate 63(MS) 0 Location 17 MemberDecorate 63(MS) 0 Location 17
Decorate 63(MS) Block Decorate 63(MS) Block

View File

@ -2,7 +2,6 @@ spv.atomic.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 310 Shader version: 310
Requested GL_ARB_gl_spirv
local_size = (1, 1, 1) local_size = (1, 1, 1)
0:? Sequence 0:? Sequence
0:14 Function Definition: func(au1; (global highp uint) 0:14 Function Definition: func(au1; (global highp uint)
@ -105,7 +104,6 @@ Linked compute stage:
Shader version: 310 Shader version: 310
Requested GL_ARB_gl_spirv
local_size = (1, 1, 1) local_size = (1, 1, 1)
0:? Sequence 0:? Sequence
0:14 Function Definition: func(au1; (global highp uint) 0:14 Function Definition: func(au1; (global highp uint)

View File

@ -7,12 +7,12 @@ Linked vertex stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 67 // Id's are bound by 66
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 63 66 EntryPoint Vertex 4 "main" 62 65
Source GLSL 450 Source GLSL 450
Name 4 "main" Name 4 "main"
Name 14 "S" Name 14 "S"
@ -82,16 +82,12 @@ Linked vertex stage:
MemberName 58(bBt3) 0 "ntcol" MemberName 58(bBt3) 0 "ntcol"
MemberName 58(bBt3) 1 "ntrow" MemberName 58(bBt3) 1 "ntrow"
Name 60 "bBtn3" Name 60 "bBtn3"
Name 61 "S" Name 62 "sout"
MemberName 61(S) 0 "a" Name 63 "S"
MemberName 61(S) 1 "b" MemberName 63(S) 0 "a"
MemberName 61(S) 2 "c" MemberName 63(S) 1 "b"
Name 63 "sout" MemberName 63(S) 2 "c"
Name 64 "S" Name 65 "soutinv"
MemberName 64(S) 0 "a"
MemberName 64(S) 1 "b"
MemberName 64(S) 2 "c"
Name 66 "soutinv"
Decorate 13 ArrayStride 32 Decorate 13 ArrayStride 32
MemberDecorate 14(S) 0 Offset 0 MemberDecorate 14(S) 0 Offset 0
MemberDecorate 14(S) 1 ColMajor MemberDecorate 14(S) 1 ColMajor
@ -166,13 +162,10 @@ Linked vertex stage:
Decorate 58(bBt3) BufferBlock Decorate 58(bBt3) BufferBlock
Decorate 60(bBtn3) DescriptorSet 1 Decorate 60(bBtn3) DescriptorSet 1
Decorate 60(bBtn3) Binding 0 Decorate 60(bBtn3) Binding 0
MemberDecorate 61(S) 0 Flat MemberDecorate 63(S) 0 Invariant
MemberDecorate 61(S) 1 Flat MemberDecorate 63(S) 1 Invariant
MemberDecorate 61(S) 2 Flat MemberDecorate 63(S) 2 Invariant
MemberDecorate 64(S) 0 Invariant Decorate 65(soutinv) Invariant
MemberDecorate 64(S) 1 Invariant
MemberDecorate 64(S) 2 Invariant
Decorate 66(soutinv) Invariant
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -230,12 +223,11 @@ Linked vertex stage:
58(bBt3): TypeStruct 49(Nestor) 54(Nestor) 58(bBt3): TypeStruct 49(Nestor) 54(Nestor)
59: TypePointer Uniform 58(bBt3) 59: TypePointer Uniform 58(bBt3)
60(bBtn3): 59(ptr) Variable Uniform 60(bBtn3): 59(ptr) Variable Uniform
61(S): TypeStruct 8(ivec3) 13 7(int) 61: TypePointer Output 29(S)
62: TypePointer Output 61(S) 62(sout): 61(ptr) Variable Output
63(sout): 62(ptr) Variable Output 63(S): TypeStruct 8(ivec3) 13 7(int)
64(S): TypeStruct 8(ivec3) 13 7(int) 64: TypePointer Output 63(S)
65: TypePointer Output 64(S) 65(soutinv): 64(ptr) Variable Output
66(soutinv): 65(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
Return Return

View File

@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 143 // Id's are bound by 136
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 18 43 93 101 111 138 142 EntryPoint Fragment 4 "main" 15 40 90 98 108 134 135
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 400 Source GLSL 400
Name 4 "main" Name 4 "main"
@ -25,59 +25,27 @@ Linked fragment stage:
MemberName 10(s2) 2 "s1_1" MemberName 10(s2) 2 "s1_1"
MemberName 10(s2) 3 "bleh" MemberName 10(s2) 3 "bleh"
Name 12 "locals2" Name 12 "locals2"
Name 13 "s1" Name 13 "s3"
MemberName 13(s1) 0 "i" MemberName 13(s3) 0 "s2_1"
MemberName 13(s1) 1 "f" MemberName 13(s3) 1 "i"
Name 14 "s2" MemberName 13(s3) 2 "f"
MemberName 14(s2) 0 "i" MemberName 13(s3) 3 "s1_1"
MemberName 14(s2) 1 "f" Name 15 "foo3"
MemberName 14(s2) 2 "s1_1" Name 36 "localFArray"
MemberName 14(s2) 3 "bleh" Name 40 "coord"
Name 15 "s1" Name 49 "localIArray"
MemberName 15(s1) 0 "i" Name 68 "x"
MemberName 15(s1) 1 "f" Name 70 "localArray"
Name 16 "s3" Name 75 "i"
MemberName 16(s3) 0 "s2_1" Name 84 "a"
MemberName 16(s3) 1 "i" Name 90 "condition"
MemberName 16(s3) 2 "f" Name 98 "color"
MemberName 16(s3) 3 "s1_1" Name 108 "gl_FragColor"
Name 18 "foo3" Name 128 "samp2D"
Name 39 "localFArray" Name 134 "foo"
Name 43 "coord" Name 135 "foo2"
Name 52 "localIArray" Decorate 90(condition) Flat
Name 71 "x" Decorate 128(samp2D) DescriptorSet 0
Name 73 "localArray"
Name 78 "i"
Name 87 "a"
Name 93 "condition"
Name 101 "color"
Name 111 "gl_FragColor"
Name 131 "samp2D"
Name 136 "s1"
MemberName 136(s1) 0 "i"
MemberName 136(s1) 1 "f"
Name 138 "foo"
Name 139 "s1"
MemberName 139(s1) 0 "i"
MemberName 139(s1) 1 "f"
Name 140 "s2"
MemberName 140(s2) 0 "i"
MemberName 140(s2) 1 "f"
MemberName 140(s2) 2 "s1_1"
MemberName 140(s2) 3 "bleh"
Name 142 "foo2"
MemberDecorate 16(s3) 0 Flat
MemberDecorate 16(s3) 1 Flat
MemberDecorate 16(s3) 2 Flat
MemberDecorate 16(s3) 3 Flat
Decorate 93(condition) Flat
Decorate 131(samp2D) DescriptorSet 0
MemberDecorate 136(s1) 0 Flat
MemberDecorate 136(s1) 1 Flat
MemberDecorate 140(s2) 0 Flat
MemberDecorate 140(s2) 1 Flat
MemberDecorate 140(s2) 2 Flat
MemberDecorate 140(s2) 3 Flat
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -86,171 +54,164 @@ Linked fragment stage:
9: TypeVector 7(float) 4 9: TypeVector 7(float) 4
10(s2): TypeStruct 6(int) 7(float) 8(s1) 9(fvec4) 10(s2): TypeStruct 6(int) 7(float) 8(s1) 9(fvec4)
11: TypePointer Function 10(s2) 11: TypePointer Function 10(s2)
13(s1): TypeStruct 6(int) 7(float) 13(s3): TypeStruct 10(s2) 6(int) 7(float) 8(s1)
14(s2): TypeStruct 6(int) 7(float) 13(s1) 9(fvec4) 14: TypePointer Input 13(s3)
15(s1): TypeStruct 6(int) 7(float) 15(foo3): 14(ptr) Variable Input
16(s3): TypeStruct 14(s2) 6(int) 7(float) 15(s1) 16: 6(int) Constant 0
17: TypePointer Input 16(s3) 17: TypePointer Input 10(s2)
18(foo3): 17(ptr) Variable Input 20: TypePointer Input 6(int)
19: 6(int) Constant 0 23: TypeBool
20: TypePointer Input 14(s2) 27: 6(int) Constant 2
23: TypePointer Input 6(int) 28: 6(int) Constant 1
26: TypeBool 29: 7(float) Constant 1065353216
30: 6(int) Constant 2 30: TypePointer Function 7(float)
31: 6(int) Constant 1 32: TypeInt 32 0
32: 7(float) Constant 1065353216 33: 32(int) Constant 16
33: TypePointer Function 7(float) 34: TypeArray 7(float) 33
35: TypeInt 32 0 35: TypePointer Function 34
36: 35(int) Constant 16 37: 6(int) Constant 4
37: TypeArray 7(float) 36 38: TypeVector 7(float) 2
38: TypePointer Function 37 39: TypePointer Input 38(fvec2)
40: 6(int) Constant 4 40(coord): 39(ptr) Variable Input
41: TypeVector 7(float) 2 41: 32(int) Constant 0
42: TypePointer Input 41(fvec2) 42: TypePointer Input 7(float)
43(coord): 42(ptr) Variable Input 46: 32(int) Constant 8
44: 35(int) Constant 0 47: TypeArray 6(int) 46
45: TypePointer Input 7(float) 48: TypePointer Function 47
49: 35(int) Constant 8 52: TypePointer Function 6(int)
50: TypeArray 6(int) 49 69: 6(int) Constant 5
51: TypePointer Function 50 82: 6(int) Constant 16
55: TypePointer Function 6(int) 86: 7(float) Constant 0
72: 6(int) Constant 5 90(condition): 20(ptr) Variable Input
85: 6(int) Constant 16 96: 6(int) Constant 3
89: 7(float) Constant 0 97: TypePointer Input 9(fvec4)
93(condition): 23(ptr) Variable Input 98(color): 97(ptr) Variable Input
99: 6(int) Constant 3 100: TypePointer Function 9(fvec4)
100: TypePointer Input 9(fvec4) 102: 32(int) Constant 1
101(color): 100(ptr) Variable Input 105: 32(int) Constant 2
103: TypePointer Function 9(fvec4) 107: TypePointer Output 9(fvec4)
105: 35(int) Constant 1 108(gl_FragColor): 107(ptr) Variable Output
108: 35(int) Constant 2 125: TypeImage 7(float) 2D sampled format:Unknown
110: TypePointer Output 9(fvec4) 126: TypeSampledImage 125
111(gl_FragColor): 110(ptr) Variable Output 127: TypePointer UniformConstant 126
128: TypeImage 7(float) 2D sampled format:Unknown 128(samp2D): 127(ptr) Variable UniformConstant
129: TypeSampledImage 128 133: TypePointer Input 8(s1)
130: TypePointer UniformConstant 129 134(foo): 133(ptr) Variable Input
131(samp2D): 130(ptr) Variable UniformConstant 135(foo2): 17(ptr) Variable Input
136(s1): TypeStruct 6(int) 7(float)
137: TypePointer Input 136(s1)
138(foo): 137(ptr) Variable Input
139(s1): TypeStruct 6(int) 7(float)
140(s2): TypeStruct 6(int) 7(float) 139(s1) 9(fvec4)
141: TypePointer Input 140(s2)
142(foo2): 141(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
12(locals2): 11(ptr) Variable Function 12(locals2): 11(ptr) Variable Function
39(localFArray): 38(ptr) Variable Function 36(localFArray): 35(ptr) Variable Function
52(localIArray): 51(ptr) Variable Function 49(localIArray): 48(ptr) Variable Function
71(x): 55(ptr) Variable Function 68(x): 52(ptr) Variable Function
73(localArray): 38(ptr) Variable Function 70(localArray): 35(ptr) Variable Function
78(i): 55(ptr) Variable Function 75(i): 52(ptr) Variable Function
87(a): 38(ptr) Variable Function 84(a): 35(ptr) Variable Function
21: 20(ptr) AccessChain 18(foo3) 19 18: 17(ptr) AccessChain 15(foo3) 16
22: 14(s2) Load 21 19: 10(s2) Load 18
Store 12(locals2) 22 Store 12(locals2) 19
24: 23(ptr) AccessChain 18(foo3) 19 19 21: 20(ptr) AccessChain 15(foo3) 16 16
25: 6(int) Load 24 22: 6(int) Load 21
27: 26(bool) SGreaterThan 25 19 24: 23(bool) SGreaterThan 22 16
SelectionMerge 29 None SelectionMerge 26 None
BranchConditional 27 28 57 BranchConditional 24 25 54
28: Label 25: Label
34: 33(ptr) AccessChain 12(locals2) 30 31 31: 30(ptr) AccessChain 12(locals2) 27 28
Store 34 32 Store 31 29
46: 45(ptr) AccessChain 43(coord) 44 43: 42(ptr) AccessChain 40(coord) 41
47: 7(float) Load 46 44: 7(float) Load 43
48: 33(ptr) AccessChain 39(localFArray) 40 45: 30(ptr) AccessChain 36(localFArray) 37
Store 48 47 Store 45 44
53: 23(ptr) AccessChain 18(foo3) 19 19 50: 20(ptr) AccessChain 15(foo3) 16 16
54: 6(int) Load 53 51: 6(int) Load 50
56: 55(ptr) AccessChain 52(localIArray) 30 53: 52(ptr) AccessChain 49(localIArray) 27
Store 56 54 Store 53 51
Branch 29 Branch 26
57: Label 54: Label
58: 45(ptr) AccessChain 43(coord) 44 55: 42(ptr) AccessChain 40(coord) 41
59: 7(float) Load 58 56: 7(float) Load 55
60: 33(ptr) AccessChain 12(locals2) 30 31 57: 30(ptr) AccessChain 12(locals2) 27 28
Store 60 59 Store 57 56
61: 33(ptr) AccessChain 39(localFArray) 40 58: 30(ptr) AccessChain 36(localFArray) 37
Store 61 32 Store 58 29
62: 55(ptr) AccessChain 52(localIArray) 30 59: 52(ptr) AccessChain 49(localIArray) 27
Store 62 19 Store 59 16
Branch 29 Branch 26
29: Label 26: Label
63: 55(ptr) AccessChain 52(localIArray) 30 60: 52(ptr) AccessChain 49(localIArray) 27
64: 6(int) Load 63 61: 6(int) Load 60
65: 26(bool) IEqual 64 19 62: 23(bool) IEqual 61 16
SelectionMerge 67 None SelectionMerge 64 None
BranchConditional 65 66 67 BranchConditional 62 63 64
66: Label 63: Label
68: 33(ptr) AccessChain 39(localFArray) 40 65: 30(ptr) AccessChain 36(localFArray) 37
69: 7(float) Load 68 66: 7(float) Load 65
70: 7(float) FAdd 69 32 67: 7(float) FAdd 66 29
Store 68 70 Store 65 67
Branch 67 Branch 64
67: Label 64: Label
Store 71(x) 72 Store 68(x) 69
74: 6(int) Load 71(x) 71: 6(int) Load 68(x)
75: 45(ptr) AccessChain 43(coord) 44 72: 42(ptr) AccessChain 40(coord) 41
76: 7(float) Load 75 73: 7(float) Load 72
77: 33(ptr) AccessChain 73(localArray) 74 74: 30(ptr) AccessChain 70(localArray) 71
Store 77 76 Store 74 73
Store 78(i) 19 Store 75(i) 16
Branch 79 Branch 76
79: Label 76: Label
LoopMerge 81 82 None LoopMerge 78 79 None
Branch 83 Branch 80
83: Label 80: Label
84: 6(int) Load 78(i) 81: 6(int) Load 75(i)
86: 26(bool) SLessThan 84 85 83: 23(bool) SLessThan 81 82
BranchConditional 86 80 81 BranchConditional 83 77 78
80: Label 77: Label
88: 6(int) Load 78(i) 85: 6(int) Load 75(i)
90: 33(ptr) AccessChain 87(a) 88 87: 30(ptr) AccessChain 84(a) 85
Store 90 89 Store 87 86
Branch 82
82: Label
91: 6(int) Load 78(i)
92: 6(int) IAdd 91 31
Store 78(i) 92
Branch 79 Branch 79
81: Label 79: Label
94: 6(int) Load 93(condition) 88: 6(int) Load 75(i)
95: 26(bool) IEqual 94 31 89: 6(int) IAdd 88 28
SelectionMerge 97 None Store 75(i) 89
BranchConditional 95 96 97 Branch 76
96: Label 78: Label
98: 37 Load 73(localArray) 91: 6(int) Load 90(condition)
Store 87(a) 98 92: 23(bool) IEqual 91 28
Branch 97 SelectionMerge 94 None
97: Label BranchConditional 92 93 94
102: 9(fvec4) Load 101(color) 93: Label
104: 103(ptr) AccessChain 12(locals2) 99 95: 34 Load 70(localArray)
Store 104 102 Store 84(a) 95
106: 45(ptr) AccessChain 43(coord) 105 Branch 94
107: 7(float) Load 106 94: Label
109: 33(ptr) AccessChain 12(locals2) 99 108 99: 9(fvec4) Load 98(color)
Store 109 107 101: 100(ptr) AccessChain 12(locals2) 96
112: 103(ptr) AccessChain 12(locals2) 99 Store 101 99
113: 9(fvec4) Load 112 103: 42(ptr) AccessChain 40(coord) 102
114: 33(ptr) AccessChain 39(localFArray) 40 104: 7(float) Load 103
115: 7(float) Load 114 106: 30(ptr) AccessChain 12(locals2) 96 105
116: 33(ptr) AccessChain 12(locals2) 30 31 Store 106 104
117: 7(float) Load 116 109: 100(ptr) AccessChain 12(locals2) 96
118: 7(float) FAdd 115 117 110: 9(fvec4) Load 109
119: 6(int) Load 71(x) 111: 30(ptr) AccessChain 36(localFArray) 37
120: 33(ptr) AccessChain 73(localArray) 119 112: 7(float) Load 111
121: 7(float) Load 120 113: 30(ptr) AccessChain 12(locals2) 27 28
122: 7(float) FAdd 118 121 114: 7(float) Load 113
123: 6(int) Load 71(x) 115: 7(float) FAdd 112 114
124: 33(ptr) AccessChain 87(a) 123 116: 6(int) Load 68(x)
125: 7(float) Load 124 117: 30(ptr) AccessChain 70(localArray) 116
126: 7(float) FAdd 122 125 118: 7(float) Load 117
127: 9(fvec4) VectorTimesScalar 113 126 119: 7(float) FAdd 115 118
132: 129 Load 131(samp2D) 120: 6(int) Load 68(x)
133: 41(fvec2) Load 43(coord) 121: 30(ptr) AccessChain 84(a) 120
134: 9(fvec4) ImageSampleImplicitLod 132 133 122: 7(float) Load 121
135: 9(fvec4) FMul 127 134 123: 7(float) FAdd 119 122
Store 111(gl_FragColor) 135 124: 9(fvec4) VectorTimesScalar 110 123
129: 126 Load 128(samp2D)
130: 38(fvec2) Load 40(coord)
131: 9(fvec4) ImageSampleImplicitLod 129 130
132: 9(fvec4) FMul 124 131
Store 108(gl_FragColor) 132
Return Return
FunctionEnd FunctionEnd

View File

@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 278 // Id's are bound by 284
Capability Shader Capability Shader
Capability SampledRect Capability SampledRect
@ -15,7 +15,7 @@ Linked fragment stage:
Capability ImageQuery Capability ImageQuery
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 26 29 55 81 84 91 247 277 EntryPoint Fragment 4 "main" 17 26 29 55 81 84 92 253 283
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 430 Source GLSL 430
Name 4 "main" Name 4 "main"
@ -31,24 +31,24 @@ Linked fragment stage:
Name 64 "s2DShadow" Name 64 "s2DShadow"
Name 81 "ic3D" Name 81 "ic3D"
Name 84 "ic1D" Name 84 "ic1D"
Name 91 "ic2D" Name 92 "ic2D"
Name 100 "sr" Name 102 "sr"
Name 125 "sCube" Name 128 "sCube"
Name 136 "s2DArrayShadow" Name 139 "s2DArrayShadow"
Name 164 "iv" Name 167 "iv"
Name 168 "is2D" Name 171 "is2D"
Name 203 "is3D" Name 208 "is3D"
Name 215 "isCube" Name 220 "isCube"
Name 227 "is2DArray" Name 232 "is2DArray"
Name 237 "iv2" Name 243 "iv2"
Name 241 "sCubeShadow" Name 247 "sCubeShadow"
Name 247 "FragData" Name 253 "FragData"
Name 259 "is2Dms" Name 265 "is2Dms"
Name 263 "us2D" Name 269 "us2D"
Name 267 "us3D" Name 273 "us3D"
Name 271 "usCube" Name 277 "usCube"
Name 275 "us2DArray" Name 281 "us2DArray"
Name 277 "ic4D" Name 283 "ic4D"
Decorate 13(s2D) DescriptorSet 0 Decorate 13(s2D) DescriptorSet 0
Decorate 23(sCubeArrayShadow) DescriptorSet 0 Decorate 23(sCubeArrayShadow) DescriptorSet 0
Decorate 42(s3D) DescriptorSet 0 Decorate 42(s3D) DescriptorSet 0
@ -56,21 +56,21 @@ Linked fragment stage:
Decorate 64(s2DShadow) DescriptorSet 0 Decorate 64(s2DShadow) DescriptorSet 0
Decorate 81(ic3D) Flat Decorate 81(ic3D) Flat
Decorate 84(ic1D) Flat Decorate 84(ic1D) Flat
Decorate 91(ic2D) Flat Decorate 92(ic2D) Flat
Decorate 100(sr) DescriptorSet 0 Decorate 102(sr) DescriptorSet 0
Decorate 125(sCube) DescriptorSet 0 Decorate 128(sCube) DescriptorSet 0
Decorate 136(s2DArrayShadow) DescriptorSet 0 Decorate 139(s2DArrayShadow) DescriptorSet 0
Decorate 168(is2D) DescriptorSet 0 Decorate 171(is2D) DescriptorSet 0
Decorate 203(is3D) DescriptorSet 0 Decorate 208(is3D) DescriptorSet 0
Decorate 215(isCube) DescriptorSet 0 Decorate 220(isCube) DescriptorSet 0
Decorate 227(is2DArray) DescriptorSet 0 Decorate 232(is2DArray) DescriptorSet 0
Decorate 241(sCubeShadow) DescriptorSet 0 Decorate 247(sCubeShadow) DescriptorSet 0
Decorate 259(is2Dms) DescriptorSet 0 Decorate 265(is2Dms) DescriptorSet 0
Decorate 263(us2D) DescriptorSet 0 Decorate 269(us2D) DescriptorSet 0
Decorate 267(us3D) DescriptorSet 0 Decorate 273(us3D) DescriptorSet 0
Decorate 271(usCube) DescriptorSet 0 Decorate 277(usCube) DescriptorSet 0
Decorate 275(us2DArray) DescriptorSet 0 Decorate 281(us2DArray) DescriptorSet 0
Decorate 277(ic4D) Flat Decorate 283(ic4D) Flat
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -119,78 +119,78 @@ Linked fragment stage:
81(ic3D): 80(ptr) Variable Input 81(ic3D): 80(ptr) Variable Input
83: TypePointer Input 67(int) 83: TypePointer Input 67(int)
84(ic1D): 83(ptr) Variable Input 84(ic1D): 83(ptr) Variable Input
90: TypePointer Input 68(ivec2) 91: TypePointer Input 68(ivec2)
91(ic2D): 90(ptr) Variable Input 92(ic2D): 91(ptr) Variable Input
93: 67(int) Constant 4 94: 67(int) Constant 4
97: TypeImage 6(float) Rect sampled format:Unknown 99: TypeImage 6(float) Rect sampled format:Unknown
98: TypeSampledImage 97 100: TypeSampledImage 99
99: TypePointer UniformConstant 98 101: TypePointer UniformConstant 100
100(sr): 99(ptr) Variable UniformConstant 102(sr): 101(ptr) Variable UniformConstant
103: 68(ivec2) ConstantComposite 93 93 105: 68(ivec2) ConstantComposite 94 94
122: TypeImage 6(float) Cube sampled format:Unknown 125: TypeImage 6(float) Cube sampled format:Unknown
123: TypeSampledImage 122 126: TypeSampledImage 125
124: TypePointer UniformConstant 123 127: TypePointer UniformConstant 126
125(sCube): 124(ptr) Variable UniformConstant 128(sCube): 127(ptr) Variable UniformConstant
133: TypeImage 6(float) 2D depth array sampled format:Unknown 136: TypeImage 6(float) 2D depth array sampled format:Unknown
134: TypeSampledImage 133 137: TypeSampledImage 136
135: TypePointer UniformConstant 134 138: TypePointer UniformConstant 137
136(s2DArrayShadow): 135(ptr) Variable UniformConstant 139(s2DArrayShadow): 138(ptr) Variable UniformConstant
143: 32(int) Constant 0 146: 32(int) Constant 0
162: TypeVector 67(int) 4 165: TypeVector 67(int) 4
163: TypePointer Function 162(ivec4) 166: TypePointer Function 165(ivec4)
165: TypeImage 67(int) 2D sampled format:Unknown 168: TypeImage 67(int) 2D sampled format:Unknown
166: TypeSampledImage 165 169: TypeSampledImage 168
167: TypePointer UniformConstant 166 170: TypePointer UniformConstant 169
168(is2D): 167(ptr) Variable UniformConstant 171(is2D): 170(ptr) Variable UniformConstant
200: TypeImage 67(int) 3D sampled format:Unknown 205: TypeImage 67(int) 3D sampled format:Unknown
201: TypeSampledImage 200 206: TypeSampledImage 205
202: TypePointer UniformConstant 201 207: TypePointer UniformConstant 206
203(is3D): 202(ptr) Variable UniformConstant 208(is3D): 207(ptr) Variable UniformConstant
206: 6(float) Constant 1082549862 211: 6(float) Constant 1082549862
212: TypeImage 67(int) Cube sampled format:Unknown 217: TypeImage 67(int) Cube sampled format:Unknown
213: TypeSampledImage 212 218: TypeSampledImage 217
214: TypePointer UniformConstant 213 219: TypePointer UniformConstant 218
215(isCube): 214(ptr) Variable UniformConstant 220(isCube): 219(ptr) Variable UniformConstant
224: TypeImage 67(int) 2D array sampled format:Unknown 229: TypeImage 67(int) 2D array sampled format:Unknown
225: TypeSampledImage 224 230: TypeSampledImage 229
226: TypePointer UniformConstant 225 231: TypePointer UniformConstant 230
227(is2DArray): 226(ptr) Variable UniformConstant 232(is2DArray): 231(ptr) Variable UniformConstant
236: TypePointer Function 68(ivec2) 242: TypePointer Function 68(ivec2)
238: TypeImage 6(float) Cube depth sampled format:Unknown 244: TypeImage 6(float) Cube depth sampled format:Unknown
239: TypeSampledImage 238 245: TypeSampledImage 244
240: TypePointer UniformConstant 239 246: TypePointer UniformConstant 245
241(sCubeShadow): 240(ptr) Variable UniformConstant 247(sCubeShadow): 246(ptr) Variable UniformConstant
243: 67(int) Constant 2 249: 67(int) Constant 2
246: TypePointer Output 7(fvec4) 252: TypePointer Output 7(fvec4)
247(FragData): 246(ptr) Variable Output 253(FragData): 252(ptr) Variable Output
251: 6(float) Constant 0 257: 6(float) Constant 0
256: TypeImage 67(int) 2D multi-sampled sampled format:Unknown 262: TypeImage 67(int) 2D multi-sampled sampled format:Unknown
257: TypeSampledImage 256 263: TypeSampledImage 262
258: TypePointer UniformConstant 257 264: TypePointer UniformConstant 263
259(is2Dms): 258(ptr) Variable UniformConstant 265(is2Dms): 264(ptr) Variable UniformConstant
260: TypeImage 32(int) 2D sampled format:Unknown 266: TypeImage 32(int) 2D sampled format:Unknown
261: TypeSampledImage 260 267: TypeSampledImage 266
262: TypePointer UniformConstant 261 268: TypePointer UniformConstant 267
263(us2D): 262(ptr) Variable UniformConstant 269(us2D): 268(ptr) Variable UniformConstant
264: TypeImage 32(int) 3D sampled format:Unknown 270: TypeImage 32(int) 3D sampled format:Unknown
265: TypeSampledImage 264 271: TypeSampledImage 270
266: TypePointer UniformConstant 265 272: TypePointer UniformConstant 271
267(us3D): 266(ptr) Variable UniformConstant 273(us3D): 272(ptr) Variable UniformConstant
268: TypeImage 32(int) Cube sampled format:Unknown 274: TypeImage 32(int) Cube sampled format:Unknown
269: TypeSampledImage 268 275: TypeSampledImage 274
270: TypePointer UniformConstant 269 276: TypePointer UniformConstant 275
271(usCube): 270(ptr) Variable UniformConstant 277(usCube): 276(ptr) Variable UniformConstant
272: TypeImage 32(int) 2D array sampled format:Unknown 278: TypeImage 32(int) 2D array sampled format:Unknown
273: TypeSampledImage 272 279: TypeSampledImage 278
274: TypePointer UniformConstant 273 280: TypePointer UniformConstant 279
275(us2DArray): 274(ptr) Variable UniformConstant 281(us2DArray): 280(ptr) Variable UniformConstant
276: TypePointer Input 162(ivec4) 282: TypePointer Input 165(ivec4)
277(ic4D): 276(ptr) Variable Input 283(ic4D): 282(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(v): 8(ptr) Variable Function 9(v): 8(ptr) Variable Function
164(iv): 163(ptr) Variable Function 167(iv): 166(ptr) Variable Function
237(iv2): 236(ptr) Variable Function 243(iv2): 242(ptr) Variable Function
14: 11 Load 13(s2D) 14: 11 Load 13(s2D)
18: 15(fvec2) Load 17(c2D) 18: 15(fvec2) Load 17(c2D)
19: 7(fvec4) ImageSampleImplicitLod 14 18 19: 7(fvec4) ImageSampleImplicitLod 14 18
@ -229,153 +229,159 @@ Linked fragment stage:
78: 40 Load 42(s3D) 78: 40 Load 42(s3D)
82: 79(ivec3) Load 81(ic3D) 82: 79(ivec3) Load 81(ic3D)
85: 67(int) Load 84(ic1D) 85: 67(int) Load 84(ic1D)
86: 7(fvec4) ImageFetch 78 82 Lod 85 86: 39 Image 78
87: 7(fvec4) Load 9(v) 87: 7(fvec4) ImageFetch 86 82 Lod 85
88: 7(fvec4) FAdd 87 86 88: 7(fvec4) Load 9(v)
Store 9(v) 88 89: 7(fvec4) FAdd 88 87
89: 11 Load 13(s2D) Store 9(v) 89
92: 68(ivec2) Load 91(ic2D) 90: 11 Load 13(s2D)
94: 7(fvec4) ImageFetch 89 92 Lod ConstOffset 93 70 93: 68(ivec2) Load 92(ic2D)
95: 7(fvec4) Load 9(v) 95: 10 Image 90
96: 7(fvec4) FAdd 95 94 96: 7(fvec4) ImageFetch 95 93 Lod ConstOffset 94 70
Store 9(v) 96 97: 7(fvec4) Load 9(v)
101: 98 Load 100(sr) 98: 7(fvec4) FAdd 97 96
102: 68(ivec2) Load 91(ic2D) Store 9(v) 98
104: 7(fvec4) ImageFetch 101 102 ConstOffset 103 103: 100 Load 102(sr)
105: 7(fvec4) Load 9(v) 104: 68(ivec2) Load 92(ic2D)
106: 7(fvec4) FAdd 105 104 106: 99 Image 103
Store 9(v) 106 107: 7(fvec4) ImageFetch 106 104 ConstOffset 105
107: 62 Load 64(s2DShadow) 108: 7(fvec4) Load 9(v)
108: 53(fvec3) Load 55(c3D) 109: 7(fvec4) FAdd 108 107
109: 6(float) Load 29(c1D) Store 9(v) 109
110: 6(float) CompositeExtract 108 2 110: 62 Load 64(s2DShadow)
111: 6(float) ImageSampleDrefExplicitLod 107 108 110 Lod ConstOffset 109 70 111: 53(fvec3) Load 55(c3D)
112: 34(ptr) AccessChain 9(v) 33 112: 6(float) Load 29(c1D)
113: 6(float) Load 112 113: 6(float) CompositeExtract 111 2
114: 6(float) FAdd 113 111 114: 6(float) ImageSampleDrefExplicitLod 110 111 113 Lod ConstOffset 112 70
115: 34(ptr) AccessChain 9(v) 33 115: 34(ptr) AccessChain 9(v) 33
Store 115 114 116: 6(float) Load 115
116: 11 Load 13(s2D) 117: 6(float) FAdd 116 114
117: 53(fvec3) Load 55(c3D) 118: 34(ptr) AccessChain 9(v) 33
118: 6(float) Load 29(c1D) Store 118 117
119: 7(fvec4) ImageSampleProjExplicitLod 116 117 Lod ConstOffset 118 70 119: 11 Load 13(s2D)
120: 7(fvec4) Load 9(v) 120: 53(fvec3) Load 55(c3D)
121: 7(fvec4) FAdd 120 119 121: 6(float) Load 29(c1D)
Store 9(v) 121 122: 7(fvec4) ImageSampleProjExplicitLod 119 120 Lod ConstOffset 121 70
126: 123 Load 125(sCube) 123: 7(fvec4) Load 9(v)
127: 53(fvec3) Load 55(c3D) 124: 7(fvec4) FAdd 123 122
128: 53(fvec3) Load 55(c3D) Store 9(v) 124
129: 53(fvec3) Load 55(c3D) 129: 126 Load 128(sCube)
130: 7(fvec4) ImageSampleExplicitLod 126 127 Grad 128 129 130: 53(fvec3) Load 55(c3D)
131: 7(fvec4) Load 9(v) 131: 53(fvec3) Load 55(c3D)
132: 7(fvec4) FAdd 131 130 132: 53(fvec3) Load 55(c3D)
Store 9(v) 132 133: 7(fvec4) ImageSampleExplicitLod 129 130 Grad 131 132
137: 134 Load 136(s2DArrayShadow) 134: 7(fvec4) Load 9(v)
138: 7(fvec4) Load 26(c4D) 135: 7(fvec4) FAdd 134 133
139: 15(fvec2) Load 17(c2D) Store 9(v) 135
140: 15(fvec2) Load 17(c2D) 140: 137 Load 139(s2DArrayShadow)
141: 6(float) CompositeExtract 138 3 141: 7(fvec4) Load 26(c4D)
142: 6(float) ImageSampleDrefExplicitLod 137 138 141 Grad ConstOffset 139 140 70 142: 15(fvec2) Load 17(c2D)
144: 34(ptr) AccessChain 9(v) 143 143: 15(fvec2) Load 17(c2D)
145: 6(float) Load 144 144: 6(float) CompositeExtract 141 3
146: 6(float) FAdd 145 142 145: 6(float) ImageSampleDrefExplicitLod 140 141 144 Grad ConstOffset 142 143 70
147: 34(ptr) AccessChain 9(v) 143 147: 34(ptr) AccessChain 9(v) 146
Store 147 146 148: 6(float) Load 147
148: 40 Load 42(s3D) 149: 6(float) FAdd 148 145
149: 7(fvec4) Load 26(c4D) 150: 34(ptr) AccessChain 9(v) 146
150: 53(fvec3) Load 55(c3D) Store 150 149
151: 53(fvec3) Load 55(c3D) 151: 40 Load 42(s3D)
152: 7(fvec4) ImageSampleProjExplicitLod 148 149 Grad 150 151 152: 7(fvec4) Load 26(c4D)
153: 7(fvec4) Load 9(v) 153: 53(fvec3) Load 55(c3D)
154: 7(fvec4) FAdd 153 152 154: 53(fvec3) Load 55(c3D)
Store 9(v) 154 155: 7(fvec4) ImageSampleProjExplicitLod 151 152 Grad 153 154
155: 11 Load 13(s2D) 156: 7(fvec4) Load 9(v)
156: 53(fvec3) Load 55(c3D) 157: 7(fvec4) FAdd 156 155
157: 15(fvec2) Load 17(c2D) Store 9(v) 157
158: 15(fvec2) Load 17(c2D) 158: 11 Load 13(s2D)
159: 7(fvec4) ImageSampleProjExplicitLod 155 156 Grad ConstOffset 157 158 70 159: 53(fvec3) Load 55(c3D)
160: 7(fvec4) Load 9(v) 160: 15(fvec2) Load 17(c2D)
161: 7(fvec4) FAdd 160 159 161: 15(fvec2) Load 17(c2D)
Store 9(v) 161 162: 7(fvec4) ImageSampleProjExplicitLod 158 159 Grad ConstOffset 160 161 70
169: 166 Load 168(is2D) 163: 7(fvec4) Load 9(v)
170: 15(fvec2) Load 17(c2D) 164: 7(fvec4) FAdd 163 162
171: 162(ivec4) ImageSampleImplicitLod 169 170 Store 9(v) 164
Store 164(iv) 171 172: 169 Load 171(is2D)
172: 162(ivec4) Load 164(iv) 173: 15(fvec2) Load 17(c2D)
173: 7(fvec4) ConvertSToF 172 174: 165(ivec4) ImageSampleImplicitLod 172 173
174: 7(fvec4) Load 9(v) Store 167(iv) 174
175: 7(fvec4) FAdd 174 173 175: 165(ivec4) Load 167(iv)
Store 9(v) 175 176: 7(fvec4) ConvertSToF 175
176: 166 Load 168(is2D) 177: 7(fvec4) Load 9(v)
177: 7(fvec4) Load 26(c4D) 178: 7(fvec4) FAdd 177 176
178: 162(ivec4) ImageSampleProjImplicitLod 176 177 ConstOffset 70 Store 9(v) 178
Store 164(iv) 178 179: 169 Load 171(is2D)
179: 162(ivec4) Load 164(iv) 180: 7(fvec4) Load 26(c4D)
180: 7(fvec4) ConvertSToF 179 181: 6(float) CompositeExtract 180 3
181: 7(fvec4) Load 9(v) 182: 7(fvec4) CompositeInsert 181 180 2
182: 7(fvec4) FAdd 181 180 183: 165(ivec4) ImageSampleProjImplicitLod 179 182 ConstOffset 70
Store 9(v) 182 Store 167(iv) 183
183: 166 Load 168(is2D) 184: 165(ivec4) Load 167(iv)
184: 53(fvec3) Load 55(c3D) 185: 7(fvec4) ConvertSToF 184
185: 6(float) Load 29(c1D) 186: 7(fvec4) Load 9(v)
186: 162(ivec4) ImageSampleProjExplicitLod 183 184 Lod 185 187: 7(fvec4) FAdd 186 185
Store 164(iv) 186 Store 9(v) 187
187: 162(ivec4) Load 164(iv) 188: 169 Load 171(is2D)
188: 7(fvec4) ConvertSToF 187 189: 53(fvec3) Load 55(c3D)
189: 7(fvec4) Load 9(v) 190: 6(float) Load 29(c1D)
190: 7(fvec4) FAdd 189 188 191: 165(ivec4) ImageSampleProjExplicitLod 188 189 Lod 190
Store 9(v) 190 Store 167(iv) 191
191: 166 Load 168(is2D) 192: 165(ivec4) Load 167(iv)
192: 53(fvec3) Load 55(c3D) 193: 7(fvec4) ConvertSToF 192
193: 15(fvec2) Load 17(c2D) 194: 7(fvec4) Load 9(v)
194: 15(fvec2) Load 17(c2D) 195: 7(fvec4) FAdd 194 193
195: 162(ivec4) ImageSampleProjExplicitLod 191 192 Grad 193 194 Store 9(v) 195
Store 164(iv) 195 196: 169 Load 171(is2D)
196: 162(ivec4) Load 164(iv) 197: 53(fvec3) Load 55(c3D)
197: 7(fvec4) ConvertSToF 196 198: 15(fvec2) Load 17(c2D)
198: 7(fvec4) Load 9(v) 199: 15(fvec2) Load 17(c2D)
199: 7(fvec4) FAdd 198 197 200: 165(ivec4) ImageSampleProjExplicitLod 196 197 Grad 198 199
Store 9(v) 199 Store 167(iv) 200
204: 201 Load 203(is3D) 201: 165(ivec4) Load 167(iv)
205: 53(fvec3) Load 55(c3D) 202: 7(fvec4) ConvertSToF 201
207: 162(ivec4) ImageSampleImplicitLod 204 205 Bias 206 203: 7(fvec4) Load 9(v)
Store 164(iv) 207 204: 7(fvec4) FAdd 203 202
208: 162(ivec4) Load 164(iv) Store 9(v) 204
209: 7(fvec4) ConvertSToF 208 209: 206 Load 208(is3D)
210: 7(fvec4) Load 9(v) 210: 53(fvec3) Load 55(c3D)
211: 7(fvec4) FAdd 210 209 212: 165(ivec4) ImageSampleImplicitLod 209 210 Bias 211
Store 9(v) 211 Store 167(iv) 212
216: 213 Load 215(isCube) 213: 165(ivec4) Load 167(iv)
217: 53(fvec3) Load 55(c3D) 214: 7(fvec4) ConvertSToF 213
218: 6(float) Load 29(c1D) 215: 7(fvec4) Load 9(v)
219: 162(ivec4) ImageSampleExplicitLod 216 217 Lod 218 216: 7(fvec4) FAdd 215 214
Store 164(iv) 219 Store 9(v) 216
220: 162(ivec4) Load 164(iv) 221: 218 Load 220(isCube)
221: 7(fvec4) ConvertSToF 220 222: 53(fvec3) Load 55(c3D)
222: 7(fvec4) Load 9(v) 223: 6(float) Load 29(c1D)
223: 7(fvec4) FAdd 222 221 224: 165(ivec4) ImageSampleExplicitLod 221 222 Lod 223
Store 9(v) 223 Store 167(iv) 224
228: 225 Load 227(is2DArray) 225: 165(ivec4) Load 167(iv)
229: 79(ivec3) Load 81(ic3D) 226: 7(fvec4) ConvertSToF 225
230: 67(int) Load 84(ic1D) 227: 7(fvec4) Load 9(v)
231: 162(ivec4) ImageFetch 228 229 Lod 230 228: 7(fvec4) FAdd 227 226
Store 164(iv) 231 Store 9(v) 228
232: 162(ivec4) Load 164(iv) 233: 230 Load 232(is2DArray)
233: 7(fvec4) ConvertSToF 232 234: 79(ivec3) Load 81(ic3D)
234: 7(fvec4) Load 9(v) 235: 67(int) Load 84(ic1D)
235: 7(fvec4) FAdd 234 233 236: 229 Image 233
Store 9(v) 235 237: 165(ivec4) ImageFetch 236 234 Lod 235
242: 239 Load 241(sCubeShadow) Store 167(iv) 237
244: 238 Image 242 238: 165(ivec4) Load 167(iv)
245: 68(ivec2) ImageQuerySizeLod 244 243 239: 7(fvec4) ConvertSToF 238
Store 237(iv2) 245 240: 7(fvec4) Load 9(v)
248: 7(fvec4) Load 9(v) 241: 7(fvec4) FAdd 240 239
249: 68(ivec2) Load 237(iv2) Store 9(v) 241
250: 15(fvec2) ConvertSToF 249 248: 245 Load 247(sCubeShadow)
252: 6(float) CompositeExtract 250 0 250: 244 Image 248
253: 6(float) CompositeExtract 250 1 251: 68(ivec2) ImageQuerySizeLod 250 249
254: 7(fvec4) CompositeConstruct 252 253 251 251 Store 243(iv2) 251
255: 7(fvec4) FAdd 248 254 254: 7(fvec4) Load 9(v)
Store 247(FragData) 255 255: 68(ivec2) Load 243(iv2)
256: 15(fvec2) ConvertSToF 255
258: 6(float) CompositeExtract 256 0
259: 6(float) CompositeExtract 256 1
260: 7(fvec4) CompositeConstruct 258 259 257 257
261: 7(fvec4) FAdd 254 260
Store 253(FragData) 261
Return Return
FunctionEnd FunctionEnd

View File

@ -10,7 +10,6 @@ Linked tessellation evaluation stage:
// Id's are bound by 119 // Id's are bound by 119
Capability Tessellation Capability Tessellation
Capability TessellationPointSize
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 12 21 62 112 EntryPoint TessellationEvaluation 4 "main" 12 21 62 112

View File

@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 433 // Id's are bound by 438
Capability Shader Capability Shader
Capability SampledRect Capability SampledRect
@ -15,7 +15,7 @@ Linked fragment stage:
Capability SampledCubeArray Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 33 48 89 360 388 400 418 EntryPoint Fragment 4 "main" 33 48 89 365 393 405 423
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 450 Source GLSL 450
SourceExtension "GL_ARB_sparse_texture2" SourceExtension "GL_ARB_sparse_texture2"
@ -39,17 +39,17 @@ Linked fragment stage:
Name 111 "ResType" Name 111 "ResType"
Name 140 "us2DRect" Name 140 "us2DRect"
Name 154 "s2DArrayShadow" Name 154 "s2DArrayShadow"
Name 186 "s2DMS" Name 188 "s2DMS"
Name 223 "is2DArray" Name 228 "is2DArray"
Name 256 "sCubeShadow" Name 261 "sCubeShadow"
Name 289 "s2DRectShadow" Name 294 "s2DRectShadow"
Name 360 "offsets" Name 365 "offsets"
Name 385 "i2D" Name 390 "i2D"
Name 388 "ic2" Name 393 "ic2"
Name 397 "ii3D" Name 402 "ii3D"
Name 400 "ic3" Name 405 "ic3"
Name 409 "i2DMS" Name 414 "i2DMS"
Name 418 "outColor" Name 423 "outColor"
Decorate 29(s2D) DescriptorSet 0 Decorate 29(s2D) DescriptorSet 0
Decorate 44(s3D) DescriptorSet 0 Decorate 44(s3D) DescriptorSet 0
Decorate 59(isCube) DescriptorSet 0 Decorate 59(isCube) DescriptorSet 0
@ -58,16 +58,16 @@ Linked fragment stage:
Decorate 108(usCubeArray) DescriptorSet 0 Decorate 108(usCubeArray) DescriptorSet 0
Decorate 140(us2DRect) DescriptorSet 0 Decorate 140(us2DRect) DescriptorSet 0
Decorate 154(s2DArrayShadow) DescriptorSet 0 Decorate 154(s2DArrayShadow) DescriptorSet 0
Decorate 186(s2DMS) DescriptorSet 0 Decorate 188(s2DMS) DescriptorSet 0
Decorate 223(is2DArray) DescriptorSet 0 Decorate 228(is2DArray) DescriptorSet 0
Decorate 256(sCubeShadow) DescriptorSet 0 Decorate 261(sCubeShadow) DescriptorSet 0
Decorate 289(s2DRectShadow) DescriptorSet 0 Decorate 294(s2DRectShadow) DescriptorSet 0
Decorate 360(offsets) Flat Decorate 365(offsets) Flat
Decorate 385(i2D) DescriptorSet 0 Decorate 390(i2D) DescriptorSet 0
Decorate 388(ic2) Flat Decorate 393(ic2) Flat
Decorate 397(ii3D) DescriptorSet 0 Decorate 402(ii3D) DescriptorSet 0
Decorate 400(ic3) Flat Decorate 405(ic3) Flat
Decorate 409(i2DMS) DescriptorSet 0 Decorate 414(i2DMS) DescriptorSet 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -143,58 +143,58 @@ Linked fragment stage:
157: 6(int) Constant 5 157: 6(int) Constant 5
158: 143(ivec2) ConstantComposite 157 157 158: 143(ivec2) ConstantComposite 157 157
159: 20(int) Constant 2 159: 20(int) Constant 2
183: TypeImage 10(float) 2D multi-sampled sampled format:Unknown 185: TypeImage 10(float) 2D multi-sampled sampled format:Unknown
184: TypeSampledImage 183 186: TypeSampledImage 185
185: TypePointer UniformConstant 184 187: TypePointer UniformConstant 186
186(s2DMS): 185(ptr) Variable UniformConstant 188(s2DMS): 187(ptr) Variable UniformConstant
190: 6(int) Constant 4 192: 6(int) Constant 4
199: 129(ivec3) ConstantComposite 190 190 190 202: 129(ivec3) ConstantComposite 192 192 192
220: TypeImage 6(int) 2D array sampled format:Unknown 225: TypeImage 6(int) 2D array sampled format:Unknown
221: TypeSampledImage 220 226: TypeSampledImage 225
222: TypePointer UniformConstant 221 227: TypePointer UniformConstant 226
223(is2DArray): 222(ptr) Variable UniformConstant 228(is2DArray): 227(ptr) Variable UniformConstant
226: 6(int) Constant 6 231: 6(int) Constant 6
227: 143(ivec2) ConstantComposite 226 226 232: 143(ivec2) ConstantComposite 231 231
235: 6(int) Constant 7 240: 6(int) Constant 7
236: 143(ivec2) ConstantComposite 235 235 241: 143(ivec2) ConstantComposite 240 240
253: TypeImage 10(float) Cube depth sampled format:Unknown 258: TypeImage 10(float) Cube depth sampled format:Unknown
254: TypeSampledImage 253 259: TypeSampledImage 258
255: TypePointer UniformConstant 254 260: TypePointer UniformConstant 259
256(sCubeShadow): 255(ptr) Variable UniformConstant 261(sCubeShadow): 260(ptr) Variable UniformConstant
286: TypeImage 10(float) Rect depth sampled format:Unknown 291: TypeImage 10(float) Rect depth sampled format:Unknown
287: TypeSampledImage 286 292: TypeSampledImage 291
288: TypePointer UniformConstant 287 293: TypePointer UniformConstant 292
289(s2DRectShadow): 288(ptr) Variable UniformConstant 294(s2DRectShadow): 293(ptr) Variable UniformConstant
294: 20(int) Constant 3 299: 20(int) Constant 3
306: 143(ivec2) ConstantComposite 130 130 311: 143(ivec2) ConstantComposite 130 130
335: 143(ivec2) ConstantComposite 190 190 340: 143(ivec2) ConstantComposite 192 192
357: 20(int) Constant 4 362: 20(int) Constant 4
358: TypeArray 143(ivec2) 357 363: TypeArray 143(ivec2) 362
359: TypePointer Input 358 364: TypePointer Input 363
360(offsets): 359(ptr) Variable Input 365(offsets): 364(ptr) Variable Input
383: TypeImage 10(float) 2D nonsampled format:Rgba32f 388: TypeImage 10(float) 2D nonsampled format:Rgba32f
384: TypePointer UniformConstant 383 389: TypePointer UniformConstant 388
385(i2D): 384(ptr) Variable UniformConstant 390(i2D): 389(ptr) Variable UniformConstant
387: TypePointer Input 143(ivec2) 392: TypePointer Input 143(ivec2)
388(ic2): 387(ptr) Variable Input 393(ic2): 392(ptr) Variable Input
395: TypeImage 6(int) 3D nonsampled format:Rgba32i 400: TypeImage 6(int) 3D nonsampled format:Rgba32i
396: TypePointer UniformConstant 395 401: TypePointer UniformConstant 400
397(ii3D): 396(ptr) Variable UniformConstant 402(ii3D): 401(ptr) Variable UniformConstant
399: TypePointer Input 129(ivec3) 404: TypePointer Input 129(ivec3)
400(ic3): 399(ptr) Variable Input 405(ic3): 404(ptr) Variable Input
407: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f 412: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
408: TypePointer UniformConstant 407 413: TypePointer UniformConstant 412
409(i2DMS): 408(ptr) Variable UniformConstant 414(i2DMS): 413(ptr) Variable UniformConstant
417: TypePointer Output 11(fvec4) 422: TypePointer Output 11(fvec4)
418(outColor): 417(ptr) Variable Output 423(outColor): 422(ptr) Variable Output
421: TypeBool 426: TypeBool
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(resident): 7(ptr) Variable Function 8(resident): 7(ptr) Variable Function
13(texel): 12(ptr) Variable Function 13(texel): 12(ptr) Variable Function
18(itexel): 17(ptr) Variable Function 18(itexel): 17(ptr) Variable Function
23(utexel): 22(ptr) Variable Function 23(utexel): 22(ptr) Variable Function
419: 12(ptr) Variable Function 424: 12(ptr) Variable Function
Store 8(resident) 9 Store 8(resident) 9
Store 13(texel) 15 Store 13(texel) 15
Store 18(itexel) 19 Store 18(itexel) 19
@ -308,281 +308,286 @@ Linked fragment stage:
167: 27 Load 29(s2D) 167: 27 Load 29(s2D)
168: 31(fvec2) Load 33(c2) 168: 31(fvec2) Load 33(c2)
169: 143(ivec2) ConvertFToS 168 169: 143(ivec2) ConvertFToS 168
170: 35(ResType) ImageSparseFetch 167 169 Lod 130 170: 26 Image 167
171: 11(fvec4) CompositeExtract 170 1 171: 35(ResType) ImageSparseFetch 170 169 Lod 130
Store 13(texel) 171 172: 11(fvec4) CompositeExtract 171 1
172: 6(int) CompositeExtract 170 0 Store 13(texel) 172
173: 6(int) Load 8(resident) 173: 6(int) CompositeExtract 171 0
174: 6(int) BitwiseOr 173 172 174: 6(int) Load 8(resident)
Store 8(resident) 174 175: 6(int) BitwiseOr 174 173
175: 138 Load 140(us2DRect) Store 8(resident) 175
176: 31(fvec2) Load 33(c2) 176: 138 Load 140(us2DRect)
177: 143(ivec2) ConvertFToS 176 177: 31(fvec2) Load 33(c2)
178:111(ResType) ImageSparseFetch 175 177 178: 143(ivec2) ConvertFToS 177
179: 21(ivec4) CompositeExtract 178 1 179: 137 Image 176
Store 23(utexel) 179 180:111(ResType) ImageSparseFetch 179 178
180: 6(int) CompositeExtract 178 0 181: 21(ivec4) CompositeExtract 180 1
181: 6(int) Load 8(resident) Store 23(utexel) 181
182: 6(int) BitwiseOr 181 180 182: 6(int) CompositeExtract 180 0
Store 8(resident) 182 183: 6(int) Load 8(resident)
187: 184 Load 186(s2DMS) 184: 6(int) BitwiseOr 183 182
188: 31(fvec2) Load 33(c2) Store 8(resident) 184
189: 143(ivec2) ConvertFToS 188 189: 186 Load 188(s2DMS)
191: 35(ResType) ImageSparseFetch 187 189 Sample 190 190: 31(fvec2) Load 33(c2)
192: 11(fvec4) CompositeExtract 191 1 191: 143(ivec2) ConvertFToS 190
Store 13(texel) 192 193: 185 Image 189
193: 6(int) CompositeExtract 191 0 194: 35(ResType) ImageSparseFetch 193 191 Sample 192
194: 6(int) Load 8(resident) 195: 11(fvec4) CompositeExtract 194 1
195: 6(int) BitwiseOr 194 193 Store 13(texel) 195
Store 8(resident) 195 196: 6(int) CompositeExtract 194 0
196: 42 Load 44(s3D) 197: 6(int) Load 8(resident)
197: 46(fvec3) Load 48(c3) 198: 6(int) BitwiseOr 197 196
198: 129(ivec3) ConvertFToS 197 Store 8(resident) 198
200: 35(ResType) ImageSparseFetch 196 198 Lod ConstOffset 130 199 199: 42 Load 44(s3D)
201: 11(fvec4) CompositeExtract 200 1 200: 46(fvec3) Load 48(c3)
Store 13(texel) 201 201: 129(ivec3) ConvertFToS 200
202: 6(int) CompositeExtract 200 0 203: 41 Image 199
203: 6(int) Load 8(resident) 204: 35(ResType) ImageSparseFetch 203 201 Lod ConstOffset 130 202
204: 6(int) BitwiseOr 203 202 205: 11(fvec4) CompositeExtract 204 1
Store 8(resident) 204 Store 13(texel) 205
205: 138 Load 140(us2DRect) 206: 6(int) CompositeExtract 204 0
206: 31(fvec2) Load 33(c2) 207: 6(int) Load 8(resident)
207: 143(ivec2) ConvertFToS 206 208: 6(int) BitwiseOr 207 206
208:111(ResType) ImageSparseFetch 205 207 ConstOffset 145 Store 8(resident) 208
209: 21(ivec4) CompositeExtract 208 1 209: 138 Load 140(us2DRect)
Store 23(utexel) 209 210: 31(fvec2) Load 33(c2)
210: 6(int) CompositeExtract 208 0 211: 143(ivec2) ConvertFToS 210
211: 6(int) Load 8(resident) 212: 137 Image 209
212: 6(int) BitwiseOr 211 210 213:111(ResType) ImageSparseFetch 212 211 ConstOffset 145
Store 8(resident) 212 214: 21(ivec4) CompositeExtract 213 1
213: 27 Load 29(s2D) Store 23(utexel) 214
214: 31(fvec2) Load 33(c2) 215: 6(int) CompositeExtract 213 0
215: 35(ResType) ImageSparseSampleExplicitLod 213 214 Lod ConstOffset 50 158 216: 6(int) Load 8(resident)
216: 11(fvec4) CompositeExtract 215 1 217: 6(int) BitwiseOr 216 215
Store 13(texel) 216 Store 8(resident) 217
217: 6(int) CompositeExtract 215 0 218: 27 Load 29(s2D)
218: 6(int) Load 8(resident) 219: 31(fvec2) Load 33(c2)
219: 6(int) BitwiseOr 218 217 220: 35(ResType) ImageSparseSampleExplicitLod 218 219 Lod ConstOffset 50 158
Store 8(resident) 219 221: 11(fvec4) CompositeExtract 220 1
224: 221 Load 223(is2DArray) Store 13(texel) 221
225: 46(fvec3) Load 48(c3) 222: 6(int) CompositeExtract 220 0
228: 62(ResType) ImageSparseSampleExplicitLod 224 225 Lod ConstOffset 50 227 223: 6(int) Load 8(resident)
229: 16(ivec4) CompositeExtract 228 1 224: 6(int) BitwiseOr 223 222
Store 18(itexel) 229 Store 8(resident) 224
230: 6(int) CompositeExtract 228 0 229: 226 Load 228(is2DArray)
231: 6(int) Load 8(resident) 230: 46(fvec3) Load 48(c3)
232: 6(int) BitwiseOr 231 230 233: 62(ResType) ImageSparseSampleExplicitLod 229 230 Lod ConstOffset 50 232
Store 8(resident) 232 234: 16(ivec4) CompositeExtract 233 1
233: 69 Load 71(s2DShadow) Store 18(itexel) 234
234: 46(fvec3) Load 48(c3) 235: 6(int) CompositeExtract 233 0
237: 74(ptr) AccessChain 13(texel) 159 236: 6(int) Load 8(resident)
238: 10(float) CompositeExtract 234 2 237: 6(int) BitwiseOr 236 235
239: 77(ResType) ImageSparseSampleDrefExplicitLod 233 234 238 Lod ConstOffset 50 236 Store 8(resident) 237
240: 10(float) CompositeExtract 239 1 238: 69 Load 71(s2DShadow)
Store 237 240 239: 46(fvec3) Load 48(c3)
241: 6(int) CompositeExtract 239 0 242: 74(ptr) AccessChain 13(texel) 159
242: 6(int) Load 8(resident) 243: 10(float) CompositeExtract 239 2
243: 6(int) BitwiseOr 242 241 244: 77(ResType) ImageSparseSampleDrefExplicitLod 238 239 243 Lod ConstOffset 50 241
Store 8(resident) 243 245: 10(float) CompositeExtract 244 1
244: 42 Load 44(s3D) Store 242 245
245: 46(fvec3) Load 48(c3) 246: 6(int) CompositeExtract 244 0
246: 46(fvec3) Load 48(c3) 247: 6(int) Load 8(resident)
247: 46(fvec3) Load 48(c3) 248: 6(int) BitwiseOr 247 246
248: 35(ResType) ImageSparseSampleExplicitLod 244 245 Grad 246 247 Store 8(resident) 248
249: 11(fvec4) CompositeExtract 248 1 249: 42 Load 44(s3D)
Store 13(texel) 249 250: 46(fvec3) Load 48(c3)
250: 6(int) CompositeExtract 248 0 251: 46(fvec3) Load 48(c3)
251: 6(int) Load 8(resident) 252: 46(fvec3) Load 48(c3)
252: 6(int) BitwiseOr 251 250 253: 35(ResType) ImageSparseSampleExplicitLod 249 250 Grad 251 252
Store 8(resident) 252 254: 11(fvec4) CompositeExtract 253 1
257: 254 Load 256(sCubeShadow) Store 13(texel) 254
258: 11(fvec4) Load 89(c4) 255: 6(int) CompositeExtract 253 0
259: 46(fvec3) Load 48(c3) 256: 6(int) Load 8(resident)
260: 46(fvec3) Load 48(c3) 257: 6(int) BitwiseOr 256 255
261: 74(ptr) AccessChain 13(texel) 119 Store 8(resident) 257
262: 10(float) CompositeExtract 258 3 262: 259 Load 261(sCubeShadow)
263: 77(ResType) ImageSparseSampleDrefExplicitLod 257 258 262 Grad 259 260 263: 11(fvec4) Load 89(c4)
264: 10(float) CompositeExtract 263 1 264: 46(fvec3) Load 48(c3)
Store 261 264 265: 46(fvec3) Load 48(c3)
265: 6(int) CompositeExtract 263 0 266: 74(ptr) AccessChain 13(texel) 119
266: 6(int) Load 8(resident) 267: 10(float) CompositeExtract 263 3
267: 6(int) BitwiseOr 266 265 268: 77(ResType) ImageSparseSampleDrefExplicitLod 262 263 267 Grad 264 265
Store 8(resident) 267 269: 10(float) CompositeExtract 268 1
268: 106 Load 108(usCubeArray) Store 266 269
269: 11(fvec4) Load 89(c4) 270: 6(int) CompositeExtract 268 0
270: 46(fvec3) Load 48(c3) 271: 6(int) Load 8(resident)
271: 46(fvec3) Load 48(c3) 272: 6(int) BitwiseOr 271 270
272:111(ResType) ImageSparseSampleExplicitLod 268 269 Grad 270 271 Store 8(resident) 272
273: 21(ivec4) CompositeExtract 272 1 273: 106 Load 108(usCubeArray)
Store 23(utexel) 273 274: 11(fvec4) Load 89(c4)
274: 6(int) CompositeExtract 272 0 275: 46(fvec3) Load 48(c3)
275: 6(int) Load 8(resident) 276: 46(fvec3) Load 48(c3)
276: 6(int) BitwiseOr 275 274 277:111(ResType) ImageSparseSampleExplicitLod 273 274 Grad 275 276
Store 8(resident) 276 278: 21(ivec4) CompositeExtract 277 1
277: 27 Load 29(s2D) Store 23(utexel) 278
278: 31(fvec2) Load 33(c2) 279: 6(int) CompositeExtract 277 0
279: 31(fvec2) Load 33(c2) 280: 6(int) Load 8(resident)
280: 31(fvec2) Load 33(c2) 281: 6(int) BitwiseOr 280 279
281: 35(ResType) ImageSparseSampleExplicitLod 277 278 Grad ConstOffset 279 280 158 Store 8(resident) 281
282: 11(fvec4) CompositeExtract 281 1 282: 27 Load 29(s2D)
Store 13(texel) 282 283: 31(fvec2) Load 33(c2)
283: 6(int) CompositeExtract 281 0 284: 31(fvec2) Load 33(c2)
284: 6(int) Load 8(resident) 285: 31(fvec2) Load 33(c2)
285: 6(int) BitwiseOr 284 283 286: 35(ResType) ImageSparseSampleExplicitLod 282 283 Grad ConstOffset 284 285 158
Store 8(resident) 285 287: 11(fvec4) CompositeExtract 286 1
290: 287 Load 289(s2DRectShadow) Store 13(texel) 287
291: 46(fvec3) Load 48(c3) 288: 6(int) CompositeExtract 286 0
292: 31(fvec2) Load 33(c2) 289: 6(int) Load 8(resident)
293: 31(fvec2) Load 33(c2) 290: 6(int) BitwiseOr 289 288
295: 74(ptr) AccessChain 13(texel) 294 Store 8(resident) 290
296: 10(float) CompositeExtract 291 2 295: 292 Load 294(s2DRectShadow)
297: 77(ResType) ImageSparseSampleDrefExplicitLod 290 291 296 Grad ConstOffset 292 293 227 296: 46(fvec3) Load 48(c3)
298: 10(float) CompositeExtract 297 1 297: 31(fvec2) Load 33(c2)
Store 295 298 298: 31(fvec2) Load 33(c2)
299: 6(int) CompositeExtract 297 0 300: 74(ptr) AccessChain 13(texel) 299
300: 6(int) Load 8(resident) 301: 10(float) CompositeExtract 296 2
301: 6(int) BitwiseOr 300 299 302: 77(ResType) ImageSparseSampleDrefExplicitLod 295 296 301 Grad ConstOffset 297 298 232
Store 8(resident) 301 303: 10(float) CompositeExtract 302 1
302: 221 Load 223(is2DArray) Store 300 303
303: 46(fvec3) Load 48(c3) 304: 6(int) CompositeExtract 302 0
304: 31(fvec2) Load 33(c2) 305: 6(int) Load 8(resident)
305: 31(fvec2) Load 33(c2) 306: 6(int) BitwiseOr 305 304
307: 62(ResType) ImageSparseSampleExplicitLod 302 303 Grad ConstOffset 304 305 306 Store 8(resident) 306
308: 16(ivec4) CompositeExtract 307 1 307: 226 Load 228(is2DArray)
Store 18(itexel) 308 308: 46(fvec3) Load 48(c3)
309: 6(int) CompositeExtract 307 0 309: 31(fvec2) Load 33(c2)
310: 6(int) Load 8(resident) 310: 31(fvec2) Load 33(c2)
311: 6(int) BitwiseOr 310 309 312: 62(ResType) ImageSparseSampleExplicitLod 307 308 Grad ConstOffset 309 310 311
Store 8(resident) 311 313: 16(ivec4) CompositeExtract 312 1
312: 27 Load 29(s2D) Store 18(itexel) 313
313: 31(fvec2) Load 33(c2) 314: 6(int) CompositeExtract 312 0
314: 35(ResType) ImageSparseGather 312 313 9 315: 6(int) Load 8(resident)
315: 11(fvec4) CompositeExtract 314 1 316: 6(int) BitwiseOr 315 314
Store 13(texel) 315 Store 8(resident) 316
316: 6(int) CompositeExtract 314 0 317: 27 Load 29(s2D)
317: 6(int) Load 8(resident) 318: 31(fvec2) Load 33(c2)
318: 6(int) BitwiseOr 317 316 319: 35(ResType) ImageSparseGather 317 318 9
Store 8(resident) 318 320: 11(fvec4) CompositeExtract 319 1
319: 221 Load 223(is2DArray) Store 13(texel) 320
320: 46(fvec3) Load 48(c3) 321: 6(int) CompositeExtract 319 0
321: 62(ResType) ImageSparseGather 319 320 130 322: 6(int) Load 8(resident)
322: 16(ivec4) CompositeExtract 321 1 323: 6(int) BitwiseOr 322 321
Store 18(itexel) 322 Store 8(resident) 323
323: 6(int) CompositeExtract 321 0 324: 226 Load 228(is2DArray)
324: 6(int) Load 8(resident) 325: 46(fvec3) Load 48(c3)
325: 6(int) BitwiseOr 324 323 326: 62(ResType) ImageSparseGather 324 325 130
Store 8(resident) 325 327: 16(ivec4) CompositeExtract 326 1
326: 152 Load 154(s2DArrayShadow) Store 18(itexel) 327
327: 46(fvec3) Load 48(c3) 328: 6(int) CompositeExtract 326 0
328: 35(ResType) ImageSparseDrefGather 326 327 50 329: 6(int) Load 8(resident)
329: 11(fvec4) CompositeExtract 328 1 330: 6(int) BitwiseOr 329 328
Store 13(texel) 329 Store 8(resident) 330
330: 6(int) CompositeExtract 328 0 331: 152 Load 154(s2DArrayShadow)
331: 6(int) Load 8(resident) 332: 46(fvec3) Load 48(c3)
332: 6(int) BitwiseOr 331 330 333: 35(ResType) ImageSparseDrefGather 331 332 50
Store 8(resident) 332 334: 11(fvec4) CompositeExtract 333 1
333: 27 Load 29(s2D) Store 13(texel) 334
334: 31(fvec2) Load 33(c2) 335: 6(int) CompositeExtract 333 0
336: 35(ResType) ImageSparseGather 333 334 9 ConstOffset 335 336: 6(int) Load 8(resident)
337: 11(fvec4) CompositeExtract 336 1 337: 6(int) BitwiseOr 336 335
Store 13(texel) 337 Store 8(resident) 337
338: 6(int) CompositeExtract 336 0 338: 27 Load 29(s2D)
339: 6(int) Load 8(resident) 339: 31(fvec2) Load 33(c2)
340: 6(int) BitwiseOr 339 338 341: 35(ResType) ImageSparseGather 338 339 9 ConstOffset 340
Store 8(resident) 340 342: 11(fvec4) CompositeExtract 341 1
341: 221 Load 223(is2DArray) Store 13(texel) 342
342: 46(fvec3) Load 48(c3) 343: 6(int) CompositeExtract 341 0
343: 62(ResType) ImageSparseGather 341 342 130 ConstOffset 158 344: 6(int) Load 8(resident)
344: 16(ivec4) CompositeExtract 343 1 345: 6(int) BitwiseOr 344 343
Store 18(itexel) 344 Store 8(resident) 345
345: 6(int) CompositeExtract 343 0 346: 226 Load 228(is2DArray)
346: 6(int) Load 8(resident) 347: 46(fvec3) Load 48(c3)
347: 6(int) BitwiseOr 346 345 348: 62(ResType) ImageSparseGather 346 347 130 ConstOffset 158
Store 8(resident) 347 349: 16(ivec4) CompositeExtract 348 1
348: 287 Load 289(s2DRectShadow) Store 18(itexel) 349
349: 31(fvec2) Load 33(c2) 350: 6(int) CompositeExtract 348 0
350: 35(ResType) ImageSparseDrefGather 348 349 50 ConstOffset 236 351: 6(int) Load 8(resident)
351: 11(fvec4) CompositeExtract 350 1 352: 6(int) BitwiseOr 351 350
Store 13(texel) 351 Store 8(resident) 352
352: 6(int) CompositeExtract 350 0 353: 292 Load 294(s2DRectShadow)
353: 6(int) Load 8(resident) 354: 31(fvec2) Load 33(c2)
354: 6(int) BitwiseOr 353 352 355: 35(ResType) ImageSparseDrefGather 353 354 50 ConstOffset 241
Store 8(resident) 354 356: 11(fvec4) CompositeExtract 355 1
355: 27 Load 29(s2D) Store 13(texel) 356
356: 31(fvec2) Load 33(c2) 357: 6(int) CompositeExtract 355 0
361: 358 Load 360(offsets) 358: 6(int) Load 8(resident)
362: 35(ResType) ImageSparseGather 355 356 9 ConstOffsets 361 359: 6(int) BitwiseOr 358 357
363: 11(fvec4) CompositeExtract 362 1 Store 8(resident) 359
Store 13(texel) 363 360: 27 Load 29(s2D)
364: 6(int) CompositeExtract 362 0 361: 31(fvec2) Load 33(c2)
365: 6(int) Load 8(resident) 366: 363 Load 365(offsets)
366: 6(int) BitwiseOr 365 364 367: 35(ResType) ImageSparseGather 360 361 9 ConstOffsets 366
Store 8(resident) 366 368: 11(fvec4) CompositeExtract 367 1
367: 221 Load 223(is2DArray) Store 13(texel) 368
368: 46(fvec3) Load 48(c3) 369: 6(int) CompositeExtract 367 0
369: 358 Load 360(offsets) 370: 6(int) Load 8(resident)
370: 62(ResType) ImageSparseGather 367 368 130 ConstOffsets 369 371: 6(int) BitwiseOr 370 369
371: 16(ivec4) CompositeExtract 370 1 Store 8(resident) 371
Store 18(itexel) 371 372: 226 Load 228(is2DArray)
372: 6(int) CompositeExtract 370 0 373: 46(fvec3) Load 48(c3)
373: 6(int) Load 8(resident) 374: 363 Load 365(offsets)
374: 6(int) BitwiseOr 373 372 375: 62(ResType) ImageSparseGather 372 373 130 ConstOffsets 374
Store 8(resident) 374 376: 16(ivec4) CompositeExtract 375 1
375: 287 Load 289(s2DRectShadow) Store 18(itexel) 376
376: 31(fvec2) Load 33(c2) 377: 6(int) CompositeExtract 375 0
377: 358 Load 360(offsets) 378: 6(int) Load 8(resident)
378: 35(ResType) ImageSparseDrefGather 375 376 50 ConstOffsets 377 379: 6(int) BitwiseOr 378 377
379: 11(fvec4) CompositeExtract 378 1 Store 8(resident) 379
Store 13(texel) 379 380: 292 Load 294(s2DRectShadow)
380: 6(int) CompositeExtract 378 0 381: 31(fvec2) Load 33(c2)
381: 6(int) Load 8(resident) 382: 363 Load 365(offsets)
382: 6(int) BitwiseOr 381 380 383: 35(ResType) ImageSparseDrefGather 380 381 50 ConstOffsets 382
Store 8(resident) 382 384: 11(fvec4) CompositeExtract 383 1
386: 383 Load 385(i2D) Store 13(texel) 384
389: 143(ivec2) Load 388(ic2) 385: 6(int) CompositeExtract 383 0
390: 35(ResType) ImageSparseRead 386 389 386: 6(int) Load 8(resident)
391: 11(fvec4) CompositeExtract 390 1 387: 6(int) BitwiseOr 386 385
Store 13(texel) 391 Store 8(resident) 387
392: 6(int) CompositeExtract 390 0 391: 388 Load 390(i2D)
393: 6(int) Load 8(resident) 394: 143(ivec2) Load 393(ic2)
394: 6(int) BitwiseOr 393 392 395: 35(ResType) ImageSparseRead 391 394
Store 8(resident) 394 396: 11(fvec4) CompositeExtract 395 1
398: 395 Load 397(ii3D) Store 13(texel) 396
401: 129(ivec3) Load 400(ic3) 397: 6(int) CompositeExtract 395 0
402: 62(ResType) ImageSparseRead 398 401 398: 6(int) Load 8(resident)
403: 16(ivec4) CompositeExtract 402 1 399: 6(int) BitwiseOr 398 397
Store 18(itexel) 403 Store 8(resident) 399
404: 6(int) CompositeExtract 402 0 403: 400 Load 402(ii3D)
405: 6(int) Load 8(resident) 406: 129(ivec3) Load 405(ic3)
406: 6(int) BitwiseOr 405 404 407: 62(ResType) ImageSparseRead 403 406
Store 8(resident) 406 408: 16(ivec4) CompositeExtract 407 1
410: 407 Load 409(i2DMS) Store 18(itexel) 408
411: 143(ivec2) Load 388(ic2) 409: 6(int) CompositeExtract 407 0
412: 35(ResType) ImageSparseRead 410 411 Sample 144 410: 6(int) Load 8(resident)
413: 11(fvec4) CompositeExtract 412 1 411: 6(int) BitwiseOr 410 409
Store 13(texel) 413 Store 8(resident) 411
414: 6(int) CompositeExtract 412 0 415: 412 Load 414(i2DMS)
415: 6(int) Load 8(resident) 416: 143(ivec2) Load 393(ic2)
416: 6(int) BitwiseOr 415 414 417: 35(ResType) ImageSparseRead 415 416 Sample 144
Store 8(resident) 416 418: 11(fvec4) CompositeExtract 417 1
Store 13(texel) 418
419: 6(int) CompositeExtract 417 0
420: 6(int) Load 8(resident) 420: 6(int) Load 8(resident)
422: 421(bool) ImageSparseTexelsResident 420 421: 6(int) BitwiseOr 420 419
SelectionMerge 424 None Store 8(resident) 421
BranchConditional 422 423 426 425: 6(int) Load 8(resident)
423: Label 427: 426(bool) ImageSparseTexelsResident 425
425: 11(fvec4) Load 13(texel) SelectionMerge 429 None
Store 419 425 BranchConditional 427 428 431
Branch 424 428: Label
426: Label 430: 11(fvec4) Load 13(texel)
427: 16(ivec4) Load 18(itexel) Store 424 430
428: 11(fvec4) ConvertSToF 427 Branch 429
429: 21(ivec4) Load 23(utexel) 431: Label
430: 11(fvec4) ConvertUToF 429 432: 16(ivec4) Load 18(itexel)
431: 11(fvec4) FAdd 428 430 433: 11(fvec4) ConvertSToF 432
Store 419 431 434: 21(ivec4) Load 23(utexel)
Branch 424 435: 11(fvec4) ConvertUToF 434
424: Label 436: 11(fvec4) FAdd 433 435
432: 11(fvec4) Load 419 Store 424 436
Store 418(outColor) 432 Branch 429
429: Label
437: 11(fvec4) Load 424
Store 423(outColor) 437
Return Return
FunctionEnd FunctionEnd

View File

@ -7,13 +7,13 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 68 // Id's are bound by 67
Capability Shader Capability Shader
Capability InputAttachment Capability InputAttachment
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 15 27 54 EntryPoint Fragment 4 "main" 15 27 53
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 400 Source GLSL 400
Name 4 "main" Name 4 "main"
@ -24,27 +24,27 @@ Linked fragment stage:
Name 30 "sub" Name 30 "sub"
Name 35 "subMS" Name 35 "subMS"
Name 42 "isub" Name 42 "isub"
Name 46 "isubMS" Name 45 "isubMS"
Name 54 "ucolor" Name 53 "ucolor"
Name 57 "usub" Name 56 "usub"
Name 62 "usubMS" Name 61 "usubMS"
Decorate 30(sub) DescriptorSet 0 Decorate 30(sub) DescriptorSet 0
Decorate 30(sub) InputAttachmentIndex 1 Decorate 30(sub) InputAttachmentIndex 1
Decorate 35(subMS) DescriptorSet 0 Decorate 35(subMS) DescriptorSet 0
Decorate 35(subMS) InputAttachmentIndex 2 Decorate 35(subMS) InputAttachmentIndex 2
Decorate 42(isub) DescriptorSet 0 Decorate 42(isub) DescriptorSet 0
Decorate 42(isub) InputAttachmentIndex 3 Decorate 42(isub) InputAttachmentIndex 3
Decorate 46(isubMS) DescriptorSet 0 Decorate 45(isubMS) DescriptorSet 0
Decorate 46(isubMS) InputAttachmentIndex 4 Decorate 45(isubMS) InputAttachmentIndex 4
Decorate 57(usub) DescriptorSet 0 Decorate 56(usub) DescriptorSet 0
Decorate 57(usub) InputAttachmentIndex 5 Decorate 56(usub) InputAttachmentIndex 5
Decorate 62(usubMS) DescriptorSet 0 Decorate 61(usubMS) DescriptorSet 0
Decorate 62(usubMS) InputAttachmentIndex 6 Decorate 61(usubMS) InputAttachmentIndex 6
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
7: TypeImage 6(int) SubpassData multi-sampled nonsampled format:Unknown 7: TypeImage 6(int) SubpassData multi-sampled nonsampled format:Unknown
8: TypePointer Function 7 8: TypePointer UniformConstant 7
9: TypeFunction 2 8(ptr) 9: TypeFunction 2 8(ptr)
13: TypeVector 6(int) 4 13: TypeVector 6(int) 4
14: TypePointer Output 13(ivec4) 14: TypePointer Output 13(ivec4)
@ -66,18 +66,17 @@ Linked fragment stage:
40: TypeImage 6(int) SubpassData nonsampled format:Unknown 40: TypeImage 6(int) SubpassData nonsampled format:Unknown
41: TypePointer UniformConstant 40 41: TypePointer UniformConstant 40
42(isub): 41(ptr) Variable UniformConstant 42(isub): 41(ptr) Variable UniformConstant
45: TypePointer UniformConstant 7 45(isubMS): 8(ptr) Variable UniformConstant
46(isubMS): 45(ptr) Variable UniformConstant 50: TypeInt 32 0
51: TypeInt 32 0 51: TypeVector 50(int) 4
52: TypeVector 51(int) 4 52: TypePointer Output 51(ivec4)
53: TypePointer Output 52(ivec4) 53(ucolor): 52(ptr) Variable Output
54(ucolor): 53(ptr) Variable Output 54: TypeImage 50(int) SubpassData nonsampled format:Unknown
55: TypeImage 51(int) SubpassData nonsampled format:Unknown 55: TypePointer UniformConstant 54
56: TypePointer UniformConstant 55 56(usub): 55(ptr) Variable UniformConstant
57(usub): 56(ptr) Variable UniformConstant 59: TypeImage 50(int) SubpassData multi-sampled nonsampled format:Unknown
60: TypeImage 51(int) SubpassData multi-sampled nonsampled format:Unknown 60: TypePointer UniformConstant 59
61: TypePointer UniformConstant 60 61(usubMS): 60(ptr) Variable UniformConstant
62(usubMS): 61(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
31: 28 Load 30(sub) 31: 28 Load 30(sub)
@ -91,20 +90,20 @@ Linked fragment stage:
43: 40 Load 42(isub) 43: 40 Load 42(isub)
44: 13(ivec4) ImageRead 43 20 44: 13(ivec4) ImageRead 43 20
Store 15(icolor) 44 Store 15(icolor) 44
47: 7 Load 46(isubMS) 46: 7 Load 45(isubMS)
48: 13(ivec4) ImageRead 47 20 Sample 17 47: 13(ivec4) ImageRead 46 20 Sample 17
49: 13(ivec4) Load 15(icolor) 48: 13(ivec4) Load 15(icolor)
50: 13(ivec4) IAdd 49 48 49: 13(ivec4) IAdd 48 47
Store 15(icolor) 50 Store 15(icolor) 49
58: 55 Load 57(usub) 57: 54 Load 56(usub)
59: 52(ivec4) ImageRead 58 20 58: 51(ivec4) ImageRead 57 20
Store 54(ucolor) 59 Store 53(ucolor) 58
63: 60 Load 62(usubMS) 62: 59 Load 61(usubMS)
64: 52(ivec4) ImageRead 63 20 Sample 17 63: 51(ivec4) ImageRead 62 20 Sample 17
65: 52(ivec4) Load 54(ucolor) 64: 51(ivec4) Load 53(ucolor)
66: 52(ivec4) IAdd 65 64 65: 51(ivec4) IAdd 64 63
Store 54(ucolor) 66 Store 53(ucolor) 65
67: 2 FunctionCall 11(foo(iIPM1;) 46(isubMS) 66: 2 FunctionCall 11(foo(iIPM1;) 45(isubMS)
Return Return
FunctionEnd FunctionEnd
11(foo(iIPM1;): 2 Function None 9 11(foo(iIPM1;): 2 Function None 9

View File

@ -9,13 +9,13 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 290 // Id's are bound by 305
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 47 276 279 282 288 289 EntryPoint Fragment 4 "main" 47 291 294 297 303 304
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 140 Source GLSL 140
Name 4 "main" Name 4 "main"
@ -29,26 +29,26 @@ Linked fragment stage:
Name 26 "color" Name 26 "color"
Name 32 "texSampler1D" Name 32 "texSampler1D"
Name 47 "coords2D" Name 47 "coords2D"
Name 72 "texSampler2D" Name 76 "texSampler2D"
Name 98 "texSampler3D" Name 104 "texSampler3D"
Name 124 "texSamplerCube" Name 130 "texSamplerCube"
Name 139 "shadowSampler1D" Name 145 "shadowSampler1D"
Name 158 "shadowSampler2D" Name 164 "shadowSampler2D"
Name 207 "iCoords2D" Name 221 "iCoords2D"
Name 212 "iLod" Name 226 "iLod"
Name 221 "gradX" Name 236 "gradX"
Name 224 "gradY" Name 239 "gradY"
Name 276 "gl_FragColor" Name 291 "gl_FragColor"
Name 279 "u" Name 294 "u"
Name 282 "blend" Name 297 "blend"
Name 288 "scale" Name 303 "scale"
Name 289 "t" Name 304 "t"
Decorate 32(texSampler1D) DescriptorSet 0 Decorate 32(texSampler1D) DescriptorSet 0
Decorate 72(texSampler2D) DescriptorSet 0 Decorate 76(texSampler2D) DescriptorSet 0
Decorate 98(texSampler3D) DescriptorSet 0 Decorate 104(texSampler3D) DescriptorSet 0
Decorate 124(texSamplerCube) DescriptorSet 0 Decorate 130(texSamplerCube) DescriptorSet 0
Decorate 139(shadowSampler1D) DescriptorSet 0 Decorate 145(shadowSampler1D) DescriptorSet 0
Decorate 158(shadowSampler2D) DescriptorSet 0 Decorate 164(shadowSampler2D) DescriptorSet 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -73,46 +73,46 @@ Linked fragment stage:
45: TypeVector 6(float) 2 45: TypeVector 6(float) 2
46: TypePointer Input 45(fvec2) 46: TypePointer Input 45(fvec2)
47(coords2D): 46(ptr) Variable Input 47(coords2D): 46(ptr) Variable Input
69: TypeImage 6(float) 2D sampled format:Unknown 73: TypeImage 6(float) 2D sampled format:Unknown
70: TypeSampledImage 69 74: TypeSampledImage 73
71: TypePointer UniformConstant 70 75: TypePointer UniformConstant 74
72(texSampler2D): 71(ptr) Variable UniformConstant 76(texSampler2D): 75(ptr) Variable UniformConstant
95: TypeImage 6(float) 3D sampled format:Unknown 101: TypeImage 6(float) 3D sampled format:Unknown
96: TypeSampledImage 95 102: TypeSampledImage 101
97: TypePointer UniformConstant 96 103: TypePointer UniformConstant 102
98(texSampler3D): 97(ptr) Variable UniformConstant 104(texSampler3D): 103(ptr) Variable UniformConstant
121: TypeImage 6(float) Cube sampled format:Unknown 127: TypeImage 6(float) Cube sampled format:Unknown
122: TypeSampledImage 121 128: TypeSampledImage 127
123: TypePointer UniformConstant 122 129: TypePointer UniformConstant 128
124(texSamplerCube): 123(ptr) Variable UniformConstant 130(texSamplerCube): 129(ptr) Variable UniformConstant
136: TypeImage 6(float) 1D depth sampled format:Unknown 142: TypeImage 6(float) 1D depth sampled format:Unknown
137: TypeSampledImage 136 143: TypeSampledImage 142
138: TypePointer UniformConstant 137 144: TypePointer UniformConstant 143
139(shadowSampler1D): 138(ptr) Variable UniformConstant 145(shadowSampler1D): 144(ptr) Variable UniformConstant
155: TypeImage 6(float) 2D depth sampled format:Unknown 161: TypeImage 6(float) 2D depth sampled format:Unknown
156: TypeSampledImage 155 162: TypeSampledImage 161
157: TypePointer UniformConstant 156 163: TypePointer UniformConstant 162
158(shadowSampler2D): 157(ptr) Variable UniformConstant 164(shadowSampler2D): 163(ptr) Variable UniformConstant
204: TypeInt 32 1 218: TypeInt 32 1
205: TypeVector 204(int) 2 219: TypeVector 218(int) 2
206: TypePointer Function 205(ivec2) 220: TypePointer Function 219(ivec2)
208: 204(int) Constant 0 222: 218(int) Constant 0
209: 204(int) Constant 5 223: 218(int) Constant 5
210: 205(ivec2) ConstantComposite 208 209 224: 219(ivec2) ConstantComposite 222 223
211: TypePointer Function 204(int) 225: TypePointer Function 218(int)
213: 204(int) Constant 1 227: 218(int) Constant 1
220: TypePointer Function 45(fvec2) 235: TypePointer Function 45(fvec2)
249: 204(int) Constant 3 264: 218(int) Constant 3
250: 204(int) Constant 4294967289 265: 218(int) Constant 4294967289
251: 205(ivec2) ConstantComposite 249 250 266: 219(ivec2) ConstantComposite 264 265
275: TypePointer Output 22(fvec4) 290: TypePointer Output 22(fvec4)
276(gl_FragColor): 275(ptr) Variable Output 291(gl_FragColor): 290(ptr) Variable Output
278: TypePointer Input 22(fvec4) 293: TypePointer Input 22(fvec4)
279(u): 278(ptr) Variable Input 294(u): 293(ptr) Variable Input
281: TypePointer Input 6(float) 296: TypePointer Input 6(float)
282(blend): 281(ptr) Variable Input 297(blend): 296(ptr) Variable Input
288(scale): 46(ptr) Variable Input 303(scale): 46(ptr) Variable Input
289(t): 46(ptr) Variable Input 304(t): 46(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(blendscale): 7(ptr) Variable Function 8(blendscale): 7(ptr) Variable Function
@ -123,10 +123,10 @@ Linked fragment stage:
18(coords3D): 17(ptr) Variable Function 18(coords3D): 17(ptr) Variable Function
24(coords4D): 23(ptr) Variable Function 24(coords4D): 23(ptr) Variable Function
26(color): 23(ptr) Variable Function 26(color): 23(ptr) Variable Function
207(iCoords2D): 206(ptr) Variable Function 221(iCoords2D): 220(ptr) Variable Function
212(iLod): 211(ptr) Variable Function 226(iLod): 225(ptr) Variable Function
221(gradX): 220(ptr) Variable Function 236(gradX): 235(ptr) Variable Function
224(gradY): 220(ptr) Variable Function 239(gradY): 235(ptr) Variable Function
Store 8(blendscale) 9 Store 8(blendscale) 9
Store 10(bias) 11 Store 10(bias) 11
Store 12(lod) 13 Store 12(lod) 13
@ -156,229 +156,244 @@ Linked fragment stage:
Store 26(color) 51 Store 26(color) 51
52: 30 Load 32(texSampler1D) 52: 30 Load 32(texSampler1D)
53: 22(fvec4) Load 24(coords4D) 53: 22(fvec4) Load 24(coords4D)
54: 22(fvec4) ImageSampleProjImplicitLod 52 53 54: 6(float) CompositeExtract 53 3
55: 22(fvec4) Load 26(color) 55: 22(fvec4) CompositeInsert 54 53 1
56: 22(fvec4) FAdd 55 54 56: 22(fvec4) ImageSampleProjImplicitLod 52 55
Store 26(color) 56 57: 22(fvec4) Load 26(color)
57: 30 Load 32(texSampler1D) 58: 22(fvec4) FAdd 57 56
58: 45(fvec2) Load 47(coords2D) Store 26(color) 58
59: 6(float) Load 10(bias) 59: 30 Load 32(texSampler1D)
60: 22(fvec4) ImageSampleProjImplicitLod 57 58 Bias 59 60: 45(fvec2) Load 47(coords2D)
61: 22(fvec4) Load 26(color) 61: 6(float) Load 10(bias)
62: 22(fvec4) FAdd 61 60 62: 22(fvec4) ImageSampleProjImplicitLod 59 60 Bias 61
Store 26(color) 62 63: 22(fvec4) Load 26(color)
63: 30 Load 32(texSampler1D) 64: 22(fvec4) FAdd 63 62
64: 22(fvec4) Load 24(coords4D) Store 26(color) 64
65: 6(float) Load 10(bias) 65: 30 Load 32(texSampler1D)
66: 22(fvec4) ImageSampleProjImplicitLod 63 64 Bias 65 66: 22(fvec4) Load 24(coords4D)
67: 22(fvec4) Load 26(color) 67: 6(float) Load 10(bias)
68: 22(fvec4) FAdd 67 66 68: 6(float) CompositeExtract 66 3
Store 26(color) 68 69: 22(fvec4) CompositeInsert 68 66 1
73: 70 Load 72(texSampler2D) 70: 22(fvec4) ImageSampleProjImplicitLod 65 69 Bias 67
74: 45(fvec2) Load 47(coords2D) 71: 22(fvec4) Load 26(color)
75: 22(fvec4) ImageSampleImplicitLod 73 74 72: 22(fvec4) FAdd 71 70
76: 22(fvec4) Load 26(color) Store 26(color) 72
77: 22(fvec4) FAdd 76 75 77: 74 Load 76(texSampler2D)
Store 26(color) 77 78: 45(fvec2) Load 47(coords2D)
78: 70 Load 72(texSampler2D) 79: 22(fvec4) ImageSampleImplicitLod 77 78
79: 45(fvec2) Load 47(coords2D) 80: 22(fvec4) Load 26(color)
80: 6(float) Load 10(bias) 81: 22(fvec4) FAdd 80 79
81: 22(fvec4) ImageSampleImplicitLod 78 79 Bias 80 Store 26(color) 81
82: 22(fvec4) Load 26(color) 82: 74 Load 76(texSampler2D)
83: 22(fvec4) FAdd 82 81 83: 45(fvec2) Load 47(coords2D)
Store 26(color) 83 84: 6(float) Load 10(bias)
84: 70 Load 72(texSampler2D) 85: 22(fvec4) ImageSampleImplicitLod 82 83 Bias 84
85: 16(fvec3) Load 18(coords3D) 86: 22(fvec4) Load 26(color)
86: 22(fvec4) ImageSampleProjImplicitLod 84 85 87: 22(fvec4) FAdd 86 85
87: 22(fvec4) Load 26(color) Store 26(color) 87
88: 22(fvec4) FAdd 87 86 88: 74 Load 76(texSampler2D)
Store 26(color) 88 89: 16(fvec3) Load 18(coords3D)
89: 70 Load 72(texSampler2D) 90: 22(fvec4) ImageSampleProjImplicitLod 88 89
90: 22(fvec4) Load 24(coords4D) 91: 22(fvec4) Load 26(color)
91: 6(float) Load 10(bias) 92: 22(fvec4) FAdd 91 90
92: 22(fvec4) ImageSampleProjImplicitLod 89 90 Bias 91 Store 26(color) 92
93: 22(fvec4) Load 26(color) 93: 74 Load 76(texSampler2D)
94: 22(fvec4) FAdd 93 92 94: 22(fvec4) Load 24(coords4D)
Store 26(color) 94 95: 6(float) Load 10(bias)
99: 96 Load 98(texSampler3D) 96: 6(float) CompositeExtract 94 3
100: 16(fvec3) Load 18(coords3D) 97: 22(fvec4) CompositeInsert 96 94 2
101: 22(fvec4) ImageSampleImplicitLod 99 100 98: 22(fvec4) ImageSampleProjImplicitLod 93 97 Bias 95
102: 22(fvec4) Load 26(color) 99: 22(fvec4) Load 26(color)
103: 22(fvec4) FAdd 102 101 100: 22(fvec4) FAdd 99 98
Store 26(color) 103 Store 26(color) 100
104: 96 Load 98(texSampler3D) 105: 102 Load 104(texSampler3D)
105: 16(fvec3) Load 18(coords3D) 106: 16(fvec3) Load 18(coords3D)
106: 6(float) Load 10(bias) 107: 22(fvec4) ImageSampleImplicitLod 105 106
107: 22(fvec4) ImageSampleImplicitLod 104 105 Bias 106
108: 22(fvec4) Load 26(color) 108: 22(fvec4) Load 26(color)
109: 22(fvec4) FAdd 108 107 109: 22(fvec4) FAdd 108 107
Store 26(color) 109 Store 26(color) 109
110: 96 Load 98(texSampler3D) 110: 102 Load 104(texSampler3D)
111: 22(fvec4) Load 24(coords4D) 111: 16(fvec3) Load 18(coords3D)
112: 22(fvec4) ImageSampleProjImplicitLod 110 111 112: 6(float) Load 10(bias)
113: 22(fvec4) Load 26(color) 113: 22(fvec4) ImageSampleImplicitLod 110 111 Bias 112
114: 22(fvec4) FAdd 113 112 114: 22(fvec4) Load 26(color)
Store 26(color) 114 115: 22(fvec4) FAdd 114 113
115: 96 Load 98(texSampler3D) Store 26(color) 115
116: 22(fvec4) Load 24(coords4D) 116: 102 Load 104(texSampler3D)
117: 6(float) Load 10(bias) 117: 22(fvec4) Load 24(coords4D)
118: 22(fvec4) ImageSampleProjImplicitLod 115 116 Bias 117 118: 22(fvec4) ImageSampleProjImplicitLod 116 117
119: 22(fvec4) Load 26(color) 119: 22(fvec4) Load 26(color)
120: 22(fvec4) FAdd 119 118 120: 22(fvec4) FAdd 119 118
Store 26(color) 120 Store 26(color) 120
125: 122 Load 124(texSamplerCube) 121: 102 Load 104(texSampler3D)
126: 16(fvec3) Load 18(coords3D) 122: 22(fvec4) Load 24(coords4D)
127: 22(fvec4) ImageSampleImplicitLod 125 126 123: 6(float) Load 10(bias)
128: 22(fvec4) Load 26(color) 124: 22(fvec4) ImageSampleProjImplicitLod 121 122 Bias 123
129: 22(fvec4) FAdd 128 127 125: 22(fvec4) Load 26(color)
Store 26(color) 129 126: 22(fvec4) FAdd 125 124
130: 122 Load 124(texSamplerCube) Store 26(color) 126
131: 16(fvec3) Load 18(coords3D) 131: 128 Load 130(texSamplerCube)
132: 6(float) Load 10(bias) 132: 16(fvec3) Load 18(coords3D)
133: 22(fvec4) ImageSampleImplicitLod 130 131 Bias 132 133: 22(fvec4) ImageSampleImplicitLod 131 132
134: 22(fvec4) Load 26(color) 134: 22(fvec4) Load 26(color)
135: 22(fvec4) FAdd 134 133 135: 22(fvec4) FAdd 134 133
Store 26(color) 135 Store 26(color) 135
140: 137 Load 139(shadowSampler1D) 136: 128 Load 130(texSamplerCube)
141: 16(fvec3) Load 18(coords3D) 137: 16(fvec3) Load 18(coords3D)
142: 6(float) CompositeExtract 141 2 138: 6(float) Load 10(bias)
143: 6(float) ImageSampleDrefImplicitLod 140 141 142 139: 22(fvec4) ImageSampleImplicitLod 136 137 Bias 138
144: 22(fvec4) Load 26(color) 140: 22(fvec4) Load 26(color)
145: 22(fvec4) CompositeConstruct 143 143 143 143 141: 22(fvec4) FAdd 140 139
146: 22(fvec4) FAdd 144 145 Store 26(color) 141
Store 26(color) 146 146: 143 Load 145(shadowSampler1D)
147: 137 Load 139(shadowSampler1D) 147: 16(fvec3) Load 18(coords3D)
148: 16(fvec3) Load 18(coords3D) 148: 6(float) CompositeExtract 147 2
149: 6(float) Load 10(bias) 149: 6(float) ImageSampleDrefImplicitLod 146 147 148
150: 6(float) CompositeExtract 148 2 150: 22(fvec4) Load 26(color)
151: 6(float) ImageSampleDrefImplicitLod 147 148 150 Bias 149 151: 22(fvec4) CompositeConstruct 149 149 149 149
152: 22(fvec4) Load 26(color) 152: 22(fvec4) FAdd 150 151
153: 22(fvec4) CompositeConstruct 151 151 151 151 Store 26(color) 152
154: 22(fvec4) FAdd 152 153 153: 143 Load 145(shadowSampler1D)
Store 26(color) 154 154: 16(fvec3) Load 18(coords3D)
159: 156 Load 158(shadowSampler2D) 155: 6(float) Load 10(bias)
160: 16(fvec3) Load 18(coords3D) 156: 6(float) CompositeExtract 154 2
161: 6(float) CompositeExtract 160 2 157: 6(float) ImageSampleDrefImplicitLod 153 154 156 Bias 155
162: 6(float) ImageSampleDrefImplicitLod 159 160 161 158: 22(fvec4) Load 26(color)
163: 22(fvec4) Load 26(color) 159: 22(fvec4) CompositeConstruct 157 157 157 157
164: 22(fvec4) CompositeConstruct 162 162 162 162 160: 22(fvec4) FAdd 158 159
165: 22(fvec4) FAdd 163 164 Store 26(color) 160
Store 26(color) 165 165: 162 Load 164(shadowSampler2D)
166: 156 Load 158(shadowSampler2D) 166: 16(fvec3) Load 18(coords3D)
167: 16(fvec3) Load 18(coords3D) 167: 6(float) CompositeExtract 166 2
168: 6(float) Load 10(bias) 168: 6(float) ImageSampleDrefImplicitLod 165 166 167
169: 6(float) CompositeExtract 167 2 169: 22(fvec4) Load 26(color)
170: 6(float) ImageSampleDrefImplicitLod 166 167 169 Bias 168 170: 22(fvec4) CompositeConstruct 168 168 168 168
171: 22(fvec4) Load 26(color) 171: 22(fvec4) FAdd 169 170
172: 22(fvec4) CompositeConstruct 170 170 170 170 Store 26(color) 171
173: 22(fvec4) FAdd 171 172 172: 162 Load 164(shadowSampler2D)
Store 26(color) 173 173: 16(fvec3) Load 18(coords3D)
174: 137 Load 139(shadowSampler1D) 174: 6(float) Load 10(bias)
175: 22(fvec4) Load 24(coords4D) 175: 6(float) CompositeExtract 173 2
176: 6(float) CompositeExtract 175 2 176: 6(float) ImageSampleDrefImplicitLod 172 173 175 Bias 174
177: 6(float) ImageSampleProjDrefImplicitLod 174 175 176 177: 22(fvec4) Load 26(color)
178: 22(fvec4) Load 26(color) 178: 22(fvec4) CompositeConstruct 176 176 176 176
179: 22(fvec4) CompositeConstruct 177 177 177 177 179: 22(fvec4) FAdd 177 178
180: 22(fvec4) FAdd 178 179 Store 26(color) 179
Store 26(color) 180 180: 143 Load 145(shadowSampler1D)
181: 137 Load 139(shadowSampler1D) 181: 22(fvec4) Load 24(coords4D)
182: 22(fvec4) Load 24(coords4D) 182: 6(float) CompositeExtract 181 2
183: 6(float) Load 10(bias) 183: 6(float) CompositeExtract 181 3
184: 6(float) CompositeExtract 182 2 184: 22(fvec4) CompositeInsert 183 181 1
185: 6(float) ImageSampleProjDrefImplicitLod 181 182 184 Bias 183 185: 6(float) ImageSampleProjDrefImplicitLod 180 184 182
186: 22(fvec4) Load 26(color) 186: 22(fvec4) Load 26(color)
187: 22(fvec4) CompositeConstruct 185 185 185 185 187: 22(fvec4) CompositeConstruct 185 185 185 185
188: 22(fvec4) FAdd 186 187 188: 22(fvec4) FAdd 186 187
Store 26(color) 188 Store 26(color) 188
189: 156 Load 158(shadowSampler2D) 189: 143 Load 145(shadowSampler1D)
190: 22(fvec4) Load 24(coords4D) 190: 22(fvec4) Load 24(coords4D)
191: 6(float) CompositeExtract 190 2 191: 6(float) Load 10(bias)
192: 6(float) ImageSampleProjDrefImplicitLod 189 190 191 192: 6(float) CompositeExtract 190 2
193: 22(fvec4) Load 26(color) 193: 6(float) CompositeExtract 190 3
194: 22(fvec4) CompositeConstruct 192 192 192 192 194: 22(fvec4) CompositeInsert 193 190 1
195: 22(fvec4) FAdd 193 194 195: 6(float) ImageSampleProjDrefImplicitLod 189 194 192 Bias 191
Store 26(color) 195 196: 22(fvec4) Load 26(color)
196: 156 Load 158(shadowSampler2D) 197: 22(fvec4) CompositeConstruct 195 195 195 195
197: 22(fvec4) Load 24(coords4D) 198: 22(fvec4) FAdd 196 197
198: 6(float) Load 10(bias) Store 26(color) 198
199: 6(float) CompositeExtract 197 2 199: 162 Load 164(shadowSampler2D)
200: 6(float) ImageSampleProjDrefImplicitLod 196 197 199 Bias 198 200: 22(fvec4) Load 24(coords4D)
201: 22(fvec4) Load 26(color) 201: 6(float) CompositeExtract 200 2
202: 22(fvec4) CompositeConstruct 200 200 200 200 202: 6(float) CompositeExtract 200 3
203: 22(fvec4) FAdd 201 202 203: 22(fvec4) CompositeInsert 202 200 2
Store 26(color) 203 204: 6(float) ImageSampleProjDrefImplicitLod 199 203 201
Store 207(iCoords2D) 210 205: 22(fvec4) Load 26(color)
Store 212(iLod) 213 206: 22(fvec4) CompositeConstruct 204 204 204 204
214: 70 Load 72(texSampler2D) 207: 22(fvec4) FAdd 205 206
215: 205(ivec2) Load 207(iCoords2D) Store 26(color) 207
216: 204(int) Load 212(iLod) 208: 162 Load 164(shadowSampler2D)
217: 22(fvec4) ImageFetch 214 215 Lod 216 209: 22(fvec4) Load 24(coords4D)
218: 22(fvec4) Load 26(color) 210: 6(float) Load 10(bias)
219: 22(fvec4) FAdd 218 217 211: 6(float) CompositeExtract 209 2
Store 26(color) 219 212: 6(float) CompositeExtract 209 3
222: 45(fvec2) Load 47(coords2D) 213: 22(fvec4) CompositeInsert 212 209 2
223: 45(fvec2) DPdx 222 214: 6(float) ImageSampleProjDrefImplicitLod 208 213 211 Bias 210
Store 221(gradX) 223 215: 22(fvec4) Load 26(color)
225: 45(fvec2) Load 47(coords2D) 216: 22(fvec4) CompositeConstruct 214 214 214 214
226: 45(fvec2) DPdy 225 217: 22(fvec4) FAdd 215 216
Store 224(gradY) 226 Store 26(color) 217
227: 70 Load 72(texSampler2D) Store 221(iCoords2D) 224
228: 45(fvec2) Load 47(coords2D) Store 226(iLod) 227
229: 45(fvec2) Load 221(gradX) 228: 74 Load 76(texSampler2D)
230: 45(fvec2) Load 224(gradY) 229: 219(ivec2) Load 221(iCoords2D)
231: 22(fvec4) ImageSampleExplicitLod 227 228 Grad 229 230 230: 218(int) Load 226(iLod)
232: 22(fvec4) Load 26(color) 231: 73 Image 228
233: 22(fvec4) FAdd 232 231 232: 22(fvec4) ImageFetch 231 229 Lod 230
Store 26(color) 233 233: 22(fvec4) Load 26(color)
234: 70 Load 72(texSampler2D) 234: 22(fvec4) FAdd 233 232
235: 45(fvec2) Load 47(coords2D) Store 26(color) 234
236: 6(float) Load 14(proj) 237: 45(fvec2) Load 47(coords2D)
237: 6(float) CompositeExtract 235 0 238: 45(fvec2) DPdx 237
238: 6(float) CompositeExtract 235 1 Store 236(gradX) 238
239: 16(fvec3) CompositeConstruct 237 238 236 240: 45(fvec2) Load 47(coords2D)
240: 45(fvec2) Load 221(gradX) 241: 45(fvec2) DPdy 240
241: 45(fvec2) Load 224(gradY) Store 239(gradY) 241
242: 22(fvec4) ImageSampleProjExplicitLod 234 239 Grad 240 241 242: 74 Load 76(texSampler2D)
243: 22(fvec4) Load 26(color) 243: 45(fvec2) Load 47(coords2D)
244: 22(fvec4) FAdd 243 242 244: 45(fvec2) Load 236(gradX)
Store 26(color) 244 245: 45(fvec2) Load 239(gradY)
245: 70 Load 72(texSampler2D) 246: 22(fvec4) ImageSampleExplicitLod 242 243 Grad 244 245
246: 45(fvec2) Load 47(coords2D) 247: 22(fvec4) Load 26(color)
247: 45(fvec2) Load 221(gradX) 248: 22(fvec4) FAdd 247 246
248: 45(fvec2) Load 224(gradY) Store 26(color) 248
252: 22(fvec4) ImageSampleExplicitLod 245 246 Grad ConstOffset 247 248 251 249: 74 Load 76(texSampler2D)
253: 22(fvec4) Load 26(color) 250: 45(fvec2) Load 47(coords2D)
254: 22(fvec4) FAdd 253 252 251: 6(float) Load 14(proj)
Store 26(color) 254 252: 6(float) CompositeExtract 250 0
255: 70 Load 72(texSampler2D) 253: 6(float) CompositeExtract 250 1
256: 16(fvec3) Load 18(coords3D) 254: 16(fvec3) CompositeConstruct 252 253 251
257: 45(fvec2) Load 221(gradX) 255: 45(fvec2) Load 236(gradX)
258: 45(fvec2) Load 224(gradY) 256: 45(fvec2) Load 239(gradY)
259: 22(fvec4) ImageSampleProjExplicitLod 255 256 Grad ConstOffset 257 258 251 257: 22(fvec4) ImageSampleProjExplicitLod 249 254 Grad 255 256
260: 22(fvec4) Load 26(color) 258: 22(fvec4) Load 26(color)
261: 22(fvec4) FAdd 260 259 259: 22(fvec4) FAdd 258 257
Store 26(color) 261 Store 26(color) 259
262: 156 Load 158(shadowSampler2D) 260: 74 Load 76(texSampler2D)
263: 45(fvec2) Load 47(coords2D) 261: 45(fvec2) Load 47(coords2D)
264: 6(float) Load 12(lod) 262: 45(fvec2) Load 236(gradX)
265: 6(float) CompositeExtract 263 0 263: 45(fvec2) Load 239(gradY)
266: 6(float) CompositeExtract 263 1 267: 22(fvec4) ImageSampleExplicitLod 260 261 Grad ConstOffset 262 263 266
267: 16(fvec3) CompositeConstruct 265 266 264 268: 22(fvec4) Load 26(color)
268: 45(fvec2) Load 221(gradX) 269: 22(fvec4) FAdd 268 267
269: 45(fvec2) Load 224(gradY) Store 26(color) 269
270: 6(float) CompositeExtract 267 2 270: 74 Load 76(texSampler2D)
271: 6(float) ImageSampleDrefExplicitLod 262 267 270 Grad 268 269 271: 16(fvec3) Load 18(coords3D)
272: 22(fvec4) Load 26(color) 272: 45(fvec2) Load 236(gradX)
273: 22(fvec4) CompositeConstruct 271 271 271 271 273: 45(fvec2) Load 239(gradY)
274: 22(fvec4) FAdd 272 273 274: 22(fvec4) ImageSampleProjExplicitLod 270 271 Grad ConstOffset 272 273 266
Store 26(color) 274 275: 22(fvec4) Load 26(color)
277: 22(fvec4) Load 26(color) 276: 22(fvec4) FAdd 275 274
280: 22(fvec4) Load 279(u) Store 26(color) 276
283: 6(float) Load 282(blend) 277: 162 Load 164(shadowSampler2D)
284: 6(float) Load 8(blendscale) 278: 45(fvec2) Load 47(coords2D)
285: 6(float) FMul 283 284 279: 6(float) Load 12(lod)
286: 22(fvec4) CompositeConstruct 285 285 285 285 280: 6(float) CompositeExtract 278 0
287: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 286 281: 6(float) CompositeExtract 278 1
Store 276(gl_FragColor) 287 282: 16(fvec3) CompositeConstruct 280 281 279
283: 45(fvec2) Load 236(gradX)
284: 45(fvec2) Load 239(gradY)
285: 6(float) CompositeExtract 282 2
286: 6(float) ImageSampleDrefExplicitLod 277 282 285 Grad 283 284
287: 22(fvec4) Load 26(color)
288: 22(fvec4) CompositeConstruct 286 286 286 286
289: 22(fvec4) FAdd 287 288
Store 26(color) 289
292: 22(fvec4) Load 26(color)
295: 22(fvec4) Load 294(u)
298: 6(float) Load 297(blend)
299: 6(float) Load 8(blendscale)
300: 6(float) FMul 298 299
301: 22(fvec4) CompositeConstruct 300 300 300 300
302: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 292 295 301
Store 291(gl_FragColor) 302
Return Return
FunctionEnd FunctionEnd

View File

@ -5,13 +5,13 @@ Linked vertex stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 142 // Id's are bound by 150
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 39 140 EntryPoint Vertex 4 "main" 39 148
Source GLSL 140 Source GLSL 140
Name 4 "main" Name 4 "main"
Name 8 "lod" Name 8 "lod"
@ -21,19 +21,19 @@ Linked vertex stage:
Name 23 "color" Name 23 "color"
Name 29 "texSampler1D" Name 29 "texSampler1D"
Name 39 "coords2D" Name 39 "coords2D"
Name 54 "texSampler2D" Name 56 "texSampler2D"
Name 76 "texSampler3D" Name 80 "texSampler3D"
Name 92 "texSamplerCube" Name 96 "texSamplerCube"
Name 102 "shadowSampler1D" Name 106 "shadowSampler1D"
Name 114 "shadowSampler2D" Name 118 "shadowSampler2D"
Name 140 "gl_Position" Name 148 "gl_Position"
Decorate 29(texSampler1D) DescriptorSet 0 Decorate 29(texSampler1D) DescriptorSet 0
Decorate 54(texSampler2D) DescriptorSet 0 Decorate 56(texSampler2D) DescriptorSet 0
Decorate 76(texSampler3D) DescriptorSet 0 Decorate 80(texSampler3D) DescriptorSet 0
Decorate 92(texSamplerCube) DescriptorSet 0 Decorate 96(texSamplerCube) DescriptorSet 0
Decorate 102(shadowSampler1D) DescriptorSet 0 Decorate 106(shadowSampler1D) DescriptorSet 0
Decorate 114(shadowSampler2D) DescriptorSet 0 Decorate 118(shadowSampler2D) DescriptorSet 0
Decorate 140(gl_Position) BuiltIn Position Decorate 148(gl_Position) BuiltIn Position
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -58,28 +58,28 @@ Linked vertex stage:
37: TypeVector 6(float) 2 37: TypeVector 6(float) 2
38: TypePointer Input 37(fvec2) 38: TypePointer Input 37(fvec2)
39(coords2D): 38(ptr) Variable Input 39(coords2D): 38(ptr) Variable Input
51: TypeImage 6(float) 2D sampled format:Unknown 53: TypeImage 6(float) 2D sampled format:Unknown
52: TypeSampledImage 51 54: TypeSampledImage 53
53: TypePointer UniformConstant 52 55: TypePointer UniformConstant 54
54(texSampler2D): 53(ptr) Variable UniformConstant 56(texSampler2D): 55(ptr) Variable UniformConstant
73: TypeImage 6(float) 3D sampled format:Unknown 77: TypeImage 6(float) 3D sampled format:Unknown
74: TypeSampledImage 73 78: TypeSampledImage 77
75: TypePointer UniformConstant 74 79: TypePointer UniformConstant 78
76(texSampler3D): 75(ptr) Variable UniformConstant 80(texSampler3D): 79(ptr) Variable UniformConstant
89: TypeImage 6(float) Cube sampled format:Unknown 93: TypeImage 6(float) Cube sampled format:Unknown
90: TypeSampledImage 89 94: TypeSampledImage 93
91: TypePointer UniformConstant 90 95: TypePointer UniformConstant 94
92(texSamplerCube): 91(ptr) Variable UniformConstant 96(texSamplerCube): 95(ptr) Variable UniformConstant
99: TypeImage 6(float) 1D depth sampled format:Unknown 103: TypeImage 6(float) 1D depth sampled format:Unknown
100: TypeSampledImage 99 104: TypeSampledImage 103
101: TypePointer UniformConstant 100 105: TypePointer UniformConstant 104
102(shadowSampler1D): 101(ptr) Variable UniformConstant 106(shadowSampler1D): 105(ptr) Variable UniformConstant
111: TypeImage 6(float) 2D depth sampled format:Unknown 115: TypeImage 6(float) 2D depth sampled format:Unknown
112: TypeSampledImage 111 116: TypeSampledImage 115
113: TypePointer UniformConstant 112 117: TypePointer UniformConstant 116
114(shadowSampler2D): 113(ptr) Variable UniformConstant 118(shadowSampler2D): 117(ptr) Variable UniformConstant
139: TypePointer Output 18(fvec4) 147: TypePointer Output 18(fvec4)
140(gl_Position): 139(ptr) Variable Output 148(gl_Position): 147(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(lod): 7(ptr) Variable Function 8(lod): 7(ptr) Variable Function
@ -109,89 +109,97 @@ Linked vertex stage:
45: 27 Load 29(texSampler1D) 45: 27 Load 29(texSampler1D)
46: 18(fvec4) Load 20(coords4D) 46: 18(fvec4) Load 20(coords4D)
47: 6(float) Load 8(lod) 47: 6(float) Load 8(lod)
48: 18(fvec4) ImageSampleProjExplicitLod 45 46 Lod 47 48: 6(float) CompositeExtract 46 3
49: 18(fvec4) Load 23(color) 49: 18(fvec4) CompositeInsert 48 46 1
50: 18(fvec4) FAdd 49 48 50: 18(fvec4) ImageSampleProjExplicitLod 45 49 Lod 47
Store 23(color) 50 51: 18(fvec4) Load 23(color)
55: 52 Load 54(texSampler2D) 52: 18(fvec4) FAdd 51 50
56: 37(fvec2) Load 39(coords2D) Store 23(color) 52
57: 6(float) Load 8(lod) 57: 54 Load 56(texSampler2D)
58: 18(fvec4) ImageSampleExplicitLod 55 56 Lod 57 58: 37(fvec2) Load 39(coords2D)
59: 18(fvec4) Load 23(color) 59: 6(float) Load 8(lod)
60: 18(fvec4) FAdd 59 58 60: 18(fvec4) ImageSampleExplicitLod 57 58 Lod 59
Store 23(color) 60 61: 18(fvec4) Load 23(color)
61: 52 Load 54(texSampler2D) 62: 18(fvec4) FAdd 61 60
62: 12(fvec3) Load 14(coords3D) Store 23(color) 62
63: 6(float) Load 8(lod) 63: 54 Load 56(texSampler2D)
64: 18(fvec4) ImageSampleProjExplicitLod 61 62 Lod 63 64: 12(fvec3) Load 14(coords3D)
65: 18(fvec4) Load 23(color) 65: 6(float) Load 8(lod)
66: 18(fvec4) FAdd 65 64 66: 18(fvec4) ImageSampleProjExplicitLod 63 64 Lod 65
Store 23(color) 66 67: 18(fvec4) Load 23(color)
67: 52 Load 54(texSampler2D) 68: 18(fvec4) FAdd 67 66
68: 18(fvec4) Load 20(coords4D) Store 23(color) 68
69: 6(float) Load 8(lod) 69: 54 Load 56(texSampler2D)
70: 18(fvec4) ImageSampleProjExplicitLod 67 68 Lod 69 70: 18(fvec4) Load 20(coords4D)
71: 18(fvec4) Load 23(color) 71: 6(float) Load 8(lod)
72: 18(fvec4) FAdd 71 70 72: 6(float) CompositeExtract 70 3
Store 23(color) 72 73: 18(fvec4) CompositeInsert 72 70 2
77: 74 Load 76(texSampler3D) 74: 18(fvec4) ImageSampleProjExplicitLod 69 73 Lod 71
78: 12(fvec3) Load 14(coords3D) 75: 18(fvec4) Load 23(color)
79: 6(float) Load 8(lod) 76: 18(fvec4) FAdd 75 74
80: 18(fvec4) ImageSampleExplicitLod 77 78 Lod 79 Store 23(color) 76
81: 18(fvec4) Load 23(color) 81: 78 Load 80(texSampler3D)
82: 18(fvec4) FAdd 81 80 82: 12(fvec3) Load 14(coords3D)
Store 23(color) 82 83: 6(float) Load 8(lod)
83: 74 Load 76(texSampler3D) 84: 18(fvec4) ImageSampleExplicitLod 81 82 Lod 83
84: 18(fvec4) Load 20(coords4D) 85: 18(fvec4) Load 23(color)
85: 6(float) Load 8(lod) 86: 18(fvec4) FAdd 85 84
86: 18(fvec4) ImageSampleProjExplicitLod 83 84 Lod 85 Store 23(color) 86
87: 18(fvec4) Load 23(color) 87: 78 Load 80(texSampler3D)
88: 18(fvec4) FAdd 87 86 88: 18(fvec4) Load 20(coords4D)
Store 23(color) 88 89: 6(float) Load 8(lod)
93: 90 Load 92(texSamplerCube) 90: 18(fvec4) ImageSampleProjExplicitLod 87 88 Lod 89
94: 12(fvec3) Load 14(coords3D) 91: 18(fvec4) Load 23(color)
95: 6(float) Load 8(lod) 92: 18(fvec4) FAdd 91 90
96: 18(fvec4) ImageSampleExplicitLod 93 94 Lod 95 Store 23(color) 92
97: 18(fvec4) Load 23(color) 97: 94 Load 96(texSamplerCube)
98: 18(fvec4) FAdd 97 96 98: 12(fvec3) Load 14(coords3D)
Store 23(color) 98 99: 6(float) Load 8(lod)
103: 100 Load 102(shadowSampler1D) 100: 18(fvec4) ImageSampleExplicitLod 97 98 Lod 99
104: 12(fvec3) Load 14(coords3D) 101: 18(fvec4) Load 23(color)
105: 6(float) Load 8(lod) 102: 18(fvec4) FAdd 101 100
106: 6(float) CompositeExtract 104 2 Store 23(color) 102
107: 6(float) ImageSampleDrefExplicitLod 103 104 106 Lod 105 107: 104 Load 106(shadowSampler1D)
108: 18(fvec4) Load 23(color) 108: 12(fvec3) Load 14(coords3D)
109: 18(fvec4) CompositeConstruct 107 107 107 107 109: 6(float) Load 8(lod)
110: 18(fvec4) FAdd 108 109 110: 6(float) CompositeExtract 108 2
Store 23(color) 110 111: 6(float) ImageSampleDrefExplicitLod 107 108 110 Lod 109
115: 112 Load 114(shadowSampler2D) 112: 18(fvec4) Load 23(color)
116: 12(fvec3) Load 14(coords3D) 113: 18(fvec4) CompositeConstruct 111 111 111 111
117: 6(float) Load 8(lod) 114: 18(fvec4) FAdd 112 113
118: 6(float) CompositeExtract 116 2 Store 23(color) 114
119: 6(float) ImageSampleDrefExplicitLod 115 116 118 Lod 117 119: 116 Load 118(shadowSampler2D)
120: 18(fvec4) Load 23(color) 120: 12(fvec3) Load 14(coords3D)
121: 18(fvec4) CompositeConstruct 119 119 119 119 121: 6(float) Load 8(lod)
122: 18(fvec4) FAdd 120 121 122: 6(float) CompositeExtract 120 2
Store 23(color) 122 123: 6(float) ImageSampleDrefExplicitLod 119 120 122 Lod 121
123: 100 Load 102(shadowSampler1D) 124: 18(fvec4) Load 23(color)
124: 18(fvec4) Load 20(coords4D) 125: 18(fvec4) CompositeConstruct 123 123 123 123
125: 6(float) Load 8(lod) 126: 18(fvec4) FAdd 124 125
126: 6(float) CompositeExtract 124 2 Store 23(color) 126
127: 6(float) ImageSampleProjDrefExplicitLod 123 124 126 Lod 125 127: 104 Load 106(shadowSampler1D)
128: 18(fvec4) Load 23(color) 128: 18(fvec4) Load 20(coords4D)
129: 18(fvec4) CompositeConstruct 127 127 127 127 129: 6(float) Load 8(lod)
130: 18(fvec4) FAdd 128 129 130: 6(float) CompositeExtract 128 2
Store 23(color) 130 131: 6(float) CompositeExtract 128 3
131: 112 Load 114(shadowSampler2D) 132: 18(fvec4) CompositeInsert 131 128 1
132: 18(fvec4) Load 20(coords4D) 133: 6(float) ImageSampleProjDrefExplicitLod 127 132 130 Lod 129
133: 6(float) Load 8(lod) 134: 18(fvec4) Load 23(color)
134: 6(float) CompositeExtract 132 2 135: 18(fvec4) CompositeConstruct 133 133 133 133
135: 6(float) ImageSampleProjDrefExplicitLod 131 132 134 Lod 133 136: 18(fvec4) FAdd 134 135
136: 18(fvec4) Load 23(color) Store 23(color) 136
137: 18(fvec4) CompositeConstruct 135 135 135 135 137: 116 Load 118(shadowSampler2D)
138: 18(fvec4) FAdd 136 137 138: 18(fvec4) Load 20(coords4D)
Store 23(color) 138 139: 6(float) Load 8(lod)
141: 18(fvec4) Load 23(color) 140: 6(float) CompositeExtract 138 2
Store 140(gl_Position) 141 141: 6(float) CompositeExtract 138 3
142: 18(fvec4) CompositeInsert 141 138 2
143: 6(float) ImageSampleProjDrefExplicitLod 137 142 140 Lod 139
144: 18(fvec4) Load 23(color)
145: 18(fvec4) CompositeConstruct 143 143 143 143
146: 18(fvec4) FAdd 144 145
Store 23(color) 146
149: 18(fvec4) Load 23(color)
Store 148(gl_Position) 149
Return Return
FunctionEnd FunctionEnd

View File

@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 97 // Id's are bound by 93
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 10 21 37 40 58 67 EntryPoint Fragment 4 "main" 10 20 34 36 54 63
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 400 Source GLSL 400
Name 4 "main" Name 4 "main"
@ -25,43 +25,21 @@ Linked fragment stage:
MemberName 14(lunarStruct2) 0 "i" MemberName 14(lunarStruct2) 0 "i"
MemberName 14(lunarStruct2) 1 "f" MemberName 14(lunarStruct2) 1 "f"
MemberName 14(lunarStruct2) 2 "s1_1" MemberName 14(lunarStruct2) 2 "s1_1"
Name 18 "lunarStruct1" Name 18 "lunarStruct3"
MemberName 18(lunarStruct1) 0 "i" MemberName 18(lunarStruct3) 0 "s2_1"
MemberName 18(lunarStruct1) 1 "f" MemberName 18(lunarStruct3) 1 "i"
Name 19 "lunarStruct3" MemberName 18(lunarStruct3) 2 "f"
MemberName 19(lunarStruct3) 0 "s2_1" MemberName 18(lunarStruct3) 3 "s1_1"
MemberName 19(lunarStruct3) 1 "i" Name 20 "foo3"
MemberName 19(lunarStruct3) 2 "f" Name 30 "scale"
MemberName 19(lunarStruct3) 3 "s1_1" Name 34 "foo2"
Name 21 "foo3" Name 36 "foo"
Name 31 "scale" Name 54 "gl_FragColor"
Name 32 "lunarStruct1" Name 59 "samp2D"
MemberName 32(lunarStruct1) 0 "i" Name 63 "coord"
MemberName 32(lunarStruct1) 1 "f" Name 69 "constructed"
Name 33 "lunarStruct2"
MemberName 33(lunarStruct2) 0 "i"
MemberName 33(lunarStruct2) 1 "f"
MemberName 33(lunarStruct2) 2 "s1_1"
Name 37 "foo2"
Name 38 "lunarStruct1"
MemberName 38(lunarStruct1) 0 "i"
MemberName 38(lunarStruct1) 1 "f"
Name 40 "foo"
Name 58 "gl_FragColor"
Name 63 "samp2D"
Name 67 "coord"
Name 73 "constructed"
Decorate 10(Count) Flat Decorate 10(Count) Flat
MemberDecorate 19(lunarStruct3) 0 Flat Decorate 59(samp2D) DescriptorSet 0
MemberDecorate 19(lunarStruct3) 1 Flat
MemberDecorate 19(lunarStruct3) 2 Flat
MemberDecorate 19(lunarStruct3) 3 Flat
MemberDecorate 33(lunarStruct2) 0 Flat
MemberDecorate 33(lunarStruct2) 1 Flat
MemberDecorate 33(lunarStruct2) 2 Flat
MemberDecorate 38(lunarStruct1) 0 Flat
MemberDecorate 38(lunarStruct1) 1 Flat
Decorate 63(samp2D) DescriptorSet 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -74,99 +52,95 @@ Linked fragment stage:
15: TypeInt 32 0 15: TypeInt 32 0
16: 15(int) Constant 3 16: 15(int) Constant 3
17: TypeArray 14(lunarStruct2) 16 17: TypeArray 14(lunarStruct2) 16
18(lunarStruct1): TypeStruct 6(int) 12(float) 18(lunarStruct3): TypeStruct 17 6(int) 12(float) 13(lunarStruct1)
19(lunarStruct3): TypeStruct 17 6(int) 12(float) 18(lunarStruct1) 19: TypePointer Input 18(lunarStruct3)
20: TypePointer Input 19(lunarStruct3) 20(foo3): 19(ptr) Variable Input
21(foo3): 20(ptr) Variable Input 21: 6(int) Constant 0
22: 6(int) Constant 0 22: 6(int) Constant 1
23: 6(int) Constant 1 25: TypeBool
26: TypeBool 29: TypePointer Function 12(float)
30: TypePointer Function 12(float) 31: 15(int) Constant 5
32(lunarStruct1): TypeStruct 6(int) 12(float) 32: TypeArray 14(lunarStruct2) 31
33(lunarStruct2): TypeStruct 6(int) 12(float) 32(lunarStruct1) 33: TypePointer Input 32
34: 15(int) Constant 5 34(foo2): 33(ptr) Variable Input
35: TypeArray 33(lunarStruct2) 34 35: TypePointer Input 13(lunarStruct1)
36: TypePointer Input 35 36(foo): 35(ptr) Variable Input
37(foo2): 36(ptr) Variable Input 41: 6(int) Constant 2
38(lunarStruct1): TypeStruct 6(int) 12(float) 46: TypePointer Input 12(float)
39: TypePointer Input 38(lunarStruct1) 52: TypeVector 12(float) 4
40(foo): 39(ptr) Variable Input 53: TypePointer Output 52(fvec4)
45: 6(int) Constant 2 54(gl_FragColor): 53(ptr) Variable Output
50: TypePointer Input 12(float) 56: TypeImage 12(float) 2D sampled format:Unknown
56: TypeVector 12(float) 4 57: TypeSampledImage 56
57: TypePointer Output 56(fvec4) 58: TypePointer UniformConstant 57
58(gl_FragColor): 57(ptr) Variable Output 59(samp2D): 58(ptr) Variable UniformConstant
60: TypeImage 12(float) 2D sampled format:Unknown 61: TypeVector 12(float) 2
61: TypeSampledImage 60 62: TypePointer Input 61(fvec2)
62: TypePointer UniformConstant 61 63(coord): 62(ptr) Variable Input
63(samp2D): 62(ptr) Variable UniformConstant 67: TypeArray 61(fvec2) 16
65: TypeVector 12(float) 2 68: TypePointer Function 67
66: TypePointer Input 65(fvec2) 73: 12(float) Constant 1065353216
67(coord): 66(ptr) Variable Input 74: 12(float) Constant 1073741824
71: TypeArray 65(fvec2) 16 75: 61(fvec2) ConstantComposite 73 74
72: TypePointer Function 71 79: TypePointer Function 61(fvec2)
77: 12(float) Constant 1065353216
78: 12(float) Constant 1073741824
79: 65(fvec2) ConstantComposite 77 78
83: TypePointer Function 65(fvec2)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(iLocal): 7(ptr) Variable Function 8(iLocal): 7(ptr) Variable Function
31(scale): 30(ptr) Variable Function 30(scale): 29(ptr) Variable Function
73(constructed): 72(ptr) Variable Function 69(constructed): 68(ptr) Variable Function
11: 6(int) Load 10(Count) 11: 6(int) Load 10(Count)
Store 8(iLocal) 11 Store 8(iLocal) 11
24: 9(ptr) AccessChain 21(foo3) 22 23 22 23: 9(ptr) AccessChain 20(foo3) 21 22 21
25: 6(int) Load 24 24: 6(int) Load 23
27: 26(bool) SGreaterThan 25 22 26: 25(bool) SGreaterThan 24 21
SelectionMerge 29 None SelectionMerge 28 None
BranchConditional 27 28 53 BranchConditional 26 27 49
28: Label 27: Label
41: 9(ptr) AccessChain 40(foo) 22 37: 9(ptr) AccessChain 36(foo) 21
42: 6(int) Load 41 38: 6(int) Load 37
43: 9(ptr) AccessChain 21(foo3) 22 42 22 39: 9(ptr) AccessChain 20(foo3) 21 38 21
44: 6(int) Load 43 40: 6(int) Load 39
46: 6(int) IAdd 44 45 42: 6(int) IAdd 40 41
47: 6(int) Load 8(iLocal) 43: 6(int) Load 8(iLocal)
48: 6(int) IAdd 47 23 44: 6(int) IAdd 43 22
Store 8(iLocal) 48 Store 8(iLocal) 44
49: 6(int) IAdd 46 48 45: 6(int) IAdd 42 44
51: 50(ptr) AccessChain 37(foo2) 49 45 23 47: 46(ptr) AccessChain 34(foo2) 45 41 22
52: 12(float) Load 51 48: 12(float) Load 47
Store 31(scale) 52 Store 30(scale) 48
Branch 29 Branch 28
53: Label 49: Label
54: 50(ptr) AccessChain 21(foo3) 22 22 45 23 50: 46(ptr) AccessChain 20(foo3) 21 21 41 22
55: 12(float) Load 54 51: 12(float) Load 50
Store 31(scale) 55 Store 30(scale) 51
Branch 29 Branch 28
29: Label 28: Label
59: 12(float) Load 31(scale) 55: 12(float) Load 30(scale)
64: 61 Load 63(samp2D) 60: 57 Load 59(samp2D)
68: 65(fvec2) Load 67(coord) 64: 61(fvec2) Load 63(coord)
69: 56(fvec4) ImageSampleImplicitLod 64 68 65: 52(fvec4) ImageSampleImplicitLod 60 64
70: 56(fvec4) VectorTimesScalar 69 59 66: 52(fvec4) VectorTimesScalar 65 55
Store 58(gl_FragColor) 70 Store 54(gl_FragColor) 66
74: 65(fvec2) Load 67(coord) 70: 61(fvec2) Load 63(coord)
75: 12(float) Load 31(scale) 71: 12(float) Load 30(scale)
76: 65(fvec2) CompositeConstruct 75 75 72: 61(fvec2) CompositeConstruct 71 71
80: 71 CompositeConstruct 74 76 79 76: 67 CompositeConstruct 70 72 75
Store 73(constructed) 80 Store 69(constructed) 76
81: 9(ptr) AccessChain 40(foo) 22 77: 9(ptr) AccessChain 36(foo) 21
82: 6(int) Load 81 78: 6(int) Load 77
84: 83(ptr) AccessChain 73(constructed) 82 80: 79(ptr) AccessChain 69(constructed) 78
85: 65(fvec2) Load 84 81: 61(fvec2) Load 80
86: 9(ptr) AccessChain 40(foo) 22 82: 9(ptr) AccessChain 36(foo) 21
87: 6(int) Load 86 83: 6(int) Load 82
88: 83(ptr) AccessChain 73(constructed) 87 84: 79(ptr) AccessChain 69(constructed) 83
89: 65(fvec2) Load 88 85: 61(fvec2) Load 84
90: 12(float) CompositeExtract 85 0 86: 12(float) CompositeExtract 81 0
91: 12(float) CompositeExtract 85 1 87: 12(float) CompositeExtract 81 1
92: 12(float) CompositeExtract 89 0 88: 12(float) CompositeExtract 85 0
93: 12(float) CompositeExtract 89 1 89: 12(float) CompositeExtract 85 1
94: 56(fvec4) CompositeConstruct 90 91 92 93 90: 52(fvec4) CompositeConstruct 86 87 88 89
95: 56(fvec4) Load 58(gl_FragColor) 91: 52(fvec4) Load 54(gl_FragColor)
96: 56(fvec4) FAdd 95 94 92: 52(fvec4) FAdd 91 90
Store 58(gl_FragColor) 96 Store 54(gl_FragColor) 92
Return Return
FunctionEnd FunctionEnd

View File

@ -17,8 +17,8 @@ ERROR: 0:16: 'constant_id' : cannot declare a default, can only be used on a sca
ERROR: 0:20: 'subpassLoad' : no matching overloaded function found ERROR: 0:20: 'subpassLoad' : no matching overloaded function found
ERROR: 0:20: 'assign' : cannot convert from 'const float' to 'smooth out 4-component vector of float' ERROR: 0:20: 'assign' : cannot convert from 'const float' to 'smooth out 4-component vector of float'
ERROR: 0:23: 'atomic counter types' : not allowed when using GLSL for Vulkan ERROR: 0:23: 'atomic counter types' : not allowed when using GLSL for Vulkan
ERROR: 0:24: 'shared' : not allowed when using GLSL for Vulkan ERROR: 0:24: 'shared' : not allowed when generating SPIR-V
ERROR: 0:25: 'packed' : not allowed when using GLSL for Vulkan ERROR: 0:25: 'packed' : not allowed when generating SPIR-V
ERROR: 0:32: 'initializer' : can't use with types containing arrays sized with a specialization constant ERROR: 0:32: 'initializer' : can't use with types containing arrays sized with a specialization constant
ERROR: 0:34: '=' : can't use with types containing arrays sized with a specialization constant ERROR: 0:34: '=' : can't use with types containing arrays sized with a specialization constant
ERROR: 0:35: '==' : can't use with types containing arrays sized with a specialization constant ERROR: 0:35: '==' : can't use with types containing arrays sized with a specialization constant

11
Test/hlsl.array.frag Normal file
View File

@ -0,0 +1,11 @@
float4 a[4];
struct {
float4 m[7];
} s[11];
float4 PixelShaderFunction(int i, float4 input[3]) : COLOR0
{
float4 b[10];
return a[1] + a[i] + input[2] + input[i] + b[5] + b[i] + s[i].m[i];
}

13
Test/hlsl.attribute.frag Normal file
View File

@ -0,0 +1,13 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
[unroll];
[];
[][][];
[unroll(4)];
[allow_uav_condition];
[unroll(4)] [allow_uav_condition];
[ loop ];
[fastopt];
[branch] if (0);
[flatten];
}

4
Test/hlsl.cast.frag Normal file
View File

@ -0,0 +1,4 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
return (float4)input + (int4)input + (float4)1.198;
}

6
Test/hlsl.doLoop.frag Normal file
View File

@ -0,0 +1,6 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
[unroll] do {} while (false);
[unroll] do {;} while (false);
do { return input; } while (input == input);
}

View File

@ -1,7 +1,7 @@
float1 f1 = float1(1.0); float1 f1 = float1(1.0);
float scalar = 2.0; float scalar = 2.0;
float1 ShaderFunction(float1 inFloat1, float inScalar) : COLOR0 float1 ShaderFunction(float1 inFloat1 : COLOR, float inScalar) : COLOR0
{ {
return f1 * scalar + inFloat1 * inScalar; return f1 * scalar + inFloat1 * inScalar;
} }

View File

@ -1,5 +1,10 @@
float4 AmbientColor = float4(1, 0.5, 0, 1); float4 AmbientColor = float4(1, 0.5, 0, 1);
bool ff1 : SV_IsFrontFace;
float4 ff2 : packoffset(c0.y);
float4 ff3 : packoffset(c0.y) : register(ps_5_0, s[0]) ;
float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s[0]) <int bambam=30;> ;
float4 ShaderFunction(float4 input) : COLOR0 float4 ShaderFunction(float4 input) : COLOR0
{ {
return input * AmbientColor; return input * AmbientColor;

8
Test/hlsl.forLoop.frag Normal file
View File

@ -0,0 +1,8 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
for (;;) ;
for (++input; ; ) ;
[unroll] for (; input != input; ) {}
for (; input != input; ) { return -input; }
for (--input; input != input; input += 2) { return -input; }
}

28
Test/hlsl.if.frag Normal file
View File

@ -0,0 +1,28 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
if (input == input)
return input;
if (input == input)
return input;
else
return -input;
if (input == input)
;
if (input == input)
;
else
;
[flatten] if (input == input) {
return input;
}
if (input == input) {
return input;
} else {
return -input;
}
}

View File

@ -0,0 +1,13 @@
float ComputeShaderFunction()
{
AllMemoryBarrier();
AllMemoryBarrierWithGroupSync();
DeviceMemoryBarrier();
DeviceMemoryBarrierWithGroupSync();
GroupMemoryBarrier();
GroupMemoryBarrierWithGroupSync();
return 0.0;
}

129
Test/hlsl.intrinsics.comp Normal file
View File

@ -0,0 +1,129 @@
#define gs // TODO: define as groupshared when available in the grammar
gs uint gs_ua;
gs uint gs_ub;
gs uint gs_uc;
gs uint2 gs_ua2;
gs uint2 gs_ub2;
gs uint2 gs_uc2;
gs uint3 gs_ua3;
gs uint3 gs_ub3;
gs uint3 gs_uc3;
gs uint4 gs_ua4;
gs uint4 gs_ub4;
gs uint4 gs_uc4;
float ComputeShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
{
uint out_u1;
// Don't repeat all the pixel/vertex fns - just one for sanity.
all(inF0);
// Test atomics
InterlockedAdd(gs_ua, gs_ub);
InterlockedAdd(gs_ua, gs_ub, out_u1);
InterlockedAnd(gs_ua, gs_ub);
InterlockedAnd(gs_ua, gs_ub, out_u1);
InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1);
InterlockedExchange(gs_ua, gs_ub, out_u1);
InterlockedMax(gs_ua, gs_ub);
InterlockedMax(gs_ua, gs_ub, out_u1);
InterlockedMin(gs_ua, gs_ub);
InterlockedMin(gs_ua, gs_ub, out_u1);
InterlockedOr(gs_ua, gs_ub);
InterlockedOr(gs_ua, gs_ub, out_u1);
InterlockedXor(gs_ua, gs_ub);
InterlockedXor(gs_ua, gs_ub, out_u1);
// CheckAccessFullyMapped(3); // TODO: ...
return 0.0;
}
float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
{
uint2 out_u2;
// Don't repeat all the pixel/vertex fns - just one for sanity.
all(inF0);
// Test atomics
InterlockedAdd(gs_ua2, gs_ub2);
InterlockedAdd(gs_ua2, gs_ub2, out_u2);
InterlockedAnd(gs_ua2, gs_ub2);
InterlockedAnd(gs_ua2, gs_ub2, out_u2);
InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2);
InterlockedExchange(gs_ua2, gs_ub2, out_u2);
InterlockedMax(gs_ua2, gs_ub2);
InterlockedMax(gs_ua2, gs_ub2, out_u2);
InterlockedMin(gs_ua2, gs_ub2);
InterlockedMin(gs_ua2, gs_ub2, out_u2);
InterlockedOr(gs_ua2, gs_ub2);
InterlockedOr(gs_ua2, gs_ub2, out_u2);
InterlockedXor(gs_ua2, gs_ub2);
InterlockedXor(gs_ua2, gs_ub2, out_u2);
// TODO: ... add when float1 prototypes are generated
return float2(1,2);
}
float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
{
uint3 out_u3;
// Don't repeat all the pixel/vertex fns - just one for sanity.
all(inF0);
// Test atomics
InterlockedAdd(gs_ua3, gs_ub3);
InterlockedAdd(gs_ua3, gs_ub3, out_u3);
InterlockedAnd(gs_ua3, gs_ub3);
InterlockedAnd(gs_ua3, gs_ub3, out_u3);
InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3);
InterlockedExchange(gs_ua3, gs_ub3, out_u3);
InterlockedMax(gs_ua3, gs_ub3);
InterlockedMax(gs_ua3, gs_ub3, out_u3);
InterlockedMin(gs_ua3, gs_ub3);
InterlockedMin(gs_ua3, gs_ub3, out_u3);
InterlockedOr(gs_ua3, gs_ub3);
InterlockedOr(gs_ua3, gs_ub3, out_u3);
InterlockedXor(gs_ua3, gs_ub3);
InterlockedXor(gs_ua3, gs_ub3, out_u3);
// TODO: ... add when float1 prototypes are generated
return float3(1,2,3);
}
float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
{
uint4 out_u4;
// Don't repeat all the pixel/vertex fns - just one for sanity.
all(inF0);
// Test atomics
InterlockedAdd(gs_ua4, gs_ub4);
InterlockedAdd(gs_ua4, gs_ub4, out_u4);
InterlockedAnd(gs_ua4, gs_ub4);
InterlockedAnd(gs_ua4, gs_ub4, out_u4);
InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4);
InterlockedExchange(gs_ua4, gs_ub4, out_u4);
InterlockedMax(gs_ua4, gs_ub4);
InterlockedMax(gs_ua4, gs_ub4, out_u4);
InterlockedMin(gs_ua4, gs_ub4);
InterlockedMin(gs_ua4, gs_ub4, out_u4);
InterlockedOr(gs_ua4, gs_ub4);
InterlockedOr(gs_ua4, gs_ub4, out_u4);
InterlockedXor(gs_ua4, gs_ub4);
InterlockedXor(gs_ua4, gs_ub4, out_u4);
// TODO: ... add when float1 prototypes are generated
return float4(1,2,3,4);
}

View File

@ -0,0 +1,10 @@
void main(float inF1, float2 inF2, float3 inF3, float4 inF4, int2 inI2) : COLOR
{
EvaluateAttributeSnapped(inF1, int2(8,15));
EvaluateAttributeSnapped(inF2, int2(0,1));
EvaluateAttributeSnapped(inF3, int2(3,10));
EvaluateAttributeSnapped(inF4, int2(7,8));
EvaluateAttributeSnapped(inF1, inI2);
}

View File

@ -0,0 +1,34 @@
float PixelShaderFunction(float inF0)
{
f32tof16(inF0);
return 0.0;
}
float1 PixelShaderFunction(float1 inF0)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 PixelShaderFunction(float2 inF0)
{
f32tof16(inF0);
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0)
{
f32tof16(inF0);
return float3(1,2,3);
}
float4 PixelShaderFunction(float4 inF0)
{
f32tof16(inF0);
return float4(1,2,3,4);
}

451
Test/hlsl.intrinsics.frag Normal file
View File

@ -0,0 +1,451 @@
#define gs // TODO: define as groupshared when available in the grammar
gs uint gs_ua;
gs uint gs_ub;
gs uint gs_uc;
gs uint2 gs_ua2;
gs uint2 gs_ub2;
gs uint2 gs_uc2;
gs uint3 gs_ua3;
gs uint3 gs_ub3;
gs uint3 gs_uc3;
gs uint4 gs_ua4;
gs uint4 gs_ub4;
gs uint4 gs_uc4;
float PixelShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
{
uint out_u1;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(7);
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reversebits(2);
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
return 0.0;
}
float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
{
uint2 out_u2;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(int2(7,3));
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int2(1,2));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
{
uint3 out_u3;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(int3(7,3,5));
cross(inF0, inF1);
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int3(1,2,3));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float3(1,2,3);
}
float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
{
uint4 out_u4;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(int4(7,3,5,2));
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
dst(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int4(1,2,3,4));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float4(1,2,3,4);
}
// TODO: for mats:
// asfloat(inU0); \
// asint(inF0); \
// asuint(inF0); \
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
all(inF0); \
abs(inF0); \
acos(inF0); \
any(inF0); \
asin(inF0); \
atan(inF0); \
atan2(inF0, inF1); \
ceil(inF0); \
clip(inF0); \
clamp(inF0, inF1, inF2); \
cos(inF0); \
cosh(inF0); \
ddx(inF0); \
ddx_coarse(inF0); \
ddx_fine(inF0); \
ddy(inF0); \
ddy_coarse(inF0); \
ddy_fine(inF0); \
degrees(inF0); \
determinant(inF0); \
exp(inF0); \
exp2(inF0); \
firstbithigh(7); \
firstbitlow(7); \
floor(inF0); \
fmod(inF0, inF1); \
frac(inF0); \
frexp(inF0, inF1); \
fwidth(inF0); \
ldexp(inF0, inF1); \
log(inF0); \
log10(inF0); \
log2(inF0); \
max(inF0, inF1); \
min(inF0, inF1); \
pow(inF0, inF1); \
radians(inF0); \
round(inF0); \
rsqrt(inF0); \
saturate(inF0); \
sign(inF0); \
sin(inF0); \
sincos(inF0, inF1, inF2); \
sinh(inF0); \
smoothstep(inF0, inF1, inF2); \
sqrt(inF0); \
step(inF0, inF1); \
tan(inF0); \
tanh(inF0); \
transpose(inF0); \
trunc(inF0);
// TODO: turn on non-square matrix tests when protos are available.
float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
// TODO: ... add when float1 prototypes are generated
return float2x2(2,2,2,2);
}
float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
// TODO: ... add when float1 prototypes are generated
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
// TODO: ... add when float1 prototypes are generated
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}
#define TESTGENMUL(ST, VT, MT) \
ST r0 = mul(inF0, inF1); \
VT r1 = mul(inFV0, inF0); \
VT r2 = mul(inF0, inFV0); \
ST r3 = mul(inFV0, inFV1); \
VT r4 = mul(inFM0, inFV0); \
VT r5 = mul(inFV0, inFM0); \
MT r6 = mul(inFM0, inF0); \
MT r7 = mul(inF0, inFM0); \
MT r8 = mul(inFM0, inFM1);
void TestGenMul(float inF0, float inF1,
float2 inFV0, float2 inFV1,
float2x2 inFM0, float2x2 inFM1)
{
TESTGENMUL(float, float2, float2x2);
}
void TestGenMul(float inF0, float inF1,
float3 inFV0, float3 inFV1,
float3x3 inFM0, float3x3 inFM1)
{
TESTGENMUL(float, float3, float3x3);
}
void TestGenMul(float inF0, float inF1,
float4 inFV0, float4 inFV1,
float4x4 inFM0, float4x4 inFM1)
{
TESTGENMUL(float, float4, float4x4);
}

View File

@ -0,0 +1,4 @@
void PixelShaderFunction(float n_dot_l, float n_dot_h, float m)
{
float4 r0 = lit(n_dot_l, n_dot_h, m);
}

View File

@ -0,0 +1,201 @@
float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
{
uint out_u1;
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
clip(inF0); // expected error: only valid in pixel stage
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
ddx(inF0); // expected error: only valid in pixel stage
ddx_coarse(inF0); // expected error: only valid in pixel stage
ddx_fine(inF0); // expected error: only valid in pixel stage
ddy(inF0); // expected error: only valid in pixel stage
ddy_coarse(inF0); // expected error: only valid in pixel stage
ddy_fine(inF0); // expected error: only valid in pixel stage
determinant(inF0); // expected error: only valid on mats
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
length(inF0); // expect error: invalid on scalars
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
normalize(inF0); // expect error: invalid on scalars
reflect(inF0, inF1); // expect error: invalid on scalars
refract(inF0, inF1, inF2); // expect error: invalid on scalars
refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return 0.0;
}
float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
uint2 out_u2;
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
ddx(inF0); // only valid in pixel stage
ddx_coarse(inF0); // only valid in pixel stage
ddx_fine(inF0); // only valid in pixel stage
ddy(inF0); // only valid in pixel stage
ddy_coarse(inF0); // only valid in pixel stage
ddy_fine(inF0); // only valid in pixel stage
determinant(inF0); // expect error: only valid on mats
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
noise(inF0); // expected error: only valid in pixel stage
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return float2(1,2);
}
float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
uint3 out_u3;
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
ddx(inF0); // only valid in pixel stage
ddx_coarse(inF0); // only valid in pixel stage
ddx_fine(inF0); // only valid in pixel stage
ddy(inF0); // only valid in pixel stage
ddy_coarse(inF0); // only valid in pixel stage
ddy_fine(inF0); // only valid in pixel stage
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expect error: only valid on mats
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
noise(inF0); // expected error: only valid in pixel stage
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return float3(1,2,3);
}
float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
{
uint4 out_u4;
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
determinant(inF0); // expect error: only valid on mats
ddx(inF0); // only valid in pixel stage
ddx_coarse(inF0); // only valid in pixel stage
ddx_fine(inF0); // only valid in pixel stage
ddy(inF0); // only valid in pixel stage
ddy_coarse(inF0); // only valid in pixel stage
ddy_fine(inF0); // only valid in pixel stage
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
noise(inF0); // expected error: only valid in pixel stage
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return float4(1,2,3,4);
}

View File

@ -0,0 +1,137 @@
float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
{
// AllMemoryBarrier(); // TODO: expected error: invalid in fragment stage
// AllMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expected error: only valid on mats
// DeviceMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// InterlockedAdd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedAnd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out i // InterlockedMax(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedMin(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedOor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedXor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// GroupMemoryBarrier(); // TODO: expected error: invalid in fragment stage
// GroupMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage
length(inF0); // expected error: invalid on scalars
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
normalize(inF0); // expected error: invalid on scalars
reflect(inF0, inF1); // expected error: invalid on scalars
refract(inF0, inF1, inF2); // expected error: invalid on scalars
refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return 0.0;
}
float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expected error: only valid on mats
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expected error: only valid on mats
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float3(1,2,3);
}
float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
{
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
determinant(inF0); // expected error: only valid on mats
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float4(1,2,3,4);
}
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
countbits(inF0); \
D3DCOLORtoUBYTE4(inF0); \
cross(inF0, inF1); \
f16tof32(inF0); \
firstbithigh(inF0); \
firstbitlow(inF0); \
fma(inF0, inF1, inF2); \
reversebits(inF0); \
length(inF0); \
noise(inF0); \
normalize(inF0); \
reflect(inF0, inF1); \
refract(inF0, inF1, 1.0); \
reversebits(inF0); \
// TODO: turn on non-square matrix tests when protos are available.
float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float2x2(2,2,2,2);
}
float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}

View File

@ -0,0 +1,273 @@
uint gs_ua;
uint gs_ub;
uint gs_uc;
uint2 gs_ua2;
uint2 gs_ub2;
uint2 gs_uc2;
uint3 gs_ua3;
uint3 gs_ub3;
uint3 gs_uc3;
uint4 gs_ua4;
uint4 gs_ub4;
uint4 gs_uc4;
float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
{
uint out_u1;
AllMemoryBarrier(); // expected error: only valid in compute stage
AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
clip(inF0); // expected error: only valid in pixel stage
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
ddx(inF0); // expected error: only valid in pixel stage
ddx_coarse(inF0); // expected error: only valid in pixel stage
ddx_fine(inF0); // expected error: only valid in pixel stage
ddy(inF0); // expected error: only valid in pixel stage
ddy_coarse(inF0); // expected error: only valid in pixel stage
ddy_fine(inF0); // expected error: only valid in pixel stage
determinant(inF0); // expected error: only valid on mats
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
GroupMemoryBarrier(); // expected error: only valid in compute stage
GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
length(inF0); // expect error: invalid on scalars
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
normalize(inF0); // expect error: invalid on scalars
reflect(inF0, inF1); // expect error: invalid on scalars
refract(inF0, inF1, inF2); // expect error: invalid on scalars
refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return 0.0;
}
float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
uint2 out_u2;
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
ddx(inF0); // only valid in pixel stage
ddx_coarse(inF0); // only valid in pixel stage
ddx_fine(inF0); // only valid in pixel stage
ddy(inF0); // only valid in pixel stage
ddy_coarse(inF0); // only valid in pixel stage
ddy_fine(inF0); // only valid in pixel stage
determinant(inF0); // expect error: only valid on mats
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
noise(inF0); // expected error: only valid in pixel stage
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return float2(1,2);
}
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
uint3 out_u3;
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
ddx(inF0); // only valid in pixel stage
ddx_coarse(inF0); // only valid in pixel stage
ddx_fine(inF0); // only valid in pixel stage
ddy(inF0); // only valid in pixel stage
ddy_coarse(inF0); // only valid in pixel stage
ddy_fine(inF0); // only valid in pixel stage
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expect error: only valid on mats
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
noise(inF0); // expected error: only valid in pixel stage
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return float3(1,2,3);
}
float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
{
uint4 out_u4;
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
determinant(inF0); // expect error: only valid on mats
ddx(inF0); // only valid in pixel stage
ddx_coarse(inF0); // only valid in pixel stage
ddx_fine(inF0); // only valid in pixel stage
ddy(inF0); // only valid in pixel stage
ddy_coarse(inF0); // only valid in pixel stage
ddy_fine(inF0); // only valid in pixel stage
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
noise(inF0); // expected error: only valid in pixel stage
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
return float4(1,2,3,4);
}
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
countbits(inF0); \
cross(inF0, inF1); \
D3DCOLORtoUBYTE4(inF0); \
ddx(inF0); \
ddx_coarse(inF0); \
ddx_fine(inF0); \
ddy(inF0); \
ddy_coarse(inF0); \
ddy_fine(inF0); \
EvaluateAttributeAtCentroid(inF0); \
EvaluateAttributeAtSample(inF0, 2); \
EvaluateAttributeSnapped(inF0, int2(2)); \
f16tof32(inF0); \
firstbithigh(inF0); \
firstbitlow(inF0); \
fma(inF0, inF1, inF2); \
fwidth(inF0); \
noise(inF0); \
reversebits(inF0); \
length(inF0); \
noise(inF0); \
normalize(inF0); \
reflect(inF0, inF1); \
refract(inF0, inF1, 1.0); \
reversebits(inF0); \
// TODO: turn on non-square matrix tests when protos are available.
float2x2 VertexShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float2x2(2,2,2,2);
}
float3x3 VertexShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 VertexShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}

388
Test/hlsl.intrinsics.vert Normal file
View File

@ -0,0 +1,388 @@
float VertexShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
{
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
cos(inF0);
cosh(inF0);
countbits(7);
degrees(inF0);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
// TODO: mul(inF0, inF1);
pow(inF0, inF1);
radians(inF0);
reversebits(2);
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
return 0.0;
}
float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
{
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
cos(inF0);
cosh(inF0);
countbits(int2(7,3));
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
// TODO: mul(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int2(1,2));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float2(1,2);
}
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
{
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
cos(inF0);
cosh(inF0);
countbits(int3(7,3,5));
cross(inF0, inF1);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
// TODO: mul(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int3(1,2,3));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float3(1,2,3);
}
float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
{
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
cos(inF0);
cosh(inF0);
countbits(int4(7,3,5,2));
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
dst(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
// TODO: mul(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int4(1,2,3,4));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float4(1,2,3,4);
}
// TODO: for mats:
// asfloat(inU0); \
// asint(inF0); \
// asuint(inF0); \
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
all(inF0); \
abs(inF0); \
acos(inF0); \
any(inF0); \
asin(inF0); \
atan(inF0); \
atan2(inF0, inF1); \
ceil(inF0); \
clamp(inF0, inF1, inF2); \
cos(inF0); \
cosh(inF0); \
degrees(inF0); \
determinant(inF0); \
exp(inF0); \
exp2(inF0); \
firstbithigh(7); \
firstbitlow(7); \
floor(inF0); \
fmod(inF0, inF1); \
frac(inF0); \
frexp(inF0, inF1); \
ldexp(inF0, inF1); \
log(inF0); \
log10(inF0); \
log2(inF0); \
max(inF0, inF1); \
min(inF0, inF1); \
pow(inF0, inF1); \
radians(inF0); \
round(inF0); \
rsqrt(inF0); \
saturate(inF0); \
sign(inF0); \
sin(inF0); \
sincos(inF0, inF1, inF2); \
sinh(inF0); \
smoothstep(inF0, inF1, inF2); \
sqrt(inF0); \
step(inF0, inF1); \
tan(inF0); \
tanh(inF0); \
transpose(inF0); \
trunc(inF0);
// TODO: turn on non-square matrix tests when protos are available.
float2x2 VertexShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS();
// TODO: ... add when float1 prototypes are generated
return float2x2(2,2,2,2);
}
float3x3 VertexShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS();
// TODO: ... add when float1 prototypes are generated
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 VertexShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS();
// TODO: ... add when float1 prototypes are generated
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}
#define TESTGENMUL(ST, VT, MT) \
ST r0 = mul(inF0, inF1); \
VT r1 = mul(inFV0, inF0); \
VT r2 = mul(inF0, inFV0); \
ST r3 = mul(inFV0, inFV1); \
VT r4 = mul(inFM0, inFV0); \
VT r5 = mul(inFV0, inFM0); \
MT r6 = mul(inFM0, inF0); \
MT r7 = mul(inF0, inFM0); \
MT r8 = mul(inFM0, inFM1);
void TestGenMul(float inF0, float inF1,
float2 inFV0, float2 inFV1,
float2x2 inFM0, float2x2 inFM1)
{
TESTGENMUL(float, float2, float2x2);
}
void TestGenMul(float inF0, float inF1,
float3 inFV0, float3 inFV1,
float3x3 inFM0, float3x3 inFM1)
{
TESTGENMUL(float, float3, float3x3);
}
void TestGenMul(float inF0, float inF1,
float4 inFV0, float4 inFV1,
float4x4 inFM0, float4x4 inFM1)
{
TESTGENMUL(float, float4, float4x4);
}

30
Test/hlsl.scope.frag Normal file
View File

@ -0,0 +1,30 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
int x;
x;
{
float x;
x;
{
bool x;
x;
{
float3 x;
x;
}
x;
}
x;
}
x;
if (x > 0)
bool x;
while (x > 0)
bool x;
do {
bool x;
} while (x > 0);
}

40
Test/hlsl.struct.frag Normal file
View File

@ -0,0 +1,40 @@
struct {
};
struct {
bool b;
};
struct myS {
bool b, c;
float4 a, d;
};
myS s1;
struct {
float4 i;
} s2;
struct {
linear float4 a;
nointerpolation bool b;
noperspective centroid float1 c;
sample centroid float2 d;
bool ff1 : SV_IsFrontFace;
bool ff2 : packoffset(c0.y);
bool ff3 : packoffset(c0.y) : register(ps_5_0, s[0]) ;
float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s[0]) <int bambam=30;> ;
} s4;
float4 PixelShaderFunction(float4 input) : COLOR0
{
struct FS {
bool3 b3;
} s3;
s3 == s3;
s2.i = s4.ff4;
return input;
}

6
Test/hlsl.swizzle.frag Normal file
View File

@ -0,0 +1,6 @@
float4 AmbientColor = float4(1, 0.5, 0, 1);
float4 ShaderFunction(float4 input) : COLOR0
{
return input.wwyx * float4(AmbientColor.z);
}

8
Test/hlsl.void.frag Normal file
View File

@ -0,0 +1,8 @@
void foo1() {}
void foo2(void) {}
float4 PixelShaderFunction(float4 input) : COLOR0
{
foo1();
foo2();
}

7
Test/hlsl.whileLoop.frag Normal file
View File

@ -0,0 +1,7 @@
float4 PixelShaderFunction(float4 input) : COLOR0
{
while (input != input) { return input; }
while (false) ;
[unroll] while (false) { }
while ((false)) { }
}

41
Test/spv.310.bitcast.frag Normal file
View File

@ -0,0 +1,41 @@
#version 310 es
flat in mediump int i1;
flat in lowp ivec2 i2;
flat in mediump ivec3 i3;
flat in highp ivec4 i4;
flat in mediump uint u1;
flat in lowp uvec2 u2;
flat in mediump uvec3 u3;
flat in highp uvec4 u4;
mediump in float f1;
lowp in vec2 f2;
mediump in vec3 f3;
highp in vec4 f4;
void main()
{
highp ivec4 idata = ivec4(0);
idata.x += floatBitsToInt(f1);
idata.xy += floatBitsToInt(f2);
idata.xyz += floatBitsToInt(f3);
idata += floatBitsToInt(f4);
highp uvec4 udata = uvec4(0);
udata.x += floatBitsToUint(f1);
udata.xy += floatBitsToUint(f2);
udata.xyz += floatBitsToUint(f3);
udata += floatBitsToUint(f4);
highp vec4 fdata = vec4(0.0);
fdata.x += intBitsToFloat(i1);
fdata.xy += intBitsToFloat(i2);
fdata.xyz += intBitsToFloat(i3);
fdata += intBitsToFloat(i4);
fdata.x += uintBitsToFloat(u1);
fdata.xy += uintBitsToFloat(u2);
fdata.xyz += uintBitsToFloat(u3);
fdata += uintBitsToFloat(u4);
}

View File

@ -1,6 +1,6 @@
#version 310 es #version 310 es
#extension GL_ARB_gl_spirv : enable
layout(binding = 0) uniform atomic_uint counter; layout(binding = 0) uniform atomic_uint counter;

View File

@ -175,7 +175,7 @@ template <class T> class TList : public std::list<T, pool_allocator<T> > {
}; };
template <class K, class D, class CMP = std::less<K> > template <class K, class D, class CMP = std::less<K> >
class TMap : public std::map<K, D, CMP, pool_allocator<std::pair<K, D> > > { class TMap : public std::map<K, D, CMP, pool_allocator<std::pair<K const, D> > > {
}; };
template <class K, class D, class HASH = std::hash<K>, class PRED = std::equal_to<K> > template <class K, class D, class HASH = std::hash<K>, class PRED = std::equal_to<K> >

View File

@ -1,6 +1,6 @@
// //
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd. //Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
//Copyright (C) 2012-2015 LunarG, Inc. //Copyright (C) 2012-2016 LunarG, Inc.
//Copyright (C) 2015-2016 Google, Inc. //Copyright (C) 2015-2016 Google, Inc.
// //
//All rights reserved. //All rights reserved.
@ -1043,8 +1043,9 @@ public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
// for "empty" type (no args) or simple scalar/vector/matrix // for "empty" type (no args) or simple scalar/vector/matrix
explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0) : explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0,
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(false), bool isVector = false) :
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1),
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr) arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr)
{ {
sampler.clear(); sampler.clear();
@ -1052,8 +1053,9 @@ public:
qualifier.storage = q; qualifier.storage = q;
} }
// for explicit precision qualifier // for explicit precision qualifier
TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0) : TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0,
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(false), bool isVector = false) :
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1),
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr) arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr)
{ {
sampler.clear(); sampler.clear();
@ -1255,6 +1257,8 @@ public:
virtual bool isStruct() const { return structure != nullptr; } virtual bool isStruct() const { return structure != nullptr; }
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; } virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; }
virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; }
// "Image" is a superset of "Subpass" // "Image" is a superset of "Subpass"
virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); } virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); }
virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); } virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); }
@ -1315,7 +1319,7 @@ public:
virtual bool containsOpaque() const virtual bool containsOpaque() const
{ {
if (basicType == EbtSampler || basicType == EbtAtomicUint) if (isOpaque())
return true; return true;
if (! structure) if (! structure)
return false; return false;

View File

@ -1,6 +1,6 @@
// //
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd. //Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
//Copyright (C) 2012-2013 LunarG, Inc. //Copyright (C) 2012-2016 LunarG, Inc.
// //
//All rights reserved. //All rights reserved.
// //
@ -493,6 +493,36 @@ enum TOperator {
EOpBitCount, EOpBitCount,
EOpFindLSB, EOpFindLSB,
EOpFindMSB, EOpFindMSB,
//
// HLSL operations
//
EOpClip, // discard if input value < 0
EOpIsFinite,
EOpLog10, // base 10 log
EOpRcp, // 1/x
EOpSaturate, // clamp from 0 to 1
EOpSinCos, // sin and cos in out parameters
EOpGenMul, // mul(x,y) on any of mat/vec/scalars
EOpDst, // x = 1, y=src0.y * src1.y, z=src0.z, w=src1.w
EOpInterlockedAdd, // atomic ops, but uses [optional] out arg instead of return
EOpInterlockedAnd, // ...
EOpInterlockedCompareExchange, // ...
EOpInterlockedCompareStore, // ...
EOpInterlockedExchange, // ...
EOpInterlockedMax, // ...
EOpInterlockedMin, // ...
EOpInterlockedOr, // ...
EOpInterlockedXor, // ...
EOpAllMemoryBarrierWithGroupSync, // memory barriers without non-hlsl AST equivalents
EOpGroupMemoryBarrierWithGroupSync, // ...
EOpWorkgroupMemoryBarrier, // ...
EOpWorkgroupMemoryBarrierWithGroupSync, // ...
EOpEvaluateAttributeSnapped, // InterpolateAtOffset with int position on 16x16 grid
EOpF32tof16, // HLSL conversion: half of a PackHalf2x16
EOpF16tof32, // HLSL conversion: half of an UnpackHalf2x16
EOpLit, // HLSL lighting coefficient vector
}; };
class TIntermTraverser; class TIntermTraverser;

View File

@ -63,9 +63,9 @@ const bool ForwardCompatibility = false;
// Using PureOperatorBuiltins=false is deprecated. // Using PureOperatorBuiltins=false is deprecated.
bool PureOperatorBuiltins = true; bool PureOperatorBuiltins = true;
inline bool IncludeLegacy(int version, EProfile profile, int spv) inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion)
{ {
return profile != EEsProfile && (version <= 130 || (spv == 0 && ARBCompatibility) || profile == ECompatibilityProfile); return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && ARBCompatibility) || profile == ECompatibilityProfile);
} }
// Construct TBuiltInParseables base class. This can be used for language-common constructs. // Construct TBuiltInParseables base class. This can be used for language-common constructs.
@ -114,7 +114,7 @@ TBuiltIns::~TBuiltIns()
// Most built-ins variables can be added as simple text strings. Some need to // Most built-ins variables can be added as simple text strings. Some need to
// be added programmatically, which is done later in IdentifyBuiltIns() below. // be added programmatically, which is done later in IdentifyBuiltIns() below.
// //
void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan) void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion)
{ {
//============================================================================ //============================================================================
// //
@ -859,26 +859,26 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
if ((profile == EEsProfile && version >= 300) || if ((profile == EEsProfile && version >= 300) ||
(profile != EEsProfile && version >= 330)) { (profile != EEsProfile && version >= 330)) {
commonBuiltins.append( commonBuiltins.append(
"int floatBitsToInt(float value);" "highp int floatBitsToInt(highp float value);"
"ivec2 floatBitsToInt(vec2 value);" "highp ivec2 floatBitsToInt(highp vec2 value);"
"ivec3 floatBitsToInt(vec3 value);" "highp ivec3 floatBitsToInt(highp vec3 value);"
"ivec4 floatBitsToInt(vec4 value);" "highp ivec4 floatBitsToInt(highp vec4 value);"
"uint floatBitsToUint(float value);" "highp uint floatBitsToUint(highp float value);"
"uvec2 floatBitsToUint(vec2 value);" "highp uvec2 floatBitsToUint(highp vec2 value);"
"uvec3 floatBitsToUint(vec3 value);" "highp uvec3 floatBitsToUint(highp vec3 value);"
"uvec4 floatBitsToUint(vec4 value);" "highp uvec4 floatBitsToUint(highp vec4 value);"
"float intBitsToFloat(int value);" "highp float intBitsToFloat(highp int value);"
"vec2 intBitsToFloat(ivec2 value);" "highp vec2 intBitsToFloat(highp ivec2 value);"
"vec3 intBitsToFloat(ivec3 value);" "highp vec3 intBitsToFloat(highp ivec3 value);"
"vec4 intBitsToFloat(ivec4 value);" "highp vec4 intBitsToFloat(highp ivec4 value);"
"float uintBitsToFloat(uint value);" "highp float uintBitsToFloat(highp uint value);"
"vec2 uintBitsToFloat(uvec2 value);" "highp vec2 uintBitsToFloat(highp uvec2 value);"
"vec3 uintBitsToFloat(uvec3 value);" "highp vec3 uintBitsToFloat(highp uvec3 value);"
"vec4 uintBitsToFloat(uvec4 value);" "highp vec4 uintBitsToFloat(highp uvec4 value);"
"\n"); "\n");
} }
@ -1174,7 +1174,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
profile == ECompatibilityProfile || profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) || (profile == ECoreProfile && version < 420) ||
profile == ENoProfile) { profile == ENoProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
commonBuiltins.append( commonBuiltins.append(
"vec4 texture2D(sampler2D, vec2);" "vec4 texture2D(sampler2D, vec2);"
@ -1193,7 +1193,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
if ( profile == ECompatibilityProfile || if ( profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) || (profile == ECoreProfile && version < 420) ||
profile == ENoProfile) { profile == ENoProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
commonBuiltins.append( commonBuiltins.append(
"vec4 texture1D(sampler1D, float);" "vec4 texture1D(sampler1D, float);"
@ -1216,7 +1216,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
} }
if (profile == EEsProfile) { if (profile == EEsProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
commonBuiltins.append( commonBuiltins.append(
"vec4 texture2D(samplerExternalOES, vec2 coord);" // GL_OES_EGL_image_external, caught by keyword check "vec4 texture2D(samplerExternalOES, vec2 coord);" // GL_OES_EGL_image_external, caught by keyword check
"vec4 texture2DProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external, caught by keyword check "vec4 texture2DProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external, caught by keyword check
@ -1258,7 +1258,8 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n"); "\n");
} }
if (vulkan == 0) { if (spvVersion.vulkan == 0) {
// gl_spirv TODO
// //
// Atomic counter functions. // Atomic counter functions.
// //
@ -1479,7 +1480,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
// //
// Geometric Functions. // Geometric Functions.
// //
if (IncludeLegacy(version, profile, spv)) if (IncludeLegacy(version, profile, spvVersion))
stageBuiltins[EShLangVertex].append("vec4 ftransform();"); stageBuiltins[EShLangVertex].append("vec4 ftransform();");
// //
@ -1494,7 +1495,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
profile == ECompatibilityProfile || profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) || (profile == ECoreProfile && version < 420) ||
profile == ENoProfile) { profile == ENoProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
s->append( s->append(
"vec4 texture2DLod(sampler2D, vec2, float);" // GL_ARB_shader_texture_lod "vec4 texture2DLod(sampler2D, vec2, float);" // GL_ARB_shader_texture_lod
"vec4 texture2DProjLod(sampler2D, vec3, float);" // GL_ARB_shader_texture_lod "vec4 texture2DProjLod(sampler2D, vec3, float);" // GL_ARB_shader_texture_lod
@ -1509,7 +1510,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
if ( profile == ECompatibilityProfile || if ( profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) || (profile == ECoreProfile && version < 420) ||
profile == ENoProfile) { profile == ENoProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
s->append( s->append(
"vec4 texture1DLod(sampler1D, float, float);" // GL_ARB_shader_texture_lod "vec4 texture1DLod(sampler1D, float, float);" // GL_ARB_shader_texture_lod
"vec4 texture1DProjLod(sampler1D, vec2, float);" // GL_ARB_shader_texture_lod "vec4 texture1DProjLod(sampler1D, vec2, float);" // GL_ARB_shader_texture_lod
@ -1572,7 +1573,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
stageBuiltins[EShLangTessControl].append( stageBuiltins[EShLangTessControl].append(
"void barrier();" "void barrier();"
); );
if ((profile != EEsProfile && version >= 430) || esBarrier) if ((profile != EEsProfile && version >= 420) || esBarrier)
stageBuiltins[EShLangCompute].append( stageBuiltins[EShLangCompute].append(
"void barrier();" "void barrier();"
); );
@ -1580,7 +1581,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
commonBuiltins.append( commonBuiltins.append(
"void memoryBarrier();" "void memoryBarrier();"
); );
if ((profile != EEsProfile && version >= 430) || esBarrier) { if ((profile != EEsProfile && version >= 420) || esBarrier) {
commonBuiltins.append( commonBuiltins.append(
"void memoryBarrierAtomicCounter();" "void memoryBarrierAtomicCounter();"
"void memoryBarrierBuffer();" "void memoryBarrierBuffer();"
@ -1601,7 +1602,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
// //
// Original-style texture Functions with bias. // Original-style texture Functions with bias.
// //
if (spv == 0 && (profile != EEsProfile || version == 100)) { if (spvVersion.spv == 0 && (profile != EEsProfile || version == 100)) {
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"vec4 texture2D(sampler2D, vec2, float);" "vec4 texture2D(sampler2D, vec2, float);"
"vec4 texture2DProj(sampler2D, vec3, float);" "vec4 texture2DProj(sampler2D, vec3, float);"
@ -1612,7 +1613,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n"); "\n");
} }
if (spv == 0 && (profile != EEsProfile && version > 100)) { if (spvVersion.spv == 0 && (profile != EEsProfile && version > 100)) {
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"vec4 texture1D(sampler1D, float, float);" "vec4 texture1D(sampler1D, float, float);"
"vec4 texture1DProj(sampler1D, vec2, float);" "vec4 texture1DProj(sampler1D, vec2, float);"
@ -1624,7 +1625,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n"); "\n");
} }
if (spv == 0 && profile == EEsProfile) { if (spvVersion.spv == 0 && profile == EEsProfile) {
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"vec4 texture2DLodEXT(sampler2D, vec2, float);" // GL_EXT_shader_texture_lod "vec4 texture2DLodEXT(sampler2D, vec2, float);" // GL_EXT_shader_texture_lod
"vec4 texture2DProjLodEXT(sampler2D, vec3, float);" // GL_EXT_shader_texture_lod "vec4 texture2DProjLodEXT(sampler2D, vec3, float);" // GL_EXT_shader_texture_lod
@ -1722,7 +1723,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
// //
// Depth range in window coordinates, p. 33 // Depth range in window coordinates, p. 33
// //
if (vulkan == 0) { if (spvVersion.spv == 0) {
commonBuiltins.append( commonBuiltins.append(
"struct gl_DepthRangeParameters {" "struct gl_DepthRangeParameters {"
); );
@ -1746,7 +1747,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n"); "\n");
} }
if (vulkan == 0 && IncludeLegacy(version, profile, spv)) { if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) {
// //
// Matrix state. p. 31, 32, 37, 39, 40. // Matrix state. p. 31, 32, 37, 39, 40.
// //
@ -1871,7 +1872,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
// //
//============================================================================ //============================================================================
if ((profile != EEsProfile && version >= 430) || if ((profile != EEsProfile && version >= 420) ||
(profile == EEsProfile && version >= 310)) { (profile == EEsProfile && version >= 310)) {
stageBuiltins[EShLangCompute].append( stageBuiltins[EShLangCompute].append(
"in highp uvec3 gl_NumWorkGroups;" "in highp uvec3 gl_NumWorkGroups;"
@ -1909,7 +1910,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"attribute vec4 gl_MultiTexCoord7;" "attribute vec4 gl_MultiTexCoord7;"
"attribute float gl_FogCoord;" "attribute float gl_FogCoord;"
"\n"); "\n");
} else if (IncludeLegacy(version, profile, spv)) { } else if (IncludeLegacy(version, profile, spvVersion)) {
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"in vec4 gl_Color;" "in vec4 gl_Color;"
"in vec4 gl_SecondaryColor;" "in vec4 gl_SecondaryColor;"
@ -1938,7 +1939,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"varying vec4 gl_TexCoord[];" "varying vec4 gl_TexCoord[];"
"varying float gl_FogFragCoord;" "varying float gl_FogFragCoord;"
"\n"); "\n");
} else if (IncludeLegacy(version, profile, spv)) { } else if (IncludeLegacy(version, profile, spvVersion)) {
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
" vec4 gl_ClipVertex;" // needs qualifier fixed later " vec4 gl_ClipVertex;" // needs qualifier fixed later
"out vec4 gl_FrontColor;" "out vec4 gl_FrontColor;"
@ -1966,7 +1967,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"float gl_PointSize;" // needs qualifier fixed later "float gl_PointSize;" // needs qualifier fixed later
"float gl_ClipDistance[];" "float gl_ClipDistance[];"
); );
if (IncludeLegacy(version, profile, spv)) if (IncludeLegacy(version, profile, spvVersion))
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"vec4 gl_ClipVertex;" // needs qualifier fixed later "vec4 gl_ClipVertex;" // needs qualifier fixed later
"vec4 gl_FrontColor;" "vec4 gl_FrontColor;"
@ -1984,15 +1985,18 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"};" "};"
"\n"); "\n");
} }
if (version >= 130 && vulkan == 0) if (version >= 130 && spvVersion.vulkan == 0)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"int gl_VertexID;" // needs qualifier fixed later "int gl_VertexID;" // needs qualifier fixed later
); );
if (version >= 140 && vulkan == 0) if (version >= 140 && spvVersion.vulkan == 0)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"int gl_InstanceID;" // needs qualifier fixed later "int gl_InstanceID;" // needs qualifier fixed later
); );
if (vulkan > 0 && version >= 140) if (spvVersion.vulkan >= 100 && version >= 140)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"in int gl_VertexIndex;" "in int gl_VertexIndex;"
"in int gl_InstanceIndex;" "in int gl_InstanceIndex;"
@ -2012,12 +2016,14 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"mediump float gl_PointSize;" // needs qualifier fixed later "mediump float gl_PointSize;" // needs qualifier fixed later
); );
} else { } else {
if (vulkan == 0) if (spvVersion.vulkan == 0)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"in highp int gl_VertexID;" // needs qualifier fixed later "in highp int gl_VertexID;" // needs qualifier fixed later
"in highp int gl_InstanceID;" // needs qualifier fixed later "in highp int gl_InstanceID;" // needs qualifier fixed later
); );
if (vulkan > 0) if (spvVersion.vulkan >= 100)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"in highp int gl_VertexIndex;" "in highp int gl_VertexIndex;"
"in highp int gl_InstanceIndex;" "in highp int gl_InstanceIndex;"
@ -2270,7 +2276,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"vec2 gl_PointCoord;" // needs qualifier fixed later "vec2 gl_PointCoord;" // needs qualifier fixed later
); );
if (IncludeLegacy(version, profile, spv) || (! ForwardCompatibility && version < 420)) if (IncludeLegacy(version, profile, spvVersion) || (! ForwardCompatibility && version < 420))
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"vec4 gl_FragColor;" // needs qualifier fixed later "vec4 gl_FragColor;" // needs qualifier fixed later
); );
@ -2287,7 +2293,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"in float gl_ClipDistance[];" "in float gl_ClipDistance[];"
); );
if (IncludeLegacy(version, profile, spv)) { if (IncludeLegacy(version, profile, spvVersion)) {
if (version < 150) if (version < 150)
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"in float gl_FogFragCoord;" "in float gl_FogFragCoord;"
@ -2373,7 +2379,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
stageBuiltins[EShLangFragment].append("\n"); stageBuiltins[EShLangFragment].append("\n");
if (version >= 130) if (version >= 130)
add2ndGenerationSamplingImaging(version, profile, spv, vulkan); add2ndGenerationSamplingImaging(version, profile, spvVersion);
// GL_ARB_shader_ballot // GL_ARB_shader_ballot
if (profile != EEsProfile && version >= 450) { if (profile != EEsProfile && version >= 450) {
@ -2398,7 +2404,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
// Helper function for initialize(), to add the second set of names for texturing, // Helper function for initialize(), to add the second set of names for texturing,
// when adding context-independent built-in functions. // when adding context-independent built-in functions.
// //
void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, int /*spv*/, int vulkan) void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion)
{ {
// //
// In this function proper, enumerate the types, then calls the next set of functions // In this function proper, enumerate the types, then calls the next set of functions
@ -2425,7 +2431,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, i
for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not
for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, 2D, ..., buffer for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, 2D, ..., buffer
if (dim == EsdSubpass && vulkan == 0) if (dim == EsdSubpass && spvVersion.vulkan == 0)
continue; continue;
if (dim == EsdSubpass && (image || shadow || arrayed)) if (dim == EsdSubpass && (image || shadow || arrayed))
continue; continue;
@ -3029,7 +3035,7 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int vers
// add stage-specific entries to the commonBuiltins, and only if that stage // add stage-specific entries to the commonBuiltins, and only if that stage
// was requested. // was requested.
// //
void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, int spv, int vulkan, EShLanguage language) void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language)
{ {
// //
// Initialize the context-dependent (resource-dependent) built-in strings for parsing. // Initialize the context-dependent (resource-dependent) built-in strings for parsing.
@ -3192,7 +3198,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformComponents = %d;", resources.maxFragmentUniformComponents); snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformComponents = %d;", resources.maxFragmentUniformComponents);
s.append(builtInConstant); s.append(builtInConstant);
if (vulkan == 0 && IncludeLegacy(version, profile, spv)) { if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) {
// //
// OpenGL'uniform' state. Page numbers are in reference to version // OpenGL'uniform' state. Page numbers are in reference to version
// 1.4 of the OpenGL specification. // 1.4 of the OpenGL specification.
@ -3421,7 +3427,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
// compute // compute
if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 430)) { if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) {
snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX, snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX,
resources.maxComputeWorkGroupCountY, resources.maxComputeWorkGroupCountY,
resources.maxComputeWorkGroupCountZ); resources.maxComputeWorkGroupCountZ);
@ -3536,7 +3542,7 @@ static void BuiltInVariable(const char* blockName, const char* name, TBuiltInVar
// 3) Tag extension-related symbols added to their base version with their extensions, so // 3) Tag extension-related symbols added to their base version with their extensions, so
// that if an early version has the extension turned off, there is an error reported on use. // that if an early version has the extension turned off, there is an error reported on use.
// //
void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vulkan, EShLanguage language, TSymbolTable& symbolTable) void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable)
{ {
// //
// Tag built-in variables and functions with additional qualifier and extension information // Tag built-in variables and functions with additional qualifier and extension information
@ -3589,7 +3595,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
} }
// Compatibility variables, vertex only // Compatibility variables, vertex only
if (spv == 0) { if (spvVersion.spv == 0) {
BuiltInVariable("gl_Color", EbvColor, symbolTable); BuiltInVariable("gl_Color", EbvColor, symbolTable);
BuiltInVariable("gl_SecondaryColor", EbvSecondaryColor, symbolTable); BuiltInVariable("gl_SecondaryColor", EbvSecondaryColor, symbolTable);
BuiltInVariable("gl_Normal", EbvNormal, symbolTable); BuiltInVariable("gl_Normal", EbvNormal, symbolTable);
@ -3606,7 +3612,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
} }
if (profile == EEsProfile) { if (profile == EEsProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod);
@ -3627,7 +3633,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic);
} }
if (vulkan == 0) { if (spvVersion.vulkan == 0) {
// gl_spirv TODO
SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable); SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable);
SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable);
} }
@ -3762,7 +3769,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
// built-in functions // built-in functions
if (profile == EEsProfile) { if (profile == EEsProfile) {
if (spv == 0) { if (spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture2DLodEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DLodEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("texture2DProjLodEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjLodEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("textureCubeLodEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeLodEXT", 1, &E_GL_EXT_shader_texture_lod);
@ -3783,7 +3790,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
symbolTable.setFunctionExtensions("interpolateAtOffset", 1, &E_GL_OES_shader_multisample_interpolation); symbolTable.setFunctionExtensions("interpolateAtOffset", 1, &E_GL_OES_shader_multisample_interpolation);
} }
} else if (version < 130) { } else if (version < 130) {
if (spv == 0) { if (spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture1DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture1DLod", 1, &E_GL_ARB_shader_texture_lod);
symbolTable.setFunctionExtensions("texture2DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DLod", 1, &E_GL_ARB_shader_texture_lod);
symbolTable.setFunctionExtensions("texture3DLod", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture3DLod", 1, &E_GL_ARB_shader_texture_lod);
@ -3799,7 +3806,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
} }
// E_GL_ARB_shader_texture_lod functions usable only with the extension enabled // E_GL_ARB_shader_texture_lod functions usable only with the extension enabled
if (profile != EEsProfile && spv == 0) { if (profile != EEsProfile && spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture1DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture1DGradARB", 1, &E_GL_ARB_shader_texture_lod);
symbolTable.setFunctionExtensions("texture1DProjGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture1DProjGradARB", 1, &E_GL_ARB_shader_texture_lod);
symbolTable.setFunctionExtensions("texture2DGradARB", 1, &E_GL_ARB_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DGradARB", 1, &E_GL_ARB_shader_texture_lod);
@ -3896,6 +3903,30 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable);
BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable);
BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable);
if (profile != EEsProfile && version < 430) {
symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeWorkGroupCount", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeWorkGroupSize", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeUniformComponents", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeTextureImageUnits", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeImageUniforms", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounters", 1, &E_GL_ARB_compute_shader);
symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounterBuffers", 1, &E_GL_ARB_compute_shader);
symbolTable.setFunctionExtensions("barrier", 1, &E_GL_ARB_compute_shader);
symbolTable.setFunctionExtensions("memoryBarrierAtomicCounter", 1, &E_GL_ARB_compute_shader);
symbolTable.setFunctionExtensions("memoryBarrierBuffer", 1, &E_GL_ARB_compute_shader);
symbolTable.setFunctionExtensions("memoryBarrierImage", 1, &E_GL_ARB_compute_shader);
symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_ARB_compute_shader);
symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_ARB_compute_shader);
}
break; break;
default: default:
@ -4092,7 +4123,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
symbolTable.relateToOperator("noise3", EOpNoise); symbolTable.relateToOperator("noise3", EOpNoise);
symbolTable.relateToOperator("noise4", EOpNoise); symbolTable.relateToOperator("noise4", EOpNoise);
if (spv == 0 && (IncludeLegacy(version, profile, spv) || (profile == EEsProfile && version == 100))) { if (spvVersion.spv == 0 && (IncludeLegacy(version, profile, spvVersion) ||
(profile == EEsProfile && version == 100))) {
symbolTable.relateToOperator("ftransform", EOpFtransform); symbolTable.relateToOperator("ftransform", EOpFtransform);
symbolTable.relateToOperator("texture1D", EOpTexture); symbolTable.relateToOperator("texture1D", EOpTexture);
@ -4232,7 +4264,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
// 2) Tag extension-related symbols added to their base version with their extensions, so // 2) Tag extension-related symbols added to their base version with their extensions, so
// that if an early version has the extension turned off, there is an error reported on use. // that if an early version has the extension turned off, there is an error reported on use.
// //
void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int /*vulkan*/, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources)
{ {
if (profile != EEsProfile && version >= 430 && version < 440) { if (profile != EEsProfile && version >= 430 && version < 440) {
symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts); symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts);
@ -4248,7 +4280,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int /*v
switch(language) { switch(language) {
case EShLangFragment: case EShLangFragment:
// Set up gl_FragData based on current array size. // Set up gl_FragData based on current array size.
if (version == 100 || IncludeLegacy(version, profile, spv) || (! ForwardCompatibility && profile != EEsProfile && version < 420)) { if (version == 100 || IncludeLegacy(version, profile, spvVersion) || (! ForwardCompatibility && profile != EEsProfile && version < 420)) {
TPrecisionQualifier pq = profile == EEsProfile ? EpqMedium : EpqNone; TPrecisionQualifier pq = profile == EEsProfile ? EpqMedium : EpqNone;
TType fragData(EbtFloat, EvqFragColor, pq, 4); TType fragData(EbtFloat, EvqFragColor, pq, 4);
TArraySizes& arraySizes = *new TArraySizes; TArraySizes& arraySizes = *new TArraySizes;

View File

@ -61,14 +61,14 @@ public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
TBuiltInParseables(); TBuiltInParseables();
virtual ~TBuiltInParseables(); virtual ~TBuiltInParseables();
virtual void initialize(int version, EProfile, int spv, int vulkan) = 0; virtual void initialize(int version, EProfile, const SpvVersion& spvVersion) = 0;
virtual void initialize(const TBuiltInResource& resources, int version, EProfile, int spv, int vulkan, EShLanguage) = 0; virtual void initialize(const TBuiltInResource& resources, int version, EProfile, const SpvVersion& spvVersion, EShLanguage) = 0;
virtual const TString& getCommonString() const { return commonBuiltins; } virtual const TString& getCommonString() const { return commonBuiltins; }
virtual const TString& getStageString(EShLanguage language) const { return stageBuiltins[language]; } virtual const TString& getStageString(EShLanguage language) const { return stageBuiltins[language]; }
virtual void identifyBuiltIns(int version, EProfile profile, int spv, int vulkan, EShLanguage language, TSymbolTable& symbolTable) = 0; virtual void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) = 0;
virtual void identifyBuiltIns(int version, EProfile profile, int spv, int /*vulkan*/, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) = 0; virtual void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) = 0;
protected: protected:
TString commonBuiltins; TString commonBuiltins;
@ -85,15 +85,15 @@ public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
TBuiltIns(); TBuiltIns();
virtual ~TBuiltIns(); virtual ~TBuiltIns();
void initialize(int version, EProfile, int spv, int vulkan); void initialize(int version, EProfile, const SpvVersion& spvVersion);
void initialize(const TBuiltInResource& resources, int version, EProfile, int spv, int vulkan, EShLanguage); void initialize(const TBuiltInResource& resources, int version, EProfile, const SpvVersion& spvVersion, EShLanguage);
void identifyBuiltIns(int version, EProfile profile, int spv, int vulkan, EShLanguage language, TSymbolTable& symbolTable); void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable);
void identifyBuiltIns(int version, EProfile profile, int spv, int /*vulkan*/, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources); void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources);
protected: protected:
void add2ndGenerationSamplingImaging(int version, EProfile profile, int spv, int vulkan); void add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion);
void addSubpassSampling(TSampler, TString& typeName, int version, EProfile profile); void addSubpassSampling(TSampler, TString& typeName, int version, EProfile profile);
void addQueryFunctions(TSampler, TString& typeName, int version, EProfile profile); void addQueryFunctions(TSampler, TString& typeName, int version, EProfile profile);
void addImageFunctions(TSampler, TString& typeName, int version, EProfile profile); void addImageFunctions(TSampler, TString& typeName, int version, EProfile profile);

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