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)
if(WIN32)
set(CMAKE_DEBUG_POSTFIX "d")
include(ChooseMSVCCRT.cmake)
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
elseif(UNIX)
@ -23,6 +24,17 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
add_definitions(-std=c++11)
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.
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.
//
//All rights reserved.
@ -111,7 +111,7 @@ public:
protected:
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::Id createSpvVariable(const glslang::TIntermSymbol*);
spv::Id getSampledType(const glslang::TSampler&);
@ -124,7 +124,7 @@ protected:
int getArrayStride(const glslang::TType& arrayType, 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 declareClipCullCapability(const glslang::TTypeList& members, int member);
void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember);
bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
void makeFunctions(const glslang::TIntermSequence&);
@ -229,16 +229,18 @@ spv::StorageClass TranslateStorageClass(const glslang::TType& type)
return spv::StorageClassInput;
else if (type.getQualifier().isPipeOutput())
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()) {
if (type.getQualifier().layoutPushConstant)
return spv::StorageClassPushConstant;
if (type.getBasicType() == glslang::EbtBlock)
return spv::StorageClassUniform;
else if (type.getBasicType() == glslang::EbtAtomicUint)
return spv::StorageClassAtomicCounter;
else
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 {
switch (type.getQualifier().storage) {
case glslang::EvqShared: return spv::StorageClassWorkgroup; break;
@ -403,21 +405,28 @@ spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qual
return (spv::Decoration)spv::BadValue;
}
// Translate glslang built-in variable to SPIR-V built in decoration.
spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, bool member)
// Translate a glslang built-in variable to a SPIR-V built in decoration. Also generate
// 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) {
case glslang::EbvPointSize:
switch (glslangIntermediate->getStage()) {
case EShLangGeometry:
builder.addCapability(spv::CapabilityGeometryPointSize);
break;
case EShLangTessControl:
case EShLangTessEvaluation:
builder.addCapability(spv::CapabilityTessellationPointSize);
break;
default:
break;
// Defer adding the capability until the built-in is actually used.
if (!memberDeclaration) {
switch (glslangIntermediate->getStage()) {
case EShLangGeometry:
builder.addCapability(spv::CapabilityGeometryPointSize);
break;
case EShLangTessControl:
case EShLangTessEvaluation:
builder.addCapability(spv::CapabilityTessellationPointSize);
break;
default:
break;
}
}
return spv::BuiltInPointSize;
@ -428,13 +437,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
// use needed is to trigger the capability.
//
case glslang::EbvClipDistance:
if (! member)
builder.addCapability(spv::CapabilityClipDistance);
if (!memberDeclaration)
builder.addCapability(spv::CapabilityClipDistance);
return spv::BuiltInClipDistance;
case glslang::EbvCullDistance:
if (! member)
builder.addCapability(spv::CapabilityCullDistance);
if (!memberDeclaration)
builder.addCapability(spv::CapabilityCullDistance);
return spv::BuiltInCullDistance;
case glslang::EbvViewportIndex:
@ -636,9 +645,9 @@ bool HasNonLayoutQualifiers(const glslang::TQualifier& qualifier)
{
// This should list qualifiers that simultaneous satisfy:
// - 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
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
int index = 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];
}
const int glslangIndex = node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst();
if (! node->getLeft()->getType().isArray() &&
node->getLeft()->getType().isVector() &&
node->getOp() == glslang::EOpIndexDirect) {
// This is essentially a hard-coded vector swizzle of size 1,
// so short circuit the access-chain stuff with a 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()));
} else {
// normal case for indexing array or structure or block
builder.accessChainPush(builder.makeIntConstant(index));
int spvIndex = glslangIndex;
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())
declareClipCullCapability(*node->getLeft()->getType().getStruct(), index);
declareUseOfStructMember(*(node->getLeft()->getType().getStruct()), glslangIndex);
}
}
return false;
@ -1394,6 +1407,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpMemoryBarrierImage:
case glslang::EOpMemoryBarrierShared:
case glslang::EOpGroupMemoryBarrier:
case glslang::EOpAllMemoryBarrierWithGroupSync:
case glslang::EOpGroupMemoryBarrierWithGroupSync:
case glslang::EOpWorkgroupMemoryBarrier:
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
noReturnValue = true;
// These all have 0 operands and will naturally finish up in the code below for 0 operands
break;
@ -1902,8 +1919,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType));
// 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) {
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier));
addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier));
if (type.getBasicType() == glslang::EbtBlock) {
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier));
addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier));
}
}
addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier));
@ -2205,12 +2224,23 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& /*structTy
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)
builder.addCapability(spv::CapabilityClipDistance);
if (members[member].type->getQualifier().builtIn == glslang::EbvCullDistance)
builder.addCapability(spv::CapabilityCullDistance);
const glslang::TBuiltInVariable glslangBuiltIn = members[glslangMember].type->getQualifier().builtIn;
switch (glslangBuiltIn)
{
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)
@ -2250,7 +2280,9 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
for (int p = 0; p < (int)parameters.size(); ++p) {
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
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);
else
constReadOnlyParameters.insert(parameters[p]->getAsSymbolNode()->getId());
@ -2560,6 +2592,13 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
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
params.coords = arguments[1];
@ -2575,14 +2614,16 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
++extraArgs;
} else if (sampler.shadow) {
std::vector<spv::Id> indexes;
int comp;
int dRefComp;
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
comp = builder.getNumComponents(params.coords) - 1;
indexes.push_back(comp);
dRefComp = builder.getNumComponents(params.coords) - 1;
indexes.push_back(dRefComp);
params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes);
}
// lod
if (cracked.lod) {
params.lod = arguments[2];
++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
noImplicitLod = true;
}
// multisample
if (sampler.ms) {
params.sample = arguments[2]; // For MS, "sample" should be specified
++extraArgs;
}
// gradient
if (cracked.grad) {
params.gradX = arguments[2 + extraArgs];
params.gradY = arguments[3 + extraArgs];
extraArgs += 2;
}
// offset and offsets
if (cracked.offset) {
params.offset = arguments[2 + extraArgs];
++extraArgs;
@ -2606,25 +2653,57 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
params.offsets = arguments[2 + extraArgs];
++extraArgs;
}
// lod clamp
if (cracked.lodClamp) {
params.lodClamp = arguments[2 + extraArgs];
++extraArgs;
}
// sparse
if (sparse) {
params.texelOut = arguments[2 + extraArgs];
++extraArgs;
}
// bias
if (bias) {
params.bias = arguments[2 + extraArgs];
++extraArgs;
}
// gather component
if (cracked.gather && ! sampler.shadow) {
// default component is 0, if missing, otherwise an argument
if (2 + extraArgs < (int)arguments.size()) {
params.comp = arguments[2 + extraArgs];
params.component = arguments[2 + extraArgs];
++extraArgs;
} 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();
glslangArgs[a]->traverse(this);
argTypes.push_back(&paramType);
// keep outputs as and samplers l-values, evaluate input-only as r-values
if (qualifiers[a] != glslang::EvqConstReadOnly || paramType.getBasicType() == glslang::EbtSampler) {
// keep outputs as and opaque objects l-values, evaluate input-only as r-values
if (qualifiers[a] != glslang::EvqConstReadOnly || paramType.isOpaque()) {
// save l-value
lValues.push_back(builder.getAccessChain());
} else {
@ -2679,7 +2758,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
for (int a = 0; a < (int)glslangArgs.size(); ++a) {
const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
spv::Id arg;
if (paramType.getBasicType() == glslang::EbtSampler) {
if (paramType.isOpaque()) {
builder.setAccessChain(lValues[lValueCount]);
arg = builder.accessChainGetLValue();
++lValueCount;
@ -3001,7 +3080,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, spv::Dec
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 algorithm is to:
// - break the matrix(es) into vectors
@ -3012,6 +3091,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, spv::Dec
case spv::OpFAdd:
case spv::OpFSub:
case spv::OpFDiv:
case spv::OpFMod:
case spv::OpFMul:
{
// one time set up...
@ -3178,6 +3258,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
case glslang::EOpIsInf:
unaryOp = spv::OpIsInf;
break;
case glslang::EOpIsFinite:
unaryOp = spv::OpIsFinite;
break;
case glslang::EOpFloatBitsToInt:
case glslang::EOpFloatBitsToUint:
@ -3889,8 +3972,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
builder.createNoResultOp(spv::OpEndPrimitive);
return 0;
case glslang::EOpBarrier:
if (glslangIntermediate->getProfile() != EEsProfile)
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
return 0;
case glslang::EOpMemoryBarrier:
@ -3911,6 +3992,21 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
case glslang::EOpGroupMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
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:
logger->missingFunctionality("unknown operation with no arguments");
return 0;
@ -4044,7 +4140,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n
// 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 = ...
if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) {
std::vector<spv::Id> dimConstId;

View File

@ -926,8 +926,17 @@ namespace spv {
// Count function variable use
process(
[&](spv::Op opCode, unsigned start) {
if (opCode == spv::OpVariable) { ++varUseCount[asId(start+2)]; return true; }
return false;
if (opCode == spv::OpVariable) {
++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]; }

View File

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

View File

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

View File

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

View File

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

View File

@ -213,6 +213,12 @@ float fooinit()
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)
#line 3000

View File

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

View File

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

View File

@ -147,7 +147,7 @@ uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[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));
void pfooBad()
@ -158,10 +158,10 @@ void pfooBad()
auArray[sIndex + 1];
ubInst[1];
bbInst[2];
ubInst[sIndex + 1]; // ERRRO, not supported
bbInst[sIndex]; // ERRRO, not supported
ubInst[sIndex + 1]; // ERROR, not supported
bbInst[sIndex]; // ERROR, not supported
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
textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); // ERROR, not available
}

View File

@ -148,3 +148,5 @@ void fooKeyMem()
{
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:194: '.' : cannot apply to an array: method
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:3002: '' : syntax error
ERROR: 77 compilation errors. No code generated.
@ -90,6 +90,7 @@ ERROR: 77 compilation errors. No code generated.
Shader version: 100
Requested GL_EXT_frag_depth
Requested GL_EXT_shader_non_constant_global_initializers
Requested GL_EXT_shader_texture_lod
Requested GL_OES_EGL_image_external
Requested GL_OES_standard_derivatives
@ -376,6 +377,18 @@ ERROR: node is still EOpNull!
0:214 false case
0:214 Constant:
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:? 'a' (global 3-element array of mediump int)
0:? 'uint' (global mediump int)
@ -407,6 +420,7 @@ ERROR: node is still EOpNull!
0:? 'fi3' (const mediump float)
0:? 5.000000
0:? 'init1' (global mediump int)
0:? 'init2' (global mediump int)
Linked fragment stage:
@ -414,6 +428,7 @@ Linked fragment stage:
Shader version: 100
Requested GL_EXT_frag_depth
Requested GL_EXT_shader_non_constant_global_initializers
Requested GL_EXT_shader_texture_lod
Requested GL_OES_EGL_image_external
Requested GL_OES_standard_derivatives
@ -700,6 +715,18 @@ ERROR: node is still EOpNull!
0:214 false case
0:214 Constant:
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:? 'a' (global 3-element array of mediump int)
0:? 'uint' (global mediump int)
@ -731,4 +758,5 @@ ERROR: node is still EOpNull!
0:? 'fi3' (const mediump float)
0:? 5.000000
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 'v4' (global mediump 4-component vector of float)
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 floatBitsToInt (global mediump int)
0:56 floatBitsToInt (global highp int)
0:56 'f' (global mediump float)
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 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: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 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: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 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:62 Sequence
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 'v4' (global mediump 4-component vector of float)
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 floatBitsToInt (global mediump int)
0:56 floatBitsToInt (global highp int)
0:56 'f' (global mediump float)
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 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: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 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: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 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:62 Sequence
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: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: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:88: 'imageAtomicAdd' : 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
WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved
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
@ -143,7 +145,7 @@ ERROR: node is still EOpNull!
0:87 'i' (temp highp int)
0:87 'i' (temp highp int)
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 '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: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 '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:? 'iimg2D' (layout(r32i ) uniform highp iimage2D)
0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)
0:? 'uimg2D' (layout(r32ui ) uniform highp uimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:? 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:? 'vol' (volatile temp highp float)
0:? 'vol2' (readonly temp highp int)
0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)
0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)
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:? 'i4bad' (layout(r8_snorm ) 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:? 'sca' (uniform mediump samplerCubeArray)
0:? 'i2dr' (uniform mediump iimage2DRect)
0:? 'i2dms' (uniform lowp image2DMS)
0:? 'i2dms' (uniform highp image2DMS)
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:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform lowp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform lowp image2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D)
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})
@ -570,7 +572,7 @@ ERROR: node is still EOpNull!
0:87 'i' (temp highp int)
0:87 'i' (temp highp int)
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 '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: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 '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:? 'iimg2D' (layout(r32i ) uniform highp iimage2D)
0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)
0:? 'uimg2D' (layout(r32ui ) uniform highp uimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:? 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:? 'vol' (volatile temp highp float)
0:? 'vol2' (readonly temp highp int)
0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)
0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)
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:? 'i4bad' (layout(r8_snorm ) 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:? 'sca' (uniform mediump samplerCubeArray)
0:? 'i2dr' (uniform mediump iimage2DRect)
0:? 'i2dms' (uniform lowp image2DMS)
0:? 'i2dms' (uniform highp image2DMS)
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:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform lowp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform lowp image2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D)
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})

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: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: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: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: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:73: 'binding' : requires block, or sampler/image, or atomic-counter type
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:83: 'non-literal layout-id value' : not supported with this profile: es
ERROR: 0:83: 'layout-id value' : cannot be negative
ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:110: 'out' : cannot be bool
ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut
ERROR: 0:111: '' : image variables not declared 'writeonly' must have a format layout qualifier
@ -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:429: 'blend_support' : unknown blend equation
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
@ -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 'v2' (temp 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 'v2' (temp 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 'v2' (temp 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 'v3' (temp 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 'v2' (temp 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 Parameters:
0:167 Sequence
@ -928,9 +931,9 @@ ERROR: node is still EOpNull!
0:? 's2' (layout(binding=3 ) uniform highp sampler2D)
0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D)
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:? '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:? 'centroidIn' (centroid smooth in 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:? 'smoothIn' (smooth in mediump 4-component vector of float)
0:? 'flatIn' (flat in mediump int)
0:? 's2dms' (uniform highp sampler2DMS)
0:? 's2dms' (uniform mediump sampler2DMS)
0:? 'bout' (out bool)
0:? 'imageOut' (out highp image2D)
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 'v2' (temp 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 'v2' (temp 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 'v2' (temp 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 'v3' (temp 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 'v2' (temp 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 Parameters:
0:167 Sequence
@ -1809,9 +1812,9 @@ ERROR: node is still EOpNull!
0:? 's2' (layout(binding=3 ) uniform highp sampler2D)
0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D)
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:? '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:? 'centroidIn' (centroid smooth in 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:? 'smoothIn' (smooth in mediump 4-component vector of float)
0:? 'flatIn' (flat in mediump int)
0:? 's2dms' (uniform highp sampler2DMS)
0:? 's2dms' (uniform mediump sampler2DMS)
0:? 'bout' (out bool)
0:? 'imageOut' (out highp image2D)
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 'ing' (in 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 'sArray' (uniform 4-element array of highp sampler2D)
0:157 indirect index (temp lowp sampler2D)
0:157 'sArray' (uniform 4-element array of lowp sampler2D)
0:157 add (temp highp int)
0:157 'sIndex' (uniform highp int)
0:157 Constant:
@ -330,19 +330,19 @@ ERROR: node is still EOpNull!
0:164 'sIndex' (uniform highp int)
0:164 Constant:
0:164 2 (const int)
0:165 textureGatherOffset (global highp 4-component vector of float)
0:165 direct index (temp highp sampler2D)
0:165 'sArray' (uniform 4-element array of highp sampler2D)
0:165 textureGatherOffset (global lowp 4-component vector of float)
0:165 direct index (temp lowp sampler2D)
0:165 'sArray' (uniform 4-element array of lowp sampler2D)
0:165 Constant:
0:165 0 (const int)
0:165 Constant:
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:166 textureGatherOffsets (global highp 4-component vector of float)
0:166 direct index (temp highp sampler2D)
0:166 'sArray' (uniform 4-element array of highp sampler2D)
0:166 textureGatherOffsets (global lowp 4-component vector of float)
0:166 direct index (temp lowp sampler2D)
0:166 'sArray' (uniform 4-element array of lowp sampler2D)
0:166 Constant:
0:166 0 (const int)
0:166 Constant:
@ -366,8 +366,8 @@ ERROR: node is still EOpNull!
0:174 'inf' (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:175 indirect index (temp highp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D)
0:175 indirect index (temp lowp sampler2D)
0:175 'sArray' (uniform 4-element array of lowp sampler2D)
0:175 add (temp highp int)
0:175 'sIndex' (uniform highp int)
0:175 Constant:
@ -394,19 +394,19 @@ ERROR: node is still EOpNull!
0:179 'sIndex' (uniform highp int)
0:179 Constant:
0:179 2 (const int)
0:180 textureGatherOffset (global highp 4-component vector of float)
0:180 direct index (temp highp sampler2D)
0:180 'sArray' (uniform 4-element array of highp sampler2D)
0:180 textureGatherOffset (global lowp 4-component vector of float)
0:180 direct index (temp lowp sampler2D)
0:180 'sArray' (uniform 4-element array of lowp sampler2D)
0:180 Constant:
0:180 0 (const int)
0:180 Constant:
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:181 textureGatherOffsets (global highp 4-component vector of float)
0:181 direct index (temp highp sampler2D)
0:181 'sArray' (uniform 4-element array of highp sampler2D)
0:181 textureGatherOffsets (global lowp 4-component vector of float)
0:181 direct index (temp lowp sampler2D)
0:181 'sArray' (uniform 4-element array of lowp sampler2D)
0:181 Constant:
0:181 0 (const int)
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:182 textureGatherOffsets (global highp 4-component vector of float)
0:182 direct index (temp highp sampler2D)
0:182 'sArray' (uniform 4-element array of highp sampler2D)
0:182 textureGatherOffsets (global lowp 4-component vector of float)
0:182 direct index (temp lowp sampler2D)
0:182 'sArray' (uniform 4-element array of lowp sampler2D)
0:182 Constant:
0:182 0 (const int)
0:182 Constant:
@ -927,7 +927,7 @@ ERROR: node is still EOpNull!
0:? 'us2dms' (uniform highp usampler2DMS)
0:? 'us2dmsa' (uniform mediump usampler2DMSArray)
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:? 'outaa' (smooth out 4-element array of 2-element array of highp float)
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:? 'ing' (in highp 2-component vector of float)
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:? '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})
@ -1222,8 +1222,8 @@ ERROR: node is still EOpNull!
0:156 'inf' (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:157 indirect index (temp highp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D)
0:157 indirect index (temp lowp sampler2D)
0:157 'sArray' (uniform 4-element array of lowp sampler2D)
0:157 add (temp highp int)
0:157 'sIndex' (uniform highp int)
0:157 Constant:
@ -1261,19 +1261,19 @@ ERROR: node is still EOpNull!
0:164 'sIndex' (uniform highp int)
0:164 Constant:
0:164 2 (const int)
0:165 textureGatherOffset (global highp 4-component vector of float)
0:165 direct index (temp highp sampler2D)
0:165 'sArray' (uniform 4-element array of highp sampler2D)
0:165 textureGatherOffset (global lowp 4-component vector of float)
0:165 direct index (temp lowp sampler2D)
0:165 'sArray' (uniform 4-element array of lowp sampler2D)
0:165 Constant:
0:165 0 (const int)
0:165 Constant:
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:166 textureGatherOffsets (global highp 4-component vector of float)
0:166 direct index (temp highp sampler2D)
0:166 'sArray' (uniform 4-element array of highp sampler2D)
0:166 textureGatherOffsets (global lowp 4-component vector of float)
0:166 direct index (temp lowp sampler2D)
0:166 'sArray' (uniform 4-element array of lowp sampler2D)
0:166 Constant:
0:166 0 (const int)
0:166 Constant:
@ -1297,8 +1297,8 @@ ERROR: node is still EOpNull!
0:174 'inf' (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:175 indirect index (temp highp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D)
0:175 indirect index (temp lowp sampler2D)
0:175 'sArray' (uniform 4-element array of lowp sampler2D)
0:175 add (temp highp int)
0:175 'sIndex' (uniform highp int)
0:175 Constant:
@ -1325,19 +1325,19 @@ ERROR: node is still EOpNull!
0:179 'sIndex' (uniform highp int)
0:179 Constant:
0:179 2 (const int)
0:180 textureGatherOffset (global highp 4-component vector of float)
0:180 direct index (temp highp sampler2D)
0:180 'sArray' (uniform 4-element array of highp sampler2D)
0:180 textureGatherOffset (global lowp 4-component vector of float)
0:180 direct index (temp lowp sampler2D)
0:180 'sArray' (uniform 4-element array of lowp sampler2D)
0:180 Constant:
0:180 0 (const int)
0:180 Constant:
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:181 textureGatherOffsets (global highp 4-component vector of float)
0:181 direct index (temp highp sampler2D)
0:181 'sArray' (uniform 4-element array of highp sampler2D)
0:181 textureGatherOffsets (global lowp 4-component vector of float)
0:181 direct index (temp lowp sampler2D)
0:181 'sArray' (uniform 4-element array of lowp sampler2D)
0:181 Constant:
0:181 0 (const int)
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:182 textureGatherOffsets (global highp 4-component vector of float)
0:182 direct index (temp highp sampler2D)
0:182 'sArray' (uniform 4-element array of highp sampler2D)
0:182 textureGatherOffsets (global lowp 4-component vector of float)
0:182 direct index (temp lowp sampler2D)
0:182 'sArray' (uniform 4-element array of lowp sampler2D)
0:182 Constant:
0:182 0 (const int)
0:182 Constant:
@ -1858,7 +1858,7 @@ ERROR: node is still EOpNull!
0:? 'us2dms' (uniform highp usampler2DMS)
0:? 'us2dmsa' (uniform mediump usampler2DMSArray)
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:? 'outaa' (smooth out 4-element array of 2-element array of highp float)
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:? 'ing' (in highp 2-component vector of float)
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:? '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})

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:141: 'textureQueryLod' : no matching overloaded function found
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
@ -122,6 +123,7 @@ ERROR: node is still EOpNull!
0:? 'samp2Ds' (uniform sampler2DShadow)
0:? 'precise' (global int)
0:? 'KeyMem' (global structure{global int precise})
0:? 'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)
Linked fragment stage:
@ -211,4 +213,5 @@ ERROR: node is still EOpNull!
0:? 'samp2Ds' (uniform sampler2DShadow)
0:? 'precise' (global int)
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
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:8 Function Parameters:
0:8 'a1' (temp 4-component vector of float)
0:8 'a2' (temp 4-component vector of float)
0:8 'a3' (temp 4-component vector of float)
0:8 'a4' (temp 4-component vector of float)
0:8 'a5' (temp 4-component vector of float)
0:8 'a1' (in 4-component vector of float)
0:8 'a2' (in 4-component vector of float)
0:8 'a3' (in 4-component vector of float)
0:8 'a4' (in 4-component vector of float)
0:8 'a5' (in 4-component vector of float)
0:? Sequence
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 '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 '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 'a4' (temp 4-component vector of float)
0:9 'a5' (temp 4-component vector of float)
0:9 'a4' (in 4-component vector of float)
0:9 'a5' (in 4-component vector of float)
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 'a1' (temp 4-component vector of float)
0:10 'a2' (temp 4-component vector of float)
0:10 'a1' (in 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 'a3' (temp 4-component vector of float)
0:10 'a4' (temp 4-component vector of float)
0:10 'a5' (temp 4-component vector of float)
0:10 'a3' (in 4-component vector of float)
0:10 'a4' (in 4-component vector of float)
0:10 'a5' (in 4-component vector of float)
0:? Linker Objects
Linked fragment stage:
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:8 Function Parameters:
0:8 'a1' (temp 4-component vector of float)
0:8 'a2' (temp 4-component vector of float)
0:8 'a3' (temp 4-component vector of float)
0:8 'a4' (temp 4-component vector of float)
0:8 'a5' (temp 4-component vector of float)
0:8 'a1' (in 4-component vector of float)
0:8 'a2' (in 4-component vector of float)
0:8 'a3' (in 4-component vector of float)
0:8 'a4' (in 4-component vector of float)
0:8 'a5' (in 4-component vector of float)
0:? Sequence
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 '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 '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 'a4' (temp 4-component vector of float)
0:9 'a5' (temp 4-component vector of float)
0:9 'a4' (in 4-component vector of float)
0:9 'a5' (in 4-component vector of float)
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 'a1' (temp 4-component vector of float)
0:10 'a2' (temp 4-component vector of float)
0:10 'a1' (in 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 'a3' (temp 4-component vector of float)
0:10 'a4' (temp 4-component vector of float)
0:10 'a5' (temp 4-component vector of float)
0:10 'a3' (in 4-component vector of float)
0:10 'a4' (in 4-component vector of float)
0:10 'a5' (in 4-component vector of float)
0:? Linker Objects
// Module Version 10000
@ -74,9 +74,9 @@ gl_FragCoord origin is upper left
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
EntryPoint Fragment 4 "PixelShaderFunction" 9 10 11 12 13
ExecutionMode 4 OriginUpperLeft
Source HLSL 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "a1"
Name 10 "a2"
@ -87,14 +87,14 @@ gl_FragCoord origin is upper left
3: TypeFunction 2
6: TypeFloat 32
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
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)
Store 12(a4) 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
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
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:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:5 Function Parameters:
0:5 'inFloat1' (temp 1-component vector of float)
0:5 'inScalar' (temp float)
0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (in float)
0:? Sequence
0:6 Branch: Return with expression
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 'scalar' (temp float)
0:6 vector-scale (temp 1-component vector of float)
0:6 'inFloat1' (temp 1-component vector of float)
0:6 'inScalar' (temp float)
0:6 'inFloat1' (in 1-component vector of float)
0:6 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'scalar' (temp float)
@ -31,7 +31,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
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:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:5 Function Parameters:
0:5 'inFloat1' (temp 1-component vector of float)
0:5 'inScalar' (temp float)
0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (in float)
0:? Sequence
0:6 Branch: Return with expression
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 'scalar' (temp float)
0:6 vector-scale (temp 1-component vector of float)
0:6 'inFloat1' (temp 1-component vector of float)
0:6 'inScalar' (temp float)
0:6 'inFloat1' (in 1-component vector of float)
0:6 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'scalar' (temp float)
@ -68,7 +68,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"

View File

@ -1,5 +1,5 @@
hlsl.float4.frag
Shader version: 100
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)
@ -9,22 +9,26 @@ gl_FragCoord origin is upper left
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' (temp 4-component vector of float)
0:12 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:9 Function Parameters:
0:9 '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 'input' (temp 4-component vector of float)
0:5 'AmbientColor' (temp 4-component vector of float)
0:10 Branch: Return with expression
0:10 component-wise multiply (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:10 'AmbientColor' (temp 4-component vector of float)
0:? Linker Objects
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:
Shader version: 100
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)
@ -34,37 +38,49 @@ gl_FragCoord origin is upper left
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' (temp 4-component vector of float)
0:12 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:9 Function Parameters:
0:9 '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 'input' (temp 4-component vector of float)
0:5 'AmbientColor' (temp 4-component vector of float)
0:10 Branch: Return with expression
0:10 component-wise multiply (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:10 'AmbientColor' (temp 4-component vector of float)
0:? Linker Objects
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
// Generated by (magic number): 80001
// Id's are bound by 19
// 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 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
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
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
19: TypeBool
20: TypePointer Function 19(bool)
4(PixelShaderFunction): 2 Function None 3
5: Label
FunctionEnd
@ -72,6 +88,10 @@ gl_FragCoord origin is upper left
10(input): 8(ptr) FunctionParameter
12: Label
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)
15: 7(fvec4) Load 14(AmbientColor)
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
Shader version: 100
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)
@ -15,47 +15,47 @@ gl_FragCoord origin is upper left
0:2 0.100000
0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
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:6 Branch: Return with expression
0:6 add (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 'AmbientColor' (temp 4-component vector of float)
0:7 Branch: Return with expression
0:7 add (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' (temp 4-component vector of float)
0:7 'input' (in 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 'input' (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' (in 4-component vector of float)
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 '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 'input' (temp 4-component vector of float)
0:8 'input' (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' (in 4-component vector of float)
0:8 'input' (in 4-component vector of float)
0:9 Branch: Return with expression
0:9 component-wise multiply (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 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 add (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 'input' (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:11 Branch: Return with expression
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:? 'AmbientColor' (temp 4-component vector of float)
0:? 'AmbientIntensity' (temp float)
@ -64,7 +64,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
Shader version: 100
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)
@ -80,81 +80,82 @@ gl_FragCoord origin is upper left
0:2 0.100000
0:13 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
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:6 Branch: Return with expression
0:6 add (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 'AmbientColor' (temp 4-component vector of float)
0:7 Branch: Return with expression
0:7 add (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' (temp 4-component vector of float)
0:7 'input' (in 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 'input' (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' (in 4-component vector of float)
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 '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 'input' (temp 4-component vector of float)
0:8 'input' (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' (in 4-component vector of float)
0:8 'input' (in 4-component vector of float)
0:9 Branch: Return with expression
0:9 component-wise multiply (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 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 add (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 'input' (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:11 Branch: Return with expression
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:? 'AmbientColor' (temp 4-component vector of float)
0:? 'AmbientIntensity' (temp float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 57
// Id's are bound by 58
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
EntryPoint Fragment 4 "PixelShaderFunction" 9
ExecutionMode 4 OriginUpperLeft
Source HLSL 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "input"
Name 12 "AmbientIntensity"
Name 15 "AmbientColor"
Name 16 "AmbientColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
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)
36: 6(float) Constant 1065353216
15: TypePointer Function 7(fvec4)
37: 6(float) Constant 1065353216
4(PixelShaderFunction): 2 Function None 3
5: Label
9(input): 8(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)
13: 6(float) Load 12(AmbientIntensity)
14: 7(fvec4) VectorTimesScalar 10 13
16: 7(fvec4) Load 15(AmbientColor)
17: 7(fvec4) FAdd 14 16
ReturnValue 17
17: 7(fvec4) Load 16(AmbientColor)
18: 7(fvec4) FAdd 14 17
ReturnValue 18
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
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
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:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inFloat1' (temp 1-component vector of float)
0:9 'inScalar' (temp float)
0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'fmat11' (temp 1X1 matrix of float)
@ -22,7 +22,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
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:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inFloat1' (temp 1-component vector of float)
0:9 'inScalar' (temp float)
0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'fmat11' (temp 1X1 matrix of float)
@ -51,7 +51,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"

View File

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

View File

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

View File

@ -1,62 +1,62 @@
hlsl.precedence2.frag
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
0:7 Function Parameters:
0:7 'a1' (temp int)
0:7 'a2' (temp int)
0:7 'a3' (temp int)
0:7 'a4' (temp int)
0:7 'a1' (in int)
0:7 'a2' (in int)
0:7 'a3' (in int)
0:7 'a4' (in int)
0:? Sequence
0:8 Branch: Return with expression
0:8 add (temp int)
0:8 left-shift (temp int)
0:8 add (temp int)
0:8 component-wise multiply (temp int)
0:8 'a1' (temp int)
0:8 'a2' (temp int)
0:8 'a3' (temp int)
0:8 'a4' (temp int)
0:8 'a1' (in int)
0:8 'a2' (in int)
0:8 'a3' (in int)
0:8 'a4' (in int)
0:8 left-shift (temp int)
0:8 'a1' (temp int)
0:8 'a1' (in 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 'a3' (temp int)
0:8 'a4' (temp int)
0:8 'a3' (in int)
0:8 'a4' (in int)
0:? Linker Objects
Linked fragment stage:
Shader version: 100
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
0:7 Function Parameters:
0:7 'a1' (temp int)
0:7 'a2' (temp int)
0:7 'a3' (temp int)
0:7 'a4' (temp int)
0:7 'a1' (in int)
0:7 'a2' (in int)
0:7 'a3' (in int)
0:7 'a4' (in int)
0:? Sequence
0:8 Branch: Return with expression
0:8 add (temp int)
0:8 left-shift (temp int)
0:8 add (temp int)
0:8 component-wise multiply (temp int)
0:8 'a1' (temp int)
0:8 'a2' (temp int)
0:8 'a3' (temp int)
0:8 'a4' (temp int)
0:8 'a1' (in int)
0:8 'a2' (in int)
0:8 'a3' (in int)
0:8 'a4' (in int)
0:8 left-shift (temp int)
0:8 'a1' (temp int)
0:8 'a1' (in 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 'a3' (temp int)
0:8 'a4' (temp int)
0:8 'a3' (in int)
0:8 'a4' (in int)
0:? Linker Objects
// Module Version 10000
@ -66,9 +66,9 @@ gl_FragCoord origin is upper left
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
EntryPoint Fragment 4 "PixelShaderFunction" 8 10 13 16
ExecutionMode 4 OriginUpperLeft
Source HLSL 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "a1"
Name 10 "a2"
@ -77,13 +77,13 @@ gl_FragCoord origin is upper left
2: TypeVoid
3: TypeFunction 2
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
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)
11: 6(int) Load 10(a2)
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
Shader version: 100
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' (temp 4-component vector of float)
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Branch: Return with expression
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
Linked fragment stage:
Shader version: 100
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' (temp 4-component vector of float)
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:3 Branch: Return with expression
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
// Module Version 10000
@ -34,19 +34,19 @@ gl_FragCoord origin is upper left
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
EntryPoint Fragment 4 "PixelShaderFunction" 9
ExecutionMode 4 OriginUpperLeft
Source HLSL 100
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "input"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
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
5: Label
9(input): 8(ptr) Variable Function
10: 7(fvec4) Load 9(input)
11: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 10
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
// Generated by (magic number): 80001
// Id's are bound by 94
// Id's are bound by 93
Capability Tessellation
Capability TessellationPointSize
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects"
Name 4 "main"
Name 12 "a"
Name 17 "p"
Name 20 "gl_PerVertex"
MemberName 20(gl_PerVertex) 0 "gl_Position"
MemberName 20(gl_PerVertex) 1 "gl_PointSize"
MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
Name 24 "gl_in"
Name 31 "ps"
Name 35 "cd"
Name 39 "pvi"
Name 41 "gl_PatchVerticesIn"
Name 43 "pid"
Name 44 "gl_PrimitiveID"
Name 46 "iid"
Name 47 "gl_InvocationID"
Name 51 "gl_PerVertex"
MemberName 51(gl_PerVertex) 0 "gl_Position"
MemberName 51(gl_PerVertex) 1 "gl_PointSize"
MemberName 51(gl_PerVertex) 2 "gl_ClipDistance"
Name 55 "gl_out"
Name 69 "gl_TessLevelOuter"
Name 74 "gl_TessLevelInner"
Name 79 "outa"
Name 80 "patchOut"
Name 84 "inb"
Name 85 "ind"
Name 88 "ivla"
Name 89 "ivlb"
Name 92 "ovla"
Name 93 "ovlb"
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 20(gl_PerVertex) Block
Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices
Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 47(gl_InvocationID) BuiltIn InvocationId
MemberDecorate 51(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 51(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 51(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 51(gl_PerVertex) Block
Decorate 69(gl_TessLevelOuter) Patch
Decorate 69(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 74(gl_TessLevelInner) Patch
Decorate 74(gl_TessLevelInner) BuiltIn TessLevelInner
Decorate 80(patchOut) Patch
Decorate 88(ivla) Location 3
Decorate 89(ivlb) Location 4
Decorate 92(ovla) Location 3
Decorate 93(ovlb) Location 4
Name 11 "a"
Name 16 "p"
Name 19 "gl_PerVertex"
MemberName 19(gl_PerVertex) 0 "gl_Position"
MemberName 19(gl_PerVertex) 1 "gl_PointSize"
MemberName 19(gl_PerVertex) 2 "gl_ClipDistance"
Name 23 "gl_in"
Name 30 "ps"
Name 34 "cd"
Name 38 "pvi"
Name 40 "gl_PatchVerticesIn"
Name 42 "pid"
Name 43 "gl_PrimitiveID"
Name 45 "iid"
Name 46 "gl_InvocationID"
Name 50 "gl_PerVertex"
MemberName 50(gl_PerVertex) 0 "gl_Position"
MemberName 50(gl_PerVertex) 1 "gl_PointSize"
MemberName 50(gl_PerVertex) 2 "gl_ClipDistance"
Name 54 "gl_out"
Name 68 "gl_TessLevelOuter"
Name 73 "gl_TessLevelInner"
Name 78 "outa"
Name 79 "patchOut"
Name 83 "inb"
Name 84 "ind"
Name 87 "ivla"
Name 88 "ivlb"
Name 91 "ovla"
Name 92 "ovlb"
MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 19(gl_PerVertex) Block
Decorate 40(gl_PatchVerticesIn) BuiltIn PatchVertices
Decorate 43(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 46(gl_InvocationID) BuiltIn InvocationId
MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 50(gl_PerVertex) Block
Decorate 68(gl_TessLevelOuter) Patch
Decorate 68(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 73(gl_TessLevelInner) Patch
Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner
Decorate 79(patchOut) Patch
Decorate 87(ivla) Location 3
Decorate 88(ivlb) Location 4
Decorate 91(ovla) Location 3
Decorate 92(ovlb) Location 4
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 1
8: 6(int) Constant 4062
9: 6(int) Constant 0
10: TypeInt 32 1
11: TypePointer Function 10(int)
13: 10(int) Constant 5392
14: TypeFloat 32
15: TypeVector 14(float) 4
16: TypePointer Function 15(fvec4)
18: 6(int) Constant 3
19: TypeArray 14(float) 18
20(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 19
21: 6(int) Constant 32
22: TypeArray 20(gl_PerVertex) 21
23: TypePointer Input 22
24(gl_in): 23(ptr) Variable Input
25: 10(int) Constant 1
26: 10(int) Constant 0
27: TypePointer Input 15(fvec4)
30: TypePointer Function 14(float)
32: TypePointer Input 14(float)
36: 10(int) Constant 2
40: TypePointer Input 10(int)
41(gl_PatchVerticesIn): 40(ptr) Variable Input
44(gl_PrimitiveID): 40(ptr) Variable Input
47(gl_InvocationID): 40(ptr) Variable Input
49: 6(int) Constant 2
50: TypeArray 14(float) 49
51(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 50
52: 6(int) Constant 4
53: TypeArray 51(gl_PerVertex) 52
54: TypePointer Output 53
55(gl_out): 54(ptr) Variable Output
58: TypePointer Output 15(fvec4)
62: TypePointer Output 14(float)
67: TypeArray 14(float) 52
68: TypePointer Output 67
69(gl_TessLevelOuter): 68(ptr) Variable Output
70: 10(int) Constant 3
71: 14(float) Constant 1078774989
73: TypePointer Output 50
74(gl_TessLevelInner): 73(ptr) Variable Output
75: 14(float) Constant 1067869798
77: TypeArray 10(int) 52
78: TypePointer Private 77
79(outa): 78(ptr) Variable Private
80(patchOut): 58(ptr) Variable Output
81: TypeVector 14(float) 2
82: TypeArray 81(fvec2) 21
83: TypePointer Input 82
84(inb): 83(ptr) Variable Input
85(ind): 83(ptr) Variable Input
86: TypeArray 15(fvec4) 21
87: TypePointer Input 86
88(ivla): 87(ptr) Variable Input
89(ivlb): 87(ptr) Variable Input
90: TypeArray 15(fvec4) 52
91: TypePointer Output 90
92(ovla): 91(ptr) Variable Output
93(ovlb): 91(ptr) Variable Output
8: 6(int) Constant 0
9: TypeInt 32 1
10: TypePointer Function 9(int)
12: 9(int) Constant 5392
13: TypeFloat 32
14: TypeVector 13(float) 4
15: TypePointer Function 14(fvec4)
17: 6(int) Constant 3
18: TypeArray 13(float) 17
19(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 18
20: 6(int) Constant 32
21: TypeArray 19(gl_PerVertex) 20
22: TypePointer Input 21
23(gl_in): 22(ptr) Variable Input
24: 9(int) Constant 1
25: 9(int) Constant 0
26: TypePointer Input 14(fvec4)
29: TypePointer Function 13(float)
31: TypePointer Input 13(float)
35: 9(int) Constant 2
39: TypePointer Input 9(int)
40(gl_PatchVerticesIn): 39(ptr) Variable Input
43(gl_PrimitiveID): 39(ptr) Variable Input
46(gl_InvocationID): 39(ptr) Variable Input
48: 6(int) Constant 2
49: TypeArray 13(float) 48
50(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 49
51: 6(int) Constant 4
52: TypeArray 50(gl_PerVertex) 51
53: TypePointer Output 52
54(gl_out): 53(ptr) Variable Output
57: TypePointer Output 14(fvec4)
61: TypePointer Output 13(float)
66: TypeArray 13(float) 51
67: TypePointer Output 66
68(gl_TessLevelOuter): 67(ptr) Variable Output
69: 9(int) Constant 3
70: 13(float) Constant 1078774989
72: TypePointer Output 49
73(gl_TessLevelInner): 72(ptr) Variable Output
74: 13(float) Constant 1067869798
76: TypeArray 9(int) 51
77: TypePointer Private 76
78(outa): 77(ptr) Variable Private
79(patchOut): 57(ptr) Variable Output
80: TypeVector 13(float) 2
81: TypeArray 80(fvec2) 20
82: TypePointer Input 81
83(inb): 82(ptr) Variable Input
84(ind): 82(ptr) Variable Input
85: TypeArray 14(fvec4) 20
86: TypePointer Input 85
87(ivla): 86(ptr) Variable Input
88(ivlb): 86(ptr) Variable Input
89: TypeArray 14(fvec4) 51
90: TypePointer Output 89
91(ovla): 90(ptr) Variable Output
92(ovlb): 90(ptr) Variable Output
4(main): 2 Function None 3
5: Label
12(a): 11(ptr) Variable Function
17(p): 16(ptr) Variable Function
31(ps): 30(ptr) Variable Function
35(cd): 30(ptr) Variable Function
39(pvi): 11(ptr) Variable Function
43(pid): 11(ptr) Variable Function
46(iid): 11(ptr) Variable Function
MemoryBarrier 7 8
ControlBarrier 7 7 9
Store 12(a) 13
28: 27(ptr) AccessChain 24(gl_in) 25 26
29: 15(fvec4) Load 28
Store 17(p) 29
33: 32(ptr) AccessChain 24(gl_in) 25 25
34: 14(float) Load 33
Store 31(ps) 34
37: 32(ptr) AccessChain 24(gl_in) 25 36 36
38: 14(float) Load 37
Store 35(cd) 38
42: 10(int) Load 41(gl_PatchVerticesIn)
Store 39(pvi) 42
45: 10(int) Load 44(gl_PrimitiveID)
Store 43(pid) 45
48: 10(int) Load 47(gl_InvocationID)
Store 46(iid) 48
56: 10(int) Load 47(gl_InvocationID)
57: 15(fvec4) Load 17(p)
59: 58(ptr) AccessChain 55(gl_out) 56 26
Store 59 57
60: 10(int) Load 47(gl_InvocationID)
61: 14(float) Load 31(ps)
63: 62(ptr) AccessChain 55(gl_out) 60 25
Store 63 61
64: 10(int) Load 47(gl_InvocationID)
65: 14(float) Load 35(cd)
66: 62(ptr) AccessChain 55(gl_out) 64 36 25
Store 66 65
72: 62(ptr) AccessChain 69(gl_TessLevelOuter) 70
Store 72 71
76: 62(ptr) AccessChain 74(gl_TessLevelInner) 25
Store 76 75
11(a): 10(ptr) Variable Function
16(p): 15(ptr) Variable Function
30(ps): 29(ptr) Variable Function
34(cd): 29(ptr) Variable Function
38(pvi): 10(ptr) Variable Function
42(pid): 10(ptr) Variable Function
45(iid): 10(ptr) Variable Function
ControlBarrier 7 7 8
Store 11(a) 12
27: 26(ptr) AccessChain 23(gl_in) 24 25
28: 14(fvec4) Load 27
Store 16(p) 28
32: 31(ptr) AccessChain 23(gl_in) 24 24
33: 13(float) Load 32
Store 30(ps) 33
36: 31(ptr) AccessChain 23(gl_in) 24 35 35
37: 13(float) Load 36
Store 34(cd) 37
41: 9(int) Load 40(gl_PatchVerticesIn)
Store 38(pvi) 41
44: 9(int) Load 43(gl_PrimitiveID)
Store 42(pid) 44
47: 9(int) Load 46(gl_InvocationID)
Store 45(iid) 47
55: 9(int) Load 46(gl_InvocationID)
56: 14(fvec4) Load 16(p)
58: 57(ptr) AccessChain 54(gl_out) 55 25
Store 58 56
59: 9(int) Load 46(gl_InvocationID)
60: 13(float) Load 30(ps)
62: 61(ptr) AccessChain 54(gl_out) 59 24
Store 62 60
63: 9(int) Load 46(gl_InvocationID)
64: 13(float) Load 34(cd)
65: 61(ptr) AccessChain 54(gl_out) 63 35 24
Store 65 64
71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69
Store 71 70
75: 61(ptr) AccessChain 73(gl_TessLevelInner) 24
Store 75 74
Return
FunctionEnd

View File

@ -10,6 +10,7 @@ Linked vertex stage:
// Id's are bound by 66
Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
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 56(sampb4) DescriptorSet 0
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
MemberDecorate 63(MS) 0 Location 17
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.
Shader version: 310
Requested GL_ARB_gl_spirv
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: func(au1; (global highp uint)
@ -105,7 +104,6 @@ Linked compute stage:
Shader version: 310
Requested GL_ARB_gl_spirv
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: func(au1; (global highp uint)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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);
float scalar = 2.0;
float1 ShaderFunction(float1 inFloat1, float inScalar) : COLOR0
float1 ShaderFunction(float1 inFloat1 : COLOR, float inScalar) : COLOR0
{
return f1 * scalar + inFloat1 * inScalar;
}

View File

@ -1,5 +1,10 @@
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
{
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
#extension GL_ARB_gl_spirv : enable
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> >
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> >

View File

@ -1,6 +1,6 @@
//
//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.
//
//All rights reserved.
@ -1043,8 +1043,9 @@ public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
// 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) :
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(false),
explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0,
bool isVector = false) :
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1),
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr)
{
sampler.clear();
@ -1052,8 +1053,9 @@ public:
qualifier.storage = q;
}
// for explicit precision qualifier
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),
TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0,
bool isVector = false) :
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1),
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr)
{
sampler.clear();
@ -1255,6 +1257,8 @@ public:
virtual bool isStruct() const { return structure != nullptr; }
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; }
virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; }
// "Image" is a superset of "Subpass"
virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); }
virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); }
@ -1315,7 +1319,7 @@ public:
virtual bool containsOpaque() const
{
if (basicType == EbtSampler || basicType == EbtAtomicUint)
if (isOpaque())
return true;
if (! structure)
return false;

View File

@ -1,6 +1,6 @@
//
//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
//Copyright (C) 2012-2013 LunarG, Inc.
//Copyright (C) 2012-2016 LunarG, Inc.
//
//All rights reserved.
//
@ -493,6 +493,36 @@ enum TOperator {
EOpBitCount,
EOpFindLSB,
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;

View File

@ -63,9 +63,9 @@ const bool ForwardCompatibility = false;
// Using PureOperatorBuiltins=false is deprecated.
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.
@ -114,7 +114,7 @@ TBuiltIns::~TBuiltIns()
// Most built-ins variables can be added as simple text strings. Some need to
// 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) ||
(profile != EEsProfile && version >= 330)) {
commonBuiltins.append(
"int floatBitsToInt(float value);"
"ivec2 floatBitsToInt(vec2 value);"
"ivec3 floatBitsToInt(vec3 value);"
"ivec4 floatBitsToInt(vec4 value);"
"highp int floatBitsToInt(highp float value);"
"highp ivec2 floatBitsToInt(highp vec2 value);"
"highp ivec3 floatBitsToInt(highp vec3 value);"
"highp ivec4 floatBitsToInt(highp vec4 value);"
"uint floatBitsToUint(float value);"
"uvec2 floatBitsToUint(vec2 value);"
"uvec3 floatBitsToUint(vec3 value);"
"uvec4 floatBitsToUint(vec4 value);"
"float intBitsToFloat(int value);"
"vec2 intBitsToFloat(ivec2 value);"
"vec3 intBitsToFloat(ivec3 value);"
"vec4 intBitsToFloat(ivec4 value);"
"float uintBitsToFloat(uint value);"
"vec2 uintBitsToFloat(uvec2 value);"
"vec3 uintBitsToFloat(uvec3 value);"
"vec4 uintBitsToFloat(uvec4 value);"
"highp uint floatBitsToUint(highp float value);"
"highp uvec2 floatBitsToUint(highp vec2 value);"
"highp uvec3 floatBitsToUint(highp vec3 value);"
"highp uvec4 floatBitsToUint(highp vec4 value);"
"highp float intBitsToFloat(highp int value);"
"highp vec2 intBitsToFloat(highp ivec2 value);"
"highp vec3 intBitsToFloat(highp ivec3 value);"
"highp vec4 intBitsToFloat(highp ivec4 value);"
"highp float uintBitsToFloat(highp uint value);"
"highp vec2 uintBitsToFloat(highp uvec2 value);"
"highp vec3 uintBitsToFloat(highp uvec3 value);"
"highp vec4 uintBitsToFloat(highp uvec4 value);"
"\n");
}
@ -1174,7 +1174,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) ||
profile == ENoProfile) {
if (spv == 0) {
if (spvVersion.spv == 0) {
commonBuiltins.append(
"vec4 texture2D(sampler2D, vec2);"
@ -1193,7 +1193,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
if ( profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) ||
profile == ENoProfile) {
if (spv == 0) {
if (spvVersion.spv == 0) {
commonBuiltins.append(
"vec4 texture1D(sampler1D, float);"
@ -1216,7 +1216,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
}
if (profile == EEsProfile) {
if (spv == 0) {
if (spvVersion.spv == 0) {
commonBuiltins.append(
"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
@ -1258,7 +1258,8 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n");
}
if (vulkan == 0) {
if (spvVersion.vulkan == 0) {
// gl_spirv TODO
//
// Atomic counter functions.
//
@ -1479,7 +1480,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
//
// Geometric Functions.
//
if (IncludeLegacy(version, profile, spv))
if (IncludeLegacy(version, profile, spvVersion))
stageBuiltins[EShLangVertex].append("vec4 ftransform();");
//
@ -1494,7 +1495,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
profile == ECompatibilityProfile ||
(profile == ECoreProfile && version < 420) ||
profile == ENoProfile) {
if (spv == 0) {
if (spvVersion.spv == 0) {
s->append(
"vec4 texture2DLod(sampler2D, vec2, 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 ||
(profile == ECoreProfile && version < 420) ||
profile == ENoProfile) {
if (spv == 0) {
if (spvVersion.spv == 0) {
s->append(
"vec4 texture1DLod(sampler1D, float, 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(
"void barrier();"
);
if ((profile != EEsProfile && version >= 430) || esBarrier)
if ((profile != EEsProfile && version >= 420) || esBarrier)
stageBuiltins[EShLangCompute].append(
"void barrier();"
);
@ -1580,7 +1581,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
commonBuiltins.append(
"void memoryBarrier();"
);
if ((profile != EEsProfile && version >= 430) || esBarrier) {
if ((profile != EEsProfile && version >= 420) || esBarrier) {
commonBuiltins.append(
"void memoryBarrierAtomicCounter();"
"void memoryBarrierBuffer();"
@ -1601,7 +1602,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
//
// Original-style texture Functions with bias.
//
if (spv == 0 && (profile != EEsProfile || version == 100)) {
if (spvVersion.spv == 0 && (profile != EEsProfile || version == 100)) {
stageBuiltins[EShLangFragment].append(
"vec4 texture2D(sampler2D, vec2, float);"
"vec4 texture2DProj(sampler2D, vec3, float);"
@ -1612,7 +1613,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n");
}
if (spv == 0 && (profile != EEsProfile && version > 100)) {
if (spvVersion.spv == 0 && (profile != EEsProfile && version > 100)) {
stageBuiltins[EShLangFragment].append(
"vec4 texture1D(sampler1D, float, float);"
"vec4 texture1DProj(sampler1D, vec2, float);"
@ -1624,7 +1625,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n");
}
if (spv == 0 && profile == EEsProfile) {
if (spvVersion.spv == 0 && profile == EEsProfile) {
stageBuiltins[EShLangFragment].append(
"vec4 texture2DLodEXT(sampler2D, vec2, 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
//
if (vulkan == 0) {
if (spvVersion.spv == 0) {
commonBuiltins.append(
"struct gl_DepthRangeParameters {"
);
@ -1746,7 +1747,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"\n");
}
if (vulkan == 0 && IncludeLegacy(version, profile, spv)) {
if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) {
//
// 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)) {
stageBuiltins[EShLangCompute].append(
"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 float gl_FogCoord;"
"\n");
} else if (IncludeLegacy(version, profile, spv)) {
} else if (IncludeLegacy(version, profile, spvVersion)) {
stageBuiltins[EShLangVertex].append(
"in vec4 gl_Color;"
"in vec4 gl_SecondaryColor;"
@ -1938,7 +1939,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"varying vec4 gl_TexCoord[];"
"varying float gl_FogFragCoord;"
"\n");
} else if (IncludeLegacy(version, profile, spv)) {
} else if (IncludeLegacy(version, profile, spvVersion)) {
stageBuiltins[EShLangVertex].append(
" vec4 gl_ClipVertex;" // needs qualifier fixed later
"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_ClipDistance[];"
);
if (IncludeLegacy(version, profile, spv))
if (IncludeLegacy(version, profile, spvVersion))
stageBuiltins[EShLangVertex].append(
"vec4 gl_ClipVertex;" // needs qualifier fixed later
"vec4 gl_FrontColor;"
@ -1984,15 +1985,18 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
"};"
"\n");
}
if (version >= 130 && vulkan == 0)
if (version >= 130 && spvVersion.vulkan == 0)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append(
"int gl_VertexID;" // needs qualifier fixed later
);
if (version >= 140 && vulkan == 0)
if (version >= 140 && spvVersion.vulkan == 0)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append(
"int gl_InstanceID;" // needs qualifier fixed later
);
if (vulkan > 0 && version >= 140)
if (spvVersion.vulkan >= 100 && version >= 140)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append(
"in int gl_VertexIndex;"
"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
);
} else {
if (vulkan == 0)
if (spvVersion.vulkan == 0)
// gl_spirv TODO
stageBuiltins[EShLangVertex].append(
"in highp int gl_VertexID;" // 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(
"in highp int gl_VertexIndex;"
"in highp int gl_InstanceIndex;"
@ -2270,7 +2276,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
stageBuiltins[EShLangFragment].append(
"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(
"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[];"
);
if (IncludeLegacy(version, profile, spv)) {
if (IncludeLegacy(version, profile, spvVersion)) {
if (version < 150)
stageBuiltins[EShLangFragment].append(
"in float gl_FogFragCoord;"
@ -2373,7 +2379,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
stageBuiltins[EShLangFragment].append("\n");
if (version >= 130)
add2ndGenerationSamplingImaging(version, profile, spv, vulkan);
add2ndGenerationSamplingImaging(version, profile, spvVersion);
// GL_ARB_shader_ballot
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,
// 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
@ -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 dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, 2D, ..., buffer
if (dim == EsdSubpass && vulkan == 0)
if (dim == EsdSubpass && spvVersion.vulkan == 0)
continue;
if (dim == EsdSubpass && (image || shadow || arrayed))
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
// 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.
@ -3192,7 +3198,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformComponents = %d;", resources.maxFragmentUniformComponents);
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
// 1.4 of the OpenGL specification.
@ -3421,7 +3427,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
// 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,
resources.maxComputeWorkGroupCountY,
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
// 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
@ -3589,7 +3595,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
}
// Compatibility variables, vertex only
if (spv == 0) {
if (spvVersion.spv == 0) {
BuiltInVariable("gl_Color", EbvColor, symbolTable);
BuiltInVariable("gl_SecondaryColor", EbvSecondaryColor, 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 (spv == 0) {
if (spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture2DGradEXT", 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);
@ -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);
}
if (vulkan == 0) {
if (spvVersion.vulkan == 0) {
// gl_spirv TODO
SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, 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
if (profile == EEsProfile) {
if (spv == 0) {
if (spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture2DLodEXT", 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);
@ -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);
}
} else if (version < 130) {
if (spv == 0) {
if (spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture1DLod", 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);
@ -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
if (profile != EEsProfile && spv == 0) {
if (profile != EEsProfile && spvVersion.spv == 0) {
symbolTable.setFunctionExtensions("texture1DGradARB", 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);
@ -3896,6 +3903,30 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable);
BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, 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;
default:
@ -4092,7 +4123,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
symbolTable.relateToOperator("noise3", 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("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
// 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) {
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) {
case EShLangFragment:
// 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;
TType fragData(EbtFloat, EvqFragColor, pq, 4);
TArraySizes& arraySizes = *new TArraySizes;

View File

@ -61,14 +61,14 @@ public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
TBuiltInParseables();
virtual ~TBuiltInParseables();
virtual void initialize(int version, EProfile, int spv, int vulkan) = 0;
virtual void initialize(const TBuiltInResource& resources, int version, EProfile, int spv, int vulkan, EShLanguage) = 0;
virtual void initialize(int version, EProfile, const SpvVersion& spvVersion) = 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& 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:
TString commonBuiltins;
@ -85,15 +85,15 @@ public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
TBuiltIns();
virtual ~TBuiltIns();
void initialize(int version, EProfile, int spv, int vulkan);
void initialize(const TBuiltInResource& resources, int version, EProfile, int spv, int vulkan, EShLanguage);
void initialize(int version, EProfile, const SpvVersion& spvVersion);
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:
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 addQueryFunctions(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