Merge branch 'master' of github.com:google/glslang into loopgen
Change-Id: Ie8236430bb9e30a9be2e0c1573c42183c2f4d0d4
This commit is contained in:
commit
dba2826328
279 changed files with 59955 additions and 57020 deletions
3
.gitattributes
vendored
3
.gitattributes
vendored
|
|
@ -12,3 +12,6 @@
|
||||||
*.c text eof=lf
|
*.c text eof=lf
|
||||||
*.cpp text eof=lf
|
*.cpp text eof=lf
|
||||||
*.y text eof=lf
|
*.y text eof=lf
|
||||||
|
*.out text eof=lf
|
||||||
|
*.conf text eof=lf
|
||||||
|
*.err text eof=lf
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
|
||||||
project(glslang)
|
project(glslang)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CMAKE_GENERATOR_TOOLSET "v110" CACHE STRING "Platform Toolset" FORCE)
|
|
||||||
include(ChooseMSVCCRT.cmake)
|
include(ChooseMSVCCRT.cmake)
|
||||||
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
|
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
|
|
|
||||||
|
|
@ -85,17 +85,17 @@ public:
|
||||||
bool visitLoop(glslang::TVisit, glslang::TIntermLoop*);
|
bool visitLoop(glslang::TVisit, glslang::TIntermLoop*);
|
||||||
bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*);
|
bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*);
|
||||||
|
|
||||||
void dumpSpv(std::vector<unsigned int>& out) { builder.dump(out); }
|
void dumpSpv(std::vector<unsigned int>& out);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
spv::Id createSpvVariable(const glslang::TIntermSymbol*);
|
spv::Id createSpvVariable(const glslang::TIntermSymbol*);
|
||||||
spv::Id getSampledType(const glslang::TSampler&);
|
spv::Id getSampledType(const glslang::TSampler&);
|
||||||
spv::Id convertGlslangToSpvType(const glslang::TType& type);
|
spv::Id convertGlslangToSpvType(const glslang::TType& type);
|
||||||
spv::Id convertGlslangToSpvType(const glslang::TType& type, bool explicitLayout);
|
spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&);
|
||||||
bool requiresExplicitLayout(const glslang::TType& type) const;
|
glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const;
|
||||||
int getArrayStride(const glslang::TType& arrayType);
|
int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
|
||||||
int getMatrixStride(const glslang::TType& matrixType);
|
int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
|
||||||
void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset);
|
void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking, glslang::TLayoutMatrix);
|
||||||
|
|
||||||
bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
|
bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
|
||||||
void makeFunctions(const glslang::TIntermSequence&);
|
void makeFunctions(const glslang::TIntermSequence&);
|
||||||
|
|
@ -108,6 +108,7 @@ protected:
|
||||||
spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*);
|
spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*);
|
||||||
|
|
||||||
spv::Id createBinaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison = true);
|
spv::Id createBinaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison = true);
|
||||||
|
spv::Id createBinaryMatrixOperation(spv::Op, spv::Decoration precision, spv::Id typeId, spv::Id left, spv::Id right);
|
||||||
spv::Id createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
|
spv::Id createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
|
||||||
spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Id destTypeId, spv::Id operand);
|
spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Id destTypeId, spv::Id operand);
|
||||||
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
|
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
|
||||||
|
|
@ -132,14 +133,15 @@ protected:
|
||||||
spv::Builder builder;
|
spv::Builder builder;
|
||||||
bool inMain;
|
bool inMain;
|
||||||
bool mainTerminated;
|
bool mainTerminated;
|
||||||
bool linkageOnly;
|
bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used
|
||||||
|
std::set<spv::Id> iOSet; // all input/output variables from either static use or declaration of interface
|
||||||
const glslang::TIntermediate* glslangIntermediate;
|
const glslang::TIntermediate* glslangIntermediate;
|
||||||
spv::Id stdBuiltins;
|
spv::Id stdBuiltins;
|
||||||
|
|
||||||
std::unordered_map<int, spv::Id> symbolValues;
|
std::unordered_map<int, spv::Id> symbolValues;
|
||||||
std::unordered_set<int> constReadOnlyParameters; // set of formal function parameters that have glslang qualifier constReadOnly, so we know they are not local function "const" that are write-once
|
std::unordered_set<int> constReadOnlyParameters; // set of formal function parameters that have glslang qualifier constReadOnly, so we know they are not local function "const" that are write-once
|
||||||
std::unordered_map<std::string, spv::Function*> functionMap;
|
std::unordered_map<std::string, spv::Function*> functionMap;
|
||||||
std::unordered_map<const glslang::TTypeList*, spv::Id> structMap;
|
std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount];
|
||||||
std::unordered_map<const glslang::TTypeList*, std::vector<int> > memberRemapper; // for mapping glslang block indices to spv indices (e.g., due to hidden members)
|
std::unordered_map<const glslang::TTypeList*, std::vector<int> > memberRemapper; // for mapping glslang block indices to spv indices (e.g., due to hidden members)
|
||||||
std::stack<bool> breakForLoop; // false means break for switch
|
std::stack<bool> breakForLoop; // false means break for switch
|
||||||
};
|
};
|
||||||
|
|
@ -227,7 +229,7 @@ spv::Dim TranslateDimensionality(const glslang::TSampler& sampler)
|
||||||
spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type)
|
spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type)
|
||||||
{
|
{
|
||||||
switch (type.getQualifier().precision) {
|
switch (type.getQualifier().precision) {
|
||||||
case glslang::EpqLow: return spv::DecorationRelaxedPrecision; // TODO: Map instead to 16-bit types?
|
case glslang::EpqLow: return spv::DecorationRelaxedPrecision;
|
||||||
case glslang::EpqMedium: return spv::DecorationRelaxedPrecision;
|
case glslang::EpqMedium: return spv::DecorationRelaxedPrecision;
|
||||||
case glslang::EpqHigh: return spv::NoPrecision;
|
case glslang::EpqHigh: return spv::NoPrecision;
|
||||||
default:
|
default:
|
||||||
|
|
@ -254,14 +256,17 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Translate glslang type to SPIR-V layout decorations.
|
// Translate glslang type to SPIR-V layout decorations.
|
||||||
spv::Decoration TranslateLayoutDecoration(const glslang::TType& type)
|
spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::TLayoutMatrix matrixLayout)
|
||||||
{
|
{
|
||||||
if (type.isMatrix()) {
|
if (type.isMatrix()) {
|
||||||
switch (type.getQualifier().layoutMatrix) {
|
switch (matrixLayout) {
|
||||||
case glslang::ElmRowMajor:
|
case glslang::ElmRowMajor:
|
||||||
return spv::DecorationRowMajor;
|
return spv::DecorationRowMajor;
|
||||||
default:
|
case glslang::ElmColumnMajor:
|
||||||
return spv::DecorationColMajor;
|
return spv::DecorationColMajor;
|
||||||
|
default:
|
||||||
|
// opaque layouts don't need a majorness
|
||||||
|
return (spv::Decoration)spv::BadValue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (type.getBasicType()) {
|
switch (type.getBasicType()) {
|
||||||
|
|
@ -293,30 +298,30 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type)
|
||||||
// Translate glslang type to SPIR-V interpolation decorations.
|
// Translate glslang type to SPIR-V interpolation decorations.
|
||||||
// Returns spv::Decoration(spv::BadValue) when no decoration
|
// Returns spv::Decoration(spv::BadValue) when no decoration
|
||||||
// should be applied.
|
// should be applied.
|
||||||
spv::Decoration TranslateInterpolationDecoration(const glslang::TType& type)
|
spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier)
|
||||||
{
|
{
|
||||||
if (type.getQualifier().smooth) {
|
if (qualifier.smooth) {
|
||||||
// Smooth decoration doesn't exist in SPIR-V 1.0
|
// Smooth decoration doesn't exist in SPIR-V 1.0
|
||||||
return (spv::Decoration)spv::BadValue;
|
return (spv::Decoration)spv::BadValue;
|
||||||
}
|
}
|
||||||
if (type.getQualifier().nopersp)
|
if (qualifier.nopersp)
|
||||||
return spv::DecorationNoPerspective;
|
return spv::DecorationNoPerspective;
|
||||||
else if (type.getQualifier().patch)
|
else if (qualifier.patch)
|
||||||
return spv::DecorationPatch;
|
return spv::DecorationPatch;
|
||||||
else if (type.getQualifier().flat)
|
else if (qualifier.flat)
|
||||||
return spv::DecorationFlat;
|
return spv::DecorationFlat;
|
||||||
else if (type.getQualifier().centroid)
|
else if (qualifier.centroid)
|
||||||
return spv::DecorationCentroid;
|
return spv::DecorationCentroid;
|
||||||
else if (type.getQualifier().sample)
|
else if (qualifier.sample)
|
||||||
return spv::DecorationSample;
|
return spv::DecorationSample;
|
||||||
else
|
else
|
||||||
return (spv::Decoration)spv::BadValue;
|
return (spv::Decoration)spv::BadValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If glslang type is invaraiant, return SPIR-V invariant decoration.
|
// If glslang type is invaraiant, return SPIR-V invariant decoration.
|
||||||
spv::Decoration TranslateInvariantDecoration(const glslang::TType& type)
|
spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifier)
|
||||||
{
|
{
|
||||||
if (type.getQualifier().invariant)
|
if (qualifier.invariant)
|
||||||
return spv::DecorationInvariant;
|
return spv::DecorationInvariant;
|
||||||
else
|
else
|
||||||
return (spv::Decoration)spv::BadValue;
|
return (spv::Decoration)spv::BadValue;
|
||||||
|
|
@ -414,6 +419,34 @@ spv::ImageFormat TranslateImageFormat(const glslang::TType& type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& parent)
|
||||||
|
{
|
||||||
|
if (child.layoutMatrix == glslang::ElmNone)
|
||||||
|
child.layoutMatrix = parent.layoutMatrix;
|
||||||
|
|
||||||
|
if (parent.invariant)
|
||||||
|
child.invariant = true;
|
||||||
|
if (parent.nopersp)
|
||||||
|
child.nopersp = true;
|
||||||
|
if (parent.flat)
|
||||||
|
child.flat = true;
|
||||||
|
if (parent.centroid)
|
||||||
|
child.centroid = true;
|
||||||
|
if (parent.patch)
|
||||||
|
child.patch = true;
|
||||||
|
if (parent.sample)
|
||||||
|
child.sample = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HasNonLayoutQualifiers(const glslang::TQualifier& qualifier)
|
||||||
|
{
|
||||||
|
// This should list qualifiers that simultaneous satisify:
|
||||||
|
// - 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)
|
||||||
|
// - 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;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Implement the TGlslangToSpvTraverser class.
|
// Implement the TGlslangToSpvTraverser class.
|
||||||
//
|
//
|
||||||
|
|
@ -550,6 +583,16 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finish everything and dump
|
||||||
|
void TGlslangToSpvTraverser::dumpSpv(std::vector<unsigned int>& out)
|
||||||
|
{
|
||||||
|
// finish off the entry-point SPV instruction by adding the Input/Output <id>
|
||||||
|
for (auto it : iOSet)
|
||||||
|
entryPoint->addIdOperand(it);
|
||||||
|
|
||||||
|
builder.dump(out);
|
||||||
|
}
|
||||||
|
|
||||||
TGlslangToSpvTraverser::~TGlslangToSpvTraverser()
|
TGlslangToSpvTraverser::~TGlslangToSpvTraverser()
|
||||||
{
|
{
|
||||||
if (! mainTerminated) {
|
if (! mainTerminated) {
|
||||||
|
|
@ -580,6 +623,14 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
|
||||||
// Formal function parameters were mapped during makeFunctions().
|
// Formal function parameters were mapped during makeFunctions().
|
||||||
spv::Id id = getSymbolId(symbol);
|
spv::Id id = getSymbolId(symbol);
|
||||||
|
|
||||||
|
// Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction
|
||||||
|
if (builder.isPointer(id)) {
|
||||||
|
spv::StorageClass sc = builder.getStorageClass(id);
|
||||||
|
if (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)
|
||||||
|
iOSet.insert(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only process non-linkage-only nodes for generating actual static uses
|
||||||
if (! linkageOnly) {
|
if (! linkageOnly) {
|
||||||
// Prepare to generate code for the access
|
// Prepare to generate code for the access
|
||||||
|
|
||||||
|
|
@ -596,11 +647,6 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
|
||||||
builder.setAccessChainRValue(id);
|
builder.setAccessChainRValue(id);
|
||||||
else
|
else
|
||||||
builder.setAccessChainLValue(id);
|
builder.setAccessChainLValue(id);
|
||||||
} else {
|
|
||||||
// finish off the entry-point SPV instruction by adding the Input/Output <id>
|
|
||||||
spv::StorageClass sc = builder.getStorageClass(id);
|
|
||||||
if (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)
|
|
||||||
entryPoint->addIdOperand(id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -767,16 +813,14 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
|
||||||
convertGlslangToSpvType(node->getType()), left, right,
|
convertGlslangToSpvType(node->getType()), left, right,
|
||||||
node->getLeft()->getType().getBasicType());
|
node->getLeft()->getType().getBasicType());
|
||||||
|
|
||||||
|
builder.clearAccessChain();
|
||||||
if (! result) {
|
if (! result) {
|
||||||
spv::MissingFunctionality("unknown glslang binary operation");
|
spv::MissingFunctionality("unknown glslang binary operation");
|
||||||
|
return true; // pick up a child as the place-holder result
|
||||||
} else {
|
} else {
|
||||||
builder.clearAccessChain();
|
|
||||||
builder.setAccessChainRValue(result);
|
builder.setAccessChainRValue(result);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node)
|
bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node)
|
||||||
|
|
@ -821,7 +865,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
|
||||||
|
|
||||||
if (node->getOp() == glslang::EOpAtomicCounterIncrement ||
|
if (node->getOp() == glslang::EOpAtomicCounterIncrement ||
|
||||||
node->getOp() == glslang::EOpAtomicCounterDecrement ||
|
node->getOp() == glslang::EOpAtomicCounterDecrement ||
|
||||||
node->getOp() == glslang::EOpAtomicCounter)
|
node->getOp() == glslang::EOpAtomicCounter ||
|
||||||
|
node->getOp() == glslang::EOpInterpolateAtCentroid)
|
||||||
operand = builder.accessChainGetLValue(); // Special case l-value operands
|
operand = builder.accessChainGetLValue(); // Special case l-value operands
|
||||||
else
|
else
|
||||||
operand = builder.accessChainLoad(convertGlslangToSpvType(node->getOperand()->getType()));
|
operand = builder.accessChainLoad(convertGlslangToSpvType(node->getOperand()->getType()));
|
||||||
|
|
@ -888,10 +933,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
|
||||||
|
|
||||||
default:
|
default:
|
||||||
spv::MissingFunctionality("unknown glslang unary");
|
spv::MissingFunctionality("unknown glslang unary");
|
||||||
break;
|
return true; // pick up operand as placeholder result
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TIntermAggregate* node)
|
bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TIntermAggregate* node)
|
||||||
|
|
@ -1173,6 +1216,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
|
||||||
if (arg == 1)
|
if (arg == 1)
|
||||||
lvalue = true;
|
lvalue = true;
|
||||||
break;
|
break;
|
||||||
|
case glslang::EOpInterpolateAtSample:
|
||||||
|
case glslang::EOpInterpolateAtOffset:
|
||||||
|
if (arg == 0)
|
||||||
|
lvalue = true;
|
||||||
|
break;
|
||||||
case glslang::EOpAtomicAdd:
|
case glslang::EOpAtomicAdd:
|
||||||
case glslang::EOpAtomicMin:
|
case glslang::EOpAtomicMin:
|
||||||
case glslang::EOpAtomicMax:
|
case glslang::EOpAtomicMax:
|
||||||
|
|
@ -1226,7 +1274,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
|
||||||
|
|
||||||
if (! result) {
|
if (! result) {
|
||||||
spv::MissingFunctionality("unknown glslang aggregate");
|
spv::MissingFunctionality("unknown glslang aggregate");
|
||||||
return true;
|
return true; // pick up a child as a placeholder operand
|
||||||
} else {
|
} else {
|
||||||
builder.clearAccessChain();
|
builder.clearAccessChain();
|
||||||
builder.setAccessChainRValue(result);
|
builder.setAccessChainRValue(result);
|
||||||
|
|
@ -1469,18 +1517,19 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert from a glslang type to an SPV type, by calling into
|
// Convert from a glslang type to an SPV type, by calling into a
|
||||||
// recursive version of this function.
|
// recursive version of this function. This establishes the inherited
|
||||||
|
// layout state rooted from the top-level type.
|
||||||
spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type)
|
spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type)
|
||||||
{
|
{
|
||||||
return convertGlslangToSpvType(type, requiresExplicitLayout(type));
|
return convertGlslangToSpvType(type, getExplicitLayout(type), type.getQualifier());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do full recursive conversion of an arbitrary glslang type to a SPIR-V Id.
|
// Do full recursive conversion of an arbitrary glslang type to a SPIR-V Id.
|
||||||
// explicitLayout can be kept the same throughout the heirarchical recursive walk.
|
// explicitLayout can be kept the same throughout the heirarchical recursive walk.
|
||||||
spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type, bool explicitLayout)
|
spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier)
|
||||||
{
|
{
|
||||||
spv::Id spvType = 0;
|
spv::Id spvType = spv::NoResult;
|
||||||
|
|
||||||
switch (type.getBasicType()) {
|
switch (type.getBasicType()) {
|
||||||
case glslang::EbtVoid:
|
case glslang::EbtVoid:
|
||||||
|
|
@ -1509,13 +1558,13 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
case glslang::EbtSampler:
|
case glslang::EbtSampler:
|
||||||
{
|
{
|
||||||
const glslang::TSampler& sampler = type.getSampler();
|
const glslang::TSampler& sampler = type.getSampler();
|
||||||
// an image is present, make its type
|
// an image is present, make its type
|
||||||
spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms,
|
spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms,
|
||||||
sampler.image ? 2 : 1, TranslateImageFormat(type));
|
sampler.image ? 2 : 1, TranslateImageFormat(type));
|
||||||
if (! sampler.image) {
|
if (! sampler.image) {
|
||||||
spvType = builder.makeSampledImageType(spvType);
|
spvType = builder.makeSampledImageType(spvType);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case glslang::EbtStruct:
|
case glslang::EbtStruct:
|
||||||
case glslang::EbtBlock:
|
case glslang::EbtBlock:
|
||||||
|
|
@ -1523,8 +1572,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
// If we've seen this struct type, return it
|
// If we've seen this struct type, return it
|
||||||
const glslang::TTypeList* glslangStruct = type.getStruct();
|
const glslang::TTypeList* glslangStruct = type.getStruct();
|
||||||
std::vector<spv::Id> structFields;
|
std::vector<spv::Id> structFields;
|
||||||
spvType = structMap[glslangStruct];
|
|
||||||
if (spvType)
|
// Try to share structs for different layouts, but not yet for other
|
||||||
|
// kinds of qualification (primarily not yet including interpolant qualification).
|
||||||
|
if (! HasNonLayoutQualifiers(qualifier))
|
||||||
|
spvType = structMap[explicitLayout][qualifier.layoutMatrix][glslangStruct];
|
||||||
|
if (spvType != spv::NoResult)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// else, we haven't seen it...
|
// else, we haven't seen it...
|
||||||
|
|
@ -1542,13 +1595,17 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
} else {
|
} else {
|
||||||
if (type.getBasicType() == glslang::EbtBlock)
|
if (type.getBasicType() == glslang::EbtBlock)
|
||||||
memberRemapper[glslangStruct][i] = i - memberDelta;
|
memberRemapper[glslangStruct][i] = i - memberDelta;
|
||||||
structFields.push_back(convertGlslangToSpvType(glslangType, explicitLayout));
|
// modify just this child's view of the qualifier
|
||||||
|
glslang::TQualifier subQualifier = glslangType.getQualifier();
|
||||||
|
InheritQualifiers(subQualifier, qualifier);
|
||||||
|
structFields.push_back(convertGlslangToSpvType(glslangType, explicitLayout, subQualifier));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make the SPIR-V type
|
// Make the SPIR-V type
|
||||||
spvType = builder.makeStructType(structFields, type.getTypeName().c_str());
|
spvType = builder.makeStructType(structFields, type.getTypeName().c_str());
|
||||||
structMap[glslangStruct] = spvType;
|
if (! HasNonLayoutQualifiers(qualifier))
|
||||||
|
structMap[explicitLayout][qualifier.layoutMatrix][glslangStruct] = spvType;
|
||||||
|
|
||||||
// Name and decorate the non-hidden members
|
// Name and decorate the non-hidden members
|
||||||
int offset = -1;
|
int offset = -1;
|
||||||
|
|
@ -1557,31 +1614,35 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
int member = i;
|
int member = i;
|
||||||
if (type.getBasicType() == glslang::EbtBlock)
|
if (type.getBasicType() == glslang::EbtBlock)
|
||||||
member = memberRemapper[glslangStruct][i];
|
member = memberRemapper[glslangStruct][i];
|
||||||
|
|
||||||
|
// modify just this child's view of the qualifier
|
||||||
|
glslang::TQualifier subQualifier = glslangType.getQualifier();
|
||||||
|
InheritQualifiers(subQualifier, qualifier);
|
||||||
|
|
||||||
// using -1 above to indicate a hidden member
|
// using -1 above to indicate a hidden member
|
||||||
if (member >= 0) {
|
if (member >= 0) {
|
||||||
builder.addMemberName(spvType, member, glslangType.getFieldName().c_str());
|
builder.addMemberName(spvType, member, glslangType.getFieldName().c_str());
|
||||||
addMemberDecoration(spvType, member, TranslateLayoutDecoration(glslangType));
|
addMemberDecoration(spvType, member, TranslateLayoutDecoration(glslangType, subQualifier.layoutMatrix));
|
||||||
addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType));
|
addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType));
|
||||||
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(glslangType));
|
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier));
|
||||||
addMemberDecoration(spvType, member, TranslateInvariantDecoration(glslangType));
|
addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier));
|
||||||
if (glslangType.getQualifier().hasLocation())
|
if (glslangType.getQualifier().hasLocation())
|
||||||
builder.addMemberDecoration(spvType, member, spv::DecorationLocation, glslangType.getQualifier().layoutLocation);
|
builder.addMemberDecoration(spvType, member, spv::DecorationLocation, glslangType.getQualifier().layoutLocation);
|
||||||
if (glslangType.getQualifier().hasComponent())
|
if (glslangType.getQualifier().hasComponent())
|
||||||
builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent);
|
builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent);
|
||||||
if (glslangType.getQualifier().hasXfbOffset())
|
if (glslangType.getQualifier().hasXfbOffset())
|
||||||
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangType.getQualifier().layoutXfbOffset);
|
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangType.getQualifier().layoutXfbOffset);
|
||||||
else if (explicitLayout) {
|
else if (explicitLayout != glslang::ElpNone) {
|
||||||
// figure out what to do with offset, which is accumulating
|
// figure out what to do with offset, which is accumulating
|
||||||
int nextOffset;
|
int nextOffset;
|
||||||
updateMemberOffset(type, glslangType, offset, nextOffset);
|
updateMemberOffset(type, glslangType, offset, nextOffset, explicitLayout, subQualifier.layoutMatrix);
|
||||||
if (offset >= 0)
|
if (offset >= 0)
|
||||||
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, offset);
|
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, offset);
|
||||||
offset = nextOffset;
|
offset = nextOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (glslangType.isMatrix() && explicitLayout) {
|
if (glslangType.isMatrix() && explicitLayout != glslang::ElpNone)
|
||||||
builder.addMemberDecoration(spvType, member, spv::DecorationMatrixStride, getMatrixStride(glslangType));
|
builder.addMemberDecoration(spvType, member, spv::DecorationMatrixStride, getMatrixStride(glslangType, explicitLayout, subQualifier.layoutMatrix));
|
||||||
}
|
|
||||||
|
|
||||||
// built-in variable decorations
|
// built-in variable decorations
|
||||||
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangType.getQualifier().builtIn);
|
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangType.getQualifier().builtIn);
|
||||||
|
|
@ -1591,7 +1652,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decorate the structure
|
// Decorate the structure
|
||||||
addDecoration(spvType, TranslateLayoutDecoration(type));
|
addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix));
|
||||||
addDecoration(spvType, TranslateBlockDecoration(type));
|
addDecoration(spvType, TranslateBlockDecoration(type));
|
||||||
if (type.getQualifier().hasStream())
|
if (type.getQualifier().hasStream())
|
||||||
builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
|
builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
|
||||||
|
|
@ -1617,10 +1678,38 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type.isArray()) {
|
if (type.isArray()) {
|
||||||
|
int stride = 0; // keep this 0 unless doing an explicit layout; 0 will mean no decoration, no stride
|
||||||
|
|
||||||
// Do all but the outer dimension
|
// Do all but the outer dimension
|
||||||
for (int dim = type.getArraySizes()->getNumDims() - 1; dim > 0; --dim) {
|
if (type.getArraySizes()->getNumDims() > 1) {
|
||||||
assert(type.getArraySizes()->getDimSize(dim) > 0);
|
// We need to decorate array strides for types needing explicit layout, except blocks.
|
||||||
spvType = builder.makeArrayType(spvType, type.getArraySizes()->getDimSize(dim));
|
if (explicitLayout != glslang::ElpNone && type.getBasicType() != glslang::EbtBlock) {
|
||||||
|
// Use a dummy glslang type for querying internal strides of
|
||||||
|
// arrays of arrays, but using just a one-dimensional array.
|
||||||
|
glslang::TType simpleArrayType(type, 0); // deference type of the array
|
||||||
|
while (simpleArrayType.getArraySizes().getNumDims() > 1)
|
||||||
|
simpleArrayType.getArraySizes().dereference();
|
||||||
|
|
||||||
|
// Will compute the higher-order strides here, rather than making a whole
|
||||||
|
// pile of types and doing repetitive recursion on their contents.
|
||||||
|
stride = getArrayStride(simpleArrayType, explicitLayout, qualifier.layoutMatrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
// make the arrays
|
||||||
|
for (int dim = type.getArraySizes()->getNumDims() - 1; dim > 0; --dim) {
|
||||||
|
int size = type.getArraySizes()->getDimSize(dim);
|
||||||
|
assert(size > 0);
|
||||||
|
spvType = builder.makeArrayType(spvType, size, stride);
|
||||||
|
if (stride > 0)
|
||||||
|
builder.addDecoration(spvType, spv::DecorationArrayStride, stride);
|
||||||
|
stride *= size;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// single-dimensional array, and don't yet have stride
|
||||||
|
|
||||||
|
// We need to decorate array strides for types needing explicit layout, except blocks.
|
||||||
|
if (explicitLayout != glslang::ElpNone && type.getBasicType() != glslang::EbtBlock)
|
||||||
|
stride = getArrayStride(type, explicitLayout, qualifier.layoutMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do the outer dimension, which might not be known for a runtime-sized array
|
// Do the outer dimension, which might not be known for a runtime-sized array
|
||||||
|
|
@ -1628,55 +1717,62 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||||
spvType = builder.makeRuntimeArray(spvType);
|
spvType = builder.makeRuntimeArray(spvType);
|
||||||
} else {
|
} else {
|
||||||
assert(type.getOuterArraySize() > 0);
|
assert(type.getOuterArraySize() > 0);
|
||||||
spvType = builder.makeArrayType(spvType, type.getOuterArraySize());
|
spvType = builder.makeArrayType(spvType, type.getOuterArraySize(), stride);
|
||||||
}
|
}
|
||||||
|
if (stride > 0)
|
||||||
// TODO: explicit layout still needs to be done hierarchically for arrays of arrays, which
|
builder.addDecoration(spvType, spv::DecorationArrayStride, stride);
|
||||||
// may still require additional "link time" support from the front-end
|
|
||||||
// for arrays of arrays
|
|
||||||
|
|
||||||
// We need to decorate array strides for types needing explicit layout,
|
|
||||||
// except for the very top if it is an array of blocks; that array is
|
|
||||||
// not laid out in memory in a way needing a stride.
|
|
||||||
if (explicitLayout && type.getBasicType() != glslang::EbtBlock)
|
|
||||||
builder.addDecoration(spvType, spv::DecorationArrayStride, getArrayStride(type));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return spvType;
|
return spvType;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TGlslangToSpvTraverser::requiresExplicitLayout(const glslang::TType& type) const
|
// Decide whether or not this type should be
|
||||||
|
// decorated with offsets and strides, and if so
|
||||||
|
// whether std140 or std430 rules should be applied.
|
||||||
|
glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang::TType& type) const
|
||||||
{
|
{
|
||||||
return type.getBasicType() == glslang::EbtBlock &&
|
// has to be a block
|
||||||
type.getQualifier().layoutPacking != glslang::ElpShared &&
|
if (type.getBasicType() != glslang::EbtBlock)
|
||||||
type.getQualifier().layoutPacking != glslang::ElpPacked &&
|
return glslang::ElpNone;
|
||||||
(type.getQualifier().storage == glslang::EvqUniform ||
|
|
||||||
type.getQualifier().storage == glslang::EvqBuffer);
|
// has to be a uniform or buffer block
|
||||||
|
if (type.getQualifier().storage != glslang::EvqUniform &&
|
||||||
|
type.getQualifier().storage != glslang::EvqBuffer)
|
||||||
|
return glslang::ElpNone;
|
||||||
|
|
||||||
|
// return the layout to use
|
||||||
|
switch (type.getQualifier().layoutPacking) {
|
||||||
|
case glslang::ElpStd140:
|
||||||
|
case glslang::ElpStd430:
|
||||||
|
return type.getQualifier().layoutPacking;
|
||||||
|
default:
|
||||||
|
return glslang::ElpNone;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Given an array type, returns the integer stride required for that array
|
// Given an array type, returns the integer stride required for that array
|
||||||
int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType)
|
int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
int stride = glslangIntermediate->getBaseAlignment(arrayType, size, arrayType.getQualifier().layoutPacking == glslang::ElpStd140);
|
int stride;
|
||||||
if (arrayType.isMatrix()) {
|
glslangIntermediate->getBaseAlignment(arrayType, size, stride, explicitLayout == glslang::ElpStd140, matrixLayout == glslang::ElmRowMajor);
|
||||||
// GLSL strides are set to alignments of the matrix flattened to individual rows/cols,
|
|
||||||
// but SPV needs an array stride for the whole matrix, not the rows/cols
|
|
||||||
if (arrayType.getQualifier().layoutMatrix == glslang::ElmRowMajor)
|
|
||||||
stride *= arrayType.getMatrixRows();
|
|
||||||
else
|
|
||||||
stride *= arrayType.getMatrixCols();
|
|
||||||
}
|
|
||||||
|
|
||||||
return stride;
|
return stride;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Given a matrix type, returns the integer stride required for that matrix
|
// Given a matrix type, or array (of array) of matrixes type, returns the integer stride required for that matrix
|
||||||
// when used as a member of an interface block
|
// when used as a member of an interface block
|
||||||
int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType)
|
int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
|
||||||
{
|
{
|
||||||
|
glslang::TType elementType;
|
||||||
|
elementType.shallowCopy(matrixType);
|
||||||
|
elementType.clearArraySizes();
|
||||||
|
|
||||||
int size;
|
int size;
|
||||||
return glslangIntermediate->getBaseAlignment(matrixType, size, matrixType.getQualifier().layoutPacking == glslang::ElpStd140);
|
int stride;
|
||||||
|
glslangIntermediate->getBaseAlignment(elementType, size, stride, explicitLayout == glslang::ElpStd140, matrixLayout == glslang::ElmRowMajor);
|
||||||
|
|
||||||
|
return stride;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Given a member type of a struct, realign the current offset for it, and compute
|
// Given a member type of a struct, realign the current offset for it, and compute
|
||||||
|
|
@ -1685,14 +1781,12 @@ int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType)
|
||||||
// 'currentOffset' should be passed in already initialized, ready to modify, and reflecting
|
// 'currentOffset' should be passed in already initialized, ready to modify, and reflecting
|
||||||
// the migration of data from nextOffset -> currentOffset. It should be -1 on the first call.
|
// the migration of data from nextOffset -> currentOffset. It should be -1 on the first call.
|
||||||
// -1 means a non-forced member offset (no decoration needed).
|
// -1 means a non-forced member offset (no decoration needed).
|
||||||
void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset)
|
void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset,
|
||||||
|
glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
|
||||||
{
|
{
|
||||||
// this will get a positive value when deemed necessary
|
// this will get a positive value when deemed necessary
|
||||||
nextOffset = -1;
|
nextOffset = -1;
|
||||||
|
|
||||||
bool forceOffset = structType.getQualifier().layoutPacking == glslang::ElpStd140 ||
|
|
||||||
structType.getQualifier().layoutPacking == glslang::ElpStd430;
|
|
||||||
|
|
||||||
// override anything in currentOffset with user-set offset
|
// override anything in currentOffset with user-set offset
|
||||||
if (memberType.getQualifier().hasOffset())
|
if (memberType.getQualifier().hasOffset())
|
||||||
currentOffset = memberType.getQualifier().layoutOffset;
|
currentOffset = memberType.getQualifier().layoutOffset;
|
||||||
|
|
@ -1702,14 +1796,14 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType
|
||||||
// once cross-compilation unit GLSL validation is done, as the original user
|
// once cross-compilation unit GLSL validation is done, as the original user
|
||||||
// settings are needed in layoutOffset, and then the following will come into play.
|
// settings are needed in layoutOffset, and then the following will come into play.
|
||||||
|
|
||||||
if (! forceOffset) {
|
if (explicitLayout == glslang::ElpNone) {
|
||||||
if (! memberType.getQualifier().hasOffset())
|
if (! memberType.getQualifier().hasOffset())
|
||||||
currentOffset = -1;
|
currentOffset = -1;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getting this far means we are forcing offsets
|
// Getting this far means we need explicit offsets
|
||||||
if (currentOffset < 0)
|
if (currentOffset < 0)
|
||||||
currentOffset = 0;
|
currentOffset = 0;
|
||||||
|
|
||||||
|
|
@ -1717,7 +1811,8 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType
|
||||||
// but possibly not yet correctly aligned.
|
// but possibly not yet correctly aligned.
|
||||||
|
|
||||||
int memberSize;
|
int memberSize;
|
||||||
int memberAlignment = glslangIntermediate->getBaseAlignment(memberType, memberSize, memberType.getQualifier().layoutPacking == glslang::ElpStd140);
|
int dummyStride;
|
||||||
|
int memberAlignment = glslangIntermediate->getBaseAlignment(memberType, memberSize, dummyStride, explicitLayout == glslang::ElpStd140, matrixLayout == glslang::ElmRowMajor);
|
||||||
glslang::RoundToPow2(currentOffset, memberAlignment);
|
glslang::RoundToPow2(currentOffset, memberAlignment);
|
||||||
nextOffset = currentOffset + memberSize;
|
nextOffset = currentOffset + memberSize;
|
||||||
}
|
}
|
||||||
|
|
@ -1876,6 +1971,9 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
|
||||||
|
|
||||||
// Check for queries
|
// Check for queries
|
||||||
if (cracked.query) {
|
if (cracked.query) {
|
||||||
|
// a sampled image needs to have the image extracted first
|
||||||
|
if (builder.isSampledImage(params.sampler))
|
||||||
|
params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
|
||||||
switch (node->getOp()) {
|
switch (node->getOp()) {
|
||||||
case glslang::EOpImageQuerySize:
|
case glslang::EOpImageQuerySize:
|
||||||
case glslang::EOpTextureQuerySize:
|
case glslang::EOpTextureQuerySize:
|
||||||
|
|
@ -1904,15 +2002,19 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
|
||||||
auto opIt = arguments.begin();
|
auto opIt = arguments.begin();
|
||||||
operands.push_back(*(opIt++));
|
operands.push_back(*(opIt++));
|
||||||
operands.push_back(*(opIt++));
|
operands.push_back(*(opIt++));
|
||||||
if (node->getOp() == glslang::EOpImageStore)
|
|
||||||
operands.push_back(*(opIt++));
|
|
||||||
if (node->getOp() == glslang::EOpImageLoad) {
|
if (node->getOp() == glslang::EOpImageLoad) {
|
||||||
if (sampler.ms) {
|
if (sampler.ms) {
|
||||||
operands.push_back(spv::ImageOperandsSampleMask);
|
operands.push_back(spv::ImageOperandsSampleMask);
|
||||||
operands.push_back(*(opIt++));
|
operands.push_back(*opIt);
|
||||||
}
|
}
|
||||||
return builder.createOp(spv::OpImageRead, convertGlslangToSpvType(node->getType()), operands);
|
return builder.createOp(spv::OpImageRead, convertGlslangToSpvType(node->getType()), operands);
|
||||||
} else if (node->getOp() == glslang::EOpImageStore) {
|
} else if (node->getOp() == glslang::EOpImageStore) {
|
||||||
|
if (sampler.ms) {
|
||||||
|
operands.push_back(*(opIt + 1));
|
||||||
|
operands.push_back(spv::ImageOperandsSampleMask);
|
||||||
|
operands.push_back(*opIt);
|
||||||
|
} else
|
||||||
|
operands.push_back(*opIt);
|
||||||
builder.createNoResultOp(spv::OpImageWrite, operands);
|
builder.createNoResultOp(spv::OpImageWrite, operands);
|
||||||
return spv::NoResult;
|
return spv::NoResult;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1966,7 +2068,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
|
||||||
std::vector<spv::Id> indexes;
|
std::vector<spv::Id> indexes;
|
||||||
int comp;
|
int comp;
|
||||||
if (cracked.proj)
|
if (cracked.proj)
|
||||||
comp = 3;
|
comp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref"
|
||||||
else
|
else
|
||||||
comp = builder.getNumComponents(params.coords) - 1;
|
comp = builder.getNumComponents(params.coords) - 1;
|
||||||
indexes.push_back(comp);
|
indexes.push_back(comp);
|
||||||
|
|
@ -2138,26 +2240,17 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
||||||
break;
|
break;
|
||||||
case glslang::EOpVectorTimesMatrix:
|
case glslang::EOpVectorTimesMatrix:
|
||||||
case glslang::EOpVectorTimesMatrixAssign:
|
case glslang::EOpVectorTimesMatrixAssign:
|
||||||
assert(builder.isVector(left));
|
|
||||||
assert(builder.isMatrix(right));
|
|
||||||
binOp = spv::OpVectorTimesMatrix;
|
binOp = spv::OpVectorTimesMatrix;
|
||||||
break;
|
break;
|
||||||
case glslang::EOpMatrixTimesVector:
|
case glslang::EOpMatrixTimesVector:
|
||||||
assert(builder.isMatrix(left));
|
|
||||||
assert(builder.isVector(right));
|
|
||||||
binOp = spv::OpMatrixTimesVector;
|
binOp = spv::OpMatrixTimesVector;
|
||||||
break;
|
break;
|
||||||
case glslang::EOpMatrixTimesScalar:
|
case glslang::EOpMatrixTimesScalar:
|
||||||
case glslang::EOpMatrixTimesScalarAssign:
|
case glslang::EOpMatrixTimesScalarAssign:
|
||||||
if (builder.isMatrix(right))
|
|
||||||
std::swap(left, right);
|
|
||||||
assert(builder.isScalar(right));
|
|
||||||
binOp = spv::OpMatrixTimesScalar;
|
binOp = spv::OpMatrixTimesScalar;
|
||||||
break;
|
break;
|
||||||
case glslang::EOpMatrixTimesMatrix:
|
case glslang::EOpMatrixTimesMatrix:
|
||||||
case glslang::EOpMatrixTimesMatrixAssign:
|
case glslang::EOpMatrixTimesMatrixAssign:
|
||||||
assert(builder.isMatrix(left));
|
|
||||||
assert(builder.isMatrix(right));
|
|
||||||
binOp = spv::OpMatrixTimesMatrix;
|
binOp = spv::OpMatrixTimesMatrix;
|
||||||
break;
|
break;
|
||||||
case glslang::EOpOuterProduct:
|
case glslang::EOpOuterProduct:
|
||||||
|
|
@ -2236,29 +2329,8 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
||||||
// handle mapped binary operations (should be non-comparison)
|
// handle mapped binary operations (should be non-comparison)
|
||||||
if (binOp != spv::OpNop) {
|
if (binOp != spv::OpNop) {
|
||||||
assert(comparison == false);
|
assert(comparison == false);
|
||||||
if (builder.isMatrix(left) || builder.isMatrix(right)) {
|
if (builder.isMatrix(left) || builder.isMatrix(right))
|
||||||
switch (binOp) {
|
return createBinaryMatrixOperation(binOp, precision, typeId, left, right);
|
||||||
case spv::OpMatrixTimesScalar:
|
|
||||||
case spv::OpVectorTimesMatrix:
|
|
||||||
case spv::OpMatrixTimesVector:
|
|
||||||
case spv::OpMatrixTimesMatrix:
|
|
||||||
break;
|
|
||||||
case spv::OpFDiv:
|
|
||||||
// turn it into a multiply...
|
|
||||||
assert(builder.isMatrix(left) && builder.isScalar(right));
|
|
||||||
right = builder.createBinOp(spv::OpFDiv, builder.getTypeId(right), builder.makeFloatConstant(1.0F), right);
|
|
||||||
binOp = spv::OpFMul;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
spv::MissingFunctionality("binary operation on matrix");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
spv::Id id = builder.createBinOp(binOp, typeId, left, right);
|
|
||||||
builder.setPrecision(id, precision);
|
|
||||||
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
// No matrix involved; make both operands be the same number of components, if needed
|
// No matrix involved; make both operands be the same number of components, if needed
|
||||||
if (needMatchingVectors)
|
if (needMatchingVectors)
|
||||||
|
|
@ -2278,7 +2350,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
||||||
if (reduceComparison && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left))) {
|
if (reduceComparison && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left))) {
|
||||||
assert(op == glslang::EOpEqual || op == glslang::EOpNotEqual);
|
assert(op == glslang::EOpEqual || op == glslang::EOpNotEqual);
|
||||||
|
|
||||||
return builder.createCompare(precision, left, right, op == glslang::EOpEqual);
|
return builder.createCompositeCompare(precision, left, right, op == glslang::EOpEqual);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (op) {
|
switch (op) {
|
||||||
|
|
@ -2342,6 +2414,111 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Translate AST matrix operation to SPV operation, already having SPV-based operands/types.
|
||||||
|
// These can be any of:
|
||||||
|
//
|
||||||
|
// matrix * scalar
|
||||||
|
// scalar * matrix
|
||||||
|
// matrix * matrix linear algebraic
|
||||||
|
// matrix * vector
|
||||||
|
// vector * matrix
|
||||||
|
// matrix * matrix componentwise
|
||||||
|
// matrix op matrix op in {+, -, /}
|
||||||
|
// matrix op scalar op in {+, -, /}
|
||||||
|
// scalar op matrix op in {+, -, /}
|
||||||
|
//
|
||||||
|
spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, spv::Decoration precision, spv::Id typeId, spv::Id left, spv::Id right)
|
||||||
|
{
|
||||||
|
bool firstClass = true;
|
||||||
|
|
||||||
|
// First, handle first-class matrix operations (* and matrix/scalar)
|
||||||
|
switch (op) {
|
||||||
|
case spv::OpFDiv:
|
||||||
|
if (builder.isMatrix(left) && builder.isScalar(right)) {
|
||||||
|
// turn matrix / scalar into a multiply...
|
||||||
|
right = builder.createBinOp(spv::OpFDiv, builder.getTypeId(right), builder.makeFloatConstant(1.0F), right);
|
||||||
|
op = spv::OpMatrixTimesScalar;
|
||||||
|
} else
|
||||||
|
firstClass = false;
|
||||||
|
break;
|
||||||
|
case spv::OpMatrixTimesScalar:
|
||||||
|
if (builder.isMatrix(right))
|
||||||
|
std::swap(left, right);
|
||||||
|
assert(builder.isScalar(right));
|
||||||
|
break;
|
||||||
|
case spv::OpVectorTimesMatrix:
|
||||||
|
assert(builder.isVector(left));
|
||||||
|
assert(builder.isMatrix(right));
|
||||||
|
break;
|
||||||
|
case spv::OpMatrixTimesVector:
|
||||||
|
assert(builder.isMatrix(left));
|
||||||
|
assert(builder.isVector(right));
|
||||||
|
break;
|
||||||
|
case spv::OpMatrixTimesMatrix:
|
||||||
|
assert(builder.isMatrix(left));
|
||||||
|
assert(builder.isMatrix(right));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
firstClass = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (firstClass) {
|
||||||
|
spv::Id id = builder.createBinOp(op, typeId, left, right);
|
||||||
|
builder.setPrecision(id, precision);
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
// - smear any scalar to a vector
|
||||||
|
// - do vector operations
|
||||||
|
// - make a matrix out the vector results
|
||||||
|
switch (op) {
|
||||||
|
case spv::OpFAdd:
|
||||||
|
case spv::OpFSub:
|
||||||
|
case spv::OpFDiv:
|
||||||
|
case spv::OpFMul:
|
||||||
|
{
|
||||||
|
// one time set up...
|
||||||
|
bool leftMat = builder.isMatrix(left);
|
||||||
|
bool rightMat = builder.isMatrix(right);
|
||||||
|
unsigned int numCols = leftMat ? builder.getNumColumns(left) : builder.getNumColumns(right);
|
||||||
|
int numRows = leftMat ? builder.getNumRows(left) : builder.getNumRows(right);
|
||||||
|
spv::Id scalarType = builder.getScalarTypeId(typeId);
|
||||||
|
spv::Id vecType = builder.makeVectorType(scalarType, numRows);
|
||||||
|
std::vector<spv::Id> results;
|
||||||
|
spv::Id smearVec = spv::NoResult;
|
||||||
|
if (builder.isScalar(left))
|
||||||
|
smearVec = builder.smearScalar(precision, left, vecType);
|
||||||
|
else if (builder.isScalar(right))
|
||||||
|
smearVec = builder.smearScalar(precision, right, vecType);
|
||||||
|
|
||||||
|
// do each vector op
|
||||||
|
for (unsigned int c = 0; c < numCols; ++c) {
|
||||||
|
std::vector<unsigned int> indexes;
|
||||||
|
indexes.push_back(c);
|
||||||
|
spv::Id leftVec = leftMat ? builder.createCompositeExtract( left, vecType, indexes) : smearVec;
|
||||||
|
spv::Id rightVec = rightMat ? builder.createCompositeExtract(right, vecType, indexes) : smearVec;
|
||||||
|
results.push_back(builder.createBinOp(op, vecType, leftVec, rightVec));
|
||||||
|
builder.setPrecision(results.back(), precision);
|
||||||
|
}
|
||||||
|
|
||||||
|
// put the pieces together
|
||||||
|
spv::Id id = builder.createCompositeConstruct(typeId, results);
|
||||||
|
builder.setPrecision(id, precision);
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
assert(0);
|
||||||
|
return spv::NoResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy)
|
spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy)
|
||||||
{
|
{
|
||||||
spv::Op unaryOp = spv::OpNop;
|
spv::Op unaryOp = spv::OpNop;
|
||||||
|
|
@ -2471,6 +2648,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
|
||||||
unaryOp = spv::OpIsInf;
|
unaryOp = spv::OpIsInf;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case glslang::EOpFloatBitsToInt:
|
||||||
|
case glslang::EOpFloatBitsToUint:
|
||||||
|
case glslang::EOpIntBitsToFloat:
|
||||||
|
case glslang::EOpUintBitsToFloat:
|
||||||
|
unaryOp = spv::OpBitcast;
|
||||||
|
break;
|
||||||
|
|
||||||
case glslang::EOpPackSnorm2x16:
|
case glslang::EOpPackSnorm2x16:
|
||||||
libCall = spv::GLSLstd450PackSnorm2x16;
|
libCall = spv::GLSLstd450PackSnorm2x16;
|
||||||
break;
|
break;
|
||||||
|
|
@ -2535,7 +2719,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
|
||||||
case glslang::EOpFwidthCoarse:
|
case glslang::EOpFwidthCoarse:
|
||||||
unaryOp = spv::OpFwidthCoarse;
|
unaryOp = spv::OpFwidthCoarse;
|
||||||
break;
|
break;
|
||||||
|
case glslang::EOpInterpolateAtCentroid:
|
||||||
|
libCall = spv::GLSLstd450InterpolateAtCentroid;
|
||||||
|
break;
|
||||||
case glslang::EOpAny:
|
case glslang::EOpAny:
|
||||||
unaryOp = spv::OpAny;
|
unaryOp = spv::OpAny;
|
||||||
break;
|
break;
|
||||||
|
|
@ -2809,6 +2995,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
||||||
libCall = spv::GLSLstd450UMin;
|
libCall = spv::GLSLstd450UMin;
|
||||||
else
|
else
|
||||||
libCall = spv::GLSLstd450SMin;
|
libCall = spv::GLSLstd450SMin;
|
||||||
|
builder.promoteScalar(precision, operands.front(), operands.back());
|
||||||
break;
|
break;
|
||||||
case glslang::EOpModf:
|
case glslang::EOpModf:
|
||||||
libCall = spv::GLSLstd450Modf;
|
libCall = spv::GLSLstd450Modf;
|
||||||
|
|
@ -2820,6 +3007,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
||||||
libCall = spv::GLSLstd450UMax;
|
libCall = spv::GLSLstd450UMax;
|
||||||
else
|
else
|
||||||
libCall = spv::GLSLstd450SMax;
|
libCall = spv::GLSLstd450SMax;
|
||||||
|
builder.promoteScalar(precision, operands.front(), operands.back());
|
||||||
break;
|
break;
|
||||||
case glslang::EOpPow:
|
case glslang::EOpPow:
|
||||||
libCall = spv::GLSLstd450Pow;
|
libCall = spv::GLSLstd450Pow;
|
||||||
|
|
@ -2838,18 +3026,24 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
||||||
libCall = spv::GLSLstd450UClamp;
|
libCall = spv::GLSLstd450UClamp;
|
||||||
else
|
else
|
||||||
libCall = spv::GLSLstd450SClamp;
|
libCall = spv::GLSLstd450SClamp;
|
||||||
|
builder.promoteScalar(precision, operands.front(), operands[1]);
|
||||||
|
builder.promoteScalar(precision, operands.front(), operands[2]);
|
||||||
break;
|
break;
|
||||||
case glslang::EOpMix:
|
case glslang::EOpMix:
|
||||||
if (isFloat)
|
if (isFloat)
|
||||||
libCall = spv::GLSLstd450FMix;
|
libCall = spv::GLSLstd450FMix;
|
||||||
else
|
else
|
||||||
libCall = spv::GLSLstd450IMix;
|
libCall = spv::GLSLstd450IMix;
|
||||||
|
builder.promoteScalar(precision, operands.front(), operands.back());
|
||||||
break;
|
break;
|
||||||
case glslang::EOpStep:
|
case glslang::EOpStep:
|
||||||
libCall = spv::GLSLstd450Step;
|
libCall = spv::GLSLstd450Step;
|
||||||
|
builder.promoteScalar(precision, operands.front(), operands.back());
|
||||||
break;
|
break;
|
||||||
case glslang::EOpSmoothStep:
|
case glslang::EOpSmoothStep:
|
||||||
libCall = spv::GLSLstd450SmoothStep;
|
libCall = spv::GLSLstd450SmoothStep;
|
||||||
|
builder.promoteScalar(precision, operands[0], operands[2]);
|
||||||
|
builder.promoteScalar(precision, operands[1], operands[2]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case glslang::EOpDistance:
|
case glslang::EOpDistance:
|
||||||
|
|
@ -2867,7 +3061,12 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
||||||
case glslang::EOpRefract:
|
case glslang::EOpRefract:
|
||||||
libCall = spv::GLSLstd450Refract;
|
libCall = spv::GLSLstd450Refract;
|
||||||
break;
|
break;
|
||||||
|
case glslang::EOpInterpolateAtSample:
|
||||||
|
libCall = spv::GLSLstd450InterpolateAtSample;
|
||||||
|
break;
|
||||||
|
case glslang::EOpInterpolateAtOffset:
|
||||||
|
libCall = spv::GLSLstd450InterpolateAtOffset;
|
||||||
|
break;
|
||||||
case glslang::EOpAddCarry:
|
case glslang::EOpAddCarry:
|
||||||
opCode = spv::OpIAddCarry;
|
opCode = spv::OpIAddCarry;
|
||||||
typeId = builder.makeStructResultType(typeId0, typeId0);
|
typeId = builder.makeStructResultType(typeId0, typeId0);
|
||||||
|
|
@ -3027,7 +3226,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
|
||||||
|
|
||||||
if (! symbol->getType().isStruct()) {
|
if (! symbol->getType().isStruct()) {
|
||||||
addDecoration(id, TranslatePrecisionDecoration(symbol->getType()));
|
addDecoration(id, TranslatePrecisionDecoration(symbol->getType()));
|
||||||
addDecoration(id, TranslateInterpolationDecoration(symbol->getType()));
|
addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier()));
|
||||||
if (symbol->getQualifier().hasLocation())
|
if (symbol->getQualifier().hasLocation())
|
||||||
builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
|
builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
|
||||||
if (symbol->getQualifier().hasIndex())
|
if (symbol->getQualifier().hasIndex())
|
||||||
|
|
@ -3044,7 +3243,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addDecoration(id, TranslateInvariantDecoration(symbol->getType()));
|
addDecoration(id, TranslateInvariantDecoration(symbol->getType().getQualifier()));
|
||||||
if (symbol->getQualifier().hasStream())
|
if (symbol->getQualifier().hasStream())
|
||||||
builder.addDecoration(id, spv::DecorationStream, symbol->getQualifier().layoutStream);
|
builder.addDecoration(id, spv::DecorationStream, symbol->getQualifier().layoutStream);
|
||||||
if (symbol->getQualifier().hasSet())
|
if (symbol->getQualifier().hasSet())
|
||||||
|
|
|
||||||
|
|
@ -281,18 +281,23 @@ Id Builder::makeMatrixType(Id component, int cols, int rows)
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeArrayType(Id element, unsigned size)
|
// TODO: performance: track arrays per stride
|
||||||
|
// If a stride is supplied (non-zero) make an array.
|
||||||
|
// If no stride (0), reuse previous array types.
|
||||||
|
Id Builder::makeArrayType(Id element, unsigned size, int stride)
|
||||||
{
|
{
|
||||||
// First, we need a constant instruction for the size
|
// First, we need a constant instruction for the size
|
||||||
Id sizeId = makeUintConstant(size);
|
Id sizeId = makeUintConstant(size);
|
||||||
|
|
||||||
// try to find existing type
|
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
for (int t = 0; t < (int)groupedTypes[OpTypeArray].size(); ++t) {
|
if (stride == 0) {
|
||||||
type = groupedTypes[OpTypeArray][t];
|
// try to find existing type
|
||||||
if (type->getIdOperand(0) == element &&
|
for (int t = 0; t < (int)groupedTypes[OpTypeArray].size(); ++t) {
|
||||||
type->getIdOperand(1) == sizeId)
|
type = groupedTypes[OpTypeArray][t];
|
||||||
return type->getResultId();
|
if (type->getIdOperand(0) == element &&
|
||||||
|
type->getIdOperand(1) == sizeId)
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// not found, make it
|
// not found, make it
|
||||||
|
|
@ -435,7 +440,7 @@ Op Builder::getMostBasicTypeClass(Id typeId) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Builder::getNumTypeComponents(Id typeId) const
|
int Builder::getNumTypeConstituents(Id typeId) const
|
||||||
{
|
{
|
||||||
Instruction* instr = module.getInstruction(typeId);
|
Instruction* instr = module.getInstruction(typeId);
|
||||||
|
|
||||||
|
|
@ -447,7 +452,10 @@ int Builder::getNumTypeComponents(Id typeId) const
|
||||||
return 1;
|
return 1;
|
||||||
case OpTypeVector:
|
case OpTypeVector:
|
||||||
case OpTypeMatrix:
|
case OpTypeMatrix:
|
||||||
|
case OpTypeArray:
|
||||||
return instr->getImmediateOperand(1);
|
return instr->getImmediateOperand(1);
|
||||||
|
case OpTypeStruct:
|
||||||
|
return instr->getNumOperands();
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -1174,9 +1182,9 @@ void Builder::promoteScalar(Decoration precision, Id& left, Id& right)
|
||||||
int direction = getNumComponents(right) - getNumComponents(left);
|
int direction = getNumComponents(right) - getNumComponents(left);
|
||||||
|
|
||||||
if (direction > 0)
|
if (direction > 0)
|
||||||
left = smearScalar(precision, left, getTypeId(right));
|
left = smearScalar(precision, left, makeVectorType(getTypeId(left), getNumComponents(right)));
|
||||||
else if (direction < 0)
|
else if (direction < 0)
|
||||||
right = smearScalar(precision, right, getTypeId(left));
|
right = smearScalar(precision, right, makeVectorType(getTypeId(right), getNumComponents(left)));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1185,6 +1193,7 @@ void Builder::promoteScalar(Decoration precision, Id& left, Id& right)
|
||||||
Id Builder::smearScalar(Decoration /*precision*/, Id scalar, Id vectorType)
|
Id Builder::smearScalar(Decoration /*precision*/, Id scalar, Id vectorType)
|
||||||
{
|
{
|
||||||
assert(getNumComponents(scalar) == 1);
|
assert(getNumComponents(scalar) == 1);
|
||||||
|
assert(getTypeId(scalar) == getScalarTypeId(vectorType));
|
||||||
|
|
||||||
int numComponents = getNumTypeComponents(vectorType);
|
int numComponents = getNumTypeComponents(vectorType);
|
||||||
if (numComponents == 1)
|
if (numComponents == 1)
|
||||||
|
|
@ -1365,14 +1374,12 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
|
||||||
case Dim2D:
|
case Dim2D:
|
||||||
case DimCube:
|
case DimCube:
|
||||||
case DimRect:
|
case DimRect:
|
||||||
|
case DimSubpassData:
|
||||||
numComponents = 2;
|
numComponents = 2;
|
||||||
break;
|
break;
|
||||||
case Dim3D:
|
case Dim3D:
|
||||||
numComponents = 3;
|
numComponents = 3;
|
||||||
break;
|
break;
|
||||||
case DimSubpassData:
|
|
||||||
MissingFunctionality("input-attachment dim");
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
@ -1410,88 +1417,79 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
|
||||||
return query->getResultId();
|
return query->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comments in header
|
// External comments in header.
|
||||||
Id Builder::createCompare(Decoration precision, Id value1, Id value2, bool equal)
|
// Operates recursively to visit the composite's hierarchy.
|
||||||
|
Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, bool equal)
|
||||||
{
|
{
|
||||||
Id boolType = makeBoolType();
|
Id boolType = makeBoolType();
|
||||||
Id valueType = getTypeId(value1);
|
Id valueType = getTypeId(value1);
|
||||||
|
|
||||||
assert(valueType == getTypeId(value2));
|
Id resultId;
|
||||||
assert(! isScalar(value1));
|
|
||||||
|
|
||||||
// Vectors
|
int numConstituents = getNumTypeConstituents(valueType);
|
||||||
|
|
||||||
if (isVectorType(valueType)) {
|
// Scalars and Vectors
|
||||||
Id boolVectorType = makeVectorType(boolType, getNumTypeComponents(valueType));
|
|
||||||
Id boolVector;
|
if (isScalarType(valueType) || isVectorType(valueType)) {
|
||||||
|
assert(valueType == getTypeId(value2));
|
||||||
|
// These just need a single comparison, just have
|
||||||
|
// to figure out what it is.
|
||||||
Op op;
|
Op op;
|
||||||
if (getMostBasicTypeClass(valueType) == OpTypeFloat)
|
switch (getMostBasicTypeClass(valueType)) {
|
||||||
|
case OpTypeFloat:
|
||||||
op = equal ? OpFOrdEqual : OpFOrdNotEqual;
|
op = equal ? OpFOrdEqual : OpFOrdNotEqual;
|
||||||
else
|
break;
|
||||||
|
case OpTypeInt:
|
||||||
op = equal ? OpIEqual : OpINotEqual;
|
op = equal ? OpIEqual : OpINotEqual;
|
||||||
|
break;
|
||||||
|
case OpTypeBool:
|
||||||
|
op = equal ? OpLogicalEqual : OpLogicalNotEqual;
|
||||||
|
precision = NoPrecision;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
boolVector = createBinOp(op, boolVectorType, value1, value2);
|
if (isScalarType(valueType)) {
|
||||||
setPrecision(boolVector, precision);
|
// scalar
|
||||||
|
resultId = createBinOp(op, boolType, value1, value2);
|
||||||
|
setPrecision(resultId, precision);
|
||||||
|
} else {
|
||||||
|
// vector
|
||||||
|
resultId = createBinOp(op, makeVectorType(boolType, numConstituents), value1, value2);
|
||||||
|
setPrecision(resultId, precision);
|
||||||
|
// reduce vector compares...
|
||||||
|
resultId = createUnaryOp(equal ? OpAll : OpAny, boolType, resultId);
|
||||||
|
}
|
||||||
|
|
||||||
// Reduce vector compares with any() and all().
|
return resultId;
|
||||||
|
|
||||||
op = equal ? OpAll : OpAny;
|
|
||||||
|
|
||||||
return createUnaryOp(op, boolType, boolVector);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
spv::MissingFunctionality("Composite comparison of non-vectors");
|
// Only structs, arrays, and matrices should be left.
|
||||||
|
// They share in common the reduction operation across their constituents.
|
||||||
|
assert(isAggregateType(valueType) || isMatrixType(valueType));
|
||||||
|
|
||||||
return NoResult;
|
// Compare each pair of constituents
|
||||||
|
for (int constituent = 0; constituent < numConstituents; ++constituent) {
|
||||||
|
std::vector<unsigned> indexes(1, constituent);
|
||||||
|
Id constituentType1 = getContainedTypeId(getTypeId(value1), constituent);
|
||||||
|
Id constituentType2 = getContainedTypeId(getTypeId(value2), constituent);
|
||||||
|
Id constituent1 = createCompositeExtract(value1, constituentType1, indexes);
|
||||||
|
Id constituent2 = createCompositeExtract(value2, constituentType2, indexes);
|
||||||
|
|
||||||
// Recursively handle aggregates, which include matrices, arrays, and structures
|
Id subResultId = createCompositeCompare(precision, constituent1, constituent2, equal);
|
||||||
// and accumulate the results.
|
|
||||||
|
|
||||||
// Matrices
|
if (constituent == 0)
|
||||||
|
resultId = subResultId;
|
||||||
|
else
|
||||||
|
resultId = createBinOp(equal ? OpLogicalAnd : OpLogicalOr, boolType, resultId, subResultId);
|
||||||
|
}
|
||||||
|
|
||||||
// Arrays
|
return resultId;
|
||||||
|
|
||||||
//int numElements;
|
|
||||||
//const llvm::ArrayType* arrayType = llvm::dyn_cast<llvm::ArrayType>(value1->getType());
|
|
||||||
//if (arrayType)
|
|
||||||
// numElements = (int)arrayType->getNumElements();
|
|
||||||
//else {
|
|
||||||
// // better be structure
|
|
||||||
// const llvm::StructType* structType = llvm::dyn_cast<llvm::StructType>(value1->getType());
|
|
||||||
// assert(structType);
|
|
||||||
// numElements = structType->getNumElements();
|
|
||||||
//}
|
|
||||||
|
|
||||||
//assert(numElements > 0);
|
|
||||||
|
|
||||||
//for (int element = 0; element < numElements; ++element) {
|
|
||||||
// // Get intermediate comparison values
|
|
||||||
// llvm::Value* element1 = builder.CreateExtractValue(value1, element, "element1");
|
|
||||||
// setInstructionPrecision(element1, precision);
|
|
||||||
// llvm::Value* element2 = builder.CreateExtractValue(value2, element, "element2");
|
|
||||||
// setInstructionPrecision(element2, precision);
|
|
||||||
|
|
||||||
// llvm::Value* subResult = createCompare(precision, element1, element2, equal, "comp");
|
|
||||||
|
|
||||||
// // Accumulate intermediate comparison
|
|
||||||
// if (element == 0)
|
|
||||||
// result = subResult;
|
|
||||||
// else {
|
|
||||||
// if (equal)
|
|
||||||
// result = builder.CreateAnd(result, subResult);
|
|
||||||
// else
|
|
||||||
// result = builder.CreateOr(result, subResult);
|
|
||||||
// setInstructionPrecision(result, precision);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// OpCompositeConstruct
|
// OpCompositeConstruct
|
||||||
Id Builder::createCompositeConstruct(Id typeId, std::vector<Id>& constituents)
|
Id Builder::createCompositeConstruct(Id typeId, std::vector<Id>& constituents)
|
||||||
{
|
{
|
||||||
assert(isAggregateType(typeId) || (getNumTypeComponents(typeId) > 1 && getNumTypeComponents(typeId) == (int)constituents.size()));
|
assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 && getNumTypeConstituents(typeId) == (int)constituents.size()));
|
||||||
|
|
||||||
Instruction* op = new Instruction(getUniqueId(), typeId, OpCompositeConstruct);
|
Instruction* op = new Instruction(getUniqueId(), typeId, OpCompositeConstruct);
|
||||||
for (int c = 0; c < (int)constituents.size(); ++c)
|
for (int c = 0; c < (int)constituents.size(); ++c)
|
||||||
|
|
@ -2146,7 +2144,6 @@ void TbdFunctionality(const char* tbd)
|
||||||
void MissingFunctionality(const char* fun)
|
void MissingFunctionality(const char* fun)
|
||||||
{
|
{
|
||||||
printf("Missing functionality: %s\n", fun);
|
printf("Missing functionality: %s\n", fun);
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}; // end spv namespace
|
}; // end spv namespace
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ public:
|
||||||
Id makeStructResultType(Id type0, Id type1);
|
Id makeStructResultType(Id type0, Id type1);
|
||||||
Id makeVectorType(Id component, int size);
|
Id makeVectorType(Id component, int size);
|
||||||
Id makeMatrixType(Id component, int cols, int rows);
|
Id makeMatrixType(Id component, int cols, int rows);
|
||||||
Id makeArrayType(Id element, unsigned size);
|
Id makeArrayType(Id element, unsigned size, int stride); // 0 means no stride decoration
|
||||||
Id makeRuntimeArray(Id element);
|
Id makeRuntimeArray(Id element);
|
||||||
Id makeFunctionType(Id returnType, std::vector<Id>& paramTypes);
|
Id makeFunctionType(Id returnType, std::vector<Id>& paramTypes);
|
||||||
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
|
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
|
||||||
|
|
@ -116,29 +116,31 @@ public:
|
||||||
Op getTypeClass(Id typeId) const { return getOpCode(typeId); }
|
Op getTypeClass(Id typeId) const { return getOpCode(typeId); }
|
||||||
Op getMostBasicTypeClass(Id typeId) const;
|
Op getMostBasicTypeClass(Id typeId) const;
|
||||||
int getNumComponents(Id resultId) const { return getNumTypeComponents(getTypeId(resultId)); }
|
int getNumComponents(Id resultId) const { return getNumTypeComponents(getTypeId(resultId)); }
|
||||||
int getNumTypeComponents(Id typeId) const;
|
int getNumTypeConstituents(Id typeId) const;
|
||||||
|
int getNumTypeComponents(Id typeId) const { return getNumTypeConstituents(typeId); }
|
||||||
Id getScalarTypeId(Id typeId) const;
|
Id getScalarTypeId(Id typeId) const;
|
||||||
Id getContainedTypeId(Id typeId) const;
|
Id getContainedTypeId(Id typeId) const;
|
||||||
Id getContainedTypeId(Id typeId, int) const;
|
Id getContainedTypeId(Id typeId, int) const;
|
||||||
StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
|
StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
|
||||||
|
|
||||||
bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
|
bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
|
||||||
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
|
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
|
||||||
bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); }
|
bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); }
|
||||||
bool isMatrix(Id resultId) const { return isMatrixType(getTypeId(resultId)); }
|
bool isMatrix(Id resultId) const { return isMatrixType(getTypeId(resultId)); }
|
||||||
bool isAggregate(Id resultId) const { return isAggregateType(getTypeId(resultId)); }
|
bool isAggregate(Id resultId) const { return isAggregateType(getTypeId(resultId)); }
|
||||||
bool isBoolType(Id typeId) const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
|
bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
|
||||||
|
|
||||||
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
|
bool isBoolType(Id typeId) const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
|
||||||
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
|
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
|
||||||
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
|
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
|
||||||
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
|
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
|
||||||
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
|
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
|
||||||
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
|
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
|
||||||
bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); }
|
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
|
||||||
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
|
bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); }
|
||||||
bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; }
|
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
|
||||||
bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
|
bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; }
|
||||||
|
bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
|
||||||
|
|
||||||
bool isConstantOpCode(Op opcode) const;
|
bool isConstantOpCode(Op opcode) const;
|
||||||
bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); }
|
bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); }
|
||||||
|
|
@ -149,7 +151,7 @@ public:
|
||||||
int getTypeNumColumns(Id typeId) const
|
int getTypeNumColumns(Id typeId) const
|
||||||
{
|
{
|
||||||
assert(isMatrixType(typeId));
|
assert(isMatrixType(typeId));
|
||||||
return getNumTypeComponents(typeId);
|
return getNumTypeConstituents(typeId);
|
||||||
}
|
}
|
||||||
int getNumColumns(Id resultId) const { return getTypeNumColumns(getTypeId(resultId)); }
|
int getNumColumns(Id resultId) const { return getTypeNumColumns(getTypeId(resultId)); }
|
||||||
int getTypeNumRows(Id typeId) const
|
int getTypeNumRows(Id typeId) const
|
||||||
|
|
@ -264,11 +266,13 @@ public:
|
||||||
// (No true lvalue or stores are used.)
|
// (No true lvalue or stores are used.)
|
||||||
Id createLvalueSwizzle(Id typeId, Id target, Id source, std::vector<unsigned>& channels);
|
Id createLvalueSwizzle(Id typeId, Id target, Id source, std::vector<unsigned>& channels);
|
||||||
|
|
||||||
// If the value passed in is an instruction and the precision is not EMpNone,
|
// If the value passed in is an instruction and the precision is not NoPrecision,
|
||||||
// it gets tagged with the requested precision.
|
// it gets tagged with the requested precision.
|
||||||
void setPrecision(Id /* value */, Decoration /* precision */)
|
void setPrecision(Id /* value */, Decoration precision)
|
||||||
{
|
{
|
||||||
// TODO
|
if (precision != NoPrecision) {
|
||||||
|
;// TODO
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can smear a scalar to a vector for the following forms:
|
// Can smear a scalar to a vector for the following forms:
|
||||||
|
|
@ -278,12 +282,17 @@ public:
|
||||||
// - promoteScalar(scalar, scalar) // do nothing
|
// - promoteScalar(scalar, scalar) // do nothing
|
||||||
// Other forms are not allowed.
|
// Other forms are not allowed.
|
||||||
//
|
//
|
||||||
|
// Generally, the type of 'scalar' does not need to be the same type as the components in 'vector'.
|
||||||
|
// The type of the created vector is a vector of components of the same type as the scalar.
|
||||||
|
//
|
||||||
// Note: One of the arguments will change, with the result coming back that way rather than
|
// Note: One of the arguments will change, with the result coming back that way rather than
|
||||||
// through the return value.
|
// through the return value.
|
||||||
void promoteScalar(Decoration precision, Id& left, Id& right);
|
void promoteScalar(Decoration precision, Id& left, Id& right);
|
||||||
|
|
||||||
// make a value by smearing the scalar to fill the type
|
// Make a value by smearing the scalar to fill the type.
|
||||||
Id smearScalar(Decoration precision, Id scalarVal, Id);
|
// vectorType should be the correct type for making a vector of scalarVal.
|
||||||
|
// (No conversions are done.)
|
||||||
|
Id smearScalar(Decoration precision, Id scalarVal, Id vectorType);
|
||||||
|
|
||||||
// Create a call to a built-in function.
|
// Create a call to a built-in function.
|
||||||
Id createBuiltinCall(Decoration precision, Id resultType, Id builtins, int entryPoint, std::vector<Id>& args);
|
Id createBuiltinCall(Decoration precision, Id resultType, Id builtins, int entryPoint, std::vector<Id>& args);
|
||||||
|
|
@ -316,7 +325,7 @@ public:
|
||||||
Id createBitFieldInsertCall(Decoration precision, Id, Id, Id, Id);
|
Id createBitFieldInsertCall(Decoration precision, Id, Id, Id, Id);
|
||||||
|
|
||||||
// Reduction comparision for composites: For equal and not-equal resulting in a scalar.
|
// Reduction comparision for composites: For equal and not-equal resulting in a scalar.
|
||||||
Id createCompare(Decoration precision, Id, Id, bool /* true if for equal, fales if for not-equal */);
|
Id createCompositeCompare(Decoration precision, Id, Id, bool /* true if for equal, false if for not-equal */);
|
||||||
|
|
||||||
// OpCompositeConstruct
|
// OpCompositeConstruct
|
||||||
Id createCompositeConstruct(Id typeId, std::vector<Id>& constituents);
|
Id createCompositeConstruct(Id typeId, std::vector<Id>& constituents);
|
||||||
|
|
|
||||||
|
|
@ -300,7 +300,12 @@ public:
|
||||||
|
|
||||||
Instruction* getInstruction(Id id) const { return idToInstruction[id]; }
|
Instruction* getInstruction(Id id) const { return idToInstruction[id]; }
|
||||||
spv::Id getTypeId(Id resultId) const { return idToInstruction[resultId]->getTypeId(); }
|
spv::Id getTypeId(Id resultId) const { return idToInstruction[resultId]->getTypeId(); }
|
||||||
StorageClass getStorageClass(Id typeId) const { return (StorageClass)idToInstruction[typeId]->getImmediateOperand(0); }
|
StorageClass getStorageClass(Id typeId) const
|
||||||
|
{
|
||||||
|
assert(idToInstruction[typeId]->getOpCode() == spv::OpTypePointer);
|
||||||
|
return (StorageClass)idToInstruction[typeId]->getImmediateOperand(0);
|
||||||
|
}
|
||||||
|
|
||||||
void dump(std::vector<unsigned int>& out) const
|
void dump(std::vector<unsigned int>& out) const
|
||||||
{
|
{
|
||||||
for (int f = 0; f < (int)functions.size(); ++f)
|
for (int f = 0; f < (int)functions.size(); ++f)
|
||||||
|
|
|
||||||
|
|
@ -827,7 +827,7 @@ int C_DECL main(int argc, char* argv[])
|
||||||
// Print out all the resulting infologs
|
// Print out all the resulting infologs
|
||||||
for (int w = 0; w < NumWorkItems; ++w) {
|
for (int w = 0; w < NumWorkItems; ++w) {
|
||||||
if (Work[w]) {
|
if (Work[w]) {
|
||||||
if (printShaderNames)
|
if (printShaderNames || Work[w]->results.size() > 0)
|
||||||
PutsIfNonEmpty(Work[w]->name.c_str());
|
PutsIfNonEmpty(Work[w]->name.c_str());
|
||||||
PutsIfNonEmpty(Work[w]->results.c_str());
|
PutsIfNonEmpty(Work[w]->results.c_str());
|
||||||
delete Work[w];
|
delete Work[w];
|
||||||
|
|
|
||||||
|
|
@ -43,3 +43,8 @@ void barWxyz()
|
||||||
ivec4 t42 = texelFetch(ismsa, ivec3(2), samp);
|
ivec4 t42 = texelFetch(ismsa, ivec3(2), samp);
|
||||||
uvec4 t43 = texelFetch(usmsa, p3, samp);
|
uvec4 t43 = texelFetch(usmsa, p3, samp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int primitiveID()
|
||||||
|
{
|
||||||
|
return gl_PrimitiveID;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ struct s {
|
||||||
};
|
};
|
||||||
|
|
||||||
in s badout; // ERROR, can't contain a sampler
|
in s badout; // ERROR, can't contain a sampler
|
||||||
|
// ERROR, can't have int in struct without flat
|
||||||
struct S2 {
|
struct S2 {
|
||||||
vec3 c;
|
vec3 c;
|
||||||
float f;
|
float f;
|
||||||
|
|
|
||||||
|
|
@ -39,3 +39,5 @@ void foo()
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
layout(vertices = 0) out; // ERROR, can't be 0
|
||||||
|
|
|
||||||
|
|
@ -146,3 +146,8 @@ void interp()
|
||||||
interpolateAtCentroid(sampInArray[2].xy);
|
interpolateAtCentroid(sampInArray[2].xy);
|
||||||
interpolateAtSample(sampInArray[2].x.x, 2);
|
interpolateAtSample(sampInArray[2].x.x, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int layer()
|
||||||
|
{
|
||||||
|
return gl_Layer;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
100Limits.vert
|
||||||
ERROR: 0:24: 'limitation' : while loops not available
|
ERROR: 0:24: 'limitation' : while loops not available
|
||||||
ERROR: 0:26: 'limitation' : do-while loops not available
|
ERROR: 0:26: 'limitation' : do-while loops not available
|
||||||
ERROR: 0:28: 'limitations' : inductive-loop init-declaration requires the form "type-specifier loop-index = constant-expression"
|
ERROR: 0:28: 'limitations' : inductive-loop init-declaration requires the form "type-specifier loop-index = constant-expression"
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,11 @@ ERROR: node is still EOpNull!
|
||||||
0:44 'usmsa' (uniform usampler2DMSArray)
|
0:44 'usmsa' (uniform usampler2DMSArray)
|
||||||
0:44 'p3' (flat in 3-component vector of int)
|
0:44 'p3' (flat in 3-component vector of int)
|
||||||
0:44 'samp' (flat in int)
|
0:44 'samp' (flat in int)
|
||||||
|
0:47 Function Definition: primitiveID( (global int)
|
||||||
|
0:47 Function Parameters:
|
||||||
|
0:49 Sequence
|
||||||
|
0:49 Branch: Return with expression
|
||||||
|
0:49 'gl_PrimitiveID' (flat in int PrimitiveID)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
||||||
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
||||||
|
|
@ -216,6 +221,11 @@ ERROR: node is still EOpNull!
|
||||||
0:44 'usmsa' (uniform usampler2DMSArray)
|
0:44 'usmsa' (uniform usampler2DMSArray)
|
||||||
0:44 'p3' (flat in 3-component vector of int)
|
0:44 'p3' (flat in 3-component vector of int)
|
||||||
0:44 'samp' (flat in int)
|
0:44 'samp' (flat in int)
|
||||||
|
0:47 Function Definition: primitiveID( (global int)
|
||||||
|
0:47 Function Parameters:
|
||||||
|
0:49 Sequence
|
||||||
|
0:49 Branch: Return with expression
|
||||||
|
0:49 'gl_PrimitiveID' (flat in int PrimitiveID)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
||||||
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
|
||||||
|
|
|
||||||
|
|
@ -586,7 +586,7 @@ ERROR: 1 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 400
|
Shader version: 400
|
||||||
vertices = 0
|
vertices = -1
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:8 Function Definition: main( (global void)
|
0:8 Function Definition: main( (global void)
|
||||||
0:8 Function Parameters:
|
0:8 Function Parameters:
|
||||||
|
|
@ -603,7 +603,8 @@ ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size
|
||||||
ERROR: 0:26: 'gl_PointSize' : no such field in structure
|
ERROR: 0:26: 'gl_PointSize' : no such field in structure
|
||||||
ERROR: 0:26: 'assign' : cannot convert from 'temp float' to 'temp block{out 4-component vector of float Position gl_Position}'
|
ERROR: 0:26: 'assign' : cannot convert from 'temp float' to 'temp block{out 4-component vector of float Position gl_Position}'
|
||||||
ERROR: 0:29: 'out' : type must be an array: outf
|
ERROR: 0:29: 'out' : type must be an array: outf
|
||||||
ERROR: 6 compilation errors. No code generated.
|
ERROR: 0:43: 'vertices' : must be greater than 0
|
||||||
|
ERROR: 7 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 420
|
Shader version: 420
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ ERROR: 0:30: 'noperspective' : Reserved word.
|
||||||
ERROR: 0:30: 'noperspective' : not supported with this profile: es
|
ERROR: 0:30: 'noperspective' : not supported with this profile: es
|
||||||
ERROR: 0:31: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: bads
|
ERROR: 0:31: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: bads
|
||||||
ERROR: 0:32: 'uint' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
|
ERROR: 0:32: 'uint' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
|
||||||
|
ERROR: 0:39: 'structure' : must be qualified as flat in
|
||||||
ERROR: 0:39: 'structure' : non-uniform struct contains a sampler or image: badout
|
ERROR: 0:39: 'structure' : non-uniform struct contains a sampler or image: badout
|
||||||
ERROR: 0:60: 'texel offset' : argument must be compile-time constant
|
ERROR: 0:60: 'texel offset' : argument must be compile-time constant
|
||||||
ERROR: 0:62: 'texel offset' : argument must be compile-time constant
|
ERROR: 0:62: 'texel offset' : argument must be compile-time constant
|
||||||
|
|
@ -43,7 +44,7 @@ ERROR: 0:157: 'invariant' : can only apply to an output
|
||||||
ERROR: 0:158: 'invariant' : can only apply to an output
|
ERROR: 0:158: 'invariant' : can only apply to an output
|
||||||
ERROR: 0:160: 'imageBuffer' : Reserved word.
|
ERROR: 0:160: 'imageBuffer' : Reserved word.
|
||||||
ERROR: 0:160: '' : syntax error
|
ERROR: 0:160: '' : syntax error
|
||||||
ERROR: 44 compilation errors. No code generated.
|
ERROR: 45 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 300
|
Shader version: 300
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ ERROR: 7 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 410
|
Shader version: 410
|
||||||
invocations = 0
|
invocations = -1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = none
|
output primitive = none
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
@ -65,8 +65,8 @@ ERROR: Linking geometry stage: At least one shader must specify an output layout
|
||||||
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
||||||
|
|
||||||
Shader version: 410
|
Shader version: 410
|
||||||
invocations = 0
|
invocations = 1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = none
|
output primitive = none
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ ERROR: 1 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 400
|
Shader version: 400
|
||||||
vertices = 0
|
vertices = -1
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:8 Function Definition: main( (global void)
|
0:8 Function Definition: main( (global void)
|
||||||
0:8 Function Parameters:
|
0:8 Function Parameters:
|
||||||
|
|
@ -20,7 +20,7 @@ Linked tessellation control stage:
|
||||||
ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...)
|
ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...)
|
||||||
|
|
||||||
Shader version: 400
|
Shader version: 400
|
||||||
vertices = 0
|
vertices = -1
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:8 Function Definition: main( (global void)
|
0:8 Function Definition: main( (global void)
|
||||||
0:8 Function Parameters:
|
0:8 Function Parameters:
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ ERROR: 6 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 420
|
Shader version: 420
|
||||||
invocations = 0
|
invocations = -1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = triangles
|
input primitive = triangles
|
||||||
output primitive = none
|
output primitive = none
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
@ -137,8 +137,8 @@ ERROR: Linking geometry stage: At least one shader must specify an output layout
|
||||||
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
||||||
|
|
||||||
Shader version: 420
|
Shader version: 420
|
||||||
invocations = 0
|
invocations = 1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = triangles
|
input primitive = triangles
|
||||||
output primitive = none
|
output primitive = none
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@ ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size
|
||||||
ERROR: 0:26: 'gl_PointSize' : no such field in structure
|
ERROR: 0:26: 'gl_PointSize' : no such field in structure
|
||||||
ERROR: 0:26: 'assign' : cannot convert from 'temp float' to 'temp block{out 4-component vector of float Position gl_Position}'
|
ERROR: 0:26: 'assign' : cannot convert from 'temp float' to 'temp block{out 4-component vector of float Position gl_Position}'
|
||||||
ERROR: 0:29: 'out' : type must be an array: outf
|
ERROR: 0:29: 'out' : type must be an array: outf
|
||||||
ERROR: 6 compilation errors. No code generated.
|
ERROR: 0:43: 'vertices' : must be greater than 0
|
||||||
|
ERROR: 7 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 420
|
Shader version: 420
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ ERROR: 1 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 420
|
Shader version: 420
|
||||||
invocations = 0
|
invocations = -1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = triangles
|
input primitive = triangles
|
||||||
output primitive = none
|
output primitive = none
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
@ -44,8 +44,8 @@ ERROR: Linking geometry stage: At least one shader must specify an output layout
|
||||||
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
||||||
|
|
||||||
Shader version: 420
|
Shader version: 420
|
||||||
invocations = 0
|
invocations = 1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = triangles
|
input primitive = triangles
|
||||||
output primitive = none
|
output primitive = none
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,11 @@ ERROR: node is still EOpNull!
|
||||||
0:147 0 (const int)
|
0:147 0 (const int)
|
||||||
0:147 Constant:
|
0:147 Constant:
|
||||||
0:147 2 (const int)
|
0:147 2 (const int)
|
||||||
|
0:150 Function Definition: layer( (global int)
|
||||||
|
0:150 Function Parameters:
|
||||||
|
0:152 Sequence
|
||||||
|
0:152 Branch: Return with expression
|
||||||
|
0:152 'gl_Layer' (flat in int Layer)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
|
0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
|
||||||
0:? 'b' (layout(location=4 component=1 ) smooth in float)
|
0:? 'b' (layout(location=4 component=1 ) smooth in float)
|
||||||
|
|
@ -145,6 +150,11 @@ ERROR: node is still EOpNull!
|
||||||
0:147 0 (const int)
|
0:147 0 (const int)
|
||||||
0:147 Constant:
|
0:147 Constant:
|
||||||
0:147 2 (const int)
|
0:147 2 (const int)
|
||||||
|
0:150 Function Definition: layer( (global int)
|
||||||
|
0:150 Function Parameters:
|
||||||
|
0:152 Sequence
|
||||||
|
0:152 Branch: Return with expression
|
||||||
|
0:152 'gl_Layer' (flat in int Layer)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
|
0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
|
||||||
0:? 'b' (layout(location=4 component=1 ) smooth in float)
|
0:? 'b' (layout(location=4 component=1 ) smooth in float)
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
Shader version: 450
|
Shader version: 450
|
||||||
invocations = 0
|
invocations = -1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = none
|
output primitive = none
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
|
|
@ -40,8 +40,8 @@ ERROR: Linking geometry stage: At least one shader must specify an output layout
|
||||||
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
|
||||||
|
|
||||||
Shader version: 450
|
Shader version: 450
|
||||||
invocations = 0
|
invocations = 1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = none
|
output primitive = none
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
Shader version: 450
|
Shader version: 450
|
||||||
vertices = 0
|
vertices = -1
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:11 Function Definition: main( (global void)
|
0:11 Function Definition: main( (global void)
|
||||||
0:11 Function Parameters:
|
0:11 Function Parameters:
|
||||||
|
|
@ -37,7 +37,7 @@ Linked tessellation control stage:
|
||||||
ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...)
|
ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...)
|
||||||
|
|
||||||
Shader version: 450
|
Shader version: 450
|
||||||
vertices = 0
|
vertices = -1
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:11 Function Definition: main( (global void)
|
0:11 Function Definition: main( (global void)
|
||||||
0:11 Function Parameters:
|
0:11 Function Parameters:
|
||||||
|
|
|
||||||
|
|
@ -257,6 +257,19 @@ ERROR: node is still EOpNull!
|
||||||
0:120 1.000000
|
0:120 1.000000
|
||||||
0:120 Constant:
|
0:120 Constant:
|
||||||
0:120 3 (const int)
|
0:120 3 (const int)
|
||||||
|
0:126 Function Definition: foo3( (global void)
|
||||||
|
0:126 Function Parameters:
|
||||||
|
0:128 Sequence
|
||||||
|
0:128 Sequence
|
||||||
|
0:128 move second child to first child (temp 3X2 matrix of float)
|
||||||
|
0:128 'r32' (temp 3X2 matrix of float)
|
||||||
|
0:128 Constant:
|
||||||
|
0:128 43.000000
|
||||||
|
0:128 64.000000
|
||||||
|
0:128 51.000000
|
||||||
|
0:128 76.000000
|
||||||
|
0:128 59.000000
|
||||||
|
0:128 88.000000
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'a' (const int)
|
0:? 'a' (const int)
|
||||||
0:? 1 (const int)
|
0:? 1 (const int)
|
||||||
|
|
@ -331,6 +344,18 @@ ERROR: node is still EOpNull!
|
||||||
0:? 4.000000
|
0:? 4.000000
|
||||||
0:? 5.000000
|
0:? 5.000000
|
||||||
0:? 'a4' (global 2-element array of float)
|
0:? 'a4' (global 2-element array of float)
|
||||||
|
0:? 'mm2' (const 2X2 matrix of float)
|
||||||
|
0:? 1.000000
|
||||||
|
0:? 2.000000
|
||||||
|
0:? 3.000000
|
||||||
|
0:? 4.000000
|
||||||
|
0:? 'mm32' (const 3X2 matrix of float)
|
||||||
|
0:? 10.000000
|
||||||
|
0:? 11.000000
|
||||||
|
0:? 12.000000
|
||||||
|
0:? 13.000000
|
||||||
|
0:? 14.000000
|
||||||
|
0:? 15.000000
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
|
|
@ -584,6 +609,19 @@ ERROR: node is still EOpNull!
|
||||||
0:120 1.000000
|
0:120 1.000000
|
||||||
0:120 Constant:
|
0:120 Constant:
|
||||||
0:120 3 (const int)
|
0:120 3 (const int)
|
||||||
|
0:126 Function Definition: foo3( (global void)
|
||||||
|
0:126 Function Parameters:
|
||||||
|
0:128 Sequence
|
||||||
|
0:128 Sequence
|
||||||
|
0:128 move second child to first child (temp 3X2 matrix of float)
|
||||||
|
0:128 'r32' (temp 3X2 matrix of float)
|
||||||
|
0:128 Constant:
|
||||||
|
0:128 43.000000
|
||||||
|
0:128 64.000000
|
||||||
|
0:128 51.000000
|
||||||
|
0:128 76.000000
|
||||||
|
0:128 59.000000
|
||||||
|
0:128 88.000000
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'a' (const int)
|
0:? 'a' (const int)
|
||||||
0:? 1 (const int)
|
0:? 1 (const int)
|
||||||
|
|
@ -658,4 +696,16 @@ ERROR: node is still EOpNull!
|
||||||
0:? 4.000000
|
0:? 4.000000
|
||||||
0:? 5.000000
|
0:? 5.000000
|
||||||
0:? 'a4' (global 2-element array of float)
|
0:? 'a4' (global 2-element array of float)
|
||||||
|
0:? 'mm2' (const 2X2 matrix of float)
|
||||||
|
0:? 1.000000
|
||||||
|
0:? 2.000000
|
||||||
|
0:? 3.000000
|
||||||
|
0:? 4.000000
|
||||||
|
0:? 'mm32' (const 3X2 matrix of float)
|
||||||
|
0:? 10.000000
|
||||||
|
0:? 11.000000
|
||||||
|
0:? 12.000000
|
||||||
|
0:? 13.000000
|
||||||
|
0:? 14.000000
|
||||||
|
0:? 15.000000
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ ERROR: 1 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 150
|
Shader version: 150
|
||||||
invocations = 0
|
invocations = -1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = points
|
output primitive = points
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
@ -29,8 +29,8 @@ ERROR: node is still EOpNull!
|
||||||
|
|
||||||
noMain2.geom
|
noMain2.geom
|
||||||
Shader version: 150
|
Shader version: 150
|
||||||
invocations = 0
|
invocations = -1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = line_strip
|
output primitive = line_strip
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
|
|
@ -52,8 +52,8 @@ ERROR: Linking fragment stage: Multiple function bodies in multiple compilation
|
||||||
main(
|
main(
|
||||||
|
|
||||||
Shader version: 150
|
Shader version: 150
|
||||||
invocations = 0
|
invocations = 1
|
||||||
max_vertices = 0
|
max_vertices = -1
|
||||||
input primitive = none
|
input primitive = none
|
||||||
output primitive = points
|
output primitive = points
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
|
|
|
||||||
35
Test/baseResults/max_vertices_0.geom.out
Normal file
35
Test/baseResults/max_vertices_0.geom.out
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
max_vertices_0.geom
|
||||||
|
Shader version: 330
|
||||||
|
invocations = -1
|
||||||
|
max_vertices = 0
|
||||||
|
input primitive = points
|
||||||
|
output primitive = triangle_strip
|
||||||
|
0:? Sequence
|
||||||
|
0:8 Function Definition: main( (global void)
|
||||||
|
0:8 Function Parameters:
|
||||||
|
0:10 Sequence
|
||||||
|
0:10 EndPrimitive (global void)
|
||||||
|
0:11 EndPrimitive (global void)
|
||||||
|
0:? Linker Objects
|
||||||
|
0:? 'v_geom_FragColor' (in 1-element array of 4-component vector of float)
|
||||||
|
0:? 'v_frag_FragColor' (layout(stream=0 ) out 4-component vector of float)
|
||||||
|
|
||||||
|
|
||||||
|
Linked geometry stage:
|
||||||
|
|
||||||
|
|
||||||
|
Shader version: 330
|
||||||
|
invocations = 1
|
||||||
|
max_vertices = 0
|
||||||
|
input primitive = points
|
||||||
|
output primitive = triangle_strip
|
||||||
|
0:? Sequence
|
||||||
|
0:8 Function Definition: main( (global void)
|
||||||
|
0:8 Function Parameters:
|
||||||
|
0:10 Sequence
|
||||||
|
0:10 EndPrimitive (global void)
|
||||||
|
0:11 EndPrimitive (global void)
|
||||||
|
0:? Linker Objects
|
||||||
|
0:? 'v_geom_FragColor' (in 1-element array of 4-component vector of float)
|
||||||
|
0:? 'v_frag_FragColor' (layout(stream=0 ) out 4-component vector of float)
|
||||||
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main"
|
EntryPoint Fragment 4 "main" 36
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source ESSL 100
|
Source ESSL 100
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,12 @@ Linked fragment stage:
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 212
|
// Id's are bound by 214
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 78 17 68 98 182 183 184 185 185 171
|
EntryPoint Fragment 4 "main" 17 68 79 99 173 184 185 186 187
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
SourceExtension "GL_ARB_gpu_shader5"
|
SourceExtension "GL_ARB_gpu_shader5"
|
||||||
|
|
@ -33,38 +33,38 @@ Linked fragment stage:
|
||||||
Name 55 "samp2DS"
|
Name 55 "samp2DS"
|
||||||
Name 68 "io"
|
Name 68 "io"
|
||||||
Name 72 "Sca"
|
Name 72 "Sca"
|
||||||
Name 78 "i"
|
Name 79 "i"
|
||||||
Name 86 "Isca"
|
Name 87 "Isca"
|
||||||
Name 98 "uo"
|
Name 99 "uo"
|
||||||
Name 102 "Usca"
|
Name 103 "Usca"
|
||||||
Name 113 "a"
|
Name 114 "a"
|
||||||
Name 117 "Scas"
|
Name 118 "Scas"
|
||||||
Name 122 "f"
|
Name 124 "f"
|
||||||
Name 131 "c"
|
Name 133 "c"
|
||||||
Name 152 "a1"
|
Name 154 "a1"
|
||||||
Name 155 "m43"
|
Name 157 "m43"
|
||||||
Name 158 "b"
|
Name 160 "b"
|
||||||
Name 165 "sampC"
|
Name 167 "sampC"
|
||||||
Name 171 "gl_ClipDistance"
|
Name 173 "gl_ClipDistance"
|
||||||
Name 181 "b"
|
Name 183 "b"
|
||||||
Name 182 "fflat"
|
Name 184 "fflat"
|
||||||
Name 183 "fsmooth"
|
Name 185 "fsmooth"
|
||||||
Name 184 "fnop"
|
Name 186 "fnop"
|
||||||
Name 185 "gl_Color"
|
Name 187 "gl_Color"
|
||||||
Name 192 "bounds"
|
Name 194 "bounds"
|
||||||
Name 193 "s2D"
|
Name 195 "s2D"
|
||||||
Name 194 "s2DR"
|
Name 196 "s2DR"
|
||||||
Name 198 "s2DRS"
|
Name 200 "s2DRS"
|
||||||
Name 202 "s1D"
|
Name 204 "s1D"
|
||||||
Name 203 "s2DS"
|
Name 205 "s2DS"
|
||||||
Name 205 "f"
|
Name 207 "f"
|
||||||
Name 207 "v2"
|
Name 209 "v2"
|
||||||
Name 209 "v3"
|
Name 211 "v3"
|
||||||
Name 211 "v4"
|
Name 213 "v4"
|
||||||
Decorate 171(gl_ClipDistance) BuiltIn ClipDistance
|
Decorate 173(gl_ClipDistance) BuiltIn ClipDistance
|
||||||
Decorate 182(fflat) Flat
|
Decorate 184(fflat) Flat
|
||||||
Decorate 184(fnop) NoPerspective
|
Decorate 186(fnop) NoPerspective
|
||||||
Decorate 192(bounds) Binding 0
|
Decorate 194(bounds) Binding 0
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
14: TypeFloat 32
|
14: TypeFloat 32
|
||||||
|
|
@ -107,94 +107,94 @@ Linked fragment stage:
|
||||||
71: TypePointer UniformConstant 70
|
71: TypePointer UniformConstant 70
|
||||||
72(Sca): 71(ptr) Variable UniformConstant
|
72(Sca): 71(ptr) Variable UniformConstant
|
||||||
74: 26(int) Constant 3
|
74: 26(int) Constant 3
|
||||||
77: TypePointer Input 15(fvec4)
|
78: TypePointer Input 15(fvec4)
|
||||||
78(i): 77(ptr) Variable Input
|
79(i): 78(ptr) Variable Input
|
||||||
83: TypeImage 26(int) Cube array sampled format:Unknown
|
84: TypeImage 26(int) Cube array sampled format:Unknown
|
||||||
84: TypeSampledImage 83
|
85: TypeSampledImage 84
|
||||||
85: TypePointer UniformConstant 84
|
86: TypePointer UniformConstant 85
|
||||||
86(Isca): 85(ptr) Variable UniformConstant
|
87(Isca): 86(ptr) Variable UniformConstant
|
||||||
89: 14(float) Constant 1060320051
|
90: 14(float) Constant 1060320051
|
||||||
90: TypeVector 26(int) 4
|
91: TypeVector 26(int) 4
|
||||||
95: TypeInt 32 0
|
96: TypeInt 32 0
|
||||||
96: TypeVector 95(int) 4
|
97: TypeVector 96(int) 4
|
||||||
97: TypePointer Output 96(ivec4)
|
98: TypePointer Output 97(ivec4)
|
||||||
98(uo): 97(ptr) Variable Output
|
99(uo): 98(ptr) Variable Output
|
||||||
99: TypeImage 95(int) Cube array sampled format:Unknown
|
100: TypeImage 96(int) Cube array sampled format:Unknown
|
||||||
100: TypeSampledImage 99
|
101: TypeSampledImage 100
|
||||||
101: TypePointer UniformConstant 100
|
102: TypePointer UniformConstant 101
|
||||||
102(Usca): 101(ptr) Variable UniformConstant
|
103(Usca): 102(ptr) Variable UniformConstant
|
||||||
108: 14(float) Constant 1071225242
|
109: 14(float) Constant 1071225242
|
||||||
112: TypePointer Private 39(fvec3)
|
113: TypePointer Private 39(fvec3)
|
||||||
113(a): 112(ptr) Variable Private
|
114(a): 113(ptr) Variable Private
|
||||||
114: TypeImage 14(float) Cube depth array sampled format:Unknown
|
115: TypeImage 14(float) Cube depth array sampled format:Unknown
|
||||||
115: TypeSampledImage 114
|
116: TypeSampledImage 115
|
||||||
116: TypePointer UniformConstant 115
|
117: TypePointer UniformConstant 116
|
||||||
117(Scas): 116(ptr) Variable UniformConstant
|
118(Scas): 117(ptr) Variable UniformConstant
|
||||||
121: TypePointer Function 14(float)
|
123: TypePointer Function 14(float)
|
||||||
125: 95(int) Constant 1
|
127: 96(int) Constant 1
|
||||||
126: TypePointer Input 14(float)
|
128: TypePointer Input 14(float)
|
||||||
130: TypePointer Function 90(ivec4)
|
132: TypePointer Function 91(ivec4)
|
||||||
134: 14(float) Constant 1036831949
|
136: 14(float) Constant 1036831949
|
||||||
135: 39(fvec3) ConstantComposite 134 134 134
|
|
||||||
136: 14(float) Constant 1045220557
|
|
||||||
137: 39(fvec3) ConstantComposite 136 136 136
|
137: 39(fvec3) ConstantComposite 136 136 136
|
||||||
153: TypeMatrix 39(fvec3) 4
|
138: 14(float) Constant 1045220557
|
||||||
154: TypePointer Function 153
|
139: 39(fvec3) ConstantComposite 138 138 138
|
||||||
159: 14(float) Constant 1073741824
|
155: TypeMatrix 39(fvec3) 4
|
||||||
162: TypeImage 14(float) Cube sampled format:Unknown
|
156: TypePointer Function 155
|
||||||
163: TypeSampledImage 162
|
161: 14(float) Constant 1073741824
|
||||||
164: TypePointer UniformConstant 163
|
164: TypeImage 14(float) Cube sampled format:Unknown
|
||||||
165(sampC): 164(ptr) Variable UniformConstant
|
165: TypeSampledImage 164
|
||||||
168: 95(int) Constant 4
|
166: TypePointer UniformConstant 165
|
||||||
169: TypeArray 14(float) 168
|
167(sampC): 166(ptr) Variable UniformConstant
|
||||||
170: TypePointer Input 169
|
170: 96(int) Constant 4
|
||||||
171(gl_ClipDistance): 170(ptr) Variable Input
|
171: TypeArray 14(float) 170
|
||||||
174: TypePointer Output 14(float)
|
172: TypePointer Input 171
|
||||||
180: TypePointer Private 14(float)
|
173(gl_ClipDistance): 172(ptr) Variable Input
|
||||||
181(b): 180(ptr) Variable Private
|
176: TypePointer Output 14(float)
|
||||||
182(fflat): 126(ptr) Variable Input
|
182: TypePointer Private 14(float)
|
||||||
183(fsmooth): 126(ptr) Variable Input
|
183(b): 182(ptr) Variable Private
|
||||||
184(fnop): 126(ptr) Variable Input
|
184(fflat): 128(ptr) Variable Input
|
||||||
185(gl_Color): 77(ptr) Variable Input
|
185(fsmooth): 128(ptr) Variable Input
|
||||||
186: 95(int) Constant 3
|
186(fnop): 128(ptr) Variable Input
|
||||||
187: TypeArray 26(int) 186
|
187(gl_Color): 78(ptr) Variable Input
|
||||||
188: 26(int) Constant 10
|
188: 96(int) Constant 3
|
||||||
189: 26(int) Constant 23
|
189: TypeArray 26(int) 188
|
||||||
190: 26(int) Constant 32
|
190: 26(int) Constant 10
|
||||||
191: 187 ConstantComposite 188 189 190
|
191: 26(int) Constant 23
|
||||||
192(bounds): 20(ptr) Variable UniformConstant
|
192: 26(int) Constant 32
|
||||||
193(s2D): 20(ptr) Variable UniformConstant
|
193: 189 ConstantComposite 190 191 192
|
||||||
194(s2DR): 46(ptr) Variable UniformConstant
|
194(bounds): 20(ptr) Variable UniformConstant
|
||||||
195: TypeImage 14(float) Rect depth sampled format:Unknown
|
195(s2D): 20(ptr) Variable UniformConstant
|
||||||
196: TypeSampledImage 195
|
196(s2DR): 46(ptr) Variable UniformConstant
|
||||||
197: TypePointer UniformConstant 196
|
197: TypeImage 14(float) Rect depth sampled format:Unknown
|
||||||
198(s2DRS): 197(ptr) Variable UniformConstant
|
198: TypeSampledImage 197
|
||||||
199: TypeImage 14(float) 1D sampled format:Unknown
|
199: TypePointer UniformConstant 198
|
||||||
200: TypeSampledImage 199
|
200(s2DRS): 199(ptr) Variable UniformConstant
|
||||||
201: TypePointer UniformConstant 200
|
201: TypeImage 14(float) 1D sampled format:Unknown
|
||||||
202(s1D): 201(ptr) Variable UniformConstant
|
202: TypeSampledImage 201
|
||||||
203(s2DS): 54(ptr) Variable UniformConstant
|
203: TypePointer UniformConstant 202
|
||||||
204: TypePointer UniformConstant 14(float)
|
204(s1D): 203(ptr) Variable UniformConstant
|
||||||
205(f): 204(ptr) Variable UniformConstant
|
205(s2DS): 54(ptr) Variable UniformConstant
|
||||||
206: TypePointer UniformConstant 23(fvec2)
|
206: TypePointer UniformConstant 14(float)
|
||||||
207(v2): 206(ptr) Variable UniformConstant
|
207(f): 206(ptr) Variable UniformConstant
|
||||||
208: TypePointer UniformConstant 39(fvec3)
|
208: TypePointer UniformConstant 23(fvec2)
|
||||||
209(v3): 208(ptr) Variable UniformConstant
|
209(v2): 208(ptr) Variable UniformConstant
|
||||||
210: TypePointer UniformConstant 15(fvec4)
|
210: TypePointer UniformConstant 39(fvec3)
|
||||||
211(v4): 210(ptr) Variable UniformConstant
|
211(v3): 210(ptr) Variable UniformConstant
|
||||||
|
212: TypePointer UniformConstant 15(fvec4)
|
||||||
|
213(v4): 212(ptr) Variable UniformConstant
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
166: 163 Load 165(sampC)
|
168: 165 Load 167(sampC)
|
||||||
167: 15(fvec4) ImageGather 166 137 30
|
169: 15(fvec4) ImageGather 168 139 30
|
||||||
Store 17(o) 167
|
Store 17(o) 169
|
||||||
172: 126(ptr) AccessChain 171(gl_ClipDistance) 74
|
174: 128(ptr) AccessChain 173(gl_ClipDistance) 74
|
||||||
173: 14(float) Load 172
|
175: 14(float) Load 174
|
||||||
175: 174(ptr) AccessChain 17(o) 125
|
177: 176(ptr) AccessChain 17(o) 127
|
||||||
Store 175 173
|
Store 177 175
|
||||||
176: 2 FunctionCall 6(bar3()
|
178: 2 FunctionCall 6(bar3()
|
||||||
177: 2 FunctionCall 8(bar4()
|
179: 2 FunctionCall 8(bar4()
|
||||||
178: 2 FunctionCall 10(bar5()
|
180: 2 FunctionCall 10(bar5()
|
||||||
179: 2 FunctionCall 12(bar6()
|
181: 2 FunctionCall 12(bar6()
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
6(bar3(): 2 Function None 3
|
6(bar3(): 2 Function None 3
|
||||||
|
|
@ -232,74 +232,76 @@ Linked fragment stage:
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
10(bar5(): 2 Function None 3
|
10(bar5(): 2 Function None 3
|
||||||
11: Label
|
11: Label
|
||||||
122(f): 121(ptr) Variable Function
|
124(f): 123(ptr) Variable Function
|
||||||
131(c): 130(ptr) Variable Function
|
133(c): 132(ptr) Variable Function
|
||||||
73: 70 Load 72(Sca)
|
73: 70 Load 72(Sca)
|
||||||
75: 66(ivec3) ImageQuerySizeLod 73 74
|
75: 69 Image 73
|
||||||
Store 68(io) 75
|
76: 66(ivec3) ImageQuerySizeLod 75 74
|
||||||
76: 70 Load 72(Sca)
|
Store 68(io) 76
|
||||||
79: 15(fvec4) Load 78(i)
|
77: 70 Load 72(Sca)
|
||||||
80: 15(fvec4) ImageSampleImplicitLod 76 79
|
80: 15(fvec4) Load 79(i)
|
||||||
81: 15(fvec4) Load 17(o)
|
81: 15(fvec4) ImageSampleImplicitLod 77 80
|
||||||
82: 15(fvec4) FAdd 81 80
|
82: 15(fvec4) Load 17(o)
|
||||||
Store 17(o) 82
|
83: 15(fvec4) FAdd 82 81
|
||||||
87: 84 Load 86(Isca)
|
Store 17(o) 83
|
||||||
88: 15(fvec4) Load 78(i)
|
88: 85 Load 87(Isca)
|
||||||
91: 90(ivec4) ImageSampleImplicitLod 87 88 Bias 89
|
89: 15(fvec4) Load 79(i)
|
||||||
92: 66(ivec3) VectorShuffle 91 91 0 1 2
|
92: 91(ivec4) ImageSampleImplicitLod 88 89 Bias 90
|
||||||
93: 66(ivec3) Load 68(io)
|
93: 66(ivec3) VectorShuffle 92 92 0 1 2
|
||||||
94: 66(ivec3) IAdd 93 92
|
94: 66(ivec3) Load 68(io)
|
||||||
Store 68(io) 94
|
95: 66(ivec3) IAdd 94 93
|
||||||
103: 100 Load 102(Usca)
|
Store 68(io) 95
|
||||||
104: 15(fvec4) Load 78(i)
|
104: 101 Load 103(Usca)
|
||||||
105: 96(ivec4) ImageSampleImplicitLod 103 104
|
105: 15(fvec4) Load 79(i)
|
||||||
Store 98(uo) 105
|
106: 97(ivec4) ImageSampleImplicitLod 104 105
|
||||||
106: 70 Load 72(Sca)
|
Store 99(uo) 106
|
||||||
107: 15(fvec4) Load 78(i)
|
107: 70 Load 72(Sca)
|
||||||
109: 15(fvec4) ImageSampleExplicitLod 106 107 Lod 108
|
108: 15(fvec4) Load 79(i)
|
||||||
110: 15(fvec4) Load 17(o)
|
110: 15(fvec4) ImageSampleExplicitLod 107 108 Lod 109
|
||||||
111: 15(fvec4) FAdd 110 109
|
111: 15(fvec4) Load 17(o)
|
||||||
Store 17(o) 111
|
112: 15(fvec4) FAdd 111 110
|
||||||
118: 115 Load 117(Scas)
|
Store 17(o) 112
|
||||||
119: 66(ivec3) ImageQuerySizeLod 118 74
|
119: 116 Load 118(Scas)
|
||||||
120: 39(fvec3) ConvertSToF 119
|
120: 115 Image 119
|
||||||
Store 113(a) 120
|
121: 66(ivec3) ImageQuerySizeLod 120 74
|
||||||
123: 115 Load 117(Scas)
|
122: 39(fvec3) ConvertSToF 121
|
||||||
124: 15(fvec4) Load 78(i)
|
Store 114(a) 122
|
||||||
127: 126(ptr) AccessChain 78(i) 125
|
125: 116 Load 118(Scas)
|
||||||
128: 14(float) Load 127
|
126: 15(fvec4) Load 79(i)
|
||||||
129: 14(float) ImageSampleDrefImplicitLod 123 124 128
|
129: 128(ptr) AccessChain 79(i) 127
|
||||||
Store 122(f) 129
|
130: 14(float) Load 129
|
||||||
132: 84 Load 86(Isca)
|
131: 14(float) ImageSampleDrefImplicitLod 125 126 130
|
||||||
133: 15(fvec4) Load 78(i)
|
Store 124(f) 131
|
||||||
138: 90(ivec4) ImageSampleExplicitLod 132 133 Grad 135 137
|
134: 85 Load 87(Isca)
|
||||||
Store 131(c) 138
|
135: 15(fvec4) Load 79(i)
|
||||||
139: 39(fvec3) Load 113(a)
|
140: 91(ivec4) ImageSampleExplicitLod 134 135 Grad 137 139
|
||||||
140: 14(float) Load 122(f)
|
Store 133(c) 140
|
||||||
141: 90(ivec4) Load 131(c)
|
141: 39(fvec3) Load 114(a)
|
||||||
142: 15(fvec4) ConvertSToF 141
|
142: 14(float) Load 124(f)
|
||||||
143: 15(fvec4) CompositeConstruct 140 140 140 140
|
143: 91(ivec4) Load 133(c)
|
||||||
144: 15(fvec4) FAdd 143 142
|
144: 15(fvec4) ConvertSToF 143
|
||||||
145: 14(float) CompositeExtract 139 0
|
145: 15(fvec4) CompositeConstruct 142 142 142 142
|
||||||
146: 14(float) CompositeExtract 139 1
|
146: 15(fvec4) FAdd 145 144
|
||||||
147: 14(float) CompositeExtract 139 2
|
147: 14(float) CompositeExtract 141 0
|
||||||
148: 14(float) CompositeExtract 144 0
|
148: 14(float) CompositeExtract 141 1
|
||||||
149: 15(fvec4) CompositeConstruct 145 146 147 148
|
149: 14(float) CompositeExtract 141 2
|
||||||
150: 15(fvec4) Load 17(o)
|
150: 14(float) CompositeExtract 146 0
|
||||||
151: 15(fvec4) FAdd 150 149
|
151: 15(fvec4) CompositeConstruct 147 148 149 150
|
||||||
Store 17(o) 151
|
152: 15(fvec4) Load 17(o)
|
||||||
|
153: 15(fvec4) FAdd 152 151
|
||||||
|
Store 17(o) 153
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
12(bar6(): 2 Function None 3
|
12(bar6(): 2 Function None 3
|
||||||
13: Label
|
13: Label
|
||||||
152(a1): 121(ptr) Variable Function
|
154(a1): 123(ptr) Variable Function
|
||||||
155(m43): 154(ptr) Variable Function
|
157(m43): 156(ptr) Variable Function
|
||||||
158(b): 121(ptr) Variable Function
|
160(b): 123(ptr) Variable Function
|
||||||
156: 121(ptr) AccessChain 155(m43) 74 125
|
158: 123(ptr) AccessChain 157(m43) 74 127
|
||||||
157: 14(float) Load 156
|
159: 14(float) Load 158
|
||||||
Store 152(a1) 157
|
Store 154(a1) 159
|
||||||
160: 14(float) Load 152(a1)
|
162: 14(float) Load 154(a1)
|
||||||
161: 14(float) FMul 159 160
|
163: 14(float) FMul 161 162
|
||||||
Store 158(b) 161
|
Store 160(b) 163
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,12 @@ Linked fragment stage:
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 97
|
// Id's are bound by 100
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 43 28 33 33
|
EntryPoint Fragment 4 "main" 16 28 33 43
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 140
|
Source GLSL 140
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
@ -22,41 +22,41 @@ Linked fragment stage:
|
||||||
Name 33 "gl_ClipDistance"
|
Name 33 "gl_ClipDistance"
|
||||||
Name 43 "k"
|
Name 43 "k"
|
||||||
Name 55 "sampR"
|
Name 55 "sampR"
|
||||||
Name 62 "sampB"
|
Name 63 "sampB"
|
||||||
Name 84 "samp2Da"
|
Name 86 "samp2Da"
|
||||||
Name 88 "bn"
|
Name 91 "bn"
|
||||||
MemberName 88(bn) 0 "matra"
|
MemberName 91(bn) 0 "matra"
|
||||||
MemberName 88(bn) 1 "matca"
|
MemberName 91(bn) 1 "matca"
|
||||||
MemberName 88(bn) 2 "matr"
|
MemberName 91(bn) 2 "matr"
|
||||||
MemberName 88(bn) 3 "matc"
|
MemberName 91(bn) 3 "matc"
|
||||||
MemberName 88(bn) 4 "matrdef"
|
MemberName 91(bn) 4 "matrdef"
|
||||||
Name 90 ""
|
Name 93 ""
|
||||||
Name 93 "bi"
|
Name 96 "bi"
|
||||||
MemberName 93(bi) 0 "v"
|
MemberName 96(bi) 0 "v"
|
||||||
Name 96 "bname"
|
Name 99 "bname"
|
||||||
Decorate 16(gl_FrontFacing) BuiltIn FrontFacing
|
Decorate 16(gl_FrontFacing) BuiltIn FrontFacing
|
||||||
Decorate 33(gl_ClipDistance) BuiltIn ClipDistance
|
Decorate 33(gl_ClipDistance) BuiltIn ClipDistance
|
||||||
Decorate 87 ArrayStride 64
|
Decorate 89 ArrayStride 64
|
||||||
Decorate 87 ArrayStride 64
|
Decorate 90 ArrayStride 64
|
||||||
MemberDecorate 88(bn) 0 RowMajor
|
MemberDecorate 91(bn) 0 RowMajor
|
||||||
MemberDecorate 88(bn) 0 Offset 0
|
MemberDecorate 91(bn) 0 Offset 0
|
||||||
MemberDecorate 88(bn) 0 MatrixStride 16
|
MemberDecorate 91(bn) 0 MatrixStride 16
|
||||||
MemberDecorate 88(bn) 1 ColMajor
|
MemberDecorate 91(bn) 1 ColMajor
|
||||||
MemberDecorate 88(bn) 1 Offset 256
|
MemberDecorate 91(bn) 1 Offset 256
|
||||||
MemberDecorate 88(bn) 1 MatrixStride 16
|
MemberDecorate 91(bn) 1 MatrixStride 16
|
||||||
MemberDecorate 88(bn) 2 RowMajor
|
MemberDecorate 91(bn) 2 RowMajor
|
||||||
MemberDecorate 88(bn) 2 Offset 512
|
MemberDecorate 91(bn) 2 Offset 512
|
||||||
MemberDecorate 88(bn) 2 MatrixStride 16
|
MemberDecorate 91(bn) 2 MatrixStride 16
|
||||||
MemberDecorate 88(bn) 3 ColMajor
|
MemberDecorate 91(bn) 3 ColMajor
|
||||||
MemberDecorate 88(bn) 3 Offset 576
|
MemberDecorate 91(bn) 3 Offset 576
|
||||||
MemberDecorate 88(bn) 3 MatrixStride 16
|
MemberDecorate 91(bn) 3 MatrixStride 16
|
||||||
MemberDecorate 88(bn) 4 RowMajor
|
MemberDecorate 91(bn) 4 RowMajor
|
||||||
MemberDecorate 88(bn) 4 Offset 640
|
MemberDecorate 91(bn) 4 Offset 640
|
||||||
MemberDecorate 88(bn) 4 MatrixStride 16
|
MemberDecorate 91(bn) 4 MatrixStride 16
|
||||||
Decorate 88(bn) Block
|
Decorate 91(bn) Block
|
||||||
Decorate 92 ArrayStride 16
|
Decorate 95 ArrayStride 16
|
||||||
MemberDecorate 93(bi) 0 Offset 0
|
MemberDecorate 96(bi) 0 Offset 0
|
||||||
Decorate 93(bi) Block
|
Decorate 96(bi) Block
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
|
|
@ -92,31 +92,32 @@ Linked fragment stage:
|
||||||
53: TypeSampledImage 52
|
53: TypeSampledImage 52
|
||||||
54: TypePointer UniformConstant 53
|
54: TypePointer UniformConstant 53
|
||||||
55(sampR): 54(ptr) Variable UniformConstant
|
55(sampR): 54(ptr) Variable UniformConstant
|
||||||
57: TypeVector 34(int) 2
|
58: TypeVector 34(int) 2
|
||||||
59: TypeImage 34(int) Buffer sampled format:Unknown
|
60: TypeImage 34(int) Buffer sampled format:Unknown
|
||||||
60: TypeSampledImage 59
|
61: TypeSampledImage 60
|
||||||
61: TypePointer UniformConstant 60
|
62: TypePointer UniformConstant 61
|
||||||
62(sampB): 61(ptr) Variable UniformConstant
|
63(sampB): 62(ptr) Variable UniformConstant
|
||||||
67: TypeVector 6(float) 2
|
69: TypeVector 6(float) 2
|
||||||
70: 6(float) Constant 1120403456
|
72: 6(float) Constant 1120403456
|
||||||
72: 29(int) Constant 3
|
74: 29(int) Constant 3
|
||||||
80: TypeImage 6(float) 2D sampled format:Unknown
|
82: TypeImage 6(float) 2D sampled format:Unknown
|
||||||
81: TypeSampledImage 80
|
83: TypeSampledImage 82
|
||||||
82: TypeArray 81 72
|
84: TypeArray 83 74
|
||||||
83: TypePointer UniformConstant 82
|
85: TypePointer UniformConstant 84
|
||||||
84(samp2Da): 83(ptr) Variable UniformConstant
|
86(samp2Da): 85(ptr) Variable UniformConstant
|
||||||
85: TypeMatrix 26(fvec4) 4
|
87: TypeMatrix 26(fvec4) 4
|
||||||
86: 29(int) Constant 4
|
88: 29(int) Constant 4
|
||||||
87: TypeArray 85 86
|
89: TypeArray 87 88
|
||||||
88(bn): TypeStruct 87 87 85 85 85
|
90: TypeArray 87 88
|
||||||
89: TypePointer Uniform 88(bn)
|
91(bn): TypeStruct 89 90 87 87 87
|
||||||
90: 89(ptr) Variable Uniform
|
92: TypePointer Uniform 91(bn)
|
||||||
91: TypeVector 6(float) 3
|
93: 92(ptr) Variable Uniform
|
||||||
92: TypeArray 91(fvec3) 50
|
94: TypeVector 6(float) 3
|
||||||
93(bi): TypeStruct 92
|
95: TypeArray 94(fvec3) 50
|
||||||
94: TypeArray 93(bi) 86
|
96(bi): TypeStruct 95
|
||||||
95: TypePointer Uniform 94
|
97: TypeArray 96(bi) 88
|
||||||
96(bname): 95(ptr) Variable Uniform
|
98: TypePointer Uniform 97
|
||||||
|
99(bname): 98(ptr) Variable Uniform
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
13: 12(ptr) Variable Function
|
13: 12(ptr) Variable Function
|
||||||
|
|
@ -145,25 +146,27 @@ Linked fragment stage:
|
||||||
51: 40(ptr) AccessChain 28(o) 50
|
51: 40(ptr) AccessChain 28(o) 50
|
||||||
Store 51 49
|
Store 51 49
|
||||||
56: 53 Load 55(sampR)
|
56: 53 Load 55(sampR)
|
||||||
58: 57(ivec2) ImageQuerySize 56
|
57: 52 Image 56
|
||||||
63: 60 Load 62(sampB)
|
59: 58(ivec2) ImageQuerySize 57
|
||||||
64: 34(int) ImageQuerySize 63
|
64: 61 Load 63(sampB)
|
||||||
65: 57(ivec2) CompositeConstruct 64 64
|
65: 60 Image 64
|
||||||
66: 57(ivec2) IAdd 58 65
|
66: 34(int) ImageQuerySize 65
|
||||||
68: 67(fvec2) ConvertSToF 66
|
67: 58(ivec2) CompositeConstruct 66 66
|
||||||
69: 6(float) CompositeExtract 68 0
|
68: 58(ivec2) IAdd 59 67
|
||||||
71: 6(float) FDiv 69 70
|
70: 69(fvec2) ConvertSToF 68
|
||||||
73: 40(ptr) AccessChain 28(o) 72
|
71: 6(float) CompositeExtract 70 0
|
||||||
Store 73 71
|
73: 6(float) FDiv 71 72
|
||||||
74: 6(float) FunctionCall 8(foo()
|
75: 40(ptr) AccessChain 28(o) 74
|
||||||
75: 40(ptr) AccessChain 28(o) 50
|
Store 75 73
|
||||||
Store 75 74
|
76: 6(float) FunctionCall 8(foo()
|
||||||
|
77: 40(ptr) AccessChain 28(o) 50
|
||||||
|
Store 77 76
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
8(foo(): 6(float) Function None 7
|
8(foo(): 6(float) Function None 7
|
||||||
9: Label
|
9: Label
|
||||||
76: 6(float) Load 11(i1)
|
78: 6(float) Load 11(i1)
|
||||||
77: 6(float) Load 24(i2)
|
79: 6(float) Load 24(i2)
|
||||||
78: 6(float) FAdd 76 77
|
80: 6(float) FAdd 78 79
|
||||||
ReturnValue 78
|
ReturnValue 80
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ Linked geometry stage:
|
||||||
Capability Geometry
|
Capability Geometry
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Geometry 4 "main" 18 70 10 29 33
|
EntryPoint Geometry 4 "main" 10 18 29 33 47 49 51 70
|
||||||
ExecutionMode 4 InputTrianglesAdjacency
|
ExecutionMode 4 InputTrianglesAdjacency
|
||||||
ExecutionMode 4 Invocations 0
|
ExecutionMode 4 Invocations 1
|
||||||
ExecutionMode 4 OutputTriangleStrip
|
ExecutionMode 4 OutputTriangleStrip
|
||||||
ExecutionMode 4 OutputVertices 30
|
ExecutionMode 4 OutputVertices 30
|
||||||
Source GLSL 150
|
Source GLSL 150
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 17 39 48 49
|
EntryPoint Vertex 4 "main" 13 17 39 48 49
|
||||||
Source GLSL 150
|
Source GLSL 150
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 11 "gl_PerVertex"
|
Name 11 "gl_PerVertex"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 25 11 39
|
EntryPoint Vertex 4 "main" 11 23 25 33 39
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "i"
|
Name 8 "i"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 29 11 9 26 15
|
EntryPoint Fragment 4 "main" 9 11 15 26 29
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,244 @@ spv.300layout.vert
|
||||||
Linked vertex stage:
|
Linked vertex stage:
|
||||||
|
|
||||||
|
|
||||||
Missing functionality: binary operation on matrix
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 165
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 9 11 99 101 109 121 129 163 164
|
||||||
|
Source ESSL 300
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "pos"
|
||||||
|
Name 11 "p"
|
||||||
|
Name 17 "Transform"
|
||||||
|
MemberName 17(Transform) 0 "M1"
|
||||||
|
MemberName 17(Transform) 1 "M2"
|
||||||
|
MemberName 17(Transform) 2 "N1"
|
||||||
|
MemberName 17(Transform) 3 "iuin"
|
||||||
|
Name 19 "tblock"
|
||||||
|
Name 45 "T3"
|
||||||
|
MemberName 45(T3) 0 "M3"
|
||||||
|
MemberName 45(T3) 1 "M4"
|
||||||
|
MemberName 45(T3) 2 "N2"
|
||||||
|
MemberName 45(T3) 3 "uv3a"
|
||||||
|
Name 47 ""
|
||||||
|
Name 79 "T2"
|
||||||
|
MemberName 79(T2) 0 "b"
|
||||||
|
MemberName 79(T2) 1 "t2m"
|
||||||
|
Name 81 ""
|
||||||
|
Name 99 "color"
|
||||||
|
Name 101 "c"
|
||||||
|
Name 109 "iout"
|
||||||
|
Name 115 "uiuin"
|
||||||
|
Name 121 "aiv2"
|
||||||
|
Name 127 "S"
|
||||||
|
MemberName 127(S) 0 "c"
|
||||||
|
MemberName 127(S) 1 "f"
|
||||||
|
Name 129 "s"
|
||||||
|
Name 163 "gl_VertexID"
|
||||||
|
Name 164 "gl_InstanceID"
|
||||||
|
Decorate 11(p) Location 3
|
||||||
|
MemberDecorate 17(Transform) 0 RowMajor
|
||||||
|
MemberDecorate 17(Transform) 0 Offset 0
|
||||||
|
MemberDecorate 17(Transform) 0 MatrixStride 16
|
||||||
|
MemberDecorate 17(Transform) 1 ColMajor
|
||||||
|
MemberDecorate 17(Transform) 1 Offset 64
|
||||||
|
MemberDecorate 17(Transform) 1 MatrixStride 16
|
||||||
|
MemberDecorate 17(Transform) 2 RowMajor
|
||||||
|
MemberDecorate 17(Transform) 2 Offset 128
|
||||||
|
MemberDecorate 17(Transform) 2 MatrixStride 16
|
||||||
|
MemberDecorate 17(Transform) 3 Offset 176
|
||||||
|
Decorate 17(Transform) Block
|
||||||
|
MemberDecorate 45(T3) 0 ColMajor
|
||||||
|
MemberDecorate 45(T3) 1 RowMajor
|
||||||
|
MemberDecorate 45(T3) 2 ColMajor
|
||||||
|
Decorate 45(T3) GLSLShared
|
||||||
|
Decorate 45(T3) Block
|
||||||
|
MemberDecorate 79(T2) 1 RowMajor
|
||||||
|
Decorate 79(T2) GLSLShared
|
||||||
|
Decorate 79(T2) Block
|
||||||
|
Decorate 101(c) Location 7
|
||||||
|
Decorate 109(iout) Flat
|
||||||
|
Decorate 121(aiv2) Location 9
|
||||||
|
Decorate 163(gl_VertexID) BuiltIn VertexId
|
||||||
|
Decorate 164(gl_InstanceID) BuiltIn InstanceId
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Output 7(fvec4)
|
||||||
|
9(pos): 8(ptr) Variable Output
|
||||||
|
10: TypePointer Input 7(fvec4)
|
||||||
|
11(p): 10(ptr) Variable Input
|
||||||
|
13: TypeMatrix 7(fvec4) 4
|
||||||
|
14: TypeVector 6(float) 3
|
||||||
|
15: TypeMatrix 14(fvec3) 3
|
||||||
|
16: TypeInt 32 1
|
||||||
|
17(Transform): TypeStruct 13 13 15 16(int)
|
||||||
|
18: TypePointer Uniform 17(Transform)
|
||||||
|
19(tblock): 18(ptr) Variable Uniform
|
||||||
|
20: 16(int) Constant 0
|
||||||
|
21: TypePointer Uniform 13
|
||||||
|
24: 16(int) Constant 1
|
||||||
|
40: TypeMatrix 14(fvec3) 2
|
||||||
|
41: TypeInt 32 0
|
||||||
|
42: TypeVector 41(int) 3
|
||||||
|
43: 41(int) Constant 4
|
||||||
|
44: TypeArray 42(ivec3) 43
|
||||||
|
45(T3): TypeStruct 13 13 40 44
|
||||||
|
46: TypePointer Uniform 45(T3)
|
||||||
|
47: 46(ptr) Variable Uniform
|
||||||
|
78: TypeBool
|
||||||
|
79(T2): TypeStruct 78(bool) 13
|
||||||
|
80: TypePointer Uniform 79(T2)
|
||||||
|
81: 80(ptr) Variable Uniform
|
||||||
|
98: TypePointer Output 14(fvec3)
|
||||||
|
99(color): 98(ptr) Variable Output
|
||||||
|
100: TypePointer Input 14(fvec3)
|
||||||
|
101(c): 100(ptr) Variable Input
|
||||||
|
103: 16(int) Constant 2
|
||||||
|
104: TypePointer Uniform 15
|
||||||
|
108: TypePointer Output 16(int)
|
||||||
|
109(iout): 108(ptr) Variable Output
|
||||||
|
110: 16(int) Constant 3
|
||||||
|
111: TypePointer Uniform 16(int)
|
||||||
|
114: TypePointer UniformConstant 41(int)
|
||||||
|
115(uiuin): 114(ptr) Variable UniformConstant
|
||||||
|
119: TypeVector 16(int) 2
|
||||||
|
120: TypePointer Input 119(ivec2)
|
||||||
|
121(aiv2): 120(ptr) Variable Input
|
||||||
|
122: 41(int) Constant 1
|
||||||
|
123: TypePointer Input 16(int)
|
||||||
|
127(S): TypeStruct 14(fvec3) 6(float)
|
||||||
|
128: TypePointer Output 127(S)
|
||||||
|
129(s): 128(ptr) Variable Output
|
||||||
|
132: 41(int) Constant 0
|
||||||
|
133: TypePointer Input 6(float)
|
||||||
|
136: TypePointer Output 6(float)
|
||||||
|
138: TypePointer Uniform 14(fvec3)
|
||||||
|
141: 6(float) Constant 1065353216
|
||||||
|
142: 14(fvec3) ConstantComposite 141 141 141
|
||||||
|
143: TypeVector 78(bool) 3
|
||||||
|
149: TypePointer Uniform 42(ivec3)
|
||||||
|
152: 41(int) Constant 5
|
||||||
|
153: 42(ivec3) ConstantComposite 152 152 152
|
||||||
|
163(gl_VertexID): 123(ptr) Variable Input
|
||||||
|
164(gl_InstanceID): 123(ptr) Variable Input
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
12: 7(fvec4) Load 11(p)
|
||||||
|
22: 21(ptr) AccessChain 19(tblock) 20
|
||||||
|
23: 13 Load 22
|
||||||
|
25: 21(ptr) AccessChain 19(tblock) 24
|
||||||
|
26: 13 Load 25
|
||||||
|
27: 7(fvec4) CompositeExtract 23 0
|
||||||
|
28: 7(fvec4) CompositeExtract 26 0
|
||||||
|
29: 7(fvec4) FAdd 27 28
|
||||||
|
30: 7(fvec4) CompositeExtract 23 1
|
||||||
|
31: 7(fvec4) CompositeExtract 26 1
|
||||||
|
32: 7(fvec4) FAdd 30 31
|
||||||
|
33: 7(fvec4) CompositeExtract 23 2
|
||||||
|
34: 7(fvec4) CompositeExtract 26 2
|
||||||
|
35: 7(fvec4) FAdd 33 34
|
||||||
|
36: 7(fvec4) CompositeExtract 23 3
|
||||||
|
37: 7(fvec4) CompositeExtract 26 3
|
||||||
|
38: 7(fvec4) FAdd 36 37
|
||||||
|
39: 13 CompositeConstruct 29 32 35 38
|
||||||
|
48: 21(ptr) AccessChain 47 24
|
||||||
|
49: 13 Load 48
|
||||||
|
50: 7(fvec4) CompositeExtract 39 0
|
||||||
|
51: 7(fvec4) CompositeExtract 49 0
|
||||||
|
52: 7(fvec4) FAdd 50 51
|
||||||
|
53: 7(fvec4) CompositeExtract 39 1
|
||||||
|
54: 7(fvec4) CompositeExtract 49 1
|
||||||
|
55: 7(fvec4) FAdd 53 54
|
||||||
|
56: 7(fvec4) CompositeExtract 39 2
|
||||||
|
57: 7(fvec4) CompositeExtract 49 2
|
||||||
|
58: 7(fvec4) FAdd 56 57
|
||||||
|
59: 7(fvec4) CompositeExtract 39 3
|
||||||
|
60: 7(fvec4) CompositeExtract 49 3
|
||||||
|
61: 7(fvec4) FAdd 59 60
|
||||||
|
62: 13 CompositeConstruct 52 55 58 61
|
||||||
|
63: 21(ptr) AccessChain 47 20
|
||||||
|
64: 13 Load 63
|
||||||
|
65: 7(fvec4) CompositeExtract 62 0
|
||||||
|
66: 7(fvec4) CompositeExtract 64 0
|
||||||
|
67: 7(fvec4) FAdd 65 66
|
||||||
|
68: 7(fvec4) CompositeExtract 62 1
|
||||||
|
69: 7(fvec4) CompositeExtract 64 1
|
||||||
|
70: 7(fvec4) FAdd 68 69
|
||||||
|
71: 7(fvec4) CompositeExtract 62 2
|
||||||
|
72: 7(fvec4) CompositeExtract 64 2
|
||||||
|
73: 7(fvec4) FAdd 71 72
|
||||||
|
74: 7(fvec4) CompositeExtract 62 3
|
||||||
|
75: 7(fvec4) CompositeExtract 64 3
|
||||||
|
76: 7(fvec4) FAdd 74 75
|
||||||
|
77: 13 CompositeConstruct 67 70 73 76
|
||||||
|
82: 21(ptr) AccessChain 81 24
|
||||||
|
83: 13 Load 82
|
||||||
|
84: 7(fvec4) CompositeExtract 77 0
|
||||||
|
85: 7(fvec4) CompositeExtract 83 0
|
||||||
|
86: 7(fvec4) FAdd 84 85
|
||||||
|
87: 7(fvec4) CompositeExtract 77 1
|
||||||
|
88: 7(fvec4) CompositeExtract 83 1
|
||||||
|
89: 7(fvec4) FAdd 87 88
|
||||||
|
90: 7(fvec4) CompositeExtract 77 2
|
||||||
|
91: 7(fvec4) CompositeExtract 83 2
|
||||||
|
92: 7(fvec4) FAdd 90 91
|
||||||
|
93: 7(fvec4) CompositeExtract 77 3
|
||||||
|
94: 7(fvec4) CompositeExtract 83 3
|
||||||
|
95: 7(fvec4) FAdd 93 94
|
||||||
|
96: 13 CompositeConstruct 86 89 92 95
|
||||||
|
97: 7(fvec4) VectorTimesMatrix 12 96
|
||||||
|
Store 9(pos) 97
|
||||||
|
102: 14(fvec3) Load 101(c)
|
||||||
|
105: 104(ptr) AccessChain 19(tblock) 103
|
||||||
|
106: 15 Load 105
|
||||||
|
107: 14(fvec3) VectorTimesMatrix 102 106
|
||||||
|
Store 99(color) 107
|
||||||
|
112: 111(ptr) AccessChain 19(tblock) 110
|
||||||
|
113: 16(int) Load 112
|
||||||
|
116: 41(int) Load 115(uiuin)
|
||||||
|
117: 16(int) Bitcast 116
|
||||||
|
118: 16(int) IAdd 113 117
|
||||||
|
124: 123(ptr) AccessChain 121(aiv2) 122
|
||||||
|
125: 16(int) Load 124
|
||||||
|
126: 16(int) IAdd 118 125
|
||||||
|
Store 109(iout) 126
|
||||||
|
130: 14(fvec3) Load 101(c)
|
||||||
|
131: 98(ptr) AccessChain 129(s) 20
|
||||||
|
Store 131 130
|
||||||
|
134: 133(ptr) AccessChain 11(p) 132
|
||||||
|
135: 6(float) Load 134
|
||||||
|
137: 136(ptr) AccessChain 129(s) 24
|
||||||
|
Store 137 135
|
||||||
|
139: 138(ptr) AccessChain 47 103 24
|
||||||
|
140: 14(fvec3) Load 139
|
||||||
|
144: 143(bvec3) FOrdNotEqual 140 142
|
||||||
|
145: 78(bool) Any 144
|
||||||
|
146: 78(bool) LogicalNot 145
|
||||||
|
SelectionMerge 148 None
|
||||||
|
BranchConditional 146 147 148
|
||||||
|
147: Label
|
||||||
|
150: 149(ptr) AccessChain 47 110 103
|
||||||
|
151: 42(ivec3) Load 150
|
||||||
|
154: 143(bvec3) INotEqual 151 153
|
||||||
|
155: 78(bool) Any 154
|
||||||
|
Branch 148
|
||||||
|
148: Label
|
||||||
|
156: 78(bool) Phi 145 5 155 147
|
||||||
|
SelectionMerge 158 None
|
||||||
|
BranchConditional 156 157 158
|
||||||
|
157: Label
|
||||||
|
159: 98(ptr) AccessChain 129(s) 20
|
||||||
|
160: 14(fvec3) Load 159
|
||||||
|
161: 14(fvec3) CompositeConstruct 141 141 141
|
||||||
|
162: 14(fvec3) FAdd 160 161
|
||||||
|
Store 159 162
|
||||||
|
Branch 158
|
||||||
|
158: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 53 11 73 9 51 61 81 115 116
|
EntryPoint Vertex 4 "main" 9 11 51 53 61 73 81 115 116
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "pos"
|
Name 9 "pos"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked compute stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint GLCompute 4 "main"
|
EntryPoint GLCompute 4 "main" 53
|
||||||
ExecutionMode 4 LocalSize 16 32 4
|
ExecutionMode 4 LocalSize 16 32 4
|
||||||
Source ESSL 310
|
Source ESSL 310
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ Linked geometry stage:
|
||||||
Capability Geometry
|
Capability Geometry
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Geometry 4 "main" 20 13
|
EntryPoint Geometry 4 "main" 13 20
|
||||||
ExecutionMode 4 Triangles
|
ExecutionMode 4 Triangles
|
||||||
ExecutionMode 4 Invocations 0
|
ExecutionMode 4 Invocations 1
|
||||||
ExecutionMode 4 OutputTriangleStrip
|
ExecutionMode 4 OutputTriangleStrip
|
||||||
ExecutionMode 4 OutputVertices 3
|
ExecutionMode 4 OutputVertices 3
|
||||||
Source GLSL 330
|
Source GLSL 330
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 50 44 11 96 69 119 56
|
EntryPoint Fragment 4 "main" 11 44 50 56 69 96 117 119
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
SourceExtension "GL_ARB_separate_shader_objects"
|
SourceExtension "GL_ARB_separate_shader_objects"
|
||||||
|
|
@ -163,7 +163,7 @@ Linked fragment stage:
|
||||||
7: Label
|
7: Label
|
||||||
16: 13 Load 15(u2drs)
|
16: 13 Load 15(u2drs)
|
||||||
17: 9(fvec4) Load 11(outp)
|
17: 9(fvec4) Load 11(outp)
|
||||||
26: 8(float) CompositeExtract 17 3
|
26: 8(float) CompositeExtract 17 2
|
||||||
27: 8(float) ImageSampleProjDrefExplicitLod 16 17 26 Grad ConstOffset 20 20 25
|
27: 8(float) ImageSampleProjDrefExplicitLod 16 17 26 Grad ConstOffset 20 20 25
|
||||||
31: 30(ptr) AccessChain 11(outp) 29
|
31: 30(ptr) AccessChain 11(outp) 29
|
||||||
32: 8(float) Load 31
|
32: 8(float) Load 31
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked tessellation control stage:
|
||||||
Capability Tessellation
|
Capability Tessellation
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint TessellationControl 4 "main" 52 79 83 84 87 88 91 92
|
EntryPoint TessellationControl 4 "main" 23 40 43 46 52 66 73 79 83 84 87 88 91 92
|
||||||
ExecutionMode 4 OutputVertices 4
|
ExecutionMode 4 OutputVertices 4
|
||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
SourceExtension "GL_ARB_separate_shader_objects"
|
SourceExtension "GL_ARB_separate_shader_objects"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked tessellation evaluation stage:
|
||||||
Capability Tessellation
|
Capability Tessellation
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint TessellationEvaluation 4 "main" 77 68 81 82 86 90 93 94 97
|
EntryPoint TessellationEvaluation 4 "main" 21 38 41 47 53 61 68 77 81 82 86 90 93 94 97
|
||||||
ExecutionMode 4 Triangles
|
ExecutionMode 4 Triangles
|
||||||
ExecutionMode 4 SpacingFractionalOdd
|
ExecutionMode 4 SpacingFractionalOdd
|
||||||
ExecutionMode 4 VertexOrderCcw
|
ExecutionMode 4 VertexOrderCcw
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked geometry stage:
|
||||||
Capability Geometry
|
Capability Geometry
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Geometry 4 "main" 14 23 46
|
EntryPoint Geometry 4 "main" 14 23 28 33 46
|
||||||
ExecutionMode 4 Triangles
|
ExecutionMode 4 Triangles
|
||||||
ExecutionMode 4 Invocations 4
|
ExecutionMode 4 Invocations 4
|
||||||
ExecutionMode 4 OutputLineStrip
|
ExecutionMode 4 OutputLineStrip
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 12 23 44 45 34 61 62
|
EntryPoint Vertex 4 "main" 12 23 34 44 45 61 62
|
||||||
Source GLSL 430
|
Source GLSL 430
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 10 "gl_PerVertex"
|
Name 10 "gl_PerVertex"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 77 38 43
|
EntryPoint Fragment 4 "main" 38 43 77
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 430
|
Source GLSL 430
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,36 @@
|
||||||
spv.Operations.frag
|
spv.Operations.frag
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 418
|
// Id's are bound by 507
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main"
|
EntryPoint Fragment 4 "main" 483
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 450
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "v"
|
Name 9 "v"
|
||||||
Name 11 "uv4"
|
Name 11 "uv4"
|
||||||
Name 20 "i"
|
Name 20 "i"
|
||||||
Name 22 "ui"
|
Name 22 "ui"
|
||||||
Name 172 "uf"
|
Name 181 "ub41"
|
||||||
Name 219 "b"
|
Name 188 "f"
|
||||||
Name 253 "ub41"
|
Name 212 "uf"
|
||||||
Name 255 "ub42"
|
Name 285 "u"
|
||||||
Name 318 "f"
|
Name 288 "uui"
|
||||||
Name 397 "gl_FragColor"
|
Name 305 "b"
|
||||||
Name 415 "uiv4"
|
Name 342 "ub42"
|
||||||
Name 417 "ub"
|
Name 483 "FragColor"
|
||||||
|
Name 501 "uiv4"
|
||||||
|
Name 503 "ub"
|
||||||
|
Name 506 "uuv4"
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
|
|
@ -37,38 +42,45 @@ Linked fragment stage:
|
||||||
19: TypePointer Function 18(int)
|
19: TypePointer Function 18(int)
|
||||||
21: TypePointer UniformConstant 18(int)
|
21: TypePointer UniformConstant 18(int)
|
||||||
22(ui): 21(ptr) Variable UniformConstant
|
22(ui): 21(ptr) Variable UniformConstant
|
||||||
129: TypeInt 32 0
|
141: TypeInt 32 0
|
||||||
130: 129(int) Constant 0
|
142: 141(int) Constant 0
|
||||||
131: TypePointer Function 6(float)
|
143: TypePointer Function 6(float)
|
||||||
171: TypePointer UniformConstant 6(float)
|
178: TypeBool
|
||||||
172(uf): 171(ptr) Variable UniformConstant
|
179: TypeVector 178(bool) 4
|
||||||
217: TypeBool
|
180: TypePointer UniformConstant 179(bvec4)
|
||||||
218: TypePointer Function 217(bool)
|
181(ub41): 180(ptr) Variable UniformConstant
|
||||||
222: TypeVector 217(bool) 4
|
211: TypePointer UniformConstant 6(float)
|
||||||
252: TypePointer UniformConstant 222(bvec4)
|
212(uf): 211(ptr) Variable UniformConstant
|
||||||
253(ub41): 252(ptr) Variable UniformConstant
|
284: TypePointer Function 141(int)
|
||||||
255(ub42): 252(ptr) Variable UniformConstant
|
287: TypePointer UniformConstant 141(int)
|
||||||
309: 18(int) Constant 2
|
288(uui): 287(ptr) Variable UniformConstant
|
||||||
316: 18(int) Constant 1
|
304: TypePointer Function 178(bool)
|
||||||
347: TypeVector 6(float) 3
|
342(ub42): 180(ptr) Variable UniformConstant
|
||||||
366: 6(float) Constant 1073741824
|
396: 18(int) Constant 2
|
||||||
373: 6(float) Constant 1065353216
|
403: 18(int) Constant 1
|
||||||
378: 18(int) Constant 66
|
433: TypeVector 6(float) 3
|
||||||
384: 18(int) Constant 17
|
452: 6(float) Constant 1073741824
|
||||||
396: TypePointer Output 7(fvec4)
|
459: 6(float) Constant 1065353216
|
||||||
397(gl_FragColor): 396(ptr) Variable Output
|
464: 18(int) Constant 66
|
||||||
413: TypeVector 18(int) 4
|
470: 18(int) Constant 17
|
||||||
414: TypePointer UniformConstant 413(ivec4)
|
482: TypePointer Output 7(fvec4)
|
||||||
415(uiv4): 414(ptr) Variable UniformConstant
|
483(FragColor): 482(ptr) Variable Output
|
||||||
416: TypePointer UniformConstant 217(bool)
|
499: TypeVector 18(int) 4
|
||||||
417(ub): 416(ptr) Variable UniformConstant
|
500: TypePointer UniformConstant 499(ivec4)
|
||||||
|
501(uiv4): 500(ptr) Variable UniformConstant
|
||||||
|
502: TypePointer UniformConstant 178(bool)
|
||||||
|
503(ub): 502(ptr) Variable UniformConstant
|
||||||
|
504: TypeVector 141(int) 4
|
||||||
|
505: TypePointer UniformConstant 504(ivec4)
|
||||||
|
506(uuv4): 505(ptr) Variable UniformConstant
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
9(v): 8(ptr) Variable Function
|
9(v): 8(ptr) Variable Function
|
||||||
20(i): 19(ptr) Variable Function
|
20(i): 19(ptr) Variable Function
|
||||||
219(b): 218(ptr) Variable Function
|
188(f): 143(ptr) Variable Function
|
||||||
318(f): 131(ptr) Variable Function
|
285(u): 284(ptr) Variable Function
|
||||||
398: 8(ptr) Variable Function
|
305(b): 304(ptr) Variable Function
|
||||||
|
484: 8(ptr) Variable Function
|
||||||
12: 7(fvec4) Load 11(uv4)
|
12: 7(fvec4) Load 11(uv4)
|
||||||
13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
|
13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
|
||||||
Store 9(v) 13
|
Store 9(v) 13
|
||||||
|
|
@ -193,362 +205,461 @@ Linked fragment stage:
|
||||||
114: 7(fvec4) FAdd 113 112
|
114: 7(fvec4) FAdd 113 112
|
||||||
Store 9(v) 114
|
Store 9(v) 114
|
||||||
115: 7(fvec4) Load 9(v)
|
115: 7(fvec4) Load 9(v)
|
||||||
116: 7(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 115
|
116: 7(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 115
|
||||||
117: 7(fvec4) Load 9(v)
|
117: 7(fvec4) Load 9(v)
|
||||||
118: 7(fvec4) FAdd 117 116
|
118: 7(fvec4) FAdd 117 116
|
||||||
Store 9(v) 118
|
Store 9(v) 118
|
||||||
119: 7(fvec4) Load 9(v)
|
119: 7(fvec4) Load 9(v)
|
||||||
120: 7(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 119
|
120: 7(fvec4) ExtInst 1(GLSL.std.450) 1(Round) 119
|
||||||
121: 7(fvec4) Load 9(v)
|
121: 7(fvec4) Load 9(v)
|
||||||
122: 7(fvec4) FAdd 121 120
|
122: 7(fvec4) FAdd 121 120
|
||||||
Store 9(v) 122
|
Store 9(v) 122
|
||||||
123: 7(fvec4) Load 9(v)
|
123: 7(fvec4) Load 9(v)
|
||||||
124: 7(fvec4) Load 9(v)
|
124: 7(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 123
|
||||||
125: 7(fvec4) FMod 123 124
|
125: 7(fvec4) Load 9(v)
|
||||||
126: 7(fvec4) Load 9(v)
|
126: 7(fvec4) FAdd 125 124
|
||||||
127: 7(fvec4) FAdd 126 125
|
Store 9(v) 126
|
||||||
Store 9(v) 127
|
127: 7(fvec4) Load 9(v)
|
||||||
128: 7(fvec4) Load 9(v)
|
128: 7(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 127
|
||||||
132: 131(ptr) AccessChain 9(v) 130
|
129: 7(fvec4) Load 9(v)
|
||||||
133: 6(float) Load 132
|
130: 7(fvec4) FAdd 129 128
|
||||||
134: 7(fvec4) CompositeConstruct 133 133 133 133
|
Store 9(v) 130
|
||||||
135: 7(fvec4) FMod 128 134
|
131: 7(fvec4) Load 9(v)
|
||||||
|
132: 7(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 131
|
||||||
|
133: 7(fvec4) Load 9(v)
|
||||||
|
134: 7(fvec4) FAdd 133 132
|
||||||
|
Store 9(v) 134
|
||||||
|
135: 7(fvec4) Load 9(v)
|
||||||
136: 7(fvec4) Load 9(v)
|
136: 7(fvec4) Load 9(v)
|
||||||
137: 7(fvec4) FAdd 136 135
|
137: 7(fvec4) FMod 135 136
|
||||||
Store 9(v) 137
|
|
||||||
138: 7(fvec4) Load 9(v)
|
138: 7(fvec4) Load 9(v)
|
||||||
139: 7(fvec4) Load 11(uv4)
|
139: 7(fvec4) FAdd 138 137
|
||||||
140: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 138 139
|
Store 9(v) 139
|
||||||
141: 7(fvec4) Load 9(v)
|
140: 7(fvec4) Load 9(v)
|
||||||
142: 7(fvec4) FAdd 141 140
|
144: 143(ptr) AccessChain 9(v) 142
|
||||||
Store 9(v) 142
|
145: 6(float) Load 144
|
||||||
143: 7(fvec4) Load 9(v)
|
146: 7(fvec4) CompositeConstruct 145 145 145 145
|
||||||
144: 7(fvec4) Load 11(uv4)
|
147: 7(fvec4) FMod 140 146
|
||||||
145: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 143 144
|
|
||||||
146: 7(fvec4) Load 9(v)
|
|
||||||
147: 7(fvec4) FAdd 146 145
|
|
||||||
Store 9(v) 147
|
|
||||||
148: 7(fvec4) Load 9(v)
|
148: 7(fvec4) Load 9(v)
|
||||||
149: 7(fvec4) Load 11(uv4)
|
149: 7(fvec4) FAdd 148 147
|
||||||
150: 7(fvec4) Load 11(uv4)
|
Store 9(v) 149
|
||||||
151: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 148 149 150
|
150: 7(fvec4) Load 9(v)
|
||||||
|
151: 7(fvec4) ExtInst 1(GLSL.std.450) 35(Modf) 150 9(v)
|
||||||
152: 7(fvec4) Load 9(v)
|
152: 7(fvec4) Load 9(v)
|
||||||
153: 7(fvec4) FAdd 152 151
|
153: 7(fvec4) FAdd 152 151
|
||||||
Store 9(v) 153
|
Store 9(v) 153
|
||||||
154: 7(fvec4) Load 9(v)
|
154: 7(fvec4) Load 9(v)
|
||||||
155: 7(fvec4) Load 9(v)
|
155: 7(fvec4) Load 11(uv4)
|
||||||
156: 7(fvec4) Load 9(v)
|
156: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 154 155
|
||||||
157: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 154 155 156
|
157: 7(fvec4) Load 9(v)
|
||||||
158: 7(fvec4) Load 9(v)
|
158: 7(fvec4) FAdd 157 156
|
||||||
159: 7(fvec4) FAdd 158 157
|
Store 9(v) 158
|
||||||
Store 9(v) 159
|
159: 7(fvec4) Load 9(v)
|
||||||
160: 7(fvec4) Load 9(v)
|
160: 7(fvec4) Load 11(uv4)
|
||||||
161: 7(fvec4) Load 9(v)
|
161: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 159 160
|
||||||
162: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 160 161
|
162: 7(fvec4) Load 9(v)
|
||||||
163: 7(fvec4) Load 9(v)
|
163: 7(fvec4) FAdd 162 161
|
||||||
164: 7(fvec4) FAdd 163 162
|
Store 9(v) 163
|
||||||
Store 9(v) 164
|
164: 7(fvec4) Load 9(v)
|
||||||
165: 7(fvec4) Load 9(v)
|
165: 7(fvec4) Load 11(uv4)
|
||||||
166: 7(fvec4) Load 9(v)
|
166: 7(fvec4) Load 11(uv4)
|
||||||
167: 7(fvec4) Load 9(v)
|
167: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 164 165 166
|
||||||
168: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 165 166 167
|
168: 7(fvec4) Load 9(v)
|
||||||
169: 7(fvec4) Load 9(v)
|
169: 7(fvec4) FAdd 168 167
|
||||||
170: 7(fvec4) FAdd 169 168
|
Store 9(v) 169
|
||||||
Store 9(v) 170
|
170: 7(fvec4) Load 9(v)
|
||||||
173: 6(float) Load 172(uf)
|
171: 7(fvec4) Load 9(v)
|
||||||
|
172: 7(fvec4) Load 9(v)
|
||||||
|
173: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 170 171 172
|
||||||
174: 7(fvec4) Load 9(v)
|
174: 7(fvec4) Load 9(v)
|
||||||
175: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 173 174
|
175: 7(fvec4) FAdd 174 173
|
||||||
|
Store 9(v) 175
|
||||||
176: 7(fvec4) Load 9(v)
|
176: 7(fvec4) Load 9(v)
|
||||||
177: 7(fvec4) FAdd 176 175
|
177: 7(fvec4) Load 9(v)
|
||||||
Store 9(v) 177
|
182: 179(bvec4) Load 181(ub41)
|
||||||
178: 6(float) Load 172(uf)
|
183: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 176 177 182
|
||||||
179: 6(float) Load 172(uf)
|
|
||||||
180: 7(fvec4) Load 9(v)
|
|
||||||
181: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 178 179 180
|
|
||||||
182: 7(fvec4) Load 9(v)
|
|
||||||
183: 7(fvec4) FAdd 182 181
|
|
||||||
Store 9(v) 183
|
|
||||||
184: 7(fvec4) Load 9(v)
|
184: 7(fvec4) Load 9(v)
|
||||||
185: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 184
|
185: 7(fvec4) FAdd 184 183
|
||||||
|
Store 9(v) 185
|
||||||
186: 7(fvec4) Load 9(v)
|
186: 7(fvec4) Load 9(v)
|
||||||
187: 7(fvec4) FAdd 186 185
|
187: 7(fvec4) Load 9(v)
|
||||||
Store 9(v) 187
|
189: 6(float) Load 188(f)
|
||||||
188: 7(fvec4) Load 9(v)
|
190: 7(fvec4) CompositeConstruct 189 189 189 189
|
||||||
189: 7(fvec4) Load 9(v)
|
191: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 190
|
||||||
190: 7(fvec4) Load 9(v)
|
|
||||||
191: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 188 189 190
|
|
||||||
192: 7(fvec4) Load 9(v)
|
192: 7(fvec4) Load 9(v)
|
||||||
193: 7(fvec4) FAdd 192 191
|
193: 7(fvec4) FAdd 192 191
|
||||||
Store 9(v) 193
|
Store 9(v) 193
|
||||||
194: 7(fvec4) Load 9(v)
|
194: 7(fvec4) Load 9(v)
|
||||||
195: 7(fvec4) Load 9(v)
|
195: 7(fvec4) Load 11(uv4)
|
||||||
196: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 194 195
|
196: 7(fvec4) Load 9(v)
|
||||||
197: 7(fvec4) Load 9(v)
|
197: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 194 195 196
|
||||||
198: 7(fvec4) FAdd 197 196
|
198: 7(fvec4) Load 9(v)
|
||||||
Store 9(v) 198
|
199: 7(fvec4) FAdd 198 197
|
||||||
199: 7(fvec4) Load 9(v)
|
Store 9(v) 199
|
||||||
200: 7(fvec4) Load 9(v)
|
200: 7(fvec4) Load 9(v)
|
||||||
201: 6(float) Load 172(uf)
|
201: 7(fvec4) Load 9(v)
|
||||||
202: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 199 200 201
|
202: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 200 201
|
||||||
203: 7(fvec4) Load 9(v)
|
203: 7(fvec4) Load 9(v)
|
||||||
204: 7(fvec4) FAdd 203 202
|
204: 7(fvec4) FAdd 203 202
|
||||||
Store 9(v) 204
|
Store 9(v) 204
|
||||||
205: 7(fvec4) Load 9(v)
|
205: 7(fvec4) Load 9(v)
|
||||||
206: 7(fvec4) DPdx 205
|
206: 7(fvec4) Load 9(v)
|
||||||
207: 7(fvec4) Load 9(v)
|
207: 7(fvec4) Load 9(v)
|
||||||
208: 7(fvec4) FAdd 207 206
|
208: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 205 206 207
|
||||||
Store 9(v) 208
|
|
||||||
209: 7(fvec4) Load 9(v)
|
209: 7(fvec4) Load 9(v)
|
||||||
210: 7(fvec4) DPdy 209
|
210: 7(fvec4) FAdd 209 208
|
||||||
211: 7(fvec4) Load 9(v)
|
Store 9(v) 210
|
||||||
212: 7(fvec4) FAdd 211 210
|
213: 6(float) Load 212(uf)
|
||||||
Store 9(v) 212
|
214: 7(fvec4) Load 9(v)
|
||||||
213: 7(fvec4) Load 9(v)
|
215: 7(fvec4) CompositeConstruct 213 213 213 213
|
||||||
214: 7(fvec4) Fwidth 213
|
216: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 215 214
|
||||||
215: 7(fvec4) Load 9(v)
|
217: 7(fvec4) Load 9(v)
|
||||||
216: 7(fvec4) FAdd 215 214
|
218: 7(fvec4) FAdd 217 216
|
||||||
Store 9(v) 216
|
Store 9(v) 218
|
||||||
220: 7(fvec4) Load 9(v)
|
219: 6(float) Load 212(uf)
|
||||||
221: 7(fvec4) Load 11(uv4)
|
220: 6(float) Load 212(uf)
|
||||||
223: 222(bvec4) FOrdLessThan 220 221
|
221: 7(fvec4) Load 9(v)
|
||||||
224: 217(bool) Any 223
|
222: 7(fvec4) CompositeConstruct 219 219 219 219
|
||||||
Store 219(b) 224
|
223: 7(fvec4) CompositeConstruct 220 220 220 220
|
||||||
225: 217(bool) Load 219(b)
|
224: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 222 223 221
|
||||||
SelectionMerge 227 None
|
225: 7(fvec4) Load 9(v)
|
||||||
BranchConditional 225 226 227
|
226: 7(fvec4) FAdd 225 224
|
||||||
226: Label
|
Store 9(v) 226
|
||||||
228: 7(fvec4) Load 9(v)
|
227: 7(fvec4) Load 9(v)
|
||||||
229: 7(fvec4) Load 11(uv4)
|
228: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 227
|
||||||
230: 222(bvec4) FOrdLessThanEqual 228 229
|
229: 7(fvec4) Load 9(v)
|
||||||
231: 217(bool) Any 230
|
230: 7(fvec4) FAdd 229 228
|
||||||
Branch 227
|
Store 9(v) 230
|
||||||
227: Label
|
231: 7(fvec4) Load 9(v)
|
||||||
232: 217(bool) Phi 225 5 231 226
|
232: 7(fvec4) Load 9(v)
|
||||||
Store 219(b) 232
|
233: 7(fvec4) Load 9(v)
|
||||||
233: 217(bool) Load 219(b)
|
234: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 231 232 233
|
||||||
SelectionMerge 235 None
|
235: 7(fvec4) Load 9(v)
|
||||||
BranchConditional 233 234 235
|
236: 7(fvec4) FAdd 235 234
|
||||||
234: Label
|
Store 9(v) 236
|
||||||
236: 7(fvec4) Load 9(v)
|
237: 7(fvec4) Load 9(v)
|
||||||
237: 7(fvec4) Load 11(uv4)
|
238: 7(fvec4) Load 9(v)
|
||||||
238: 222(bvec4) FOrdGreaterThan 236 237
|
239: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 237 238
|
||||||
239: 217(bool) Any 238
|
240: 7(fvec4) Load 9(v)
|
||||||
Branch 235
|
241: 7(fvec4) FAdd 240 239
|
||||||
235: Label
|
Store 9(v) 241
|
||||||
240: 217(bool) Phi 233 227 239 234
|
242: 7(fvec4) Load 9(v)
|
||||||
Store 219(b) 240
|
243: 7(fvec4) Load 9(v)
|
||||||
241: 217(bool) Load 219(b)
|
244: 6(float) Load 212(uf)
|
||||||
SelectionMerge 243 None
|
245: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 242 243 244
|
||||||
BranchConditional 241 242 243
|
246: 7(fvec4) Load 9(v)
|
||||||
242: Label
|
247: 7(fvec4) FAdd 246 245
|
||||||
244: 7(fvec4) Load 9(v)
|
Store 9(v) 247
|
||||||
245: 7(fvec4) Load 11(uv4)
|
248: 7(fvec4) Load 9(v)
|
||||||
246: 222(bvec4) FOrdGreaterThanEqual 244 245
|
249: 7(fvec4) DPdx 248
|
||||||
247: 217(bool) Any 246
|
250: 7(fvec4) Load 9(v)
|
||||||
Branch 243
|
251: 7(fvec4) FAdd 250 249
|
||||||
243: Label
|
Store 9(v) 251
|
||||||
248: 217(bool) Phi 241 235 247 242
|
252: 7(fvec4) Load 9(v)
|
||||||
Store 219(b) 248
|
253: 7(fvec4) DPdy 252
|
||||||
249: 217(bool) Load 219(b)
|
254: 7(fvec4) Load 9(v)
|
||||||
SelectionMerge 251 None
|
255: 7(fvec4) FAdd 254 253
|
||||||
BranchConditional 249 250 251
|
Store 9(v) 255
|
||||||
250: Label
|
256: 7(fvec4) Load 9(v)
|
||||||
254: 222(bvec4) Load 253(ub41)
|
257: 7(fvec4) Fwidth 256
|
||||||
256: 222(bvec4) Load 255(ub42)
|
258: 7(fvec4) Load 9(v)
|
||||||
257: 222(bvec4) IEqual 254 256
|
259: 7(fvec4) FAdd 258 257
|
||||||
258: 217(bool) Any 257
|
Store 9(v) 259
|
||||||
Branch 251
|
260: 18(int) Load 22(ui)
|
||||||
251: Label
|
261: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 260
|
||||||
259: 217(bool) Phi 249 243 258 250
|
262: 18(int) Load 20(i)
|
||||||
Store 219(b) 259
|
263: 18(int) IAdd 262 261
|
||||||
260: 217(bool) Load 219(b)
|
Store 20(i) 263
|
||||||
SelectionMerge 262 None
|
264: 18(int) Load 20(i)
|
||||||
BranchConditional 260 261 262
|
265: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 264
|
||||||
261: Label
|
266: 18(int) Load 20(i)
|
||||||
263: 222(bvec4) Load 253(ub41)
|
267: 18(int) IAdd 266 265
|
||||||
264: 222(bvec4) Load 255(ub42)
|
Store 20(i) 267
|
||||||
265: 222(bvec4) INotEqual 263 264
|
268: 18(int) Load 20(i)
|
||||||
266: 217(bool) Any 265
|
269: 18(int) Load 22(ui)
|
||||||
Branch 262
|
270: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 268 269
|
||||||
262: Label
|
271: 18(int) Load 20(i)
|
||||||
267: 217(bool) Phi 260 251 266 261
|
272: 18(int) IAdd 271 270
|
||||||
Store 219(b) 267
|
Store 20(i) 272
|
||||||
268: 217(bool) Load 219(b)
|
273: 18(int) Load 20(i)
|
||||||
269: 222(bvec4) Load 253(ub41)
|
274: 18(int) Load 22(ui)
|
||||||
270: 217(bool) Any 269
|
275: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 273 274
|
||||||
271: 217(bool) LogicalAnd 268 270
|
276: 18(int) Load 20(i)
|
||||||
Store 219(b) 271
|
277: 18(int) IAdd 276 275
|
||||||
272: 217(bool) Load 219(b)
|
Store 20(i) 277
|
||||||
273: 222(bvec4) Load 253(ub41)
|
278: 18(int) Load 20(i)
|
||||||
274: 217(bool) All 273
|
279: 18(int) Load 22(ui)
|
||||||
275: 217(bool) LogicalAnd 272 274
|
280: 18(int) Load 22(ui)
|
||||||
Store 219(b) 275
|
281: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 278 279 280
|
||||||
276: 217(bool) Load 219(b)
|
282: 18(int) Load 20(i)
|
||||||
SelectionMerge 278 None
|
283: 18(int) IAdd 282 281
|
||||||
BranchConditional 276 277 278
|
Store 20(i) 283
|
||||||
277: Label
|
286: 141(int) Load 285(u)
|
||||||
279: 222(bvec4) Load 253(ub41)
|
289: 141(int) Load 288(uui)
|
||||||
280: 222(bvec4) LogicalNot 279
|
290: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 286 289
|
||||||
281: 217(bool) Any 280
|
291: 141(int) Load 285(u)
|
||||||
Branch 278
|
292: 141(int) IAdd 291 290
|
||||||
278: Label
|
Store 285(u) 292
|
||||||
282: 217(bool) Phi 276 262 281 277
|
293: 141(int) Load 285(u)
|
||||||
Store 219(b) 282
|
294: 141(int) Load 288(uui)
|
||||||
283: 18(int) Load 20(i)
|
295: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 293 294
|
||||||
284: 18(int) Load 22(ui)
|
296: 141(int) Load 285(u)
|
||||||
285: 18(int) IAdd 283 284
|
297: 141(int) IAdd 296 295
|
||||||
286: 18(int) Load 20(i)
|
Store 285(u) 297
|
||||||
287: 18(int) IMul 285 286
|
298: 141(int) Load 285(u)
|
||||||
288: 18(int) Load 22(ui)
|
299: 141(int) Load 288(uui)
|
||||||
289: 18(int) ISub 287 288
|
300: 141(int) Load 288(uui)
|
||||||
290: 18(int) Load 20(i)
|
301: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 298 299 300
|
||||||
291: 18(int) SDiv 289 290
|
302: 141(int) Load 285(u)
|
||||||
Store 20(i) 291
|
303: 141(int) IAdd 302 301
|
||||||
292: 18(int) Load 20(i)
|
Store 285(u) 303
|
||||||
293: 18(int) Load 22(ui)
|
306: 6(float) Load 212(uf)
|
||||||
294: 18(int) SMod 292 293
|
307: 178(bool) IsNan 306
|
||||||
Store 20(i) 294
|
Store 305(b) 307
|
||||||
295: 18(int) Load 20(i)
|
308: 6(float) Load 188(f)
|
||||||
296: 18(int) Load 22(ui)
|
309: 178(bool) IsInf 308
|
||||||
297: 217(bool) IEqual 295 296
|
Store 305(b) 309
|
||||||
298: 217(bool) LogicalNot 297
|
310: 7(fvec4) Load 9(v)
|
||||||
SelectionMerge 300 None
|
311: 7(fvec4) Load 11(uv4)
|
||||||
BranchConditional 298 299 300
|
312: 179(bvec4) FOrdLessThan 310 311
|
||||||
299: Label
|
313: 178(bool) Any 312
|
||||||
301: 18(int) Load 20(i)
|
Store 305(b) 313
|
||||||
302: 18(int) Load 22(ui)
|
314: 178(bool) Load 305(b)
|
||||||
303: 217(bool) INotEqual 301 302
|
SelectionMerge 316 None
|
||||||
304: 18(int) Load 20(i)
|
BranchConditional 314 315 316
|
||||||
305: 18(int) Load 22(ui)
|
315: Label
|
||||||
306: 217(bool) IEqual 304 305
|
317: 7(fvec4) Load 9(v)
|
||||||
307: 217(bool) LogicalAnd 303 306
|
318: 7(fvec4) Load 11(uv4)
|
||||||
308: 18(int) Load 20(i)
|
319: 179(bvec4) FOrdLessThanEqual 317 318
|
||||||
310: 217(bool) INotEqual 308 309
|
320: 178(bool) Any 319
|
||||||
311: 217(bool) LogicalNotEqual 307 310
|
Branch 316
|
||||||
Branch 300
|
316: Label
|
||||||
300: Label
|
321: 178(bool) Phi 314 5 320 315
|
||||||
312: 217(bool) Phi 297 278 311 299
|
Store 305(b) 321
|
||||||
SelectionMerge 314 None
|
322: 178(bool) Load 305(b)
|
||||||
BranchConditional 312 313 314
|
SelectionMerge 324 None
|
||||||
313: Label
|
BranchConditional 322 323 324
|
||||||
315: 18(int) Load 20(i)
|
323: Label
|
||||||
317: 18(int) IAdd 315 316
|
325: 7(fvec4) Load 9(v)
|
||||||
Store 20(i) 317
|
326: 7(fvec4) Load 11(uv4)
|
||||||
Branch 314
|
327: 179(bvec4) FOrdGreaterThan 325 326
|
||||||
314: Label
|
328: 178(bool) Any 327
|
||||||
319: 6(float) Load 172(uf)
|
Branch 324
|
||||||
320: 6(float) Load 172(uf)
|
324: Label
|
||||||
321: 6(float) FAdd 319 320
|
329: 178(bool) Phi 322 316 328 323
|
||||||
322: 6(float) Load 172(uf)
|
Store 305(b) 329
|
||||||
323: 6(float) FMul 321 322
|
330: 178(bool) Load 305(b)
|
||||||
324: 6(float) Load 172(uf)
|
SelectionMerge 332 None
|
||||||
325: 6(float) FSub 323 324
|
BranchConditional 330 331 332
|
||||||
326: 6(float) Load 172(uf)
|
331: Label
|
||||||
327: 6(float) FDiv 325 326
|
333: 7(fvec4) Load 9(v)
|
||||||
Store 318(f) 327
|
334: 7(fvec4) Load 11(uv4)
|
||||||
328: 7(fvec4) Load 9(v)
|
335: 179(bvec4) FOrdGreaterThanEqual 333 334
|
||||||
329: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 328
|
336: 178(bool) Any 335
|
||||||
330: 6(float) Load 318(f)
|
Branch 332
|
||||||
331: 6(float) FAdd 330 329
|
332: Label
|
||||||
Store 318(f) 331
|
337: 178(bool) Phi 330 324 336 331
|
||||||
332: 7(fvec4) Load 9(v)
|
Store 305(b) 337
|
||||||
333: 7(fvec4) Load 9(v)
|
338: 178(bool) Load 305(b)
|
||||||
334: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 332 333
|
SelectionMerge 340 None
|
||||||
335: 6(float) Load 318(f)
|
BranchConditional 338 339 340
|
||||||
336: 6(float) FAdd 335 334
|
339: Label
|
||||||
Store 318(f) 336
|
341: 179(bvec4) Load 181(ub41)
|
||||||
337: 7(fvec4) Load 9(v)
|
343: 179(bvec4) Load 342(ub42)
|
||||||
338: 7(fvec4) Load 9(v)
|
344: 179(bvec4) IEqual 341 343
|
||||||
339: 6(float) Dot 337 338
|
345: 178(bool) Any 344
|
||||||
340: 6(float) Load 318(f)
|
Branch 340
|
||||||
341: 6(float) FAdd 340 339
|
340: Label
|
||||||
Store 318(f) 341
|
346: 178(bool) Phi 338 332 345 339
|
||||||
342: 6(float) Load 318(f)
|
Store 305(b) 346
|
||||||
343: 6(float) Load 172(uf)
|
347: 178(bool) Load 305(b)
|
||||||
344: 6(float) FMul 342 343
|
SelectionMerge 349 None
|
||||||
345: 6(float) Load 318(f)
|
BranchConditional 347 348 349
|
||||||
346: 6(float) FAdd 345 344
|
348: Label
|
||||||
Store 318(f) 346
|
350: 179(bvec4) Load 181(ub41)
|
||||||
348: 7(fvec4) Load 9(v)
|
351: 179(bvec4) Load 342(ub42)
|
||||||
349: 347(fvec3) VectorShuffle 348 348 0 1 2
|
352: 179(bvec4) INotEqual 350 351
|
||||||
350: 7(fvec4) Load 9(v)
|
353: 178(bool) Any 352
|
||||||
351: 347(fvec3) VectorShuffle 350 350 0 1 2
|
Branch 349
|
||||||
352: 347(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 349 351
|
349: Label
|
||||||
353: 6(float) CompositeExtract 352 0
|
354: 178(bool) Phi 347 340 353 348
|
||||||
354: 6(float) Load 318(f)
|
Store 305(b) 354
|
||||||
355: 6(float) FAdd 354 353
|
355: 178(bool) Load 305(b)
|
||||||
Store 318(f) 355
|
356: 179(bvec4) Load 181(ub41)
|
||||||
356: 6(float) Load 318(f)
|
357: 178(bool) Any 356
|
||||||
357: 6(float) Load 172(uf)
|
358: 178(bool) LogicalAnd 355 357
|
||||||
358: 217(bool) FOrdEqual 356 357
|
Store 305(b) 358
|
||||||
359: 217(bool) LogicalNot 358
|
359: 178(bool) Load 305(b)
|
||||||
SelectionMerge 361 None
|
360: 179(bvec4) Load 181(ub41)
|
||||||
BranchConditional 359 360 361
|
361: 178(bool) All 360
|
||||||
360: Label
|
362: 178(bool) LogicalAnd 359 361
|
||||||
362: 6(float) Load 318(f)
|
Store 305(b) 362
|
||||||
363: 6(float) Load 172(uf)
|
363: 178(bool) Load 305(b)
|
||||||
364: 217(bool) FOrdNotEqual 362 363
|
SelectionMerge 365 None
|
||||||
365: 6(float) Load 318(f)
|
BranchConditional 363 364 365
|
||||||
367: 217(bool) FOrdNotEqual 365 366
|
364: Label
|
||||||
368: 217(bool) LogicalAnd 364 367
|
366: 179(bvec4) Load 181(ub41)
|
||||||
Branch 361
|
367: 179(bvec4) LogicalNot 366
|
||||||
361: Label
|
368: 178(bool) Any 367
|
||||||
369: 217(bool) Phi 358 314 368 360
|
Branch 365
|
||||||
SelectionMerge 371 None
|
365: Label
|
||||||
BranchConditional 369 370 371
|
369: 178(bool) Phi 363 349 368 364
|
||||||
370: Label
|
Store 305(b) 369
|
||||||
372: 6(float) Load 318(f)
|
370: 18(int) Load 20(i)
|
||||||
374: 6(float) FAdd 372 373
|
371: 18(int) Load 22(ui)
|
||||||
Store 318(f) 374
|
372: 18(int) IAdd 370 371
|
||||||
Branch 371
|
373: 18(int) Load 20(i)
|
||||||
371: Label
|
374: 18(int) IMul 372 373
|
||||||
375: 18(int) Load 22(ui)
|
375: 18(int) Load 22(ui)
|
||||||
376: 18(int) Load 20(i)
|
376: 18(int) ISub 374 375
|
||||||
377: 18(int) BitwiseAnd 376 375
|
377: 18(int) Load 20(i)
|
||||||
Store 20(i) 377
|
378: 18(int) SDiv 376 377
|
||||||
|
Store 20(i) 378
|
||||||
379: 18(int) Load 20(i)
|
379: 18(int) Load 20(i)
|
||||||
380: 18(int) BitwiseOr 379 378
|
380: 18(int) Load 22(ui)
|
||||||
Store 20(i) 380
|
381: 18(int) SMod 379 380
|
||||||
381: 18(int) Load 22(ui)
|
Store 20(i) 381
|
||||||
382: 18(int) Load 20(i)
|
382: 18(int) Load 20(i)
|
||||||
383: 18(int) BitwiseXor 382 381
|
383: 18(int) Load 22(ui)
|
||||||
Store 20(i) 383
|
384: 178(bool) IEqual 382 383
|
||||||
385: 18(int) Load 20(i)
|
385: 178(bool) LogicalNot 384
|
||||||
386: 18(int) SMod 385 384
|
SelectionMerge 387 None
|
||||||
Store 20(i) 386
|
BranchConditional 385 386 387
|
||||||
387: 18(int) Load 20(i)
|
386: Label
|
||||||
388: 18(int) ShiftRightArithmetic 387 309
|
388: 18(int) Load 20(i)
|
||||||
Store 20(i) 388
|
389: 18(int) Load 22(ui)
|
||||||
389: 18(int) Load 22(ui)
|
390: 178(bool) INotEqual 388 389
|
||||||
390: 18(int) Load 20(i)
|
391: 18(int) Load 20(i)
|
||||||
391: 18(int) ShiftLeftLogical 390 389
|
392: 18(int) Load 22(ui)
|
||||||
Store 20(i) 391
|
393: 178(bool) IEqual 391 392
|
||||||
392: 18(int) Load 20(i)
|
394: 178(bool) LogicalAnd 390 393
|
||||||
393: 18(int) Not 392
|
395: 18(int) Load 20(i)
|
||||||
Store 20(i) 393
|
397: 178(bool) INotEqual 395 396
|
||||||
394: 217(bool) Load 219(b)
|
398: 178(bool) LogicalNotEqual 394 397
|
||||||
395: 217(bool) LogicalNot 394
|
Branch 387
|
||||||
Store 219(b) 395
|
387: Label
|
||||||
399: 217(bool) Load 219(b)
|
399: 178(bool) Phi 384 365 398 386
|
||||||
SelectionMerge 401 None
|
SelectionMerge 401 None
|
||||||
BranchConditional 399 400 410
|
BranchConditional 399 400 401
|
||||||
400: Label
|
400: Label
|
||||||
402: 18(int) Load 20(i)
|
402: 18(int) Load 20(i)
|
||||||
403: 6(float) ConvertSToF 402
|
404: 18(int) IAdd 402 403
|
||||||
404: 7(fvec4) CompositeConstruct 403 403 403 403
|
Store 20(i) 404
|
||||||
405: 6(float) Load 318(f)
|
|
||||||
406: 7(fvec4) CompositeConstruct 405 405 405 405
|
|
||||||
407: 7(fvec4) FAdd 404 406
|
|
||||||
408: 7(fvec4) Load 9(v)
|
|
||||||
409: 7(fvec4) FAdd 407 408
|
|
||||||
Store 398 409
|
|
||||||
Branch 401
|
|
||||||
410: Label
|
|
||||||
411: 7(fvec4) Load 9(v)
|
|
||||||
Store 398 411
|
|
||||||
Branch 401
|
Branch 401
|
||||||
401: Label
|
401: Label
|
||||||
412: 7(fvec4) Load 398
|
405: 6(float) Load 212(uf)
|
||||||
Store 397(gl_FragColor) 412
|
406: 6(float) Load 212(uf)
|
||||||
|
407: 6(float) FAdd 405 406
|
||||||
|
408: 6(float) Load 212(uf)
|
||||||
|
409: 6(float) FMul 407 408
|
||||||
|
410: 6(float) Load 212(uf)
|
||||||
|
411: 6(float) FSub 409 410
|
||||||
|
412: 6(float) Load 212(uf)
|
||||||
|
413: 6(float) FDiv 411 412
|
||||||
|
Store 188(f) 413
|
||||||
|
414: 7(fvec4) Load 9(v)
|
||||||
|
415: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 414
|
||||||
|
416: 6(float) Load 188(f)
|
||||||
|
417: 6(float) FAdd 416 415
|
||||||
|
Store 188(f) 417
|
||||||
|
418: 7(fvec4) Load 9(v)
|
||||||
|
419: 7(fvec4) Load 9(v)
|
||||||
|
420: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 418 419
|
||||||
|
421: 6(float) Load 188(f)
|
||||||
|
422: 6(float) FAdd 421 420
|
||||||
|
Store 188(f) 422
|
||||||
|
423: 7(fvec4) Load 9(v)
|
||||||
|
424: 7(fvec4) Load 9(v)
|
||||||
|
425: 6(float) Dot 423 424
|
||||||
|
426: 6(float) Load 188(f)
|
||||||
|
427: 6(float) FAdd 426 425
|
||||||
|
Store 188(f) 427
|
||||||
|
428: 6(float) Load 188(f)
|
||||||
|
429: 6(float) Load 212(uf)
|
||||||
|
430: 6(float) FMul 428 429
|
||||||
|
431: 6(float) Load 188(f)
|
||||||
|
432: 6(float) FAdd 431 430
|
||||||
|
Store 188(f) 432
|
||||||
|
434: 7(fvec4) Load 9(v)
|
||||||
|
435: 433(fvec3) VectorShuffle 434 434 0 1 2
|
||||||
|
436: 7(fvec4) Load 9(v)
|
||||||
|
437: 433(fvec3) VectorShuffle 436 436 0 1 2
|
||||||
|
438: 433(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 435 437
|
||||||
|
439: 6(float) CompositeExtract 438 0
|
||||||
|
440: 6(float) Load 188(f)
|
||||||
|
441: 6(float) FAdd 440 439
|
||||||
|
Store 188(f) 441
|
||||||
|
442: 6(float) Load 188(f)
|
||||||
|
443: 6(float) Load 212(uf)
|
||||||
|
444: 178(bool) FOrdEqual 442 443
|
||||||
|
445: 178(bool) LogicalNot 444
|
||||||
|
SelectionMerge 447 None
|
||||||
|
BranchConditional 445 446 447
|
||||||
|
446: Label
|
||||||
|
448: 6(float) Load 188(f)
|
||||||
|
449: 6(float) Load 212(uf)
|
||||||
|
450: 178(bool) FOrdNotEqual 448 449
|
||||||
|
451: 6(float) Load 188(f)
|
||||||
|
453: 178(bool) FOrdNotEqual 451 452
|
||||||
|
454: 178(bool) LogicalAnd 450 453
|
||||||
|
Branch 447
|
||||||
|
447: Label
|
||||||
|
455: 178(bool) Phi 444 401 454 446
|
||||||
|
SelectionMerge 457 None
|
||||||
|
BranchConditional 455 456 457
|
||||||
|
456: Label
|
||||||
|
458: 6(float) Load 188(f)
|
||||||
|
460: 6(float) FAdd 458 459
|
||||||
|
Store 188(f) 460
|
||||||
|
Branch 457
|
||||||
|
457: Label
|
||||||
|
461: 18(int) Load 22(ui)
|
||||||
|
462: 18(int) Load 20(i)
|
||||||
|
463: 18(int) BitwiseAnd 462 461
|
||||||
|
Store 20(i) 463
|
||||||
|
465: 18(int) Load 20(i)
|
||||||
|
466: 18(int) BitwiseOr 465 464
|
||||||
|
Store 20(i) 466
|
||||||
|
467: 18(int) Load 22(ui)
|
||||||
|
468: 18(int) Load 20(i)
|
||||||
|
469: 18(int) BitwiseXor 468 467
|
||||||
|
Store 20(i) 469
|
||||||
|
471: 18(int) Load 20(i)
|
||||||
|
472: 18(int) SMod 471 470
|
||||||
|
Store 20(i) 472
|
||||||
|
473: 18(int) Load 20(i)
|
||||||
|
474: 18(int) ShiftRightArithmetic 473 396
|
||||||
|
Store 20(i) 474
|
||||||
|
475: 18(int) Load 22(ui)
|
||||||
|
476: 18(int) Load 20(i)
|
||||||
|
477: 18(int) ShiftLeftLogical 476 475
|
||||||
|
Store 20(i) 477
|
||||||
|
478: 18(int) Load 20(i)
|
||||||
|
479: 18(int) Not 478
|
||||||
|
Store 20(i) 479
|
||||||
|
480: 178(bool) Load 305(b)
|
||||||
|
481: 178(bool) LogicalNot 480
|
||||||
|
Store 305(b) 481
|
||||||
|
485: 178(bool) Load 305(b)
|
||||||
|
SelectionMerge 487 None
|
||||||
|
BranchConditional 485 486 496
|
||||||
|
486: Label
|
||||||
|
488: 18(int) Load 20(i)
|
||||||
|
489: 6(float) ConvertSToF 488
|
||||||
|
490: 7(fvec4) CompositeConstruct 489 489 489 489
|
||||||
|
491: 6(float) Load 188(f)
|
||||||
|
492: 7(fvec4) CompositeConstruct 491 491 491 491
|
||||||
|
493: 7(fvec4) FAdd 490 492
|
||||||
|
494: 7(fvec4) Load 9(v)
|
||||||
|
495: 7(fvec4) FAdd 493 494
|
||||||
|
Store 484 495
|
||||||
|
Branch 487
|
||||||
|
496: Label
|
||||||
|
497: 7(fvec4) Load 9(v)
|
||||||
|
Store 484 497
|
||||||
|
Branch 487
|
||||||
|
487: Label
|
||||||
|
498: 7(fvec4) Load 484
|
||||||
|
Store 483(FragColor) 498
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,473 @@
|
||||||
spv.aggOps.frag
|
spv.aggOps.frag
|
||||||
WARNING: 0:4: varying deprecated in version 130; may be removed in future release
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
WARNING: 0:6: varying deprecated in version 130; may be removed in future release
|
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
Missing functionality: Composite comparison of non-vectors
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 380
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 16 41 90 376
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "s1"
|
||||||
|
MemberName 8(s1) 0 "i"
|
||||||
|
MemberName 8(s1) 1 "f"
|
||||||
|
Name 13 "a"
|
||||||
|
Name 16 "u"
|
||||||
|
Name 37 "b"
|
||||||
|
Name 41 "w"
|
||||||
|
Name 55 "s2"
|
||||||
|
MemberName 55(s2) 0 "i"
|
||||||
|
MemberName 55(s2) 1 "f"
|
||||||
|
MemberName 55(s2) 2 "s1_1"
|
||||||
|
Name 57 "foo2a"
|
||||||
|
Name 59 "foo2b"
|
||||||
|
Name 82 "v"
|
||||||
|
Name 86 "samp2D"
|
||||||
|
Name 90 "coord"
|
||||||
|
Name 341 "s1"
|
||||||
|
MemberName 341(s1) 0 "i"
|
||||||
|
MemberName 341(s1) 1 "f"
|
||||||
|
Name 342 "s2"
|
||||||
|
MemberName 342(s2) 0 "i"
|
||||||
|
MemberName 342(s2) 1 "f"
|
||||||
|
MemberName 342(s2) 2 "s1_1"
|
||||||
|
Name 343 "bn"
|
||||||
|
MemberName 343(bn) 0 "foo2a"
|
||||||
|
Name 345 "bi"
|
||||||
|
Name 347 "s1"
|
||||||
|
MemberName 347(s1) 0 "i"
|
||||||
|
MemberName 347(s1) 1 "f"
|
||||||
|
Name 348 "s2"
|
||||||
|
MemberName 348(s2) 0 "i"
|
||||||
|
MemberName 348(s2) 1 "f"
|
||||||
|
MemberName 348(s2) 2 "s1_1"
|
||||||
|
Name 376 "color"
|
||||||
|
Name 379 "foo1"
|
||||||
|
MemberDecorate 341(s1) 0 Offset 0
|
||||||
|
MemberDecorate 341(s1) 1 Offset 4
|
||||||
|
MemberDecorate 342(s2) 0 Offset 0
|
||||||
|
MemberDecorate 342(s2) 1 Offset 4
|
||||||
|
MemberDecorate 342(s2) 2 Offset 16
|
||||||
|
MemberDecorate 343(bn) 0 Offset 0
|
||||||
|
Decorate 343(bn) Block
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 1
|
||||||
|
7: TypeFloat 32
|
||||||
|
8(s1): TypeStruct 6(int) 7(float)
|
||||||
|
9: TypeInt 32 0
|
||||||
|
10: 9(int) Constant 3
|
||||||
|
11: TypeArray 8(s1) 10
|
||||||
|
12: TypePointer Function 11
|
||||||
|
14: TypeVector 7(float) 4
|
||||||
|
15: TypePointer Input 14(fvec4)
|
||||||
|
16(u): 15(ptr) Variable Input
|
||||||
|
17: 9(int) Constant 0
|
||||||
|
18: TypePointer Input 7(float)
|
||||||
|
22: 9(int) Constant 1
|
||||||
|
26: 9(int) Constant 2
|
||||||
|
33: 6(int) Constant 14
|
||||||
|
34: 7(float) Constant 1096810496
|
||||||
|
35: 8(s1) ConstantComposite 33 34
|
||||||
|
38: 6(int) Constant 17
|
||||||
|
39: 7(float) Constant 1099431936
|
||||||
|
40: 8(s1) ConstantComposite 38 39
|
||||||
|
41(w): 15(ptr) Variable Input
|
||||||
|
55(s2): TypeStruct 6(int) 7(float) 8(s1)
|
||||||
|
56: TypePointer UniformConstant 55(s2)
|
||||||
|
57(foo2a): 56(ptr) Variable UniformConstant
|
||||||
|
59(foo2b): 56(ptr) Variable UniformConstant
|
||||||
|
61: TypeBool
|
||||||
|
81: TypePointer Function 14(fvec4)
|
||||||
|
83: TypeImage 7(float) 2D sampled format:Unknown
|
||||||
|
84: TypeSampledImage 83
|
||||||
|
85: TypePointer UniformConstant 84
|
||||||
|
86(samp2D): 85(ptr) Variable UniformConstant
|
||||||
|
88: TypeVector 7(float) 2
|
||||||
|
89: TypePointer Input 88(fvec2)
|
||||||
|
90(coord): 89(ptr) Variable Input
|
||||||
|
95: 7(float) Constant 1073741824
|
||||||
|
101: TypeVector 61(bool) 4
|
||||||
|
106: 7(float) Constant 1077936128
|
||||||
|
115: 7(float) Constant 1082130432
|
||||||
|
121: TypeVector 61(bool) 2
|
||||||
|
126: 7(float) Constant 1084227584
|
||||||
|
232: 7(float) Constant 1086324736
|
||||||
|
338: 7(float) Constant 1088421888
|
||||||
|
341(s1): TypeStruct 6(int) 7(float)
|
||||||
|
342(s2): TypeStruct 6(int) 7(float) 341(s1)
|
||||||
|
343(bn): TypeStruct 342(s2)
|
||||||
|
344: TypePointer Uniform 343(bn)
|
||||||
|
345(bi): 344(ptr) Variable Uniform
|
||||||
|
346: 6(int) Constant 0
|
||||||
|
347(s1): TypeStruct 6(int) 7(float)
|
||||||
|
348(s2): TypeStruct 6(int) 7(float) 347(s1)
|
||||||
|
349: TypePointer Uniform 342(s2)
|
||||||
|
372: 7(float) Constant 1090519040
|
||||||
|
375: TypePointer Output 14(fvec4)
|
||||||
|
376(color): 375(ptr) Variable Output
|
||||||
|
378: TypePointer UniformConstant 8(s1)
|
||||||
|
379(foo1): 378(ptr) Variable UniformConstant
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
13(a): 12(ptr) Variable Function
|
||||||
|
37(b): 12(ptr) Variable Function
|
||||||
|
82(v): 81(ptr) Variable Function
|
||||||
|
19: 18(ptr) AccessChain 16(u) 17
|
||||||
|
20: 7(float) Load 19
|
||||||
|
21: 6(int) ConvertFToS 20
|
||||||
|
23: 18(ptr) AccessChain 16(u) 22
|
||||||
|
24: 7(float) Load 23
|
||||||
|
25: 8(s1) CompositeConstruct 21 24
|
||||||
|
27: 18(ptr) AccessChain 16(u) 26
|
||||||
|
28: 7(float) Load 27
|
||||||
|
29: 6(int) ConvertFToS 28
|
||||||
|
30: 18(ptr) AccessChain 16(u) 10
|
||||||
|
31: 7(float) Load 30
|
||||||
|
32: 8(s1) CompositeConstruct 29 31
|
||||||
|
36: 11 CompositeConstruct 25 32 35
|
||||||
|
Store 13(a) 36
|
||||||
|
42: 18(ptr) AccessChain 41(w) 17
|
||||||
|
43: 7(float) Load 42
|
||||||
|
44: 6(int) ConvertFToS 43
|
||||||
|
45: 18(ptr) AccessChain 41(w) 22
|
||||||
|
46: 7(float) Load 45
|
||||||
|
47: 8(s1) CompositeConstruct 44 46
|
||||||
|
48: 18(ptr) AccessChain 41(w) 26
|
||||||
|
49: 7(float) Load 48
|
||||||
|
50: 6(int) ConvertFToS 49
|
||||||
|
51: 18(ptr) AccessChain 41(w) 10
|
||||||
|
52: 7(float) Load 51
|
||||||
|
53: 8(s1) CompositeConstruct 50 52
|
||||||
|
54: 11 CompositeConstruct 40 47 53
|
||||||
|
Store 37(b) 54
|
||||||
|
58: 55(s2) Load 57(foo2a)
|
||||||
|
60: 55(s2) Load 59(foo2b)
|
||||||
|
62: 6(int) CompositeExtract 58 0
|
||||||
|
63: 6(int) CompositeExtract 60 0
|
||||||
|
64: 61(bool) IEqual 62 63
|
||||||
|
65: 7(float) CompositeExtract 58 1
|
||||||
|
66: 7(float) CompositeExtract 60 1
|
||||||
|
67: 61(bool) FOrdEqual 65 66
|
||||||
|
68: 61(bool) LogicalAnd 64 67
|
||||||
|
69: 8(s1) CompositeExtract 58 2
|
||||||
|
70: 8(s1) CompositeExtract 60 2
|
||||||
|
71: 6(int) CompositeExtract 69 0
|
||||||
|
72: 6(int) CompositeExtract 70 0
|
||||||
|
73: 61(bool) IEqual 71 72
|
||||||
|
74: 7(float) CompositeExtract 69 1
|
||||||
|
75: 7(float) CompositeExtract 70 1
|
||||||
|
76: 61(bool) FOrdEqual 74 75
|
||||||
|
77: 61(bool) LogicalAnd 73 76
|
||||||
|
78: 61(bool) LogicalAnd 68 77
|
||||||
|
SelectionMerge 80 None
|
||||||
|
BranchConditional 78 79 93
|
||||||
|
79: Label
|
||||||
|
87: 84 Load 86(samp2D)
|
||||||
|
91: 88(fvec2) Load 90(coord)
|
||||||
|
92: 14(fvec4) ImageSampleImplicitLod 87 91
|
||||||
|
Store 82(v) 92
|
||||||
|
Branch 80
|
||||||
|
93: Label
|
||||||
|
94: 84 Load 86(samp2D)
|
||||||
|
96: 88(fvec2) Load 90(coord)
|
||||||
|
97: 88(fvec2) VectorTimesScalar 96 95
|
||||||
|
98: 14(fvec4) ImageSampleImplicitLod 94 97
|
||||||
|
Store 82(v) 98
|
||||||
|
Branch 80
|
||||||
|
80: Label
|
||||||
|
99: 14(fvec4) Load 16(u)
|
||||||
|
100: 14(fvec4) Load 82(v)
|
||||||
|
102: 101(bvec4) FOrdEqual 99 100
|
||||||
|
103: 61(bool) All 102
|
||||||
|
SelectionMerge 105 None
|
||||||
|
BranchConditional 103 104 105
|
||||||
|
104: Label
|
||||||
|
107: 14(fvec4) Load 82(v)
|
||||||
|
108: 14(fvec4) VectorTimesScalar 107 106
|
||||||
|
Store 82(v) 108
|
||||||
|
Branch 105
|
||||||
|
105: Label
|
||||||
|
109: 14(fvec4) Load 16(u)
|
||||||
|
110: 14(fvec4) Load 82(v)
|
||||||
|
111: 101(bvec4) FOrdNotEqual 109 110
|
||||||
|
112: 61(bool) Any 111
|
||||||
|
SelectionMerge 114 None
|
||||||
|
BranchConditional 112 113 114
|
||||||
|
113: Label
|
||||||
|
116: 14(fvec4) Load 82(v)
|
||||||
|
117: 14(fvec4) VectorTimesScalar 116 115
|
||||||
|
Store 82(v) 117
|
||||||
|
Branch 114
|
||||||
|
114: Label
|
||||||
|
118: 88(fvec2) Load 90(coord)
|
||||||
|
119: 14(fvec4) Load 82(v)
|
||||||
|
120: 88(fvec2) VectorShuffle 119 119 1 3
|
||||||
|
122: 121(bvec2) FOrdEqual 118 120
|
||||||
|
123: 61(bool) All 122
|
||||||
|
SelectionMerge 125 None
|
||||||
|
BranchConditional 123 124 125
|
||||||
|
124: Label
|
||||||
|
127: 14(fvec4) Load 82(v)
|
||||||
|
128: 14(fvec4) VectorTimesScalar 127 126
|
||||||
|
Store 82(v) 128
|
||||||
|
Branch 125
|
||||||
|
125: Label
|
||||||
|
129: 11 Load 13(a)
|
||||||
|
130: 11 Load 37(b)
|
||||||
|
131: 8(s1) CompositeExtract 129 0
|
||||||
|
132: 8(s1) CompositeExtract 130 0
|
||||||
|
133: 6(int) CompositeExtract 131 0
|
||||||
|
134: 6(int) CompositeExtract 132 0
|
||||||
|
135: 61(bool) IEqual 133 134
|
||||||
|
136: 7(float) CompositeExtract 131 1
|
||||||
|
137: 7(float) CompositeExtract 132 1
|
||||||
|
138: 61(bool) FOrdEqual 136 137
|
||||||
|
139: 61(bool) LogicalAnd 135 138
|
||||||
|
140: 8(s1) CompositeExtract 129 1
|
||||||
|
141: 8(s1) CompositeExtract 130 1
|
||||||
|
142: 6(int) CompositeExtract 140 0
|
||||||
|
143: 6(int) CompositeExtract 141 0
|
||||||
|
144: 61(bool) IEqual 142 143
|
||||||
|
145: 7(float) CompositeExtract 140 1
|
||||||
|
146: 7(float) CompositeExtract 141 1
|
||||||
|
147: 61(bool) FOrdEqual 145 146
|
||||||
|
148: 61(bool) LogicalAnd 144 147
|
||||||
|
149: 61(bool) LogicalAnd 139 148
|
||||||
|
150: 8(s1) CompositeExtract 129 2
|
||||||
|
151: 8(s1) CompositeExtract 130 2
|
||||||
|
152: 6(int) CompositeExtract 150 0
|
||||||
|
153: 6(int) CompositeExtract 151 0
|
||||||
|
154: 61(bool) IEqual 152 153
|
||||||
|
155: 7(float) CompositeExtract 150 1
|
||||||
|
156: 7(float) CompositeExtract 151 1
|
||||||
|
157: 61(bool) FOrdEqual 155 156
|
||||||
|
158: 61(bool) LogicalAnd 154 157
|
||||||
|
159: 61(bool) LogicalAnd 149 158
|
||||||
|
160: 8(s1) CompositeExtract 129 3
|
||||||
|
161: 8(s1) CompositeExtract 130 3
|
||||||
|
162: 6(int) CompositeExtract 160 0
|
||||||
|
163: 6(int) CompositeExtract 161 0
|
||||||
|
164: 61(bool) IEqual 162 163
|
||||||
|
165: 7(float) CompositeExtract 160 1
|
||||||
|
166: 7(float) CompositeExtract 161 1
|
||||||
|
167: 61(bool) FOrdEqual 165 166
|
||||||
|
168: 61(bool) LogicalAnd 164 167
|
||||||
|
169: 61(bool) LogicalAnd 159 168
|
||||||
|
170: 8(s1) CompositeExtract 129 4
|
||||||
|
171: 8(s1) CompositeExtract 130 4
|
||||||
|
172: 6(int) CompositeExtract 170 0
|
||||||
|
173: 6(int) CompositeExtract 171 0
|
||||||
|
174: 61(bool) IEqual 172 173
|
||||||
|
175: 7(float) CompositeExtract 170 1
|
||||||
|
176: 7(float) CompositeExtract 171 1
|
||||||
|
177: 61(bool) FOrdEqual 175 176
|
||||||
|
178: 61(bool) LogicalAnd 174 177
|
||||||
|
179: 61(bool) LogicalAnd 169 178
|
||||||
|
180: 8(s1) CompositeExtract 129 5
|
||||||
|
181: 8(s1) CompositeExtract 130 5
|
||||||
|
182: 6(int) CompositeExtract 180 0
|
||||||
|
183: 6(int) CompositeExtract 181 0
|
||||||
|
184: 61(bool) IEqual 182 183
|
||||||
|
185: 7(float) CompositeExtract 180 1
|
||||||
|
186: 7(float) CompositeExtract 181 1
|
||||||
|
187: 61(bool) FOrdEqual 185 186
|
||||||
|
188: 61(bool) LogicalAnd 184 187
|
||||||
|
189: 61(bool) LogicalAnd 179 188
|
||||||
|
190: 8(s1) CompositeExtract 129 6
|
||||||
|
191: 8(s1) CompositeExtract 130 6
|
||||||
|
192: 6(int) CompositeExtract 190 0
|
||||||
|
193: 6(int) CompositeExtract 191 0
|
||||||
|
194: 61(bool) IEqual 192 193
|
||||||
|
195: 7(float) CompositeExtract 190 1
|
||||||
|
196: 7(float) CompositeExtract 191 1
|
||||||
|
197: 61(bool) FOrdEqual 195 196
|
||||||
|
198: 61(bool) LogicalAnd 194 197
|
||||||
|
199: 61(bool) LogicalAnd 189 198
|
||||||
|
200: 8(s1) CompositeExtract 129 7
|
||||||
|
201: 8(s1) CompositeExtract 130 7
|
||||||
|
202: 6(int) CompositeExtract 200 0
|
||||||
|
203: 6(int) CompositeExtract 201 0
|
||||||
|
204: 61(bool) IEqual 202 203
|
||||||
|
205: 7(float) CompositeExtract 200 1
|
||||||
|
206: 7(float) CompositeExtract 201 1
|
||||||
|
207: 61(bool) FOrdEqual 205 206
|
||||||
|
208: 61(bool) LogicalAnd 204 207
|
||||||
|
209: 61(bool) LogicalAnd 199 208
|
||||||
|
210: 8(s1) CompositeExtract 129 8
|
||||||
|
211: 8(s1) CompositeExtract 130 8
|
||||||
|
212: 6(int) CompositeExtract 210 0
|
||||||
|
213: 6(int) CompositeExtract 211 0
|
||||||
|
214: 61(bool) IEqual 212 213
|
||||||
|
215: 7(float) CompositeExtract 210 1
|
||||||
|
216: 7(float) CompositeExtract 211 1
|
||||||
|
217: 61(bool) FOrdEqual 215 216
|
||||||
|
218: 61(bool) LogicalAnd 214 217
|
||||||
|
219: 61(bool) LogicalAnd 209 218
|
||||||
|
220: 8(s1) CompositeExtract 129 9
|
||||||
|
221: 8(s1) CompositeExtract 130 9
|
||||||
|
222: 6(int) CompositeExtract 220 0
|
||||||
|
223: 6(int) CompositeExtract 221 0
|
||||||
|
224: 61(bool) IEqual 222 223
|
||||||
|
225: 7(float) CompositeExtract 220 1
|
||||||
|
226: 7(float) CompositeExtract 221 1
|
||||||
|
227: 61(bool) FOrdEqual 225 226
|
||||||
|
228: 61(bool) LogicalAnd 224 227
|
||||||
|
229: 61(bool) LogicalAnd 219 228
|
||||||
|
SelectionMerge 231 None
|
||||||
|
BranchConditional 229 230 231
|
||||||
|
230: Label
|
||||||
|
233: 14(fvec4) Load 82(v)
|
||||||
|
234: 14(fvec4) VectorTimesScalar 233 232
|
||||||
|
Store 82(v) 234
|
||||||
|
Branch 231
|
||||||
|
231: Label
|
||||||
|
235: 11 Load 13(a)
|
||||||
|
236: 11 Load 37(b)
|
||||||
|
237: 8(s1) CompositeExtract 235 0
|
||||||
|
238: 8(s1) CompositeExtract 236 0
|
||||||
|
239: 6(int) CompositeExtract 237 0
|
||||||
|
240: 6(int) CompositeExtract 238 0
|
||||||
|
241: 61(bool) INotEqual 239 240
|
||||||
|
242: 7(float) CompositeExtract 237 1
|
||||||
|
243: 7(float) CompositeExtract 238 1
|
||||||
|
244: 61(bool) FOrdNotEqual 242 243
|
||||||
|
245: 61(bool) LogicalOr 241 244
|
||||||
|
246: 8(s1) CompositeExtract 235 1
|
||||||
|
247: 8(s1) CompositeExtract 236 1
|
||||||
|
248: 6(int) CompositeExtract 246 0
|
||||||
|
249: 6(int) CompositeExtract 247 0
|
||||||
|
250: 61(bool) INotEqual 248 249
|
||||||
|
251: 7(float) CompositeExtract 246 1
|
||||||
|
252: 7(float) CompositeExtract 247 1
|
||||||
|
253: 61(bool) FOrdNotEqual 251 252
|
||||||
|
254: 61(bool) LogicalOr 250 253
|
||||||
|
255: 61(bool) LogicalOr 245 254
|
||||||
|
256: 8(s1) CompositeExtract 235 2
|
||||||
|
257: 8(s1) CompositeExtract 236 2
|
||||||
|
258: 6(int) CompositeExtract 256 0
|
||||||
|
259: 6(int) CompositeExtract 257 0
|
||||||
|
260: 61(bool) INotEqual 258 259
|
||||||
|
261: 7(float) CompositeExtract 256 1
|
||||||
|
262: 7(float) CompositeExtract 257 1
|
||||||
|
263: 61(bool) FOrdNotEqual 261 262
|
||||||
|
264: 61(bool) LogicalOr 260 263
|
||||||
|
265: 61(bool) LogicalOr 255 264
|
||||||
|
266: 8(s1) CompositeExtract 235 3
|
||||||
|
267: 8(s1) CompositeExtract 236 3
|
||||||
|
268: 6(int) CompositeExtract 266 0
|
||||||
|
269: 6(int) CompositeExtract 267 0
|
||||||
|
270: 61(bool) INotEqual 268 269
|
||||||
|
271: 7(float) CompositeExtract 266 1
|
||||||
|
272: 7(float) CompositeExtract 267 1
|
||||||
|
273: 61(bool) FOrdNotEqual 271 272
|
||||||
|
274: 61(bool) LogicalOr 270 273
|
||||||
|
275: 61(bool) LogicalOr 265 274
|
||||||
|
276: 8(s1) CompositeExtract 235 4
|
||||||
|
277: 8(s1) CompositeExtract 236 4
|
||||||
|
278: 6(int) CompositeExtract 276 0
|
||||||
|
279: 6(int) CompositeExtract 277 0
|
||||||
|
280: 61(bool) INotEqual 278 279
|
||||||
|
281: 7(float) CompositeExtract 276 1
|
||||||
|
282: 7(float) CompositeExtract 277 1
|
||||||
|
283: 61(bool) FOrdNotEqual 281 282
|
||||||
|
284: 61(bool) LogicalOr 280 283
|
||||||
|
285: 61(bool) LogicalOr 275 284
|
||||||
|
286: 8(s1) CompositeExtract 235 5
|
||||||
|
287: 8(s1) CompositeExtract 236 5
|
||||||
|
288: 6(int) CompositeExtract 286 0
|
||||||
|
289: 6(int) CompositeExtract 287 0
|
||||||
|
290: 61(bool) INotEqual 288 289
|
||||||
|
291: 7(float) CompositeExtract 286 1
|
||||||
|
292: 7(float) CompositeExtract 287 1
|
||||||
|
293: 61(bool) FOrdNotEqual 291 292
|
||||||
|
294: 61(bool) LogicalOr 290 293
|
||||||
|
295: 61(bool) LogicalOr 285 294
|
||||||
|
296: 8(s1) CompositeExtract 235 6
|
||||||
|
297: 8(s1) CompositeExtract 236 6
|
||||||
|
298: 6(int) CompositeExtract 296 0
|
||||||
|
299: 6(int) CompositeExtract 297 0
|
||||||
|
300: 61(bool) INotEqual 298 299
|
||||||
|
301: 7(float) CompositeExtract 296 1
|
||||||
|
302: 7(float) CompositeExtract 297 1
|
||||||
|
303: 61(bool) FOrdNotEqual 301 302
|
||||||
|
304: 61(bool) LogicalOr 300 303
|
||||||
|
305: 61(bool) LogicalOr 295 304
|
||||||
|
306: 8(s1) CompositeExtract 235 7
|
||||||
|
307: 8(s1) CompositeExtract 236 7
|
||||||
|
308: 6(int) CompositeExtract 306 0
|
||||||
|
309: 6(int) CompositeExtract 307 0
|
||||||
|
310: 61(bool) INotEqual 308 309
|
||||||
|
311: 7(float) CompositeExtract 306 1
|
||||||
|
312: 7(float) CompositeExtract 307 1
|
||||||
|
313: 61(bool) FOrdNotEqual 311 312
|
||||||
|
314: 61(bool) LogicalOr 310 313
|
||||||
|
315: 61(bool) LogicalOr 305 314
|
||||||
|
316: 8(s1) CompositeExtract 235 8
|
||||||
|
317: 8(s1) CompositeExtract 236 8
|
||||||
|
318: 6(int) CompositeExtract 316 0
|
||||||
|
319: 6(int) CompositeExtract 317 0
|
||||||
|
320: 61(bool) INotEqual 318 319
|
||||||
|
321: 7(float) CompositeExtract 316 1
|
||||||
|
322: 7(float) CompositeExtract 317 1
|
||||||
|
323: 61(bool) FOrdNotEqual 321 322
|
||||||
|
324: 61(bool) LogicalOr 320 323
|
||||||
|
325: 61(bool) LogicalOr 315 324
|
||||||
|
326: 8(s1) CompositeExtract 235 9
|
||||||
|
327: 8(s1) CompositeExtract 236 9
|
||||||
|
328: 6(int) CompositeExtract 326 0
|
||||||
|
329: 6(int) CompositeExtract 327 0
|
||||||
|
330: 61(bool) INotEqual 328 329
|
||||||
|
331: 7(float) CompositeExtract 326 1
|
||||||
|
332: 7(float) CompositeExtract 327 1
|
||||||
|
333: 61(bool) FOrdNotEqual 331 332
|
||||||
|
334: 61(bool) LogicalOr 330 333
|
||||||
|
335: 61(bool) LogicalOr 325 334
|
||||||
|
SelectionMerge 337 None
|
||||||
|
BranchConditional 335 336 337
|
||||||
|
336: Label
|
||||||
|
339: 14(fvec4) Load 82(v)
|
||||||
|
340: 14(fvec4) VectorTimesScalar 339 338
|
||||||
|
Store 82(v) 340
|
||||||
|
Branch 337
|
||||||
|
337: Label
|
||||||
|
350: 349(ptr) AccessChain 345(bi) 346
|
||||||
|
351: 342(s2) Load 350
|
||||||
|
352: 55(s2) Load 57(foo2a)
|
||||||
|
353: 6(int) CompositeExtract 351 0
|
||||||
|
354: 6(int) CompositeExtract 352 0
|
||||||
|
355: 61(bool) INotEqual 353 354
|
||||||
|
356: 7(float) CompositeExtract 351 1
|
||||||
|
357: 7(float) CompositeExtract 352 1
|
||||||
|
358: 61(bool) FOrdNotEqual 356 357
|
||||||
|
359: 61(bool) LogicalOr 355 358
|
||||||
|
360: 341(s1) CompositeExtract 351 2
|
||||||
|
361: 8(s1) CompositeExtract 352 2
|
||||||
|
362: 6(int) CompositeExtract 360 0
|
||||||
|
363: 6(int) CompositeExtract 361 0
|
||||||
|
364: 61(bool) INotEqual 362 363
|
||||||
|
365: 7(float) CompositeExtract 360 1
|
||||||
|
366: 7(float) CompositeExtract 361 1
|
||||||
|
367: 61(bool) FOrdNotEqual 365 366
|
||||||
|
368: 61(bool) LogicalOr 364 367
|
||||||
|
369: 61(bool) LogicalOr 359 368
|
||||||
|
SelectionMerge 371 None
|
||||||
|
BranchConditional 369 370 371
|
||||||
|
370: Label
|
||||||
|
373: 14(fvec4) Load 82(v)
|
||||||
|
374: 14(fvec4) VectorTimesScalar 373 372
|
||||||
|
Store 82(v) 374
|
||||||
|
Branch 371
|
||||||
|
371: Label
|
||||||
|
377: 14(fvec4) Load 82(v)
|
||||||
|
Store 376(color) 377
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 21
|
EntryPoint Fragment 4 "main" 21 59
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 110
|
Source GLSL 110
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 21
|
EntryPoint Fragment 4 "main" 21 38
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 110
|
Source GLSL 110
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
232
Test/baseResults/spv.bitCast.frag.out
Normal file
232
Test/baseResults/spv.bitCast.frag.out
Normal file
|
|
@ -0,0 +1,232 @@
|
||||||
|
spv.bitCast.frag
|
||||||
|
Warning, version 450 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 172
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 154
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 450
|
||||||
|
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"
|
||||||
|
Name 154 "fragColor"
|
||||||
|
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 UniformConstant 12(float)
|
||||||
|
14(f1): 13(ptr) Variable UniformConstant
|
||||||
|
17: TypeInt 32 0
|
||||||
|
18: 17(int) Constant 0
|
||||||
|
19: TypePointer Function 6(int)
|
||||||
|
24: TypeVector 12(float) 2
|
||||||
|
25: TypePointer UniformConstant 24(fvec2)
|
||||||
|
26(f2): 25(ptr) Variable UniformConstant
|
||||||
|
28: TypeVector 6(int) 2
|
||||||
|
35: TypeVector 12(float) 3
|
||||||
|
36: TypePointer UniformConstant 35(fvec3)
|
||||||
|
37(f3): 36(ptr) Variable UniformConstant
|
||||||
|
39: TypeVector 6(int) 3
|
||||||
|
46: TypeVector 12(float) 4
|
||||||
|
47: TypePointer UniformConstant 46(fvec4)
|
||||||
|
48(f4): 47(ptr) Variable UniformConstant
|
||||||
|
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 UniformConstant 6(int)
|
||||||
|
89(i1): 88(ptr) Variable UniformConstant
|
||||||
|
92: TypePointer Function 12(float)
|
||||||
|
97: TypePointer UniformConstant 28(ivec2)
|
||||||
|
98(i2): 97(ptr) Variable UniformConstant
|
||||||
|
106: TypePointer UniformConstant 39(ivec3)
|
||||||
|
107(i3): 106(ptr) Variable UniformConstant
|
||||||
|
115: TypePointer UniformConstant 7(ivec4)
|
||||||
|
116(i4): 115(ptr) Variable UniformConstant
|
||||||
|
121: TypePointer UniformConstant 17(int)
|
||||||
|
122(u1): 121(ptr) Variable UniformConstant
|
||||||
|
129: TypePointer UniformConstant 65(ivec2)
|
||||||
|
130(u2): 129(ptr) Variable UniformConstant
|
||||||
|
138: TypePointer UniformConstant 73(ivec3)
|
||||||
|
139(u3): 138(ptr) Variable UniformConstant
|
||||||
|
147: TypePointer UniformConstant 53(ivec4)
|
||||||
|
148(u4): 147(ptr) Variable UniformConstant
|
||||||
|
153: TypePointer Output 46(fvec4)
|
||||||
|
154(fragColor): 153(ptr) Variable Output
|
||||||
|
159: TypeBool
|
||||||
|
160: TypeVector 159(bool) 4
|
||||||
|
168: 12(float) Constant 1045220557
|
||||||
|
169: 46(fvec4) ConstantComposite 168 168 168 168
|
||||||
|
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
|
||||||
|
155: 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
|
||||||
|
156: 7(ivec4) Load 9(idata)
|
||||||
|
157: 53(ivec4) Bitcast 156
|
||||||
|
158: 53(ivec4) Load 55(udata)
|
||||||
|
161: 160(bvec4) IEqual 157 158
|
||||||
|
162: 159(bool) All 161
|
||||||
|
SelectionMerge 164 None
|
||||||
|
BranchConditional 162 163 166
|
||||||
|
163: Label
|
||||||
|
165: 46(fvec4) Load 85(fdata)
|
||||||
|
Store 155 165
|
||||||
|
Branch 164
|
||||||
|
166: Label
|
||||||
|
167: 46(fvec4) Load 85(fdata)
|
||||||
|
170: 46(fvec4) FAdd 167 169
|
||||||
|
Store 155 170
|
||||||
|
Branch 164
|
||||||
|
164: Label
|
||||||
|
171: 46(fvec4) Load 155
|
||||||
|
Store 154(fragColor) 171
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
98
Test/baseResults/spv.bool.vert.out
Normal file
98
Test/baseResults/spv.bool.vert.out
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
spv.bool.vert
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
|
||||||
|
Linked vertex stage:
|
||||||
|
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 49
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 23 47 48
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 10 "foo(b1;"
|
||||||
|
Name 9 "b"
|
||||||
|
Name 21 "gl_PerVertex"
|
||||||
|
MemberName 21(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 21(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 21(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 21(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 23 ""
|
||||||
|
Name 28 "ubname"
|
||||||
|
MemberName 28(ubname) 0 "b"
|
||||||
|
Name 30 "ubinst"
|
||||||
|
Name 31 "param"
|
||||||
|
Name 47 "gl_VertexID"
|
||||||
|
Name 48 "gl_InstanceID"
|
||||||
|
MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 21(gl_PerVertex) Block
|
||||||
|
Decorate 28(ubname) GLSLShared
|
||||||
|
Decorate 28(ubname) Block
|
||||||
|
Decorate 47(gl_VertexID) BuiltIn VertexId
|
||||||
|
Decorate 48(gl_InstanceID) BuiltIn InstanceId
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeBool
|
||||||
|
7: TypePointer Function 6(bool)
|
||||||
|
8: TypeFunction 6(bool) 7(ptr)
|
||||||
|
13: 6(bool) ConstantFalse
|
||||||
|
16: TypeFloat 32
|
||||||
|
17: TypeVector 16(float) 4
|
||||||
|
18: TypeInt 32 0
|
||||||
|
19: 18(int) Constant 1
|
||||||
|
20: TypeArray 16(float) 19
|
||||||
|
21(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 20 20
|
||||||
|
22: TypePointer Output 21(gl_PerVertex)
|
||||||
|
23: 22(ptr) Variable Output
|
||||||
|
24: TypeInt 32 1
|
||||||
|
25: 24(int) Constant 0
|
||||||
|
26: TypePointer Function 17(fvec4)
|
||||||
|
28(ubname): TypeStruct 6(bool)
|
||||||
|
29: TypePointer Uniform 28(ubname)
|
||||||
|
30(ubinst): 29(ptr) Variable Uniform
|
||||||
|
32: TypePointer Uniform 6(bool)
|
||||||
|
38: 16(float) Constant 0
|
||||||
|
39: 17(fvec4) ConstantComposite 38 38 38 38
|
||||||
|
41: 16(float) Constant 1065353216
|
||||||
|
42: 17(fvec4) ConstantComposite 41 41 41 41
|
||||||
|
44: TypePointer Output 17(fvec4)
|
||||||
|
46: TypePointer Input 24(int)
|
||||||
|
47(gl_VertexID): 46(ptr) Variable Input
|
||||||
|
48(gl_InstanceID): 46(ptr) Variable Input
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
27: 26(ptr) Variable Function
|
||||||
|
31(param): 7(ptr) Variable Function
|
||||||
|
33: 32(ptr) AccessChain 30(ubinst) 25
|
||||||
|
34: 6(bool) Load 33
|
||||||
|
Store 31(param) 34
|
||||||
|
35: 6(bool) FunctionCall 10(foo(b1;) 31(param)
|
||||||
|
SelectionMerge 37 None
|
||||||
|
BranchConditional 35 36 40
|
||||||
|
36: Label
|
||||||
|
Store 27 39
|
||||||
|
Branch 37
|
||||||
|
40: Label
|
||||||
|
Store 27 42
|
||||||
|
Branch 37
|
||||||
|
37: Label
|
||||||
|
43: 17(fvec4) Load 27
|
||||||
|
45: 44(ptr) AccessChain 23 25
|
||||||
|
Store 45 43
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
10(foo(b1;): 6(bool) Function None 8
|
||||||
|
9(b): 7(ptr) FunctionParameter
|
||||||
|
11: Label
|
||||||
|
12: 6(bool) Load 9(b)
|
||||||
|
14: 6(bool) INotEqual 12 13
|
||||||
|
ReturnValue 14
|
||||||
|
FunctionEnd
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 17
|
EntryPoint Fragment 4 "main" 17 34
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 39 446 448 157 53 450 452 454
|
EntryPoint Fragment 4 "main" 39 53 157 322 446 448 450 452 454
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 16
|
EntryPoint Fragment 4 "main" 12 16
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 18
|
EntryPoint Fragment 4 "main" 12 18
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 27 24 38
|
EntryPoint Vertex 4 "main" 24 27 33 38
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "i"
|
Name 8 "i"
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,206 @@ spv.deepRvalue.frag
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
Missing functionality: binary operation on matrix
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 155
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 149
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 330
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "v1"
|
||||||
|
Name 15 "v2"
|
||||||
|
Name 21 "v3"
|
||||||
|
Name 27 "v4"
|
||||||
|
Name 35 "m"
|
||||||
|
Name 63 "mm"
|
||||||
|
Name 80 "f"
|
||||||
|
Name 87 "g"
|
||||||
|
Name 106 "h"
|
||||||
|
Name 107 "i"
|
||||||
|
Name 111 "samp2D"
|
||||||
|
Name 134 "str"
|
||||||
|
MemberName 134(str) 0 "a"
|
||||||
|
MemberName 134(str) 1 "b"
|
||||||
|
MemberName 134(str) 2 "c"
|
||||||
|
Name 136 "t"
|
||||||
|
Name 149 "gl_FragColor"
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Private 7(fvec4)
|
||||||
|
9(v1): 8(ptr) Variable Private
|
||||||
|
10: 6(float) Constant 1073741824
|
||||||
|
11: 6(float) Constant 1077936128
|
||||||
|
12: 6(float) Constant 1084227584
|
||||||
|
13: 6(float) Constant 1088421888
|
||||||
|
14: 7(fvec4) ConstantComposite 10 11 12 13
|
||||||
|
15(v2): 8(ptr) Variable Private
|
||||||
|
16: 6(float) Constant 1093664768
|
||||||
|
17: 6(float) Constant 1095761920
|
||||||
|
18: 6(float) Constant 1099431936
|
||||||
|
19: 6(float) Constant 1100480512
|
||||||
|
20: 7(fvec4) ConstantComposite 16 17 18 19
|
||||||
|
21(v3): 8(ptr) Variable Private
|
||||||
|
22: 6(float) Constant 1102577664
|
||||||
|
23: 6(float) Constant 1105723392
|
||||||
|
24: 6(float) Constant 1106771968
|
||||||
|
25: 6(float) Constant 1108606976
|
||||||
|
26: 7(fvec4) ConstantComposite 22 23 24 25
|
||||||
|
27(v4): 8(ptr) Variable Private
|
||||||
|
28: 6(float) Constant 1109655552
|
||||||
|
29: 6(float) Constant 1110179840
|
||||||
|
30: 6(float) Constant 1111228416
|
||||||
|
31: 6(float) Constant 1112801280
|
||||||
|
32: 7(fvec4) ConstantComposite 28 29 30 31
|
||||||
|
33: TypeMatrix 7(fvec4) 4
|
||||||
|
34: TypePointer Function 33
|
||||||
|
40: 6(float) Constant 1065353216
|
||||||
|
41: 6(float) Constant 0
|
||||||
|
79: TypePointer Function 6(float)
|
||||||
|
81: TypeInt 32 1
|
||||||
|
82: 81(int) Constant 1
|
||||||
|
83: TypeInt 32 0
|
||||||
|
84: 83(int) Constant 3
|
||||||
|
103: 81(int) Constant 2
|
||||||
|
104: 83(int) Constant 1
|
||||||
|
108: TypeImage 6(float) 2D sampled format:Unknown
|
||||||
|
109: TypeSampledImage 108
|
||||||
|
110: TypePointer UniformConstant 109
|
||||||
|
111(samp2D): 110(ptr) Variable UniformConstant
|
||||||
|
113: TypeVector 6(float) 2
|
||||||
|
114: 6(float) Constant 1056964608
|
||||||
|
115: 113(fvec2) ConstantComposite 114 114
|
||||||
|
118: TypePointer Function 7(fvec4)
|
||||||
|
121: 6(float) Constant 1036831949
|
||||||
|
122: TypeBool
|
||||||
|
133: TypeArray 113(fvec2) 84
|
||||||
|
134(str): TypeStruct 81(int) 133 122(bool)
|
||||||
|
135: TypePointer Function 134(str)
|
||||||
|
137: 113(fvec2) ConstantComposite 10 11
|
||||||
|
138: 6(float) Constant 1082130432
|
||||||
|
139: 113(fvec2) ConstantComposite 138 12
|
||||||
|
140: 6(float) Constant 1086324736
|
||||||
|
141: 113(fvec2) ConstantComposite 140 13
|
||||||
|
142: 133 ConstantComposite 137 139 141
|
||||||
|
143: 122(bool) ConstantTrue
|
||||||
|
144: 134(str) ConstantComposite 82 142 143
|
||||||
|
148: TypePointer Output 7(fvec4)
|
||||||
|
149(gl_FragColor): 148(ptr) Variable Output
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
35(m): 34(ptr) Variable Function
|
||||||
|
63(mm): 34(ptr) Variable Function
|
||||||
|
80(f): 79(ptr) Variable Function
|
||||||
|
87(g): 79(ptr) Variable Function
|
||||||
|
106(h): 79(ptr) Variable Function
|
||||||
|
107(i): 79(ptr) Variable Function
|
||||||
|
119: 118(ptr) Variable Function
|
||||||
|
136(t): 135(ptr) Variable Function
|
||||||
|
Store 9(v1) 14
|
||||||
|
Store 15(v2) 20
|
||||||
|
Store 21(v3) 26
|
||||||
|
Store 27(v4) 32
|
||||||
|
36: 7(fvec4) Load 9(v1)
|
||||||
|
37: 7(fvec4) Load 15(v2)
|
||||||
|
38: 7(fvec4) Load 21(v3)
|
||||||
|
39: 7(fvec4) Load 27(v4)
|
||||||
|
42: 6(float) CompositeExtract 36 0
|
||||||
|
43: 6(float) CompositeExtract 36 1
|
||||||
|
44: 6(float) CompositeExtract 36 2
|
||||||
|
45: 6(float) CompositeExtract 36 3
|
||||||
|
46: 6(float) CompositeExtract 37 0
|
||||||
|
47: 6(float) CompositeExtract 37 1
|
||||||
|
48: 6(float) CompositeExtract 37 2
|
||||||
|
49: 6(float) CompositeExtract 37 3
|
||||||
|
50: 6(float) CompositeExtract 38 0
|
||||||
|
51: 6(float) CompositeExtract 38 1
|
||||||
|
52: 6(float) CompositeExtract 38 2
|
||||||
|
53: 6(float) CompositeExtract 38 3
|
||||||
|
54: 6(float) CompositeExtract 39 0
|
||||||
|
55: 6(float) CompositeExtract 39 1
|
||||||
|
56: 6(float) CompositeExtract 39 2
|
||||||
|
57: 6(float) CompositeExtract 39 3
|
||||||
|
58: 7(fvec4) CompositeConstruct 42 43 44 45
|
||||||
|
59: 7(fvec4) CompositeConstruct 46 47 48 49
|
||||||
|
60: 7(fvec4) CompositeConstruct 50 51 52 53
|
||||||
|
61: 7(fvec4) CompositeConstruct 54 55 56 57
|
||||||
|
62: 33 CompositeConstruct 58 59 60 61
|
||||||
|
Store 35(m) 62
|
||||||
|
64: 33 Load 35(m)
|
||||||
|
65: 33 Load 35(m)
|
||||||
|
66: 7(fvec4) CompositeExtract 64 0
|
||||||
|
67: 7(fvec4) CompositeExtract 65 0
|
||||||
|
68: 7(fvec4) FMul 66 67
|
||||||
|
69: 7(fvec4) CompositeExtract 64 1
|
||||||
|
70: 7(fvec4) CompositeExtract 65 1
|
||||||
|
71: 7(fvec4) FMul 69 70
|
||||||
|
72: 7(fvec4) CompositeExtract 64 2
|
||||||
|
73: 7(fvec4) CompositeExtract 65 2
|
||||||
|
74: 7(fvec4) FMul 72 73
|
||||||
|
75: 7(fvec4) CompositeExtract 64 3
|
||||||
|
76: 7(fvec4) CompositeExtract 65 3
|
||||||
|
77: 7(fvec4) FMul 75 76
|
||||||
|
78: 33 CompositeConstruct 68 71 74 77
|
||||||
|
Store 63(mm) 78
|
||||||
|
85: 79(ptr) AccessChain 63(mm) 82 84
|
||||||
|
86: 6(float) Load 85
|
||||||
|
Store 80(f) 86
|
||||||
|
88: 33 Load 35(m)
|
||||||
|
89: 33 Load 35(m)
|
||||||
|
90: 7(fvec4) CompositeExtract 88 0
|
||||||
|
91: 7(fvec4) CompositeExtract 89 0
|
||||||
|
92: 7(fvec4) FMul 90 91
|
||||||
|
93: 7(fvec4) CompositeExtract 88 1
|
||||||
|
94: 7(fvec4) CompositeExtract 89 1
|
||||||
|
95: 7(fvec4) FMul 93 94
|
||||||
|
96: 7(fvec4) CompositeExtract 88 2
|
||||||
|
97: 7(fvec4) CompositeExtract 89 2
|
||||||
|
98: 7(fvec4) FMul 96 97
|
||||||
|
99: 7(fvec4) CompositeExtract 88 3
|
||||||
|
100: 7(fvec4) CompositeExtract 89 3
|
||||||
|
101: 7(fvec4) FMul 99 100
|
||||||
|
102: 33 CompositeConstruct 92 95 98 101
|
||||||
|
105: 6(float) CompositeExtract 102 2 1
|
||||||
|
Store 87(g) 105
|
||||||
|
Store 106(h) 12
|
||||||
|
112: 109 Load 111(samp2D)
|
||||||
|
116: 7(fvec4) ImageSampleImplicitLod 112 115
|
||||||
|
117: 6(float) CompositeExtract 116 1
|
||||||
|
Store 107(i) 117
|
||||||
|
120: 6(float) Load 107(i)
|
||||||
|
123: 122(bool) FOrdGreaterThan 120 121
|
||||||
|
SelectionMerge 125 None
|
||||||
|
BranchConditional 123 124 127
|
||||||
|
124: Label
|
||||||
|
126: 7(fvec4) Load 9(v1)
|
||||||
|
Store 119 126
|
||||||
|
Branch 125
|
||||||
|
127: Label
|
||||||
|
128: 7(fvec4) Load 15(v2)
|
||||||
|
Store 119 128
|
||||||
|
Branch 125
|
||||||
|
125: Label
|
||||||
|
129: 79(ptr) AccessChain 119 84
|
||||||
|
130: 6(float) Load 129
|
||||||
|
131: 6(float) Load 107(i)
|
||||||
|
132: 6(float) FAdd 131 130
|
||||||
|
Store 107(i) 132
|
||||||
|
Store 136(t) 144
|
||||||
|
145: 6(float) CompositeExtract 144 1 2 1
|
||||||
|
146: 6(float) Load 107(i)
|
||||||
|
147: 6(float) FAdd 146 145
|
||||||
|
Store 107(i) 147
|
||||||
|
150: 6(float) Load 80(f)
|
||||||
|
151: 6(float) Load 87(g)
|
||||||
|
152: 6(float) Load 106(h)
|
||||||
|
153: 6(float) Load 107(i)
|
||||||
|
154: 7(fvec4) CompositeConstruct 150 151 152 153
|
||||||
|
Store 149(gl_FragColor) 154
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 14 10 8 8
|
EntryPoint Fragment 4 "main" 8 10 14
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
ExecutionMode 4 DepthGreater
|
ExecutionMode 4 DepthGreater
|
||||||
ExecutionMode 4 DepthReplacing
|
ExecutionMode 4 DepthReplacing
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 21
|
EntryPoint Fragment 4 "main" 21 59
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 110
|
Source GLSL 110
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 11
|
EntryPoint Fragment 4 "main" 11 33
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 110
|
Source GLSL 110
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked compute stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint GLCompute 4 "main"
|
EntryPoint GLCompute 4 "main" 26 33
|
||||||
ExecutionMode 4 LocalSize 1 1 1
|
ExecutionMode 4 LocalSize 1 1 1
|
||||||
Source GLSL 430
|
Source GLSL 430
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 18 11
|
EntryPoint Fragment 4 "main" 11 18 107
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 110
|
Source GLSL 110
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 18 11
|
EntryPoint Fragment 4 "main" 11 18 37
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 120
|
Source GLSL 120
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 11 101
|
EntryPoint Fragment 4 "main" 11 36 101
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 20
|
EntryPoint Fragment 4 "main" 20 30
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source ESSL 100
|
Source ESSL 100
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 57
|
EntryPoint Fragment 4 "main" 57 68
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main"
|
EntryPoint Fragment 4 "main" 149
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -333,7 +333,7 @@ Linked fragment stage:
|
||||||
214: 96 Load 98(i2DMS)
|
214: 96 Load 98(i2DMS)
|
||||||
215: 29(ivec2) Load 142(ic2D)
|
215: 29(ivec2) Load 142(ic2D)
|
||||||
217: 125(fvec4) Load 127(v)
|
217: 125(fvec4) Load 127(v)
|
||||||
ImageWrite 214 215 216
|
ImageWrite 214 215 217 Sample 216
|
||||||
218: 106 Load 108(i2DMSArray)
|
218: 106 Load 108(i2DMSArray)
|
||||||
219: 7(ivec3) Load 152(ic3D)
|
219: 7(ivec3) Load 152(ic3D)
|
||||||
221: 125(fvec4) ImageRead 218 219 Sample 220
|
221: 125(fvec4) ImageRead 218 219 Sample 220
|
||||||
|
|
@ -343,7 +343,7 @@ Linked fragment stage:
|
||||||
224: 106 Load 108(i2DMSArray)
|
224: 106 Load 108(i2DMSArray)
|
||||||
225: 7(ivec3) Load 152(ic3D)
|
225: 7(ivec3) Load 152(ic3D)
|
||||||
227: 125(fvec4) Load 127(v)
|
227: 125(fvec4) Load 127(v)
|
||||||
ImageWrite 224 225 226
|
ImageWrite 224 225 227 Sample 226
|
||||||
Store 229(ui) 19
|
Store 229(ui) 19
|
||||||
233: 6(int) Load 132(ic1D)
|
233: 6(int) Load 132(ic1D)
|
||||||
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 0
|
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 0
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 47 26 173 67 121 142 100 247 156 146 182 83 15 9 21 268 269
|
EntryPoint Vertex 4 "main" 9 15 21 26 47 67 83 100 121 142 146 156 173 182 247 268 269
|
||||||
Source ESSL 310
|
Source ESSL 310
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "iout"
|
Name 9 "iout"
|
||||||
|
|
|
||||||
141
Test/baseResults/spv.interpOps.frag.out
Normal file
141
Test/baseResults/spv.interpOps.frag.out
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
spv.interpOps.frag
|
||||||
|
Warning, version 450 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 101
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 13 24 33 41 99
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "f4"
|
||||||
|
Name 13 "if1"
|
||||||
|
Name 24 "if2"
|
||||||
|
Name 33 "if3"
|
||||||
|
Name 41 "if4"
|
||||||
|
Name 47 "samp"
|
||||||
|
Name 73 "offset"
|
||||||
|
Name 99 "fragColor"
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Function 7(fvec4)
|
||||||
|
10: 6(float) Constant 0
|
||||||
|
11: 7(fvec4) ConstantComposite 10 10 10 10
|
||||||
|
12: TypePointer Input 6(float)
|
||||||
|
13(if1): 12(ptr) Variable Input
|
||||||
|
15: TypeInt 32 0
|
||||||
|
16: 15(int) Constant 0
|
||||||
|
17: TypePointer Function 6(float)
|
||||||
|
22: TypeVector 6(float) 2
|
||||||
|
23: TypePointer Input 22(fvec2)
|
||||||
|
24(if2): 23(ptr) Variable Input
|
||||||
|
31: TypeVector 6(float) 3
|
||||||
|
32: TypePointer Input 31(fvec3)
|
||||||
|
33(if3): 32(ptr) Variable Input
|
||||||
|
40: TypePointer Input 7(fvec4)
|
||||||
|
41(if4): 40(ptr) Variable Input
|
||||||
|
45: TypeInt 32 1
|
||||||
|
46: TypePointer UniformConstant 45(int)
|
||||||
|
47(samp): 46(ptr) Variable UniformConstant
|
||||||
|
72: TypePointer UniformConstant 22(fvec2)
|
||||||
|
73(offset): 72(ptr) Variable UniformConstant
|
||||||
|
98: TypePointer Output 7(fvec4)
|
||||||
|
99(fragColor): 98(ptr) Variable Output
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
9(f4): 8(ptr) Variable Function
|
||||||
|
Store 9(f4) 11
|
||||||
|
14: 6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 13(if1)
|
||||||
|
18: 17(ptr) AccessChain 9(f4) 16
|
||||||
|
19: 6(float) Load 18
|
||||||
|
20: 6(float) FAdd 19 14
|
||||||
|
21: 17(ptr) AccessChain 9(f4) 16
|
||||||
|
Store 21 20
|
||||||
|
25: 22(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 24(if2)
|
||||||
|
26: 7(fvec4) Load 9(f4)
|
||||||
|
27: 22(fvec2) VectorShuffle 26 26 0 1
|
||||||
|
28: 22(fvec2) FAdd 27 25
|
||||||
|
29: 7(fvec4) Load 9(f4)
|
||||||
|
30: 7(fvec4) VectorShuffle 29 28 4 5 2 3
|
||||||
|
Store 9(f4) 30
|
||||||
|
34: 31(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 33(if3)
|
||||||
|
35: 7(fvec4) Load 9(f4)
|
||||||
|
36: 31(fvec3) VectorShuffle 35 35 0 1 2
|
||||||
|
37: 31(fvec3) FAdd 36 34
|
||||||
|
38: 7(fvec4) Load 9(f4)
|
||||||
|
39: 7(fvec4) VectorShuffle 38 37 4 5 6 3
|
||||||
|
Store 9(f4) 39
|
||||||
|
42: 7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 41(if4)
|
||||||
|
43: 7(fvec4) Load 9(f4)
|
||||||
|
44: 7(fvec4) FAdd 43 42
|
||||||
|
Store 9(f4) 44
|
||||||
|
48: 45(int) Load 47(samp)
|
||||||
|
49: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 48
|
||||||
|
50: 17(ptr) AccessChain 9(f4) 16
|
||||||
|
51: 6(float) Load 50
|
||||||
|
52: 6(float) FAdd 51 49
|
||||||
|
53: 17(ptr) AccessChain 9(f4) 16
|
||||||
|
Store 53 52
|
||||||
|
54: 45(int) Load 47(samp)
|
||||||
|
55: 22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 54
|
||||||
|
56: 7(fvec4) Load 9(f4)
|
||||||
|
57: 22(fvec2) VectorShuffle 56 56 0 1
|
||||||
|
58: 22(fvec2) FAdd 57 55
|
||||||
|
59: 7(fvec4) Load 9(f4)
|
||||||
|
60: 7(fvec4) VectorShuffle 59 58 4 5 2 3
|
||||||
|
Store 9(f4) 60
|
||||||
|
61: 45(int) Load 47(samp)
|
||||||
|
62: 31(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 33(if3) 61
|
||||||
|
63: 7(fvec4) Load 9(f4)
|
||||||
|
64: 31(fvec3) VectorShuffle 63 63 0 1 2
|
||||||
|
65: 31(fvec3) FAdd 64 62
|
||||||
|
66: 7(fvec4) Load 9(f4)
|
||||||
|
67: 7(fvec4) VectorShuffle 66 65 4 5 6 3
|
||||||
|
Store 9(f4) 67
|
||||||
|
68: 45(int) Load 47(samp)
|
||||||
|
69: 7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 41(if4) 68
|
||||||
|
70: 7(fvec4) Load 9(f4)
|
||||||
|
71: 7(fvec4) FAdd 70 69
|
||||||
|
Store 9(f4) 71
|
||||||
|
74: 22(fvec2) Load 73(offset)
|
||||||
|
75: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 74
|
||||||
|
76: 17(ptr) AccessChain 9(f4) 16
|
||||||
|
77: 6(float) Load 76
|
||||||
|
78: 6(float) FAdd 77 75
|
||||||
|
79: 17(ptr) AccessChain 9(f4) 16
|
||||||
|
Store 79 78
|
||||||
|
80: 22(fvec2) Load 73(offset)
|
||||||
|
81: 22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 80
|
||||||
|
82: 7(fvec4) Load 9(f4)
|
||||||
|
83: 22(fvec2) VectorShuffle 82 82 0 1
|
||||||
|
84: 22(fvec2) FAdd 83 81
|
||||||
|
85: 7(fvec4) Load 9(f4)
|
||||||
|
86: 7(fvec4) VectorShuffle 85 84 4 5 2 3
|
||||||
|
Store 9(f4) 86
|
||||||
|
87: 22(fvec2) Load 73(offset)
|
||||||
|
88: 31(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33(if3) 87
|
||||||
|
89: 7(fvec4) Load 9(f4)
|
||||||
|
90: 31(fvec3) VectorShuffle 89 89 0 1 2
|
||||||
|
91: 31(fvec3) FAdd 90 88
|
||||||
|
92: 7(fvec4) Load 9(f4)
|
||||||
|
93: 7(fvec4) VectorShuffle 92 91 4 5 6 3
|
||||||
|
Store 9(f4) 93
|
||||||
|
94: 22(fvec2) Load 73(offset)
|
||||||
|
95: 7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 41(if4) 94
|
||||||
|
96: 7(fvec4) Load 9(f4)
|
||||||
|
97: 7(fvec4) FAdd 96 95
|
||||||
|
Store 9(f4) 97
|
||||||
|
100: 7(fvec4) Load 9(f4)
|
||||||
|
Store 99(fragColor) 100
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
249
Test/baseResults/spv.layoutNested.vert.out
Normal file
249
Test/baseResults/spv.layoutNested.vert.out
Normal file
|
|
@ -0,0 +1,249 @@
|
||||||
|
spv.layoutNested.vert
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
|
||||||
|
Linked vertex stage:
|
||||||
|
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 70
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 63 66 68 69
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 14 "S"
|
||||||
|
MemberName 14(S) 0 "a"
|
||||||
|
MemberName 14(S) 1 "b"
|
||||||
|
MemberName 14(S) 2 "c"
|
||||||
|
Name 19 "Block140"
|
||||||
|
MemberName 19(Block140) 0 "u"
|
||||||
|
MemberName 19(Block140) 1 "s"
|
||||||
|
MemberName 19(Block140) 2 "v"
|
||||||
|
Name 21 "inst140"
|
||||||
|
Name 23 "S"
|
||||||
|
MemberName 23(S) 0 "a"
|
||||||
|
MemberName 23(S) 1 "b"
|
||||||
|
MemberName 23(S) 2 "c"
|
||||||
|
Name 26 "Block430"
|
||||||
|
MemberName 26(Block430) 0 "u"
|
||||||
|
MemberName 26(Block430) 1 "s"
|
||||||
|
MemberName 26(Block430) 2 "v"
|
||||||
|
Name 28 "inst430"
|
||||||
|
Name 29 "S"
|
||||||
|
MemberName 29(S) 0 "a"
|
||||||
|
MemberName 29(S) 1 "b"
|
||||||
|
MemberName 29(S) 2 "c"
|
||||||
|
Name 31 "s"
|
||||||
|
Name 32 "T"
|
||||||
|
MemberName 32(T) 0 "m"
|
||||||
|
MemberName 32(T) 1 "a"
|
||||||
|
Name 34 "t"
|
||||||
|
Name 35 "T"
|
||||||
|
MemberName 35(T) 0 "m"
|
||||||
|
MemberName 35(T) 1 "a"
|
||||||
|
Name 36 "Nestor"
|
||||||
|
MemberName 36(Nestor) 0 "nestorT"
|
||||||
|
Name 37 "Bt1"
|
||||||
|
MemberName 37(Bt1) 0 "nt"
|
||||||
|
Name 39 "Btn1"
|
||||||
|
Name 40 "T"
|
||||||
|
MemberName 40(T) 0 "m"
|
||||||
|
MemberName 40(T) 1 "a"
|
||||||
|
Name 41 "Nestor"
|
||||||
|
MemberName 41(Nestor) 0 "nestorT"
|
||||||
|
Name 42 "Bt2"
|
||||||
|
MemberName 42(Bt2) 0 "nt"
|
||||||
|
Name 44 "Btn2"
|
||||||
|
Name 45 "Bt3"
|
||||||
|
MemberName 45(Bt3) 0 "ntcol"
|
||||||
|
MemberName 45(Bt3) 1 "ntrow"
|
||||||
|
Name 47 "Btn3"
|
||||||
|
Name 48 "T"
|
||||||
|
MemberName 48(T) 0 "m"
|
||||||
|
MemberName 48(T) 1 "a"
|
||||||
|
Name 49 "Nestor"
|
||||||
|
MemberName 49(Nestor) 0 "nestorT"
|
||||||
|
Name 50 "bBt1"
|
||||||
|
MemberName 50(bBt1) 0 "nt"
|
||||||
|
Name 52 "bBtn1"
|
||||||
|
Name 53 "T"
|
||||||
|
MemberName 53(T) 0 "m"
|
||||||
|
MemberName 53(T) 1 "a"
|
||||||
|
Name 54 "Nestor"
|
||||||
|
MemberName 54(Nestor) 0 "nestorT"
|
||||||
|
Name 55 "bBt2"
|
||||||
|
MemberName 55(bBt2) 0 "nt"
|
||||||
|
Name 57 "bBtn2"
|
||||||
|
Name 58 "bBt3"
|
||||||
|
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 68 "gl_VertexID"
|
||||||
|
Name 69 "gl_InstanceID"
|
||||||
|
Decorate 13 ArrayStride 32
|
||||||
|
MemberDecorate 14(S) 0 Offset 0
|
||||||
|
MemberDecorate 14(S) 1 ColMajor
|
||||||
|
MemberDecorate 14(S) 1 Offset 16
|
||||||
|
MemberDecorate 14(S) 1 MatrixStride 16
|
||||||
|
MemberDecorate 14(S) 2 Offset 144
|
||||||
|
Decorate 16 ArrayStride 160
|
||||||
|
Decorate 18 ArrayStride 480
|
||||||
|
MemberDecorate 19(Block140) 0 Offset 0
|
||||||
|
MemberDecorate 19(Block140) 1 Offset 16
|
||||||
|
MemberDecorate 19(Block140) 2 Offset 976
|
||||||
|
Decorate 19(Block140) Block
|
||||||
|
Decorate 21(inst140) DescriptorSet 0
|
||||||
|
Decorate 21(inst140) Binding 0
|
||||||
|
Decorate 22 ArrayStride 16
|
||||||
|
MemberDecorate 23(S) 0 Offset 0
|
||||||
|
MemberDecorate 23(S) 1 ColMajor
|
||||||
|
MemberDecorate 23(S) 1 Offset 16
|
||||||
|
MemberDecorate 23(S) 1 MatrixStride 8
|
||||||
|
MemberDecorate 23(S) 2 Offset 80
|
||||||
|
Decorate 24 ArrayStride 96
|
||||||
|
Decorate 25 ArrayStride 288
|
||||||
|
MemberDecorate 26(Block430) 0 Offset 0
|
||||||
|
MemberDecorate 26(Block430) 1 Offset 16
|
||||||
|
MemberDecorate 26(Block430) 2 Offset 592
|
||||||
|
Decorate 26(Block430) BufferBlock
|
||||||
|
Decorate 28(inst430) DescriptorSet 0
|
||||||
|
Decorate 28(inst430) Binding 1
|
||||||
|
MemberDecorate 35(T) 0 RowMajor
|
||||||
|
MemberDecorate 35(T) 0 Offset 0
|
||||||
|
MemberDecorate 35(T) 0 MatrixStride 16
|
||||||
|
MemberDecorate 35(T) 1 Offset 32
|
||||||
|
MemberDecorate 36(Nestor) 0 Offset 0
|
||||||
|
MemberDecorate 37(Bt1) 0 Offset 0
|
||||||
|
Decorate 37(Bt1) Block
|
||||||
|
Decorate 39(Btn1) DescriptorSet 1
|
||||||
|
Decorate 39(Btn1) Binding 0
|
||||||
|
MemberDecorate 40(T) 0 ColMajor
|
||||||
|
MemberDecorate 40(T) 0 Offset 0
|
||||||
|
MemberDecorate 40(T) 0 MatrixStride 16
|
||||||
|
MemberDecorate 40(T) 1 Offset 32
|
||||||
|
MemberDecorate 41(Nestor) 0 Offset 0
|
||||||
|
MemberDecorate 42(Bt2) 0 Offset 0
|
||||||
|
Decorate 42(Bt2) Block
|
||||||
|
Decorate 44(Btn2) DescriptorSet 1
|
||||||
|
Decorate 44(Btn2) Binding 0
|
||||||
|
MemberDecorate 45(Bt3) 0 Offset 0
|
||||||
|
MemberDecorate 45(Bt3) 1 Offset 48
|
||||||
|
Decorate 45(Bt3) Block
|
||||||
|
Decorate 47(Btn3) DescriptorSet 1
|
||||||
|
Decorate 47(Btn3) Binding 0
|
||||||
|
MemberDecorate 48(T) 0 RowMajor
|
||||||
|
MemberDecorate 48(T) 0 Offset 0
|
||||||
|
MemberDecorate 48(T) 0 MatrixStride 8
|
||||||
|
MemberDecorate 48(T) 1 Offset 16
|
||||||
|
MemberDecorate 49(Nestor) 0 Offset 0
|
||||||
|
MemberDecorate 50(bBt1) 0 Offset 0
|
||||||
|
Decorate 50(bBt1) BufferBlock
|
||||||
|
Decorate 52(bBtn1) DescriptorSet 1
|
||||||
|
Decorate 52(bBtn1) Binding 0
|
||||||
|
MemberDecorate 53(T) 0 ColMajor
|
||||||
|
MemberDecorate 53(T) 0 Offset 0
|
||||||
|
MemberDecorate 53(T) 0 MatrixStride 8
|
||||||
|
MemberDecorate 53(T) 1 Offset 16
|
||||||
|
MemberDecorate 54(Nestor) 0 Offset 0
|
||||||
|
MemberDecorate 55(bBt2) 0 Offset 0
|
||||||
|
Decorate 55(bBt2) BufferBlock
|
||||||
|
Decorate 57(bBtn2) DescriptorSet 1
|
||||||
|
Decorate 57(bBtn2) Binding 0
|
||||||
|
MemberDecorate 58(bBt3) 0 Offset 0
|
||||||
|
MemberDecorate 58(bBt3) 1 Offset 24
|
||||||
|
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
|
||||||
|
Decorate 68(gl_VertexID) BuiltIn VertexId
|
||||||
|
Decorate 69(gl_InstanceID) BuiltIn InstanceId
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 1
|
||||||
|
7: TypeInt 32 0
|
||||||
|
8: TypeVector 7(int) 3
|
||||||
|
9: TypeFloat 32
|
||||||
|
10: TypeVector 9(float) 2
|
||||||
|
11: TypeMatrix 10(fvec2) 2
|
||||||
|
12: 7(int) Constant 4
|
||||||
|
13: TypeArray 11 12
|
||||||
|
14(S): TypeStruct 8(ivec3) 13 7(int)
|
||||||
|
15: 7(int) Constant 3
|
||||||
|
16: TypeArray 14(S) 15
|
||||||
|
17: 7(int) Constant 2
|
||||||
|
18: TypeArray 16 17
|
||||||
|
19(Block140): TypeStruct 6(int) 18 10(fvec2)
|
||||||
|
20: TypePointer Uniform 19(Block140)
|
||||||
|
21(inst140): 20(ptr) Variable Uniform
|
||||||
|
22: TypeArray 11 12
|
||||||
|
23(S): TypeStruct 8(ivec3) 22 7(int)
|
||||||
|
24: TypeArray 23(S) 15
|
||||||
|
25: TypeArray 24 17
|
||||||
|
26(Block430): TypeStruct 6(int) 25 10(fvec2)
|
||||||
|
27: TypePointer Uniform 26(Block430)
|
||||||
|
28(inst430): 27(ptr) Variable Uniform
|
||||||
|
29(S): TypeStruct 8(ivec3) 13 7(int)
|
||||||
|
30: TypePointer Private 29(S)
|
||||||
|
31(s): 30(ptr) Variable Private
|
||||||
|
32(T): TypeStruct 11 6(int)
|
||||||
|
33: TypePointer Private 32(T)
|
||||||
|
34(t): 33(ptr) Variable Private
|
||||||
|
35(T): TypeStruct 11 6(int)
|
||||||
|
36(Nestor): TypeStruct 35(T)
|
||||||
|
37(Bt1): TypeStruct 36(Nestor)
|
||||||
|
38: TypePointer Uniform 37(Bt1)
|
||||||
|
39(Btn1): 38(ptr) Variable Uniform
|
||||||
|
40(T): TypeStruct 11 6(int)
|
||||||
|
41(Nestor): TypeStruct 40(T)
|
||||||
|
42(Bt2): TypeStruct 41(Nestor)
|
||||||
|
43: TypePointer Uniform 42(Bt2)
|
||||||
|
44(Btn2): 43(ptr) Variable Uniform
|
||||||
|
45(Bt3): TypeStruct 41(Nestor) 36(Nestor)
|
||||||
|
46: TypePointer Uniform 45(Bt3)
|
||||||
|
47(Btn3): 46(ptr) Variable Uniform
|
||||||
|
48(T): TypeStruct 11 6(int)
|
||||||
|
49(Nestor): TypeStruct 48(T)
|
||||||
|
50(bBt1): TypeStruct 49(Nestor)
|
||||||
|
51: TypePointer Uniform 50(bBt1)
|
||||||
|
52(bBtn1): 51(ptr) Variable Uniform
|
||||||
|
53(T): TypeStruct 11 6(int)
|
||||||
|
54(Nestor): TypeStruct 53(T)
|
||||||
|
55(bBt2): TypeStruct 54(Nestor)
|
||||||
|
56: TypePointer Uniform 55(bBt2)
|
||||||
|
57(bBtn2): 56(ptr) Variable Uniform
|
||||||
|
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
|
||||||
|
67: TypePointer Input 6(int)
|
||||||
|
68(gl_VertexID): 67(ptr) Variable Input
|
||||||
|
69(gl_InstanceID): 67(ptr) Variable Input
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 14
|
EntryPoint Fragment 4 "main" 14 26
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 120
|
Source GLSL 120
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 40 97
|
EntryPoint Fragment 4 "main" 40 97 107
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 11
|
EntryPoint Fragment 4 "main" 11 597
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 11
|
EntryPoint Fragment 4 "main" 11 140
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 73 92
|
EntryPoint Vertex 4 "main" 69 73 92
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 14 "xf(mf33;vf3;"
|
Name 14 "xf(mf33;vf3;"
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,286 @@
|
||||||
spv.matrix.frag
|
spv.matrix.frag
|
||||||
WARNING: 0:6: varying deprecated in version 130; may be removed in future release
|
|
||||||
WARNING: 0:17: varying deprecated in version 130; may be removed in future release
|
|
||||||
WARNING: 0:22: varying deprecated in version 130; may be removed in future release
|
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
Missing functionality: Composite comparison of non-vectors
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 240
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 12 14 28 140 148 166
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 130
|
||||||
|
Name 4 "main"
|
||||||
|
Name 10 "sum34"
|
||||||
|
Name 12 "m1"
|
||||||
|
Name 14 "m2"
|
||||||
|
Name 28 "f"
|
||||||
|
Name 138 "sum3"
|
||||||
|
Name 140 "v4"
|
||||||
|
Name 145 "sum4"
|
||||||
|
Name 148 "v3"
|
||||||
|
Name 153 "m43"
|
||||||
|
Name 158 "m4"
|
||||||
|
Name 166 "color"
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypeMatrix 7(fvec4) 3
|
||||||
|
9: TypePointer Function 8
|
||||||
|
11: TypePointer Input 8
|
||||||
|
12(m1): 11(ptr) Variable Input
|
||||||
|
14(m2): 11(ptr) Variable Input
|
||||||
|
27: TypePointer Input 6(float)
|
||||||
|
28(f): 27(ptr) Variable Input
|
||||||
|
81: 6(float) Constant 1065353216
|
||||||
|
136: TypeVector 6(float) 3
|
||||||
|
137: TypePointer Function 136(fvec3)
|
||||||
|
139: TypePointer Input 7(fvec4)
|
||||||
|
140(v4): 139(ptr) Variable Input
|
||||||
|
144: TypePointer Function 7(fvec4)
|
||||||
|
147: TypePointer Input 136(fvec3)
|
||||||
|
148(v3): 147(ptr) Variable Input
|
||||||
|
151: TypeMatrix 136(fvec3) 4
|
||||||
|
152: TypePointer Function 151
|
||||||
|
156: TypeMatrix 7(fvec4) 4
|
||||||
|
157: TypePointer Function 156
|
||||||
|
165: TypePointer Output 7(fvec4)
|
||||||
|
166(color): 165(ptr) Variable Output
|
||||||
|
187: 6(float) Constant 0
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
10(sum34): 9(ptr) Variable Function
|
||||||
|
138(sum3): 137(ptr) Variable Function
|
||||||
|
145(sum4): 144(ptr) Variable Function
|
||||||
|
153(m43): 152(ptr) Variable Function
|
||||||
|
158(m4): 157(ptr) Variable Function
|
||||||
|
13: 8 Load 12(m1)
|
||||||
|
15: 8 Load 14(m2)
|
||||||
|
16: 7(fvec4) CompositeExtract 13 0
|
||||||
|
17: 7(fvec4) CompositeExtract 15 0
|
||||||
|
18: 7(fvec4) FSub 16 17
|
||||||
|
19: 7(fvec4) CompositeExtract 13 1
|
||||||
|
20: 7(fvec4) CompositeExtract 15 1
|
||||||
|
21: 7(fvec4) FSub 19 20
|
||||||
|
22: 7(fvec4) CompositeExtract 13 2
|
||||||
|
23: 7(fvec4) CompositeExtract 15 2
|
||||||
|
24: 7(fvec4) FSub 22 23
|
||||||
|
25: 8 CompositeConstruct 18 21 24
|
||||||
|
Store 10(sum34) 25
|
||||||
|
26: 8 Load 12(m1)
|
||||||
|
29: 6(float) Load 28(f)
|
||||||
|
30: 8 MatrixTimesScalar 26 29
|
||||||
|
31: 8 Load 10(sum34)
|
||||||
|
32: 7(fvec4) CompositeExtract 31 0
|
||||||
|
33: 7(fvec4) CompositeExtract 30 0
|
||||||
|
34: 7(fvec4) FAdd 32 33
|
||||||
|
35: 7(fvec4) CompositeExtract 31 1
|
||||||
|
36: 7(fvec4) CompositeExtract 30 1
|
||||||
|
37: 7(fvec4) FAdd 35 36
|
||||||
|
38: 7(fvec4) CompositeExtract 31 2
|
||||||
|
39: 7(fvec4) CompositeExtract 30 2
|
||||||
|
40: 7(fvec4) FAdd 38 39
|
||||||
|
41: 8 CompositeConstruct 34 37 40
|
||||||
|
Store 10(sum34) 41
|
||||||
|
42: 6(float) Load 28(f)
|
||||||
|
43: 8 Load 12(m1)
|
||||||
|
44: 8 MatrixTimesScalar 43 42
|
||||||
|
45: 8 Load 10(sum34)
|
||||||
|
46: 7(fvec4) CompositeExtract 45 0
|
||||||
|
47: 7(fvec4) CompositeExtract 44 0
|
||||||
|
48: 7(fvec4) FAdd 46 47
|
||||||
|
49: 7(fvec4) CompositeExtract 45 1
|
||||||
|
50: 7(fvec4) CompositeExtract 44 1
|
||||||
|
51: 7(fvec4) FAdd 49 50
|
||||||
|
52: 7(fvec4) CompositeExtract 45 2
|
||||||
|
53: 7(fvec4) CompositeExtract 44 2
|
||||||
|
54: 7(fvec4) FAdd 52 53
|
||||||
|
55: 8 CompositeConstruct 48 51 54
|
||||||
|
Store 10(sum34) 55
|
||||||
|
56: 8 Load 12(m1)
|
||||||
|
57: 8 Load 14(m2)
|
||||||
|
58: 7(fvec4) CompositeExtract 56 0
|
||||||
|
59: 7(fvec4) CompositeExtract 57 0
|
||||||
|
60: 7(fvec4) FMul 58 59
|
||||||
|
61: 7(fvec4) CompositeExtract 56 1
|
||||||
|
62: 7(fvec4) CompositeExtract 57 1
|
||||||
|
63: 7(fvec4) FMul 61 62
|
||||||
|
64: 7(fvec4) CompositeExtract 56 2
|
||||||
|
65: 7(fvec4) CompositeExtract 57 2
|
||||||
|
66: 7(fvec4) FMul 64 65
|
||||||
|
67: 8 CompositeConstruct 60 63 66
|
||||||
|
68: 8 Load 10(sum34)
|
||||||
|
69: 7(fvec4) CompositeExtract 68 0
|
||||||
|
70: 7(fvec4) CompositeExtract 67 0
|
||||||
|
71: 7(fvec4) FDiv 69 70
|
||||||
|
72: 7(fvec4) CompositeExtract 68 1
|
||||||
|
73: 7(fvec4) CompositeExtract 67 1
|
||||||
|
74: 7(fvec4) FDiv 72 73
|
||||||
|
75: 7(fvec4) CompositeExtract 68 2
|
||||||
|
76: 7(fvec4) CompositeExtract 67 2
|
||||||
|
77: 7(fvec4) FDiv 75 76
|
||||||
|
78: 8 CompositeConstruct 71 74 77
|
||||||
|
Store 10(sum34) 78
|
||||||
|
79: 8 Load 12(m1)
|
||||||
|
80: 6(float) Load 28(f)
|
||||||
|
82: 6(float) FDiv 81 80
|
||||||
|
83: 8 MatrixTimesScalar 79 82
|
||||||
|
84: 8 Load 10(sum34)
|
||||||
|
85: 7(fvec4) CompositeExtract 84 0
|
||||||
|
86: 7(fvec4) CompositeExtract 83 0
|
||||||
|
87: 7(fvec4) FAdd 85 86
|
||||||
|
88: 7(fvec4) CompositeExtract 84 1
|
||||||
|
89: 7(fvec4) CompositeExtract 83 1
|
||||||
|
90: 7(fvec4) FAdd 88 89
|
||||||
|
91: 7(fvec4) CompositeExtract 84 2
|
||||||
|
92: 7(fvec4) CompositeExtract 83 2
|
||||||
|
93: 7(fvec4) FAdd 91 92
|
||||||
|
94: 8 CompositeConstruct 87 90 93
|
||||||
|
Store 10(sum34) 94
|
||||||
|
95: 6(float) Load 28(f)
|
||||||
|
96: 8 Load 12(m1)
|
||||||
|
97: 7(fvec4) CompositeConstruct 95 95 95 95
|
||||||
|
98: 7(fvec4) CompositeExtract 96 0
|
||||||
|
99: 7(fvec4) FDiv 97 98
|
||||||
|
100: 7(fvec4) CompositeExtract 96 1
|
||||||
|
101: 7(fvec4) FDiv 97 100
|
||||||
|
102: 7(fvec4) CompositeExtract 96 2
|
||||||
|
103: 7(fvec4) FDiv 97 102
|
||||||
|
104: 8 CompositeConstruct 99 101 103
|
||||||
|
105: 8 Load 10(sum34)
|
||||||
|
106: 7(fvec4) CompositeExtract 105 0
|
||||||
|
107: 7(fvec4) CompositeExtract 104 0
|
||||||
|
108: 7(fvec4) FAdd 106 107
|
||||||
|
109: 7(fvec4) CompositeExtract 105 1
|
||||||
|
110: 7(fvec4) CompositeExtract 104 1
|
||||||
|
111: 7(fvec4) FAdd 109 110
|
||||||
|
112: 7(fvec4) CompositeExtract 105 2
|
||||||
|
113: 7(fvec4) CompositeExtract 104 2
|
||||||
|
114: 7(fvec4) FAdd 112 113
|
||||||
|
115: 8 CompositeConstruct 108 111 114
|
||||||
|
Store 10(sum34) 115
|
||||||
|
116: 6(float) Load 28(f)
|
||||||
|
117: 8 Load 10(sum34)
|
||||||
|
118: 7(fvec4) CompositeConstruct 116 116 116 116
|
||||||
|
119: 7(fvec4) CompositeExtract 117 0
|
||||||
|
120: 7(fvec4) FAdd 119 118
|
||||||
|
121: 7(fvec4) CompositeExtract 117 1
|
||||||
|
122: 7(fvec4) FAdd 121 118
|
||||||
|
123: 7(fvec4) CompositeExtract 117 2
|
||||||
|
124: 7(fvec4) FAdd 123 118
|
||||||
|
125: 8 CompositeConstruct 120 122 124
|
||||||
|
Store 10(sum34) 125
|
||||||
|
126: 6(float) Load 28(f)
|
||||||
|
127: 8 Load 10(sum34)
|
||||||
|
128: 7(fvec4) CompositeConstruct 126 126 126 126
|
||||||
|
129: 7(fvec4) CompositeExtract 127 0
|
||||||
|
130: 7(fvec4) FSub 129 128
|
||||||
|
131: 7(fvec4) CompositeExtract 127 1
|
||||||
|
132: 7(fvec4) FSub 131 128
|
||||||
|
133: 7(fvec4) CompositeExtract 127 2
|
||||||
|
134: 7(fvec4) FSub 133 128
|
||||||
|
135: 8 CompositeConstruct 130 132 134
|
||||||
|
Store 10(sum34) 135
|
||||||
|
141: 7(fvec4) Load 140(v4)
|
||||||
|
142: 8 Load 14(m2)
|
||||||
|
143: 136(fvec3) VectorTimesMatrix 141 142
|
||||||
|
Store 138(sum3) 143
|
||||||
|
146: 8 Load 14(m2)
|
||||||
|
149: 136(fvec3) Load 148(v3)
|
||||||
|
150: 7(fvec4) MatrixTimesVector 146 149
|
||||||
|
Store 145(sum4) 150
|
||||||
|
154: 8 Load 10(sum34)
|
||||||
|
155: 151 Transpose 154
|
||||||
|
Store 153(m43) 155
|
||||||
|
159: 8 Load 12(m1)
|
||||||
|
160: 151 Load 153(m43)
|
||||||
|
161: 156 MatrixTimesMatrix 159 160
|
||||||
|
Store 158(m4) 161
|
||||||
|
162: 7(fvec4) Load 140(v4)
|
||||||
|
163: 156 Load 158(m4)
|
||||||
|
164: 7(fvec4) VectorTimesMatrix 162 163
|
||||||
|
Store 145(sum4) 164
|
||||||
|
167: 7(fvec4) Load 145(sum4)
|
||||||
|
Store 166(color) 167
|
||||||
|
168: 8 Load 10(sum34)
|
||||||
|
169: 7(fvec4) CompositeConstruct 81 81 81 81
|
||||||
|
170: 7(fvec4) CompositeExtract 168 0
|
||||||
|
171: 7(fvec4) FAdd 170 169
|
||||||
|
172: 7(fvec4) CompositeExtract 168 1
|
||||||
|
173: 7(fvec4) FAdd 172 169
|
||||||
|
174: 7(fvec4) CompositeExtract 168 2
|
||||||
|
175: 7(fvec4) FAdd 174 169
|
||||||
|
176: 8 CompositeConstruct 171 173 175
|
||||||
|
Store 10(sum34) 176
|
||||||
|
177: 8 Load 10(sum34)
|
||||||
|
178: 7(fvec4) CompositeConstruct 81 81 81 81
|
||||||
|
179: 7(fvec4) CompositeExtract 177 0
|
||||||
|
180: 7(fvec4) FSub 179 178
|
||||||
|
181: 7(fvec4) CompositeExtract 177 1
|
||||||
|
182: 7(fvec4) FSub 181 178
|
||||||
|
183: 7(fvec4) CompositeExtract 177 2
|
||||||
|
184: 7(fvec4) FSub 183 178
|
||||||
|
185: 8 CompositeConstruct 180 182 184
|
||||||
|
Store 10(sum34) 185
|
||||||
|
186: 6(float) Load 28(f)
|
||||||
|
188: 7(fvec4) CompositeConstruct 186 187 187 187
|
||||||
|
189: 7(fvec4) CompositeConstruct 187 186 187 187
|
||||||
|
190: 7(fvec4) CompositeConstruct 187 187 186 187
|
||||||
|
191: 8 CompositeConstruct 188 189 190
|
||||||
|
192: 8 Load 10(sum34)
|
||||||
|
193: 7(fvec4) CompositeExtract 192 0
|
||||||
|
194: 7(fvec4) CompositeExtract 191 0
|
||||||
|
195: 7(fvec4) FAdd 193 194
|
||||||
|
196: 7(fvec4) CompositeExtract 192 1
|
||||||
|
197: 7(fvec4) CompositeExtract 191 1
|
||||||
|
198: 7(fvec4) FAdd 196 197
|
||||||
|
199: 7(fvec4) CompositeExtract 192 2
|
||||||
|
200: 7(fvec4) CompositeExtract 191 2
|
||||||
|
201: 7(fvec4) FAdd 199 200
|
||||||
|
202: 8 CompositeConstruct 195 198 201
|
||||||
|
Store 10(sum34) 202
|
||||||
|
203: 136(fvec3) Load 148(v3)
|
||||||
|
204: 6(float) Load 28(f)
|
||||||
|
205: 136(fvec3) Load 148(v3)
|
||||||
|
206: 6(float) Load 28(f)
|
||||||
|
207: 136(fvec3) Load 148(v3)
|
||||||
|
208: 6(float) Load 28(f)
|
||||||
|
209: 6(float) CompositeExtract 203 0
|
||||||
|
210: 6(float) CompositeExtract 203 1
|
||||||
|
211: 6(float) CompositeExtract 203 2
|
||||||
|
212: 6(float) CompositeExtract 205 0
|
||||||
|
213: 6(float) CompositeExtract 205 1
|
||||||
|
214: 6(float) CompositeExtract 205 2
|
||||||
|
215: 6(float) CompositeExtract 207 0
|
||||||
|
216: 6(float) CompositeExtract 207 1
|
||||||
|
217: 6(float) CompositeExtract 207 2
|
||||||
|
218: 7(fvec4) CompositeConstruct 209 210 211 204
|
||||||
|
219: 7(fvec4) CompositeConstruct 212 213 214 206
|
||||||
|
220: 7(fvec4) CompositeConstruct 215 216 217 208
|
||||||
|
221: 8 CompositeConstruct 218 219 220
|
||||||
|
222: 8 Load 10(sum34)
|
||||||
|
223: 7(fvec4) CompositeExtract 222 0
|
||||||
|
224: 7(fvec4) CompositeExtract 221 0
|
||||||
|
225: 7(fvec4) FAdd 223 224
|
||||||
|
226: 7(fvec4) CompositeExtract 222 1
|
||||||
|
227: 7(fvec4) CompositeExtract 221 1
|
||||||
|
228: 7(fvec4) FAdd 226 227
|
||||||
|
229: 7(fvec4) CompositeExtract 222 2
|
||||||
|
230: 7(fvec4) CompositeExtract 221 2
|
||||||
|
231: 7(fvec4) FAdd 229 230
|
||||||
|
232: 8 CompositeConstruct 225 228 231
|
||||||
|
Store 10(sum34) 232
|
||||||
|
233: 136(fvec3) Load 138(sum3)
|
||||||
|
234: 151 Load 153(m43)
|
||||||
|
235: 7(fvec4) VectorTimesMatrix 233 234
|
||||||
|
236: 7(fvec4) Load 145(sum4)
|
||||||
|
237: 7(fvec4) FAdd 235 236
|
||||||
|
238: 7(fvec4) Load 166(color)
|
||||||
|
239: 7(fvec4) FAdd 238 237
|
||||||
|
Store 166(color) 239
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,265 @@
|
||||||
spv.matrix2.frag
|
spv.matrix2.frag
|
||||||
WARNING: 0:4: varying deprecated in version 130; may be removed in future release
|
|
||||||
WARNING: 0:13: varying deprecated in version 130; may be removed in future release
|
|
||||||
WARNING: 0:15: varying deprecated in version 130; may be removed in future release
|
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
Missing functionality: binary operation on matrix
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 213
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 12 16 37 38 65 87 139 150 173 210 211 212
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 150
|
||||||
|
Name 4 "main"
|
||||||
|
Name 10 "m34"
|
||||||
|
Name 12 "v"
|
||||||
|
Name 16 "u"
|
||||||
|
Name 37 "FragColor"
|
||||||
|
Name 38 "Color"
|
||||||
|
Name 63 "m44"
|
||||||
|
Name 65 "un34"
|
||||||
|
Name 87 "um43"
|
||||||
|
Name 139 "um4"
|
||||||
|
Name 148 "inv"
|
||||||
|
Name 150 "um2"
|
||||||
|
Name 171 "inv3"
|
||||||
|
Name 173 "um3"
|
||||||
|
Name 182 "inv4"
|
||||||
|
Name 210 "colorTransform"
|
||||||
|
Name 211 "m"
|
||||||
|
Name 212 "n"
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypeMatrix 7(fvec4) 3
|
||||||
|
9: TypePointer Function 8
|
||||||
|
11: TypePointer Input 7(fvec4)
|
||||||
|
12(v): 11(ptr) Variable Input
|
||||||
|
14: TypeVector 6(float) 3
|
||||||
|
15: TypePointer Input 14(fvec3)
|
||||||
|
16(u): 15(ptr) Variable Input
|
||||||
|
19: 6(float) Constant 1082759578
|
||||||
|
20: 6(float) Constant 0
|
||||||
|
21: 7(fvec4) ConstantComposite 19 20 20 20
|
||||||
|
22: 7(fvec4) ConstantComposite 20 19 20 20
|
||||||
|
23: 7(fvec4) ConstantComposite 20 20 19 20
|
||||||
|
24: 8 ConstantComposite 21 22 23
|
||||||
|
36: TypePointer Output 7(fvec4)
|
||||||
|
37(FragColor): 36(ptr) Variable Output
|
||||||
|
38(Color): 15(ptr) Variable Input
|
||||||
|
40: 6(float) Constant 1065353216
|
||||||
|
54: TypeInt 32 0
|
||||||
|
55: 54(int) Constant 0
|
||||||
|
56: TypePointer Input 6(float)
|
||||||
|
61: TypeMatrix 7(fvec4) 4
|
||||||
|
62: TypePointer Function 61
|
||||||
|
64: TypePointer Input 8
|
||||||
|
65(un34): 64(ptr) Variable Input
|
||||||
|
85: TypeMatrix 14(fvec3) 4
|
||||||
|
86: TypePointer Input 85
|
||||||
|
87(um43): 86(ptr) Variable Input
|
||||||
|
138: TypePointer Input 61
|
||||||
|
139(um4): 138(ptr) Variable Input
|
||||||
|
145: TypeVector 6(float) 2
|
||||||
|
146: TypeMatrix 145(fvec2) 2
|
||||||
|
147: TypePointer Function 146
|
||||||
|
149: TypePointer Input 146
|
||||||
|
150(um2): 149(ptr) Variable Input
|
||||||
|
153: TypeInt 32 1
|
||||||
|
154: 153(int) Constant 0
|
||||||
|
155: TypePointer Function 6(float)
|
||||||
|
158: 153(int) Constant 1
|
||||||
|
161: 54(int) Constant 1
|
||||||
|
169: TypeMatrix 14(fvec3) 3
|
||||||
|
170: TypePointer Function 169
|
||||||
|
172: TypePointer Input 169
|
||||||
|
173(um3): 172(ptr) Variable Input
|
||||||
|
176: 153(int) Constant 2
|
||||||
|
202: 54(int) Constant 3
|
||||||
|
203: TypePointer Output 6(float)
|
||||||
|
210(colorTransform): 172(ptr) Variable Input
|
||||||
|
211(m): 138(ptr) Variable Input
|
||||||
|
212(n): 138(ptr) Variable Input
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
10(m34): 9(ptr) Variable Function
|
||||||
|
63(m44): 62(ptr) Variable Function
|
||||||
|
148(inv): 147(ptr) Variable Function
|
||||||
|
171(inv3): 170(ptr) Variable Function
|
||||||
|
182(inv4): 62(ptr) Variable Function
|
||||||
|
13: 7(fvec4) Load 12(v)
|
||||||
|
17: 14(fvec3) Load 16(u)
|
||||||
|
18: 8 OuterProduct 13 17
|
||||||
|
Store 10(m34) 18
|
||||||
|
25: 8 Load 10(m34)
|
||||||
|
26: 7(fvec4) CompositeExtract 25 0
|
||||||
|
27: 7(fvec4) CompositeExtract 24 0
|
||||||
|
28: 7(fvec4) FAdd 26 27
|
||||||
|
29: 7(fvec4) CompositeExtract 25 1
|
||||||
|
30: 7(fvec4) CompositeExtract 24 1
|
||||||
|
31: 7(fvec4) FAdd 29 30
|
||||||
|
32: 7(fvec4) CompositeExtract 25 2
|
||||||
|
33: 7(fvec4) CompositeExtract 24 2
|
||||||
|
34: 7(fvec4) FAdd 32 33
|
||||||
|
35: 8 CompositeConstruct 28 31 34
|
||||||
|
Store 10(m34) 35
|
||||||
|
39: 14(fvec3) Load 38(Color)
|
||||||
|
41: 6(float) CompositeExtract 39 0
|
||||||
|
42: 6(float) CompositeExtract 39 1
|
||||||
|
43: 6(float) CompositeExtract 39 2
|
||||||
|
44: 7(fvec4) CompositeConstruct 41 42 43 40
|
||||||
|
Store 37(FragColor) 44
|
||||||
|
45: 7(fvec4) Load 37(FragColor)
|
||||||
|
46: 8 Load 10(m34)
|
||||||
|
47: 14(fvec3) VectorTimesMatrix 45 46
|
||||||
|
48: 6(float) CompositeExtract 47 0
|
||||||
|
49: 6(float) CompositeExtract 47 1
|
||||||
|
50: 6(float) CompositeExtract 47 2
|
||||||
|
51: 7(fvec4) CompositeConstruct 48 49 50 40
|
||||||
|
52: 7(fvec4) Load 37(FragColor)
|
||||||
|
53: 7(fvec4) FMul 52 51
|
||||||
|
Store 37(FragColor) 53
|
||||||
|
57: 56(ptr) AccessChain 12(v) 55
|
||||||
|
58: 6(float) Load 57
|
||||||
|
59: 8 Load 10(m34)
|
||||||
|
60: 8 MatrixTimesScalar 59 58
|
||||||
|
Store 10(m34) 60
|
||||||
|
66: 8 Load 65(un34)
|
||||||
|
67: 6(float) CompositeExtract 66 0 0
|
||||||
|
68: 6(float) CompositeExtract 66 0 1
|
||||||
|
69: 6(float) CompositeExtract 66 0 2
|
||||||
|
70: 6(float) CompositeExtract 66 0 3
|
||||||
|
71: 6(float) CompositeExtract 66 1 0
|
||||||
|
72: 6(float) CompositeExtract 66 1 1
|
||||||
|
73: 6(float) CompositeExtract 66 1 2
|
||||||
|
74: 6(float) CompositeExtract 66 1 3
|
||||||
|
75: 6(float) CompositeExtract 66 2 0
|
||||||
|
76: 6(float) CompositeExtract 66 2 1
|
||||||
|
77: 6(float) CompositeExtract 66 2 2
|
||||||
|
78: 6(float) CompositeExtract 66 2 3
|
||||||
|
79: 7(fvec4) CompositeConstruct 67 68 69 70
|
||||||
|
80: 7(fvec4) CompositeConstruct 71 72 73 74
|
||||||
|
81: 7(fvec4) CompositeConstruct 75 76 77 78
|
||||||
|
82: 7(fvec4) CompositeConstruct 20 20 20 40
|
||||||
|
83: 61 CompositeConstruct 79 80 81 82
|
||||||
|
Store 63(m44) 83
|
||||||
|
84: 8 Load 10(m34)
|
||||||
|
88: 85 Load 87(um43)
|
||||||
|
89: 61 MatrixTimesMatrix 84 88
|
||||||
|
90: 61 Load 63(m44)
|
||||||
|
91: 7(fvec4) CompositeExtract 90 0
|
||||||
|
92: 7(fvec4) CompositeExtract 89 0
|
||||||
|
93: 7(fvec4) FAdd 91 92
|
||||||
|
94: 7(fvec4) CompositeExtract 90 1
|
||||||
|
95: 7(fvec4) CompositeExtract 89 1
|
||||||
|
96: 7(fvec4) FAdd 94 95
|
||||||
|
97: 7(fvec4) CompositeExtract 90 2
|
||||||
|
98: 7(fvec4) CompositeExtract 89 2
|
||||||
|
99: 7(fvec4) FAdd 97 98
|
||||||
|
100: 7(fvec4) CompositeExtract 90 3
|
||||||
|
101: 7(fvec4) CompositeExtract 89 3
|
||||||
|
102: 7(fvec4) FAdd 100 101
|
||||||
|
103: 61 CompositeConstruct 93 96 99 102
|
||||||
|
Store 63(m44) 103
|
||||||
|
104: 61 Load 63(m44)
|
||||||
|
105: 61 FNegate 104
|
||||||
|
106: 7(fvec4) Load 12(v)
|
||||||
|
107: 7(fvec4) MatrixTimesVector 105 106
|
||||||
|
108: 7(fvec4) Load 37(FragColor)
|
||||||
|
109: 7(fvec4) FAdd 108 107
|
||||||
|
Store 37(FragColor) 109
|
||||||
|
110: 61 Load 63(m44)
|
||||||
|
111: 61 Load 63(m44)
|
||||||
|
112: 7(fvec4) CompositeExtract 110 0
|
||||||
|
113: 7(fvec4) CompositeExtract 111 0
|
||||||
|
114: 7(fvec4) FMul 112 113
|
||||||
|
115: 7(fvec4) CompositeExtract 110 1
|
||||||
|
116: 7(fvec4) CompositeExtract 111 1
|
||||||
|
117: 7(fvec4) FMul 115 116
|
||||||
|
118: 7(fvec4) CompositeExtract 110 2
|
||||||
|
119: 7(fvec4) CompositeExtract 111 2
|
||||||
|
120: 7(fvec4) FMul 118 119
|
||||||
|
121: 7(fvec4) CompositeExtract 110 3
|
||||||
|
122: 7(fvec4) CompositeExtract 111 3
|
||||||
|
123: 7(fvec4) FMul 121 122
|
||||||
|
124: 61 CompositeConstruct 114 117 120 123
|
||||||
|
125: 7(fvec4) Load 37(FragColor)
|
||||||
|
126: 7(fvec4) VectorTimesMatrix 125 124
|
||||||
|
Store 37(FragColor) 126
|
||||||
|
127: 85 Load 87(um43)
|
||||||
|
128: 8 Transpose 127
|
||||||
|
Store 10(m34) 128
|
||||||
|
129: 7(fvec4) Load 37(FragColor)
|
||||||
|
130: 8 Load 10(m34)
|
||||||
|
131: 14(fvec3) VectorTimesMatrix 129 130
|
||||||
|
132: 6(float) CompositeExtract 131 0
|
||||||
|
133: 6(float) CompositeExtract 131 1
|
||||||
|
134: 6(float) CompositeExtract 131 2
|
||||||
|
135: 7(fvec4) CompositeConstruct 132 133 134 40
|
||||||
|
136: 7(fvec4) Load 37(FragColor)
|
||||||
|
137: 7(fvec4) FMul 136 135
|
||||||
|
Store 37(FragColor) 137
|
||||||
|
140: 61 Load 139(um4)
|
||||||
|
141: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 140
|
||||||
|
142: 7(fvec4) CompositeConstruct 141 141 141 141
|
||||||
|
143: 7(fvec4) Load 37(FragColor)
|
||||||
|
144: 7(fvec4) FMul 143 142
|
||||||
|
Store 37(FragColor) 144
|
||||||
|
151: 146 Load 150(um2)
|
||||||
|
152: 146 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 151
|
||||||
|
Store 148(inv) 152
|
||||||
|
156: 155(ptr) AccessChain 148(inv) 154 55
|
||||||
|
157: 6(float) Load 156
|
||||||
|
159: 155(ptr) AccessChain 148(inv) 158 55
|
||||||
|
160: 6(float) Load 159
|
||||||
|
162: 155(ptr) AccessChain 148(inv) 154 161
|
||||||
|
163: 6(float) Load 162
|
||||||
|
164: 155(ptr) AccessChain 148(inv) 158 161
|
||||||
|
165: 6(float) Load 164
|
||||||
|
166: 7(fvec4) CompositeConstruct 157 160 163 165
|
||||||
|
167: 7(fvec4) Load 37(FragColor)
|
||||||
|
168: 7(fvec4) FMul 167 166
|
||||||
|
Store 37(FragColor) 168
|
||||||
|
174: 169 Load 173(um3)
|
||||||
|
175: 169 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 174
|
||||||
|
Store 171(inv3) 175
|
||||||
|
177: 155(ptr) AccessChain 171(inv3) 176 161
|
||||||
|
178: 6(float) Load 177
|
||||||
|
179: 7(fvec4) CompositeConstruct 178 178 178 178
|
||||||
|
180: 7(fvec4) Load 37(FragColor)
|
||||||
|
181: 7(fvec4) FMul 180 179
|
||||||
|
Store 37(FragColor) 181
|
||||||
|
183: 61 Load 139(um4)
|
||||||
|
184: 61 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 183
|
||||||
|
Store 182(inv4) 184
|
||||||
|
185: 61 Load 182(inv4)
|
||||||
|
186: 7(fvec4) Load 37(FragColor)
|
||||||
|
187: 7(fvec4) VectorTimesMatrix 186 185
|
||||||
|
Store 37(FragColor) 187
|
||||||
|
188: 7(fvec4) Load 37(FragColor)
|
||||||
|
189: 8 Load 65(un34)
|
||||||
|
190: 8 Load 65(un34)
|
||||||
|
191: 7(fvec4) CompositeExtract 189 0
|
||||||
|
192: 7(fvec4) CompositeExtract 190 0
|
||||||
|
193: 7(fvec4) FMul 191 192
|
||||||
|
194: 7(fvec4) CompositeExtract 189 1
|
||||||
|
195: 7(fvec4) CompositeExtract 190 1
|
||||||
|
196: 7(fvec4) FMul 194 195
|
||||||
|
197: 7(fvec4) CompositeExtract 189 2
|
||||||
|
198: 7(fvec4) CompositeExtract 190 2
|
||||||
|
199: 7(fvec4) FMul 197 198
|
||||||
|
200: 8 CompositeConstruct 193 196 199
|
||||||
|
201: 14(fvec3) VectorTimesMatrix 188 200
|
||||||
|
204: 203(ptr) AccessChain 37(FragColor) 202
|
||||||
|
205: 6(float) Load 204
|
||||||
|
206: 6(float) CompositeExtract 201 0
|
||||||
|
207: 6(float) CompositeExtract 201 1
|
||||||
|
208: 6(float) CompositeExtract 201 2
|
||||||
|
209: 7(fvec4) CompositeConstruct 206 207 208 205
|
||||||
|
Store 37(FragColor) 209
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,12 @@ Linked fragment stage:
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 277
|
// Id's are bound by 278
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 29 17 55 26 84 91 81 276 246
|
EntryPoint Fragment 4 "main" 17 26 29 55 81 84 91 247 277
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 430
|
Source GLSL 430
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
@ -39,17 +39,17 @@ Linked fragment stage:
|
||||||
Name 227 "is2DArray"
|
Name 227 "is2DArray"
|
||||||
Name 237 "iv2"
|
Name 237 "iv2"
|
||||||
Name 241 "sCubeShadow"
|
Name 241 "sCubeShadow"
|
||||||
Name 246 "FragData"
|
Name 247 "FragData"
|
||||||
Name 258 "is2Dms"
|
Name 259 "is2Dms"
|
||||||
Name 262 "us2D"
|
Name 263 "us2D"
|
||||||
Name 266 "us3D"
|
Name 267 "us3D"
|
||||||
Name 270 "usCube"
|
Name 271 "usCube"
|
||||||
Name 274 "us2DArray"
|
Name 275 "us2DArray"
|
||||||
Name 276 "ic4D"
|
Name 277 "ic4D"
|
||||||
Decorate 81(ic3D) Flat
|
Decorate 81(ic3D) Flat
|
||||||
Decorate 84(ic1D) Flat
|
Decorate 84(ic1D) Flat
|
||||||
Decorate 91(ic2D) Flat
|
Decorate 91(ic2D) Flat
|
||||||
Decorate 276(ic4D) Flat
|
Decorate 277(ic4D) Flat
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
|
|
@ -140,31 +140,31 @@ Linked fragment stage:
|
||||||
240: TypePointer UniformConstant 239
|
240: TypePointer UniformConstant 239
|
||||||
241(sCubeShadow): 240(ptr) Variable UniformConstant
|
241(sCubeShadow): 240(ptr) Variable UniformConstant
|
||||||
243: 67(int) Constant 2
|
243: 67(int) Constant 2
|
||||||
245: TypePointer Output 7(fvec4)
|
246: TypePointer Output 7(fvec4)
|
||||||
246(FragData): 245(ptr) Variable Output
|
247(FragData): 246(ptr) Variable Output
|
||||||
250: 6(float) Constant 0
|
251: 6(float) Constant 0
|
||||||
255: TypeImage 67(int) 2D multi-sampled sampled format:Unknown
|
256: TypeImage 67(int) 2D multi-sampled sampled format:Unknown
|
||||||
256: TypeSampledImage 255
|
257: TypeSampledImage 256
|
||||||
257: TypePointer UniformConstant 256
|
258: TypePointer UniformConstant 257
|
||||||
258(is2Dms): 257(ptr) Variable UniformConstant
|
259(is2Dms): 258(ptr) Variable UniformConstant
|
||||||
259: TypeImage 32(int) 2D sampled format:Unknown
|
260: TypeImage 32(int) 2D sampled format:Unknown
|
||||||
260: TypeSampledImage 259
|
261: TypeSampledImage 260
|
||||||
261: TypePointer UniformConstant 260
|
262: TypePointer UniformConstant 261
|
||||||
262(us2D): 261(ptr) Variable UniformConstant
|
263(us2D): 262(ptr) Variable UniformConstant
|
||||||
263: TypeImage 32(int) 3D sampled format:Unknown
|
264: TypeImage 32(int) 3D sampled format:Unknown
|
||||||
264: TypeSampledImage 263
|
265: TypeSampledImage 264
|
||||||
265: TypePointer UniformConstant 264
|
266: TypePointer UniformConstant 265
|
||||||
266(us3D): 265(ptr) Variable UniformConstant
|
267(us3D): 266(ptr) Variable UniformConstant
|
||||||
267: TypeImage 32(int) Cube sampled format:Unknown
|
268: TypeImage 32(int) Cube sampled format:Unknown
|
||||||
268: TypeSampledImage 267
|
269: TypeSampledImage 268
|
||||||
269: TypePointer UniformConstant 268
|
270: TypePointer UniformConstant 269
|
||||||
270(usCube): 269(ptr) Variable UniformConstant
|
271(usCube): 270(ptr) Variable UniformConstant
|
||||||
271: TypeImage 32(int) 2D array sampled format:Unknown
|
272: TypeImage 32(int) 2D array sampled format:Unknown
|
||||||
272: TypeSampledImage 271
|
273: TypeSampledImage 272
|
||||||
273: TypePointer UniformConstant 272
|
274: TypePointer UniformConstant 273
|
||||||
274(us2DArray): 273(ptr) Variable UniformConstant
|
275(us2DArray): 274(ptr) Variable UniformConstant
|
||||||
275: TypePointer Input 162(ivec4)
|
276: TypePointer Input 162(ivec4)
|
||||||
276(ic4D): 275(ptr) Variable Input
|
277(ic4D): 276(ptr) Variable Input
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
9(v): 8(ptr) Variable Function
|
9(v): 8(ptr) Variable Function
|
||||||
|
|
@ -345,15 +345,16 @@ Linked fragment stage:
|
||||||
235: 7(fvec4) FAdd 234 233
|
235: 7(fvec4) FAdd 234 233
|
||||||
Store 9(v) 235
|
Store 9(v) 235
|
||||||
242: 239 Load 241(sCubeShadow)
|
242: 239 Load 241(sCubeShadow)
|
||||||
244: 68(ivec2) ImageQuerySizeLod 242 243
|
244: 238 Image 242
|
||||||
Store 237(iv2) 244
|
245: 68(ivec2) ImageQuerySizeLod 244 243
|
||||||
247: 7(fvec4) Load 9(v)
|
Store 237(iv2) 245
|
||||||
248: 68(ivec2) Load 237(iv2)
|
248: 7(fvec4) Load 9(v)
|
||||||
249: 15(fvec2) ConvertSToF 248
|
249: 68(ivec2) Load 237(iv2)
|
||||||
251: 6(float) CompositeExtract 249 0
|
250: 15(fvec2) ConvertSToF 249
|
||||||
252: 6(float) CompositeExtract 249 1
|
252: 6(float) CompositeExtract 250 0
|
||||||
253: 7(fvec4) CompositeConstruct 251 252 250 250
|
253: 6(float) CompositeExtract 250 1
|
||||||
254: 7(fvec4) FAdd 247 253
|
254: 7(fvec4) CompositeConstruct 252 253 251 251
|
||||||
Store 246(FragData) 254
|
255: 7(fvec4) FAdd 248 254
|
||||||
|
Store 247(FragData) 255
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 12 55
|
EntryPoint Vertex 4 "main" 12 28 55
|
||||||
Source GLSL 120
|
Source GLSL 120
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "a"
|
Name 9 "a"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 57 59 23 71
|
EntryPoint Fragment 4 "main" 23 57 59 71
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
@ -168,7 +168,7 @@ Linked fragment stage:
|
||||||
18(bv2): 16(ptr) FunctionParameter
|
18(bv2): 16(ptr) FunctionParameter
|
||||||
20: Label
|
20: Label
|
||||||
27: 15(bvec2) Load 18(bv2)
|
27: 15(bvec2) Load 18(bv2)
|
||||||
31: 15(bvec2) IEqual 27 30
|
31: 15(bvec2) LogicalEqual 27 30
|
||||||
32: 14(bool) All 31
|
32: 14(bool) All 31
|
||||||
ReturnValue 32
|
ReturnValue 32
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main"
|
EntryPoint Fragment 4 "main" 90
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 140
|
Source GLSL 140
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 11 9 13 15 17 19 23 24
|
EntryPoint Vertex 4 "main" 9 11 13 15 17 19 23 24
|
||||||
Source GLSL 430
|
Source GLSL 430
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "outVc"
|
Name 9 "outVc"
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ Linked fragment stage:
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 211
|
// Id's are bound by 237
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
|
@ -19,28 +19,28 @@ Linked fragment stage:
|
||||||
Name 9 "lod"
|
Name 9 "lod"
|
||||||
Name 13 "samp1D"
|
Name 13 "samp1D"
|
||||||
Name 16 "pf"
|
Name 16 "pf"
|
||||||
Name 23 "isamp2D"
|
Name 24 "isamp2D"
|
||||||
Name 25 "pf2"
|
Name 26 "pf2"
|
||||||
Name 34 "usamp3D"
|
Name 36 "usamp3D"
|
||||||
Name 38 "pf3"
|
Name 40 "pf3"
|
||||||
Name 46 "sampCube"
|
Name 49 "sampCube"
|
||||||
Name 55 "isamp1DA"
|
Name 59 "isamp1DA"
|
||||||
Name 64 "usamp2DA"
|
Name 69 "usamp2DA"
|
||||||
Name 73 "isampCubeA"
|
Name 79 "isampCubeA"
|
||||||
Name 82 "samp1Ds"
|
Name 89 "samp1Ds"
|
||||||
Name 91 "samp2Ds"
|
Name 99 "samp2Ds"
|
||||||
Name 100 "sampCubes"
|
Name 109 "sampCubes"
|
||||||
Name 109 "samp1DAs"
|
Name 119 "samp1DAs"
|
||||||
Name 118 "samp2DAs"
|
Name 129 "samp2DAs"
|
||||||
Name 127 "sampCubeAs"
|
Name 139 "sampCubeAs"
|
||||||
Name 134 "levels"
|
Name 147 "levels"
|
||||||
Name 140 "usamp2D"
|
Name 154 "usamp2D"
|
||||||
Name 148 "isamp3D"
|
Name 163 "isamp3D"
|
||||||
Name 156 "isampCube"
|
Name 172 "isampCube"
|
||||||
Name 168 "samp2DA"
|
Name 186 "samp2DA"
|
||||||
Name 176 "usampCubeA"
|
Name 195 "usampCubeA"
|
||||||
Name 206 "sampBuf"
|
Name 232 "sampBuf"
|
||||||
Name 210 "sampRect"
|
Name 236 "sampRect"
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
|
|
@ -51,230 +51,256 @@ Linked fragment stage:
|
||||||
12: TypePointer UniformConstant 11
|
12: TypePointer UniformConstant 11
|
||||||
13(samp1D): 12(ptr) Variable UniformConstant
|
13(samp1D): 12(ptr) Variable UniformConstant
|
||||||
15: TypePointer Function 6(float)
|
15: TypePointer Function 6(float)
|
||||||
19: TypeInt 32 1
|
20: TypeInt 32 1
|
||||||
20: TypeImage 19(int) 2D sampled format:Unknown
|
21: TypeImage 20(int) 2D sampled format:Unknown
|
||||||
21: TypeSampledImage 20
|
22: TypeSampledImage 21
|
||||||
22: TypePointer UniformConstant 21
|
23: TypePointer UniformConstant 22
|
||||||
23(isamp2D): 22(ptr) Variable UniformConstant
|
24(isamp2D): 23(ptr) Variable UniformConstant
|
||||||
30: TypeInt 32 0
|
32: TypeInt 32 0
|
||||||
31: TypeImage 30(int) 3D sampled format:Unknown
|
33: TypeImage 32(int) 3D sampled format:Unknown
|
||||||
32: TypeSampledImage 31
|
34: TypeSampledImage 33
|
||||||
33: TypePointer UniformConstant 32
|
35: TypePointer UniformConstant 34
|
||||||
34(usamp3D): 33(ptr) Variable UniformConstant
|
36(usamp3D): 35(ptr) Variable UniformConstant
|
||||||
36: TypeVector 6(float) 3
|
38: TypeVector 6(float) 3
|
||||||
37: TypePointer Function 36(fvec3)
|
39: TypePointer Function 38(fvec3)
|
||||||
43: TypeImage 6(float) Cube sampled format:Unknown
|
46: TypeImage 6(float) Cube sampled format:Unknown
|
||||||
44: TypeSampledImage 43
|
47: TypeSampledImage 46
|
||||||
45: TypePointer UniformConstant 44
|
48: TypePointer UniformConstant 47
|
||||||
46(sampCube): 45(ptr) Variable UniformConstant
|
49(sampCube): 48(ptr) Variable UniformConstant
|
||||||
52: TypeImage 19(int) 1D array sampled format:Unknown
|
56: TypeImage 20(int) 1D array sampled format:Unknown
|
||||||
53: TypeSampledImage 52
|
57: TypeSampledImage 56
|
||||||
54: TypePointer UniformConstant 53
|
58: TypePointer UniformConstant 57
|
||||||
55(isamp1DA): 54(ptr) Variable UniformConstant
|
59(isamp1DA): 58(ptr) Variable UniformConstant
|
||||||
61: TypeImage 30(int) 2D array sampled format:Unknown
|
66: TypeImage 32(int) 2D array sampled format:Unknown
|
||||||
62: TypeSampledImage 61
|
67: TypeSampledImage 66
|
||||||
63: TypePointer UniformConstant 62
|
68: TypePointer UniformConstant 67
|
||||||
64(usamp2DA): 63(ptr) Variable UniformConstant
|
69(usamp2DA): 68(ptr) Variable UniformConstant
|
||||||
70: TypeImage 19(int) Cube array sampled format:Unknown
|
76: TypeImage 20(int) Cube array sampled format:Unknown
|
||||||
71: TypeSampledImage 70
|
77: TypeSampledImage 76
|
||||||
72: TypePointer UniformConstant 71
|
78: TypePointer UniformConstant 77
|
||||||
73(isampCubeA): 72(ptr) Variable UniformConstant
|
79(isampCubeA): 78(ptr) Variable UniformConstant
|
||||||
79: TypeImage 6(float) 1D depth sampled format:Unknown
|
86: TypeImage 6(float) 1D depth sampled format:Unknown
|
||||||
80: TypeSampledImage 79
|
87: TypeSampledImage 86
|
||||||
81: TypePointer UniformConstant 80
|
88: TypePointer UniformConstant 87
|
||||||
82(samp1Ds): 81(ptr) Variable UniformConstant
|
89(samp1Ds): 88(ptr) Variable UniformConstant
|
||||||
88: TypeImage 6(float) 2D depth sampled format:Unknown
|
96: TypeImage 6(float) 2D depth sampled format:Unknown
|
||||||
89: TypeSampledImage 88
|
97: TypeSampledImage 96
|
||||||
90: TypePointer UniformConstant 89
|
98: TypePointer UniformConstant 97
|
||||||
91(samp2Ds): 90(ptr) Variable UniformConstant
|
99(samp2Ds): 98(ptr) Variable UniformConstant
|
||||||
97: TypeImage 6(float) Cube depth sampled format:Unknown
|
106: TypeImage 6(float) Cube depth sampled format:Unknown
|
||||||
98: TypeSampledImage 97
|
|
||||||
99: TypePointer UniformConstant 98
|
|
||||||
100(sampCubes): 99(ptr) Variable UniformConstant
|
|
||||||
106: TypeImage 6(float) 1D depth array sampled format:Unknown
|
|
||||||
107: TypeSampledImage 106
|
107: TypeSampledImage 106
|
||||||
108: TypePointer UniformConstant 107
|
108: TypePointer UniformConstant 107
|
||||||
109(samp1DAs): 108(ptr) Variable UniformConstant
|
109(sampCubes): 108(ptr) Variable UniformConstant
|
||||||
115: TypeImage 6(float) 2D depth array sampled format:Unknown
|
116: TypeImage 6(float) 1D depth array sampled format:Unknown
|
||||||
116: TypeSampledImage 115
|
117: TypeSampledImage 116
|
||||||
117: TypePointer UniformConstant 116
|
118: TypePointer UniformConstant 117
|
||||||
118(samp2DAs): 117(ptr) Variable UniformConstant
|
119(samp1DAs): 118(ptr) Variable UniformConstant
|
||||||
124: TypeImage 6(float) Cube depth array sampled format:Unknown
|
126: TypeImage 6(float) 2D depth array sampled format:Unknown
|
||||||
125: TypeSampledImage 124
|
127: TypeSampledImage 126
|
||||||
126: TypePointer UniformConstant 125
|
128: TypePointer UniformConstant 127
|
||||||
127(sampCubeAs): 126(ptr) Variable UniformConstant
|
129(samp2DAs): 128(ptr) Variable UniformConstant
|
||||||
133: TypePointer Function 19(int)
|
136: TypeImage 6(float) Cube depth array sampled format:Unknown
|
||||||
137: TypeImage 30(int) 2D sampled format:Unknown
|
137: TypeSampledImage 136
|
||||||
138: TypeSampledImage 137
|
138: TypePointer UniformConstant 137
|
||||||
139: TypePointer UniformConstant 138
|
139(sampCubeAs): 138(ptr) Variable UniformConstant
|
||||||
140(usamp2D): 139(ptr) Variable UniformConstant
|
146: TypePointer Function 20(int)
|
||||||
145: TypeImage 19(int) 3D sampled format:Unknown
|
151: TypeImage 32(int) 2D sampled format:Unknown
|
||||||
146: TypeSampledImage 145
|
152: TypeSampledImage 151
|
||||||
147: TypePointer UniformConstant 146
|
153: TypePointer UniformConstant 152
|
||||||
148(isamp3D): 147(ptr) Variable UniformConstant
|
154(usamp2D): 153(ptr) Variable UniformConstant
|
||||||
153: TypeImage 19(int) Cube sampled format:Unknown
|
160: TypeImage 20(int) 3D sampled format:Unknown
|
||||||
154: TypeSampledImage 153
|
161: TypeSampledImage 160
|
||||||
155: TypePointer UniformConstant 154
|
162: TypePointer UniformConstant 161
|
||||||
156(isampCube): 155(ptr) Variable UniformConstant
|
163(isamp3D): 162(ptr) Variable UniformConstant
|
||||||
165: TypeImage 6(float) 2D array sampled format:Unknown
|
169: TypeImage 20(int) Cube sampled format:Unknown
|
||||||
166: TypeSampledImage 165
|
170: TypeSampledImage 169
|
||||||
167: TypePointer UniformConstant 166
|
171: TypePointer UniformConstant 170
|
||||||
168(samp2DA): 167(ptr) Variable UniformConstant
|
172(isampCube): 171(ptr) Variable UniformConstant
|
||||||
173: TypeImage 30(int) Cube array sampled format:Unknown
|
183: TypeImage 6(float) 2D array sampled format:Unknown
|
||||||
174: TypeSampledImage 173
|
184: TypeSampledImage 183
|
||||||
175: TypePointer UniformConstant 174
|
185: TypePointer UniformConstant 184
|
||||||
176(usampCubeA): 175(ptr) Variable UniformConstant
|
186(samp2DA): 185(ptr) Variable UniformConstant
|
||||||
203: TypeImage 6(float) Buffer sampled format:Unknown
|
192: TypeImage 32(int) Cube array sampled format:Unknown
|
||||||
204: TypeSampledImage 203
|
193: TypeSampledImage 192
|
||||||
205: TypePointer UniformConstant 204
|
194: TypePointer UniformConstant 193
|
||||||
206(sampBuf): 205(ptr) Variable UniformConstant
|
195(usampCubeA): 194(ptr) Variable UniformConstant
|
||||||
207: TypeImage 6(float) Rect sampled format:Unknown
|
229: TypeImage 6(float) Buffer sampled format:Unknown
|
||||||
208: TypeSampledImage 207
|
230: TypeSampledImage 229
|
||||||
209: TypePointer UniformConstant 208
|
231: TypePointer UniformConstant 230
|
||||||
210(sampRect): 209(ptr) Variable UniformConstant
|
232(sampBuf): 231(ptr) Variable UniformConstant
|
||||||
|
233: TypeImage 6(float) Rect sampled format:Unknown
|
||||||
|
234: TypeSampledImage 233
|
||||||
|
235: TypePointer UniformConstant 234
|
||||||
|
236(sampRect): 235(ptr) Variable UniformConstant
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
9(lod): 8(ptr) Variable Function
|
9(lod): 8(ptr) Variable Function
|
||||||
16(pf): 15(ptr) Variable Function
|
16(pf): 15(ptr) Variable Function
|
||||||
25(pf2): 8(ptr) Variable Function
|
26(pf2): 8(ptr) Variable Function
|
||||||
38(pf3): 37(ptr) Variable Function
|
40(pf3): 39(ptr) Variable Function
|
||||||
134(levels): 133(ptr) Variable Function
|
147(levels): 146(ptr) Variable Function
|
||||||
14: 11 Load 13(samp1D)
|
14: 11 Load 13(samp1D)
|
||||||
17: 6(float) Load 16(pf)
|
17: 6(float) Load 16(pf)
|
||||||
18: 7(fvec2) ImageQueryLod 14 17
|
18: 10 Image 14
|
||||||
Store 9(lod) 18
|
19: 7(fvec2) ImageQueryLod 18 17
|
||||||
24: 21 Load 23(isamp2D)
|
Store 9(lod) 19
|
||||||
26: 7(fvec2) Load 25(pf2)
|
25: 22 Load 24(isamp2D)
|
||||||
27: 7(fvec2) ImageQueryLod 24 26
|
27: 7(fvec2) Load 26(pf2)
|
||||||
28: 7(fvec2) Load 9(lod)
|
28: 21 Image 25
|
||||||
29: 7(fvec2) FAdd 28 27
|
29: 7(fvec2) ImageQueryLod 28 27
|
||||||
Store 9(lod) 29
|
30: 7(fvec2) Load 9(lod)
|
||||||
35: 32 Load 34(usamp3D)
|
31: 7(fvec2) FAdd 30 29
|
||||||
39: 36(fvec3) Load 38(pf3)
|
Store 9(lod) 31
|
||||||
40: 7(fvec2) ImageQueryLod 35 39
|
37: 34 Load 36(usamp3D)
|
||||||
41: 7(fvec2) Load 9(lod)
|
41: 38(fvec3) Load 40(pf3)
|
||||||
42: 7(fvec2) FAdd 41 40
|
42: 33 Image 37
|
||||||
Store 9(lod) 42
|
43: 7(fvec2) ImageQueryLod 42 41
|
||||||
47: 44 Load 46(sampCube)
|
44: 7(fvec2) Load 9(lod)
|
||||||
48: 36(fvec3) Load 38(pf3)
|
45: 7(fvec2) FAdd 44 43
|
||||||
49: 7(fvec2) ImageQueryLod 47 48
|
Store 9(lod) 45
|
||||||
50: 7(fvec2) Load 9(lod)
|
50: 47 Load 49(sampCube)
|
||||||
51: 7(fvec2) FAdd 50 49
|
51: 38(fvec3) Load 40(pf3)
|
||||||
Store 9(lod) 51
|
52: 46 Image 50
|
||||||
56: 53 Load 55(isamp1DA)
|
53: 7(fvec2) ImageQueryLod 52 51
|
||||||
57: 6(float) Load 16(pf)
|
54: 7(fvec2) Load 9(lod)
|
||||||
58: 7(fvec2) ImageQueryLod 56 57
|
55: 7(fvec2) FAdd 54 53
|
||||||
59: 7(fvec2) Load 9(lod)
|
Store 9(lod) 55
|
||||||
60: 7(fvec2) FAdd 59 58
|
60: 57 Load 59(isamp1DA)
|
||||||
Store 9(lod) 60
|
61: 6(float) Load 16(pf)
|
||||||
65: 62 Load 64(usamp2DA)
|
62: 56 Image 60
|
||||||
66: 7(fvec2) Load 25(pf2)
|
63: 7(fvec2) ImageQueryLod 62 61
|
||||||
67: 7(fvec2) ImageQueryLod 65 66
|
64: 7(fvec2) Load 9(lod)
|
||||||
68: 7(fvec2) Load 9(lod)
|
65: 7(fvec2) FAdd 64 63
|
||||||
69: 7(fvec2) FAdd 68 67
|
Store 9(lod) 65
|
||||||
Store 9(lod) 69
|
70: 67 Load 69(usamp2DA)
|
||||||
74: 71 Load 73(isampCubeA)
|
71: 7(fvec2) Load 26(pf2)
|
||||||
75: 36(fvec3) Load 38(pf3)
|
72: 66 Image 70
|
||||||
76: 7(fvec2) ImageQueryLod 74 75
|
73: 7(fvec2) ImageQueryLod 72 71
|
||||||
77: 7(fvec2) Load 9(lod)
|
74: 7(fvec2) Load 9(lod)
|
||||||
78: 7(fvec2) FAdd 77 76
|
75: 7(fvec2) FAdd 74 73
|
||||||
Store 9(lod) 78
|
Store 9(lod) 75
|
||||||
83: 80 Load 82(samp1Ds)
|
80: 77 Load 79(isampCubeA)
|
||||||
84: 6(float) Load 16(pf)
|
81: 38(fvec3) Load 40(pf3)
|
||||||
85: 7(fvec2) ImageQueryLod 83 84
|
82: 76 Image 80
|
||||||
86: 7(fvec2) Load 9(lod)
|
83: 7(fvec2) ImageQueryLod 82 81
|
||||||
87: 7(fvec2) FAdd 86 85
|
84: 7(fvec2) Load 9(lod)
|
||||||
Store 9(lod) 87
|
85: 7(fvec2) FAdd 84 83
|
||||||
92: 89 Load 91(samp2Ds)
|
Store 9(lod) 85
|
||||||
93: 7(fvec2) Load 25(pf2)
|
90: 87 Load 89(samp1Ds)
|
||||||
94: 7(fvec2) ImageQueryLod 92 93
|
91: 6(float) Load 16(pf)
|
||||||
95: 7(fvec2) Load 9(lod)
|
92: 86 Image 90
|
||||||
96: 7(fvec2) FAdd 95 94
|
93: 7(fvec2) ImageQueryLod 92 91
|
||||||
Store 9(lod) 96
|
94: 7(fvec2) Load 9(lod)
|
||||||
101: 98 Load 100(sampCubes)
|
95: 7(fvec2) FAdd 94 93
|
||||||
102: 36(fvec3) Load 38(pf3)
|
Store 9(lod) 95
|
||||||
103: 7(fvec2) ImageQueryLod 101 102
|
100: 97 Load 99(samp2Ds)
|
||||||
|
101: 7(fvec2) Load 26(pf2)
|
||||||
|
102: 96 Image 100
|
||||||
|
103: 7(fvec2) ImageQueryLod 102 101
|
||||||
104: 7(fvec2) Load 9(lod)
|
104: 7(fvec2) Load 9(lod)
|
||||||
105: 7(fvec2) FAdd 104 103
|
105: 7(fvec2) FAdd 104 103
|
||||||
Store 9(lod) 105
|
Store 9(lod) 105
|
||||||
110: 107 Load 109(samp1DAs)
|
110: 107 Load 109(sampCubes)
|
||||||
111: 6(float) Load 16(pf)
|
111: 38(fvec3) Load 40(pf3)
|
||||||
112: 7(fvec2) ImageQueryLod 110 111
|
112: 106 Image 110
|
||||||
113: 7(fvec2) Load 9(lod)
|
113: 7(fvec2) ImageQueryLod 112 111
|
||||||
114: 7(fvec2) FAdd 113 112
|
114: 7(fvec2) Load 9(lod)
|
||||||
Store 9(lod) 114
|
115: 7(fvec2) FAdd 114 113
|
||||||
119: 116 Load 118(samp2DAs)
|
Store 9(lod) 115
|
||||||
120: 7(fvec2) Load 25(pf2)
|
120: 117 Load 119(samp1DAs)
|
||||||
121: 7(fvec2) ImageQueryLod 119 120
|
121: 6(float) Load 16(pf)
|
||||||
122: 7(fvec2) Load 9(lod)
|
122: 116 Image 120
|
||||||
123: 7(fvec2) FAdd 122 121
|
123: 7(fvec2) ImageQueryLod 122 121
|
||||||
Store 9(lod) 123
|
124: 7(fvec2) Load 9(lod)
|
||||||
128: 125 Load 127(sampCubeAs)
|
125: 7(fvec2) FAdd 124 123
|
||||||
129: 36(fvec3) Load 38(pf3)
|
Store 9(lod) 125
|
||||||
130: 7(fvec2) ImageQueryLod 128 129
|
130: 127 Load 129(samp2DAs)
|
||||||
131: 7(fvec2) Load 9(lod)
|
131: 7(fvec2) Load 26(pf2)
|
||||||
132: 7(fvec2) FAdd 131 130
|
132: 126 Image 130
|
||||||
Store 9(lod) 132
|
133: 7(fvec2) ImageQueryLod 132 131
|
||||||
135: 11 Load 13(samp1D)
|
134: 7(fvec2) Load 9(lod)
|
||||||
136: 19(int) ImageQueryLevels 135
|
135: 7(fvec2) FAdd 134 133
|
||||||
Store 134(levels) 136
|
Store 9(lod) 135
|
||||||
141: 138 Load 140(usamp2D)
|
140: 137 Load 139(sampCubeAs)
|
||||||
142: 19(int) ImageQueryLevels 141
|
141: 38(fvec3) Load 40(pf3)
|
||||||
143: 19(int) Load 134(levels)
|
142: 136 Image 140
|
||||||
144: 19(int) IAdd 143 142
|
143: 7(fvec2) ImageQueryLod 142 141
|
||||||
Store 134(levels) 144
|
144: 7(fvec2) Load 9(lod)
|
||||||
149: 146 Load 148(isamp3D)
|
145: 7(fvec2) FAdd 144 143
|
||||||
150: 19(int) ImageQueryLevels 149
|
Store 9(lod) 145
|
||||||
151: 19(int) Load 134(levels)
|
148: 11 Load 13(samp1D)
|
||||||
152: 19(int) IAdd 151 150
|
149: 10 Image 148
|
||||||
Store 134(levels) 152
|
150: 20(int) ImageQueryLevels 149
|
||||||
157: 154 Load 156(isampCube)
|
Store 147(levels) 150
|
||||||
158: 19(int) ImageQueryLevels 157
|
155: 152 Load 154(usamp2D)
|
||||||
159: 19(int) Load 134(levels)
|
156: 151 Image 155
|
||||||
160: 19(int) IAdd 159 158
|
157: 20(int) ImageQueryLevels 156
|
||||||
Store 134(levels) 160
|
158: 20(int) Load 147(levels)
|
||||||
161: 53 Load 55(isamp1DA)
|
159: 20(int) IAdd 158 157
|
||||||
162: 19(int) ImageQueryLevels 161
|
Store 147(levels) 159
|
||||||
163: 19(int) Load 134(levels)
|
164: 161 Load 163(isamp3D)
|
||||||
164: 19(int) IAdd 163 162
|
165: 160 Image 164
|
||||||
Store 134(levels) 164
|
166: 20(int) ImageQueryLevels 165
|
||||||
169: 166 Load 168(samp2DA)
|
167: 20(int) Load 147(levels)
|
||||||
170: 19(int) ImageQueryLevels 169
|
168: 20(int) IAdd 167 166
|
||||||
171: 19(int) Load 134(levels)
|
Store 147(levels) 168
|
||||||
172: 19(int) IAdd 171 170
|
173: 170 Load 172(isampCube)
|
||||||
Store 134(levels) 172
|
174: 169 Image 173
|
||||||
177: 174 Load 176(usampCubeA)
|
175: 20(int) ImageQueryLevels 174
|
||||||
178: 19(int) ImageQueryLevels 177
|
176: 20(int) Load 147(levels)
|
||||||
179: 19(int) Load 134(levels)
|
177: 20(int) IAdd 176 175
|
||||||
180: 19(int) IAdd 179 178
|
Store 147(levels) 177
|
||||||
Store 134(levels) 180
|
178: 57 Load 59(isamp1DA)
|
||||||
181: 80 Load 82(samp1Ds)
|
179: 56 Image 178
|
||||||
182: 19(int) ImageQueryLevels 181
|
180: 20(int) ImageQueryLevels 179
|
||||||
Store 134(levels) 182
|
181: 20(int) Load 147(levels)
|
||||||
183: 89 Load 91(samp2Ds)
|
182: 20(int) IAdd 181 180
|
||||||
184: 19(int) ImageQueryLevels 183
|
Store 147(levels) 182
|
||||||
185: 19(int) Load 134(levels)
|
187: 184 Load 186(samp2DA)
|
||||||
186: 19(int) IAdd 185 184
|
188: 183 Image 187
|
||||||
Store 134(levels) 186
|
189: 20(int) ImageQueryLevels 188
|
||||||
187: 98 Load 100(sampCubes)
|
190: 20(int) Load 147(levels)
|
||||||
188: 19(int) ImageQueryLevels 187
|
191: 20(int) IAdd 190 189
|
||||||
189: 19(int) Load 134(levels)
|
Store 147(levels) 191
|
||||||
190: 19(int) IAdd 189 188
|
196: 193 Load 195(usampCubeA)
|
||||||
Store 134(levels) 190
|
197: 192 Image 196
|
||||||
191: 107 Load 109(samp1DAs)
|
198: 20(int) ImageQueryLevels 197
|
||||||
192: 19(int) ImageQueryLevels 191
|
199: 20(int) Load 147(levels)
|
||||||
193: 19(int) Load 134(levels)
|
200: 20(int) IAdd 199 198
|
||||||
194: 19(int) IAdd 193 192
|
Store 147(levels) 200
|
||||||
Store 134(levels) 194
|
201: 87 Load 89(samp1Ds)
|
||||||
195: 116 Load 118(samp2DAs)
|
202: 86 Image 201
|
||||||
196: 19(int) ImageQueryLevels 195
|
203: 20(int) ImageQueryLevels 202
|
||||||
197: 19(int) Load 134(levels)
|
Store 147(levels) 203
|
||||||
198: 19(int) IAdd 197 196
|
204: 97 Load 99(samp2Ds)
|
||||||
Store 134(levels) 198
|
205: 96 Image 204
|
||||||
199: 125 Load 127(sampCubeAs)
|
206: 20(int) ImageQueryLevels 205
|
||||||
200: 19(int) ImageQueryLevels 199
|
207: 20(int) Load 147(levels)
|
||||||
201: 19(int) Load 134(levels)
|
208: 20(int) IAdd 207 206
|
||||||
202: 19(int) IAdd 201 200
|
Store 147(levels) 208
|
||||||
Store 134(levels) 202
|
209: 107 Load 109(sampCubes)
|
||||||
|
210: 106 Image 209
|
||||||
|
211: 20(int) ImageQueryLevels 210
|
||||||
|
212: 20(int) Load 147(levels)
|
||||||
|
213: 20(int) IAdd 212 211
|
||||||
|
Store 147(levels) 213
|
||||||
|
214: 117 Load 119(samp1DAs)
|
||||||
|
215: 116 Image 214
|
||||||
|
216: 20(int) ImageQueryLevels 215
|
||||||
|
217: 20(int) Load 147(levels)
|
||||||
|
218: 20(int) IAdd 217 216
|
||||||
|
Store 147(levels) 218
|
||||||
|
219: 127 Load 129(samp2DAs)
|
||||||
|
220: 126 Image 219
|
||||||
|
221: 20(int) ImageQueryLevels 220
|
||||||
|
222: 20(int) Load 147(levels)
|
||||||
|
223: 20(int) IAdd 222 221
|
||||||
|
Store 147(levels) 223
|
||||||
|
224: 137 Load 139(sampCubeAs)
|
||||||
|
225: 136 Image 224
|
||||||
|
226: 20(int) ImageQueryLevels 225
|
||||||
|
227: 20(int) Load 147(levels)
|
||||||
|
228: 20(int) IAdd 227 226
|
||||||
|
Store 147(levels) 228
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
66
Test/baseResults/spv.shiftOps.frag.out
Normal file
66
Test/baseResults/spv.shiftOps.frag.out
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
spv.shiftOps.frag
|
||||||
|
Warning, version 450 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 38
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 9 25
|
||||||
|
ExecutionMode 4 OriginLowerLeft
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "icolor"
|
||||||
|
Name 11 "i3"
|
||||||
|
Name 15 "u1"
|
||||||
|
Name 25 "ucolor"
|
||||||
|
Name 27 "u3"
|
||||||
|
Name 30 "i1"
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 1
|
||||||
|
7: TypeVector 6(int) 3
|
||||||
|
8: TypePointer Output 7(ivec3)
|
||||||
|
9(icolor): 8(ptr) Variable Output
|
||||||
|
10: TypePointer UniformConstant 7(ivec3)
|
||||||
|
11(i3): 10(ptr) Variable UniformConstant
|
||||||
|
13: TypeInt 32 0
|
||||||
|
14: TypePointer UniformConstant 13(int)
|
||||||
|
15(u1): 14(ptr) Variable UniformConstant
|
||||||
|
17: TypeVector 13(int) 3
|
||||||
|
20: 13(int) Constant 4
|
||||||
|
24: TypePointer Output 17(ivec3)
|
||||||
|
25(ucolor): 24(ptr) Variable Output
|
||||||
|
26: TypePointer UniformConstant 17(ivec3)
|
||||||
|
27(u3): 26(ptr) Variable UniformConstant
|
||||||
|
29: TypePointer UniformConstant 6(int)
|
||||||
|
30(i1): 29(ptr) Variable UniformConstant
|
||||||
|
34: 6(int) Constant 5
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
12: 7(ivec3) Load 11(i3)
|
||||||
|
16: 13(int) Load 15(u1)
|
||||||
|
18: 17(ivec3) CompositeConstruct 16 16 16
|
||||||
|
19: 7(ivec3) ShiftLeftLogical 12 18
|
||||||
|
Store 9(icolor) 19
|
||||||
|
21: 7(ivec3) Load 9(icolor)
|
||||||
|
22: 17(ivec3) CompositeConstruct 20 20 20
|
||||||
|
23: 7(ivec3) ShiftLeftLogical 21 22
|
||||||
|
Store 9(icolor) 23
|
||||||
|
28: 17(ivec3) Load 27(u3)
|
||||||
|
31: 6(int) Load 30(i1)
|
||||||
|
32: 7(ivec3) CompositeConstruct 31 31 31
|
||||||
|
33: 17(ivec3) ShiftRightLogical 28 32
|
||||||
|
Store 25(ucolor) 33
|
||||||
|
35: 17(ivec3) Load 25(ucolor)
|
||||||
|
36: 7(ivec3) CompositeConstruct 34 34 34
|
||||||
|
37: 17(ivec3) ShiftRightLogical 35 36
|
||||||
|
Store 25(ucolor) 37
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 12
|
EntryPoint Fragment 4 "main" 12 16
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 150
|
Source GLSL 150
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 15 23 34 19 9 40 41
|
EntryPoint Vertex 4 "main" 9 15 19 23 34 40 41
|
||||||
Source GLSL 330
|
Source GLSL 330
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "glPos"
|
Name 9 "glPos"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 44
|
EntryPoint Fragment 4 "main" 31 44
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 61
|
EntryPoint Fragment 4 "main" 61 99
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 54
|
EntryPoint Fragment 4 "main" 45 54
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 30
|
EntryPoint Fragment 4 "main" 30 69
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 110
|
Source GLSL 110
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,12 @@ Linked fragment stage:
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 55
|
// Id's are bound by 56
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 20 38
|
EntryPoint Fragment 4 "main" 20 38 44
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
@ -82,7 +82,8 @@ Linked fragment stage:
|
||||||
51: 6(float) Load 50(blend)
|
51: 6(float) Load 50(blend)
|
||||||
52: 6(float) Load 8(blendscale)
|
52: 6(float) Load 8(blendscale)
|
||||||
53: 6(float) FMul 51 52
|
53: 6(float) FMul 51 52
|
||||||
54: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 53
|
54: 10(fvec4) CompositeConstruct 53 53 53 53
|
||||||
Store 44(gl_FragColor) 54
|
55: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 54
|
||||||
|
Store 44(gl_FragColor) 55
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 21 11 9 26
|
EntryPoint Vertex 4 "main" 9 11 15 21 26
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "uv"
|
Name 9 "uv"
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,12 @@ Linked fragment stage:
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 290
|
// Id's are bound by 291
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 289 47
|
EntryPoint Fragment 4 "main" 47 276 290
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
@ -39,8 +39,8 @@ Linked fragment stage:
|
||||||
Name 276 "gl_FragColor"
|
Name 276 "gl_FragColor"
|
||||||
Name 279 "u"
|
Name 279 "u"
|
||||||
Name 282 "blend"
|
Name 282 "blend"
|
||||||
Name 288 "scale"
|
Name 289 "scale"
|
||||||
Name 289 "t"
|
Name 290 "t"
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
|
|
@ -103,9 +103,9 @@ Linked fragment stage:
|
||||||
279(u): 278(ptr) Variable UniformConstant
|
279(u): 278(ptr) Variable UniformConstant
|
||||||
281: TypePointer UniformConstant 6(float)
|
281: TypePointer UniformConstant 6(float)
|
||||||
282(blend): 281(ptr) Variable UniformConstant
|
282(blend): 281(ptr) Variable UniformConstant
|
||||||
287: TypePointer UniformConstant 45(fvec2)
|
288: TypePointer UniformConstant 45(fvec2)
|
||||||
288(scale): 287(ptr) Variable UniformConstant
|
289(scale): 288(ptr) Variable UniformConstant
|
||||||
289(t): 46(ptr) Variable Input
|
290(t): 46(ptr) Variable Input
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(blendscale): 7(ptr) Variable Function
|
8(blendscale): 7(ptr) Variable Function
|
||||||
|
|
@ -268,7 +268,7 @@ Linked fragment stage:
|
||||||
Store 26(color) 173
|
Store 26(color) 173
|
||||||
174: 137 Load 139(shadowSampler1D)
|
174: 137 Load 139(shadowSampler1D)
|
||||||
175: 22(fvec4) Load 24(coords4D)
|
175: 22(fvec4) Load 24(coords4D)
|
||||||
176: 6(float) CompositeExtract 175 3
|
176: 6(float) CompositeExtract 175 2
|
||||||
177: 6(float) ImageSampleProjDrefImplicitLod 174 175 176
|
177: 6(float) ImageSampleProjDrefImplicitLod 174 175 176
|
||||||
178: 22(fvec4) Load 26(color)
|
178: 22(fvec4) Load 26(color)
|
||||||
179: 22(fvec4) CompositeConstruct 177 177 177 177
|
179: 22(fvec4) CompositeConstruct 177 177 177 177
|
||||||
|
|
@ -277,7 +277,7 @@ Linked fragment stage:
|
||||||
181: 137 Load 139(shadowSampler1D)
|
181: 137 Load 139(shadowSampler1D)
|
||||||
182: 22(fvec4) Load 24(coords4D)
|
182: 22(fvec4) Load 24(coords4D)
|
||||||
183: 6(float) Load 10(bias)
|
183: 6(float) Load 10(bias)
|
||||||
184: 6(float) CompositeExtract 182 3
|
184: 6(float) CompositeExtract 182 2
|
||||||
185: 6(float) ImageSampleProjDrefImplicitLod 181 182 184 Bias 183
|
185: 6(float) ImageSampleProjDrefImplicitLod 181 182 184 Bias 183
|
||||||
186: 22(fvec4) Load 26(color)
|
186: 22(fvec4) Load 26(color)
|
||||||
187: 22(fvec4) CompositeConstruct 185 185 185 185
|
187: 22(fvec4) CompositeConstruct 185 185 185 185
|
||||||
|
|
@ -285,7 +285,7 @@ Linked fragment stage:
|
||||||
Store 26(color) 188
|
Store 26(color) 188
|
||||||
189: 156 Load 158(shadowSampler2D)
|
189: 156 Load 158(shadowSampler2D)
|
||||||
190: 22(fvec4) Load 24(coords4D)
|
190: 22(fvec4) Load 24(coords4D)
|
||||||
191: 6(float) CompositeExtract 190 3
|
191: 6(float) CompositeExtract 190 2
|
||||||
192: 6(float) ImageSampleProjDrefImplicitLod 189 190 191
|
192: 6(float) ImageSampleProjDrefImplicitLod 189 190 191
|
||||||
193: 22(fvec4) Load 26(color)
|
193: 22(fvec4) Load 26(color)
|
||||||
194: 22(fvec4) CompositeConstruct 192 192 192 192
|
194: 22(fvec4) CompositeConstruct 192 192 192 192
|
||||||
|
|
@ -294,7 +294,7 @@ Linked fragment stage:
|
||||||
196: 156 Load 158(shadowSampler2D)
|
196: 156 Load 158(shadowSampler2D)
|
||||||
197: 22(fvec4) Load 24(coords4D)
|
197: 22(fvec4) Load 24(coords4D)
|
||||||
198: 6(float) Load 10(bias)
|
198: 6(float) Load 10(bias)
|
||||||
199: 6(float) CompositeExtract 197 3
|
199: 6(float) CompositeExtract 197 2
|
||||||
200: 6(float) ImageSampleProjDrefImplicitLod 196 197 199 Bias 198
|
200: 6(float) ImageSampleProjDrefImplicitLod 196 197 199 Bias 198
|
||||||
201: 22(fvec4) Load 26(color)
|
201: 22(fvec4) Load 26(color)
|
||||||
202: 22(fvec4) CompositeConstruct 200 200 200 200
|
202: 22(fvec4) CompositeConstruct 200 200 200 200
|
||||||
|
|
@ -370,7 +370,8 @@ Linked fragment stage:
|
||||||
283: 6(float) Load 282(blend)
|
283: 6(float) Load 282(blend)
|
||||||
284: 6(float) Load 8(blendscale)
|
284: 6(float) Load 8(blendscale)
|
||||||
285: 6(float) FMul 283 284
|
285: 6(float) FMul 283 284
|
||||||
286: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 285
|
286: 22(fvec4) CompositeConstruct 285 285 285 285
|
||||||
Store 276(gl_FragColor) 286
|
287: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 286
|
||||||
|
Store 276(gl_FragColor) 287
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked vertex stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 39 144
|
EntryPoint Vertex 4 "main" 39 140 144
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "lod"
|
Name 8 "lod"
|
||||||
|
|
@ -174,7 +174,7 @@ Linked vertex stage:
|
||||||
123: 100 Load 102(shadowSampler1D)
|
123: 100 Load 102(shadowSampler1D)
|
||||||
124: 18(fvec4) Load 20(coords4D)
|
124: 18(fvec4) Load 20(coords4D)
|
||||||
125: 6(float) Load 8(lod)
|
125: 6(float) Load 8(lod)
|
||||||
126: 6(float) CompositeExtract 124 3
|
126: 6(float) CompositeExtract 124 2
|
||||||
127: 6(float) ImageSampleProjDrefExplicitLod 123 124 126 Lod 125
|
127: 6(float) ImageSampleProjDrefExplicitLod 123 124 126 Lod 125
|
||||||
128: 18(fvec4) Load 23(color)
|
128: 18(fvec4) Load 23(color)
|
||||||
129: 18(fvec4) CompositeConstruct 127 127 127 127
|
129: 18(fvec4) CompositeConstruct 127 127 127 127
|
||||||
|
|
@ -183,7 +183,7 @@ Linked vertex stage:
|
||||||
131: 112 Load 114(shadowSampler2D)
|
131: 112 Load 114(shadowSampler2D)
|
||||||
132: 18(fvec4) Load 20(coords4D)
|
132: 18(fvec4) Load 20(coords4D)
|
||||||
133: 6(float) Load 8(lod)
|
133: 6(float) Load 8(lod)
|
||||||
134: 6(float) CompositeExtract 132 3
|
134: 6(float) CompositeExtract 132 2
|
||||||
135: 6(float) ImageSampleProjDrefExplicitLod 131 132 134 Lod 133
|
135: 6(float) ImageSampleProjDrefExplicitLod 131 132 134 Lod 133
|
||||||
136: 18(fvec4) Load 23(color)
|
136: 18(fvec4) Load 23(color)
|
||||||
137: 18(fvec4) CompositeConstruct 135 135 135 135
|
137: 18(fvec4) CompositeConstruct 135 135 135 135
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 94 104 114 124 134 144 154 164
|
EntryPoint Fragment 4 "main" 94 104 114 124 134 144 154 164 168
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 15 200 77 68
|
EntryPoint Fragment 4 "main" 15 68 77 200
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main"
|
EntryPoint Fragment 4 "main" 47
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 63
|
EntryPoint Fragment 4 "main" 54 63
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 34 39 19 19 48
|
EntryPoint Fragment 4 "main" 19 34 39 45 48
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 45 50 30 30 19
|
EntryPoint Fragment 4 "main" 19 30 45 50 56
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 130
|
Source GLSL 130
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Linked fragment stage:
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 41
|
EntryPoint Fragment 4 "main" 37 41
|
||||||
ExecutionMode 4 OriginLowerLeft
|
ExecutionMode 4 OriginLowerLeft
|
||||||
Source GLSL 120
|
Source GLSL 120
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue