Merge branch 'master' of github.com:google/glslang into loopgen

Change-Id: Ie8236430bb9e30a9be2e0c1573c42183c2f4d0d4
This commit is contained in:
Dejan Mircevski
2016-01-11 16:26:18 -05:00
279 changed files with 59955 additions and 57020 deletions

3
.gitattributes vendored
View File

@@ -12,3 +12,6 @@
*.c text eof=lf
*.cpp text eof=lf
*.y text eof=lf
*.out text eof=lf
*.conf text eof=lf
*.err text eof=lf

View File

@@ -5,7 +5,6 @@ set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
project(glslang)
if(WIN32)
set(CMAKE_GENERATOR_TOOLSET "v110" CACHE STRING "Platform Toolset" FORCE)
include(ChooseMSVCCRT.cmake)
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
elseif(UNIX)

View File

@@ -85,17 +85,17 @@ public:
bool visitLoop(glslang::TVisit, glslang::TIntermLoop*);
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:
spv::Id createSpvVariable(const glslang::TIntermSymbol*);
spv::Id getSampledType(const glslang::TSampler&);
spv::Id convertGlslangToSpvType(const glslang::TType& type);
spv::Id convertGlslangToSpvType(const glslang::TType& type, bool explicitLayout);
bool requiresExplicitLayout(const glslang::TType& type) const;
int getArrayStride(const glslang::TType& arrayType);
int getMatrixStride(const glslang::TType& matrixType);
void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset);
spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&);
glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const;
int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking, glslang::TLayoutMatrix);
bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
void makeFunctions(const glslang::TIntermSequence&);
@@ -108,6 +108,7 @@ protected:
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 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 createConversion(glslang::TOperator op, spv::Decoration precision, spv::Id destTypeId, spv::Id operand);
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
@@ -132,14 +133,15 @@ protected:
spv::Builder builder;
bool inMain;
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;
spv::Id stdBuiltins;
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_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::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)
{
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::EpqHigh: return spv::NoPrecision;
default:
@@ -254,14 +256,17 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type)
}
// 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()) {
switch (type.getQualifier().layoutMatrix) {
switch (matrixLayout) {
case glslang::ElmRowMajor:
return spv::DecorationRowMajor;
default:
case glslang::ElmColumnMajor:
return spv::DecorationColMajor;
default:
// opaque layouts don't need a majorness
return (spv::Decoration)spv::BadValue;
}
} else {
switch (type.getBasicType()) {
@@ -293,30 +298,30 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type)
// Translate glslang type to SPIR-V interpolation decorations.
// Returns spv::Decoration(spv::BadValue) when no decoration
// 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
return (spv::Decoration)spv::BadValue;
}
if (type.getQualifier().nopersp)
if (qualifier.nopersp)
return spv::DecorationNoPerspective;
else if (type.getQualifier().patch)
else if (qualifier.patch)
return spv::DecorationPatch;
else if (type.getQualifier().flat)
else if (qualifier.flat)
return spv::DecorationFlat;
else if (type.getQualifier().centroid)
else if (qualifier.centroid)
return spv::DecorationCentroid;
else if (type.getQualifier().sample)
else if (qualifier.sample)
return spv::DecorationSample;
else
return (spv::Decoration)spv::BadValue;
}
// 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;
else
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.
//
@@ -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()
{
if (! mainTerminated) {
@@ -580,6 +623,14 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
// Formal function parameters were mapped during makeFunctions().
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) {
// Prepare to generate code for the access
@@ -596,11 +647,6 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
builder.setAccessChainRValue(id);
else
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,
node->getLeft()->getType().getBasicType());
builder.clearAccessChain();
if (! result) {
spv::MissingFunctionality("unknown glslang binary operation");
return true; // pick up a child as the place-holder result
} else {
builder.clearAccessChain();
builder.setAccessChainRValue(result);
return false;
}
return true;
}
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 ||
node->getOp() == glslang::EOpAtomicCounterDecrement ||
node->getOp() == glslang::EOpAtomicCounter)
node->getOp() == glslang::EOpAtomicCounter ||
node->getOp() == glslang::EOpInterpolateAtCentroid)
operand = builder.accessChainGetLValue(); // Special case l-value operands
else
operand = builder.accessChainLoad(convertGlslangToSpvType(node->getOperand()->getType()));
@@ -888,10 +933,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
default:
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)
@@ -1173,6 +1216,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
if (arg == 1)
lvalue = true;
break;
case glslang::EOpInterpolateAtSample:
case glslang::EOpInterpolateAtOffset:
if (arg == 0)
lvalue = true;
break;
case glslang::EOpAtomicAdd:
case glslang::EOpAtomicMin:
case glslang::EOpAtomicMax:
@@ -1226,7 +1274,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
if (! result) {
spv::MissingFunctionality("unknown glslang aggregate");
return true;
return true; // pick up a child as a placeholder operand
} else {
builder.clearAccessChain();
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
// recursive version of this function.
// Convert from a glslang type to an SPV type, by calling into a
// 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)
{
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.
// 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()) {
case glslang::EbtVoid:
@@ -1509,13 +1558,13 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
case glslang::EbtSampler:
{
const glslang::TSampler& sampler = type.getSampler();
// an image is present, make its type
spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms,
sampler.image ? 2 : 1, TranslateImageFormat(type));
// an image is present, make its type
spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms,
sampler.image ? 2 : 1, TranslateImageFormat(type));
if (! sampler.image) {
spvType = builder.makeSampledImageType(spvType);
}
spvType = builder.makeSampledImageType(spvType);
}
}
break;
case glslang::EbtStruct:
case glslang::EbtBlock:
@@ -1523,8 +1572,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
// If we've seen this struct type, return it
const glslang::TTypeList* glslangStruct = type.getStruct();
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;
// else, we haven't seen it...
@@ -1542,13 +1595,17 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
} else {
if (type.getBasicType() == glslang::EbtBlock)
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
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
int offset = -1;
@@ -1557,31 +1614,35 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
int member = i;
if (type.getBasicType() == glslang::EbtBlock)
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
if (member >= 0) {
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, TranslateInterpolationDecoration(glslangType));
addMemberDecoration(spvType, member, TranslateInvariantDecoration(glslangType));
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier));
addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier));
if (glslangType.getQualifier().hasLocation())
builder.addMemberDecoration(spvType, member, spv::DecorationLocation, glslangType.getQualifier().layoutLocation);
if (glslangType.getQualifier().hasComponent())
builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent);
if (glslangType.getQualifier().hasXfbOffset())
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
int nextOffset;
updateMemberOffset(type, glslangType, offset, nextOffset);
updateMemberOffset(type, glslangType, offset, nextOffset, explicitLayout, subQualifier.layoutMatrix);
if (offset >= 0)
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, offset);
offset = nextOffset;
}
if (glslangType.isMatrix() && explicitLayout) {
builder.addMemberDecoration(spvType, member, spv::DecorationMatrixStride, getMatrixStride(glslangType));
}
if (glslangType.isMatrix() && explicitLayout != glslang::ElpNone)
builder.addMemberDecoration(spvType, member, spv::DecorationMatrixStride, getMatrixStride(glslangType, explicitLayout, subQualifier.layoutMatrix));
// built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangType.getQualifier().builtIn);
@@ -1591,7 +1652,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
}
// Decorate the structure
addDecoration(spvType, TranslateLayoutDecoration(type));
addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix));
addDecoration(spvType, TranslateBlockDecoration(type));
if (type.getQualifier().hasStream())
builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
@@ -1617,10 +1678,38 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
}
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
for (int dim = type.getArraySizes()->getNumDims() - 1; dim > 0; --dim) {
assert(type.getArraySizes()->getDimSize(dim) > 0);
spvType = builder.makeArrayType(spvType, type.getArraySizes()->getDimSize(dim));
if (type.getArraySizes()->getNumDims() > 1) {
// We need to decorate array strides for types needing explicit layout, except blocks.
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
@@ -1628,55 +1717,62 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
spvType = builder.makeRuntimeArray(spvType);
} else {
assert(type.getOuterArraySize() > 0);
spvType = builder.makeArrayType(spvType, type.getOuterArraySize());
spvType = builder.makeArrayType(spvType, type.getOuterArraySize(), stride);
}
// TODO: explicit layout still needs to be done hierarchically for arrays of arrays, which
// 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));
if (stride > 0)
builder.addDecoration(spvType, spv::DecorationArrayStride, stride);
}
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 &&
type.getQualifier().layoutPacking != glslang::ElpShared &&
type.getQualifier().layoutPacking != glslang::ElpPacked &&
(type.getQualifier().storage == glslang::EvqUniform ||
type.getQualifier().storage == glslang::EvqBuffer);
// has to be a block
if (type.getBasicType() != glslang::EbtBlock)
return glslang::ElpNone;
// 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
int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType)
int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
{
int size;
int stride = glslangIntermediate->getBaseAlignment(arrayType, size, arrayType.getQualifier().layoutPacking == glslang::ElpStd140);
if (arrayType.isMatrix()) {
// 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();
}
int stride;
glslangIntermediate->getBaseAlignment(arrayType, size, stride, explicitLayout == glslang::ElpStd140, matrixLayout == glslang::ElmRowMajor);
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
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;
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
@@ -1685,14 +1781,12 @@ int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType)
// '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.
// -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
nextOffset = -1;
bool forceOffset = structType.getQualifier().layoutPacking == glslang::ElpStd140 ||
structType.getQualifier().layoutPacking == glslang::ElpStd430;
// override anything in currentOffset with user-set offset
if (memberType.getQualifier().hasOffset())
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
// settings are needed in layoutOffset, and then the following will come into play.
if (! forceOffset) {
if (explicitLayout == glslang::ElpNone) {
if (! memberType.getQualifier().hasOffset())
currentOffset = -1;
return;
}
// Getting this far means we are forcing offsets
// Getting this far means we need explicit offsets
if (currentOffset < 0)
currentOffset = 0;
@@ -1717,7 +1811,8 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType
// but possibly not yet correctly aligned.
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);
nextOffset = currentOffset + memberSize;
}
@@ -1876,6 +1971,9 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
// Check for queries
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()) {
case glslang::EOpImageQuerySize:
case glslang::EOpTextureQuerySize:
@@ -1904,15 +2002,19 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
auto opIt = arguments.begin();
operands.push_back(*(opIt++));
operands.push_back(*(opIt++));
if (node->getOp() == glslang::EOpImageStore)
operands.push_back(*(opIt++));
if (node->getOp() == glslang::EOpImageLoad) {
if (sampler.ms) {
operands.push_back(spv::ImageOperandsSampleMask);
operands.push_back(*(opIt++));
operands.push_back(*opIt);
}
return builder.createOp(spv::OpImageRead, convertGlslangToSpvType(node->getType()), operands);
} 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);
return spv::NoResult;
} else {
@@ -1966,7 +2068,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
std::vector<spv::Id> indexes;
int comp;
if (cracked.proj)
comp = 3;
comp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref"
else
comp = builder.getNumComponents(params.coords) - 1;
indexes.push_back(comp);
@@ -2138,26 +2240,17 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
break;
case glslang::EOpVectorTimesMatrix:
case glslang::EOpVectorTimesMatrixAssign:
assert(builder.isVector(left));
assert(builder.isMatrix(right));
binOp = spv::OpVectorTimesMatrix;
break;
case glslang::EOpMatrixTimesVector:
assert(builder.isMatrix(left));
assert(builder.isVector(right));
binOp = spv::OpMatrixTimesVector;
break;
case glslang::EOpMatrixTimesScalar:
case glslang::EOpMatrixTimesScalarAssign:
if (builder.isMatrix(right))
std::swap(left, right);
assert(builder.isScalar(right));
binOp = spv::OpMatrixTimesScalar;
break;
case glslang::EOpMatrixTimesMatrix:
case glslang::EOpMatrixTimesMatrixAssign:
assert(builder.isMatrix(left));
assert(builder.isMatrix(right));
binOp = spv::OpMatrixTimesMatrix;
break;
case glslang::EOpOuterProduct:
@@ -2236,29 +2329,8 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
// handle mapped binary operations (should be non-comparison)
if (binOp != spv::OpNop) {
assert(comparison == false);
if (builder.isMatrix(left) || builder.isMatrix(right)) {
switch (binOp) {
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;
}
if (builder.isMatrix(left) || builder.isMatrix(right))
return createBinaryMatrixOperation(binOp, precision, typeId, left, right);
// No matrix involved; make both operands be the same number of components, if needed
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))) {
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) {
@@ -2342,6 +2414,111 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
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::Op unaryOp = spv::OpNop;
@@ -2471,6 +2648,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
unaryOp = spv::OpIsInf;
break;
case glslang::EOpFloatBitsToInt:
case glslang::EOpFloatBitsToUint:
case glslang::EOpIntBitsToFloat:
case glslang::EOpUintBitsToFloat:
unaryOp = spv::OpBitcast;
break;
case glslang::EOpPackSnorm2x16:
libCall = spv::GLSLstd450PackSnorm2x16;
break;
@@ -2535,7 +2719,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
case glslang::EOpFwidthCoarse:
unaryOp = spv::OpFwidthCoarse;
break;
case glslang::EOpInterpolateAtCentroid:
libCall = spv::GLSLstd450InterpolateAtCentroid;
break;
case glslang::EOpAny:
unaryOp = spv::OpAny;
break;
@@ -2809,6 +2995,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450UMin;
else
libCall = spv::GLSLstd450SMin;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpModf:
libCall = spv::GLSLstd450Modf;
@@ -2820,6 +3007,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450UMax;
else
libCall = spv::GLSLstd450SMax;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpPow:
libCall = spv::GLSLstd450Pow;
@@ -2838,18 +3026,24 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450UClamp;
else
libCall = spv::GLSLstd450SClamp;
builder.promoteScalar(precision, operands.front(), operands[1]);
builder.promoteScalar(precision, operands.front(), operands[2]);
break;
case glslang::EOpMix:
if (isFloat)
libCall = spv::GLSLstd450FMix;
else
libCall = spv::GLSLstd450IMix;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpStep:
libCall = spv::GLSLstd450Step;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpSmoothStep:
libCall = spv::GLSLstd450SmoothStep;
builder.promoteScalar(precision, operands[0], operands[2]);
builder.promoteScalar(precision, operands[1], operands[2]);
break;
case glslang::EOpDistance:
@@ -2867,7 +3061,12 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
case glslang::EOpRefract:
libCall = spv::GLSLstd450Refract;
break;
case glslang::EOpInterpolateAtSample:
libCall = spv::GLSLstd450InterpolateAtSample;
break;
case glslang::EOpInterpolateAtOffset:
libCall = spv::GLSLstd450InterpolateAtOffset;
break;
case glslang::EOpAddCarry:
opCode = spv::OpIAddCarry;
typeId = builder.makeStructResultType(typeId0, typeId0);
@@ -3027,7 +3226,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
if (! symbol->getType().isStruct()) {
addDecoration(id, TranslatePrecisionDecoration(symbol->getType()));
addDecoration(id, TranslateInterpolationDecoration(symbol->getType()));
addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier()));
if (symbol->getQualifier().hasLocation())
builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
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())
builder.addDecoration(id, spv::DecorationStream, symbol->getQualifier().layoutStream);
if (symbol->getQualifier().hasSet())

View File

@@ -281,18 +281,23 @@ Id Builder::makeMatrixType(Id component, int cols, int rows)
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
Id sizeId = makeUintConstant(size);
// try to find existing type
Instruction* type;
for (int t = 0; t < (int)groupedTypes[OpTypeArray].size(); ++t) {
type = groupedTypes[OpTypeArray][t];
if (type->getIdOperand(0) == element &&
type->getIdOperand(1) == sizeId)
return type->getResultId();
if (stride == 0) {
// try to find existing type
for (int t = 0; t < (int)groupedTypes[OpTypeArray].size(); ++t) {
type = groupedTypes[OpTypeArray][t];
if (type->getIdOperand(0) == element &&
type->getIdOperand(1) == sizeId)
return type->getResultId();
}
}
// 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);
@@ -447,7 +452,10 @@ int Builder::getNumTypeComponents(Id typeId) const
return 1;
case OpTypeVector:
case OpTypeMatrix:
case OpTypeArray:
return instr->getImmediateOperand(1);
case OpTypeStruct:
return instr->getNumOperands();
default:
assert(0);
return 1;
@@ -1174,9 +1182,9 @@ void Builder::promoteScalar(Decoration precision, Id& left, Id& right)
int direction = getNumComponents(right) - getNumComponents(left);
if (direction > 0)
left = smearScalar(precision, left, getTypeId(right));
left = smearScalar(precision, left, makeVectorType(getTypeId(left), getNumComponents(right)));
else if (direction < 0)
right = smearScalar(precision, right, getTypeId(left));
right = smearScalar(precision, right, makeVectorType(getTypeId(right), getNumComponents(left)));
return;
}
@@ -1185,6 +1193,7 @@ void Builder::promoteScalar(Decoration precision, Id& left, Id& right)
Id Builder::smearScalar(Decoration /*precision*/, Id scalar, Id vectorType)
{
assert(getNumComponents(scalar) == 1);
assert(getTypeId(scalar) == getScalarTypeId(vectorType));
int numComponents = getNumTypeComponents(vectorType);
if (numComponents == 1)
@@ -1365,14 +1374,12 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
case Dim2D:
case DimCube:
case DimRect:
case DimSubpassData:
numComponents = 2;
break;
case Dim3D:
numComponents = 3;
break;
case DimSubpassData:
MissingFunctionality("input-attachment dim");
break;
default:
assert(0);
@@ -1410,88 +1417,79 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
return query->getResultId();
}
// Comments in header
Id Builder::createCompare(Decoration precision, Id value1, Id value2, bool equal)
// External comments in header.
// Operates recursively to visit the composite's hierarchy.
Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, bool equal)
{
Id boolType = makeBoolType();
Id valueType = getTypeId(value1);
assert(valueType == getTypeId(value2));
assert(! isScalar(value1));
Id resultId;
// Vectors
int numConstituents = getNumTypeConstituents(valueType);
if (isVectorType(valueType)) {
Id boolVectorType = makeVectorType(boolType, getNumTypeComponents(valueType));
Id boolVector;
// Scalars and Vectors
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;
if (getMostBasicTypeClass(valueType) == OpTypeFloat)
switch (getMostBasicTypeClass(valueType)) {
case OpTypeFloat:
op = equal ? OpFOrdEqual : OpFOrdNotEqual;
else
break;
case OpTypeInt:
op = equal ? OpIEqual : OpINotEqual;
break;
case OpTypeBool:
op = equal ? OpLogicalEqual : OpLogicalNotEqual;
precision = NoPrecision;
break;
}
boolVector = createBinOp(op, boolVectorType, value1, value2);
setPrecision(boolVector, precision);
if (isScalarType(valueType)) {
// 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().
op = equal ? OpAll : OpAny;
return createUnaryOp(op, boolType, boolVector);
return resultId;
}
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
// and accumulate the results.
Id subResultId = createCompositeCompare(precision, constituent1, constituent2, equal);
// Matrices
if (constituent == 0)
resultId = subResultId;
else
resultId = createBinOp(equal ? OpLogicalAnd : OpLogicalOr, boolType, resultId, subResultId);
}
// Arrays
//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;
return resultId;
}
// OpCompositeConstruct
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);
for (int c = 0; c < (int)constituents.size(); ++c)
@@ -2146,7 +2144,6 @@ void TbdFunctionality(const char* tbd)
void MissingFunctionality(const char* fun)
{
printf("Missing functionality: %s\n", fun);
exit(1);
}
}; // end spv namespace

View File

@@ -102,7 +102,7 @@ public:
Id makeStructResultType(Id type0, Id type1);
Id makeVectorType(Id component, int size);
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 makeFunctionType(Id returnType, std::vector<Id>& paramTypes);
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 getMostBasicTypeClass(Id typeId) const;
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 getContainedTypeId(Id typeId) const;
Id getContainedTypeId(Id typeId, int) const;
StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); }
bool isMatrix(Id resultId) const { return isMatrixType(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 isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); }
bool isMatrix(Id resultId) const { return isMatrixType(getTypeId(resultId)); }
bool isAggregate(Id resultId) const { return isAggregateType(getTypeId(resultId)); }
bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); }
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; }
bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
bool isBoolType(Id typeId) const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); }
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; }
bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
bool isConstantOpCode(Op opcode) const;
bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); }
@@ -149,7 +151,7 @@ public:
int getTypeNumColumns(Id typeId) const
{
assert(isMatrixType(typeId));
return getNumTypeComponents(typeId);
return getNumTypeConstituents(typeId);
}
int getNumColumns(Id resultId) const { return getTypeNumColumns(getTypeId(resultId)); }
int getTypeNumRows(Id typeId) const
@@ -264,11 +266,13 @@ public:
// (No true lvalue or stores are used.)
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.
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:
@@ -278,12 +282,17 @@ public:
// - promoteScalar(scalar, scalar) // do nothing
// 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
// through the return value.
void promoteScalar(Decoration precision, Id& left, Id& right);
// make a value by smearing the scalar to fill the type
Id smearScalar(Decoration precision, Id scalarVal, Id);
// Make a value by smearing the scalar to fill the type.
// 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.
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);
// 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
Id createCompositeConstruct(Id typeId, std::vector<Id>& constituents);

View File

@@ -300,7 +300,12 @@ public:
Instruction* getInstruction(Id id) const { return idToInstruction[id]; }
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
{
for (int f = 0; f < (int)functions.size(); ++f)

View File

@@ -827,7 +827,7 @@ int C_DECL main(int argc, char* argv[])
// Print out all the resulting infologs
for (int w = 0; w < NumWorkItems; ++w) {
if (Work[w]) {
if (printShaderNames)
if (printShaderNames || Work[w]->results.size() > 0)
PutsIfNonEmpty(Work[w]->name.c_str());
PutsIfNonEmpty(Work[w]->results.c_str());
delete Work[w];

View File

@@ -43,3 +43,8 @@ void barWxyz()
ivec4 t42 = texelFetch(ismsa, ivec3(2), samp);
uvec4 t43 = texelFetch(usmsa, p3, samp);
}
int primitiveID()
{
return gl_PrimitiveID;
}

View File

@@ -37,7 +37,7 @@ struct s {
};
in s badout; // ERROR, can't contain a sampler
// ERROR, can't have int in struct without flat
struct S2 {
vec3 c;
float f;

View File

@@ -39,3 +39,5 @@ void foo()
;
}
}
layout(vertices = 0) out; // ERROR, can't be 0

View File

@@ -146,3 +146,8 @@ void interp()
interpolateAtCentroid(sampInArray[2].xy);
interpolateAtSample(sampInArray[2].x.x, 2);
}
int layer()
{
return gl_Layer;
}

View File

@@ -1,3 +1,4 @@
100Limits.vert
ERROR: 0:24: 'limitation' : 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"

View File

@@ -101,6 +101,11 @@ ERROR: node is still EOpNull!
0:44 'usmsa' (uniform usampler2DMSArray)
0:44 'p3' (flat in 3-component vector of 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:? '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 'p3' (flat in 3-component vector of 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:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)

View File

@@ -586,7 +586,7 @@ ERROR: 1 compilation errors. No code generated.
Shader version: 400
vertices = 0
vertices = -1
ERROR: node is still EOpNull!
0:8 Function Definition: main( (global void)
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: '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: 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

View File

@@ -4,6 +4,7 @@ ERROR: 0:30: 'noperspective' : Reserved word.
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: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:60: '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:160: 'imageBuffer' : Reserved word.
ERROR: 0:160: '' : syntax error
ERROR: 44 compilation errors. No code generated.
ERROR: 45 compilation errors. No code generated.
Shader version: 300

View File

@@ -12,8 +12,8 @@ ERROR: 7 compilation errors. No code generated.
Shader version: 410
invocations = 0
max_vertices = 0
invocations = -1
max_vertices = -1
input primitive = none
output primitive = none
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)
Shader version: 410
invocations = 0
max_vertices = 0
invocations = 1
max_vertices = -1
input primitive = none
output primitive = none
ERROR: node is still EOpNull!

View File

@@ -5,7 +5,7 @@ ERROR: 1 compilation errors. No code generated.
Shader version: 400
vertices = 0
vertices = -1
ERROR: node is still EOpNull!
0:8 Function Definition: main( (global void)
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=...)
Shader version: 400
vertices = 0
vertices = -1
ERROR: node is still EOpNull!
0:8 Function Definition: main( (global void)
0:8 Function Parameters:

View File

@@ -10,8 +10,8 @@ ERROR: 6 compilation errors. No code generated.
Shader version: 420
invocations = 0
max_vertices = 0
invocations = -1
max_vertices = -1
input primitive = triangles
output primitive = none
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)
Shader version: 420
invocations = 0
max_vertices = 0
invocations = 1
max_vertices = -1
input primitive = triangles
output primitive = none
ERROR: node is still EOpNull!

View File

@@ -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: '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: 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

View File

@@ -5,8 +5,8 @@ ERROR: 1 compilation errors. No code generated.
Shader version: 420
invocations = 0
max_vertices = 0
invocations = -1
max_vertices = -1
input primitive = triangles
output primitive = none
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)
Shader version: 420
invocations = 0
max_vertices = 0
invocations = 1
max_vertices = -1
input primitive = triangles
output primitive = none
ERROR: node is still EOpNull!

View File

@@ -77,6 +77,11 @@ ERROR: node is still EOpNull!
0:147 0 (const int)
0:147 Constant:
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:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of 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 Constant:
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:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
0:? 'b' (layout(location=4 component=1 ) smooth in float)

View File

@@ -2,8 +2,8 @@
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 450
invocations = 0
max_vertices = 0
invocations = -1
max_vertices = -1
input primitive = none
output primitive = none
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)
Shader version: 450
invocations = 0
max_vertices = 0
invocations = 1
max_vertices = -1
input primitive = none
output primitive = none
0:? Sequence

View File

@@ -2,7 +2,7 @@
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 450
vertices = 0
vertices = -1
0:? Sequence
0:11 Function Definition: main( (global void)
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=...)
Shader version: 450
vertices = 0
vertices = -1
0:? Sequence
0:11 Function Definition: main( (global void)
0:11 Function Parameters:

View File

@@ -257,6 +257,19 @@ ERROR: node is still EOpNull!
0:120 1.000000
0:120 Constant:
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:? 'a' (const int)
0:? 1 (const int)
@@ -331,6 +344,18 @@ ERROR: node is still EOpNull!
0:? 4.000000
0:? 5.000000
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:
@@ -584,6 +609,19 @@ ERROR: node is still EOpNull!
0:120 1.000000
0:120 Constant:
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:? 'a' (const int)
0:? 1 (const int)
@@ -658,4 +696,16 @@ ERROR: node is still EOpNull!
0:? 4.000000
0:? 5.000000
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

View File

@@ -18,8 +18,8 @@ ERROR: 1 compilation errors. No code generated.
Shader version: 150
invocations = 0
max_vertices = 0
invocations = -1
max_vertices = -1
input primitive = none
output primitive = points
ERROR: node is still EOpNull!
@@ -29,8 +29,8 @@ ERROR: node is still EOpNull!
noMain2.geom
Shader version: 150
invocations = 0
max_vertices = 0
invocations = -1
max_vertices = -1
input primitive = none
output primitive = line_strip
0:? Sequence
@@ -52,8 +52,8 @@ ERROR: Linking fragment stage: Multiple function bodies in multiple compilation
main(
Shader version: 150
invocations = 0
max_vertices = 0
invocations = 1
max_vertices = -1
input primitive = none
output primitive = points
ERROR: node is still EOpNull!

View 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)

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
EntryPoint Fragment 4 "main" 36
ExecutionMode 4 OriginLowerLeft
Source ESSL 100
Name 4 "main"

View File

@@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 212
// Id's are bound by 214
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 130
SourceExtension "GL_ARB_gpu_shader5"
@@ -33,38 +33,38 @@ Linked fragment stage:
Name 55 "samp2DS"
Name 68 "io"
Name 72 "Sca"
Name 78 "i"
Name 86 "Isca"
Name 98 "uo"
Name 102 "Usca"
Name 113 "a"
Name 117 "Scas"
Name 122 "f"
Name 131 "c"
Name 152 "a1"
Name 155 "m43"
Name 158 "b"
Name 165 "sampC"
Name 171 "gl_ClipDistance"
Name 181 "b"
Name 182 "fflat"
Name 183 "fsmooth"
Name 184 "fnop"
Name 185 "gl_Color"
Name 192 "bounds"
Name 193 "s2D"
Name 194 "s2DR"
Name 198 "s2DRS"
Name 202 "s1D"
Name 203 "s2DS"
Name 205 "f"
Name 207 "v2"
Name 209 "v3"
Name 211 "v4"
Decorate 171(gl_ClipDistance) BuiltIn ClipDistance
Decorate 182(fflat) Flat
Decorate 184(fnop) NoPerspective
Decorate 192(bounds) Binding 0
Name 79 "i"
Name 87 "Isca"
Name 99 "uo"
Name 103 "Usca"
Name 114 "a"
Name 118 "Scas"
Name 124 "f"
Name 133 "c"
Name 154 "a1"
Name 157 "m43"
Name 160 "b"
Name 167 "sampC"
Name 173 "gl_ClipDistance"
Name 183 "b"
Name 184 "fflat"
Name 185 "fsmooth"
Name 186 "fnop"
Name 187 "gl_Color"
Name 194 "bounds"
Name 195 "s2D"
Name 196 "s2DR"
Name 200 "s2DRS"
Name 204 "s1D"
Name 205 "s2DS"
Name 207 "f"
Name 209 "v2"
Name 211 "v3"
Name 213 "v4"
Decorate 173(gl_ClipDistance) BuiltIn ClipDistance
Decorate 184(fflat) Flat
Decorate 186(fnop) NoPerspective
Decorate 194(bounds) Binding 0
2: TypeVoid
3: TypeFunction 2
14: TypeFloat 32
@@ -107,94 +107,94 @@ Linked fragment stage:
71: TypePointer UniformConstant 70
72(Sca): 71(ptr) Variable UniformConstant
74: 26(int) Constant 3
77: TypePointer Input 15(fvec4)
78(i): 77(ptr) Variable Input
83: TypeImage 26(int) Cube array sampled format:Unknown
84: TypeSampledImage 83
85: TypePointer UniformConstant 84
86(Isca): 85(ptr) Variable UniformConstant
89: 14(float) Constant 1060320051
90: TypeVector 26(int) 4
95: TypeInt 32 0
96: TypeVector 95(int) 4
97: TypePointer Output 96(ivec4)
98(uo): 97(ptr) Variable Output
99: TypeImage 95(int) Cube array sampled format:Unknown
100: TypeSampledImage 99
101: TypePointer UniformConstant 100
102(Usca): 101(ptr) Variable UniformConstant
108: 14(float) Constant 1071225242
112: TypePointer Private 39(fvec3)
113(a): 112(ptr) Variable Private
114: TypeImage 14(float) Cube depth array sampled format:Unknown
115: TypeSampledImage 114
116: TypePointer UniformConstant 115
117(Scas): 116(ptr) Variable UniformConstant
121: TypePointer Function 14(float)
125: 95(int) Constant 1
126: TypePointer Input 14(float)
130: TypePointer Function 90(ivec4)
134: 14(float) Constant 1036831949
135: 39(fvec3) ConstantComposite 134 134 134
136: 14(float) Constant 1045220557
78: TypePointer Input 15(fvec4)
79(i): 78(ptr) Variable Input
84: TypeImage 26(int) Cube array sampled format:Unknown
85: TypeSampledImage 84
86: TypePointer UniformConstant 85
87(Isca): 86(ptr) Variable UniformConstant
90: 14(float) Constant 1060320051
91: TypeVector 26(int) 4
96: TypeInt 32 0
97: TypeVector 96(int) 4
98: TypePointer Output 97(ivec4)
99(uo): 98(ptr) Variable Output
100: TypeImage 96(int) Cube array sampled format:Unknown
101: TypeSampledImage 100
102: TypePointer UniformConstant 101
103(Usca): 102(ptr) Variable UniformConstant
109: 14(float) Constant 1071225242
113: TypePointer Private 39(fvec3)
114(a): 113(ptr) Variable Private
115: TypeImage 14(float) Cube depth array sampled format:Unknown
116: TypeSampledImage 115
117: TypePointer UniformConstant 116
118(Scas): 117(ptr) Variable UniformConstant
123: TypePointer Function 14(float)
127: 96(int) Constant 1
128: TypePointer Input 14(float)
132: TypePointer Function 91(ivec4)
136: 14(float) Constant 1036831949
137: 39(fvec3) ConstantComposite 136 136 136
153: TypeMatrix 39(fvec3) 4
154: TypePointer Function 153
159: 14(float) Constant 1073741824
162: TypeImage 14(float) Cube sampled format:Unknown
163: TypeSampledImage 162
164: TypePointer UniformConstant 163
165(sampC): 164(ptr) Variable UniformConstant
168: 95(int) Constant 4
169: TypeArray 14(float) 168
170: TypePointer Input 169
171(gl_ClipDistance): 170(ptr) Variable Input
174: TypePointer Output 14(float)
180: TypePointer Private 14(float)
181(b): 180(ptr) Variable Private
182(fflat): 126(ptr) Variable Input
183(fsmooth): 126(ptr) Variable Input
184(fnop): 126(ptr) Variable Input
185(gl_Color): 77(ptr) Variable Input
186: 95(int) Constant 3
187: TypeArray 26(int) 186
188: 26(int) Constant 10
189: 26(int) Constant 23
190: 26(int) Constant 32
191: 187 ConstantComposite 188 189 190
192(bounds): 20(ptr) Variable UniformConstant
193(s2D): 20(ptr) Variable UniformConstant
194(s2DR): 46(ptr) Variable UniformConstant
195: TypeImage 14(float) Rect depth sampled format:Unknown
196: TypeSampledImage 195
197: TypePointer UniformConstant 196
198(s2DRS): 197(ptr) Variable UniformConstant
199: TypeImage 14(float) 1D sampled format:Unknown
200: TypeSampledImage 199
201: TypePointer UniformConstant 200
202(s1D): 201(ptr) Variable UniformConstant
203(s2DS): 54(ptr) Variable UniformConstant
204: TypePointer UniformConstant 14(float)
205(f): 204(ptr) Variable UniformConstant
206: TypePointer UniformConstant 23(fvec2)
207(v2): 206(ptr) Variable UniformConstant
208: TypePointer UniformConstant 39(fvec3)
209(v3): 208(ptr) Variable UniformConstant
210: TypePointer UniformConstant 15(fvec4)
211(v4): 210(ptr) Variable UniformConstant
138: 14(float) Constant 1045220557
139: 39(fvec3) ConstantComposite 138 138 138
155: TypeMatrix 39(fvec3) 4
156: TypePointer Function 155
161: 14(float) Constant 1073741824
164: TypeImage 14(float) Cube sampled format:Unknown
165: TypeSampledImage 164
166: TypePointer UniformConstant 165
167(sampC): 166(ptr) Variable UniformConstant
170: 96(int) Constant 4
171: TypeArray 14(float) 170
172: TypePointer Input 171
173(gl_ClipDistance): 172(ptr) Variable Input
176: TypePointer Output 14(float)
182: TypePointer Private 14(float)
183(b): 182(ptr) Variable Private
184(fflat): 128(ptr) Variable Input
185(fsmooth): 128(ptr) Variable Input
186(fnop): 128(ptr) Variable Input
187(gl_Color): 78(ptr) Variable Input
188: 96(int) Constant 3
189: TypeArray 26(int) 188
190: 26(int) Constant 10
191: 26(int) Constant 23
192: 26(int) Constant 32
193: 189 ConstantComposite 190 191 192
194(bounds): 20(ptr) Variable UniformConstant
195(s2D): 20(ptr) Variable UniformConstant
196(s2DR): 46(ptr) Variable UniformConstant
197: TypeImage 14(float) Rect depth sampled format:Unknown
198: TypeSampledImage 197
199: TypePointer UniformConstant 198
200(s2DRS): 199(ptr) Variable UniformConstant
201: TypeImage 14(float) 1D sampled format:Unknown
202: TypeSampledImage 201
203: TypePointer UniformConstant 202
204(s1D): 203(ptr) Variable UniformConstant
205(s2DS): 54(ptr) Variable UniformConstant
206: TypePointer UniformConstant 14(float)
207(f): 206(ptr) Variable UniformConstant
208: TypePointer UniformConstant 23(fvec2)
209(v2): 208(ptr) Variable UniformConstant
210: TypePointer UniformConstant 39(fvec3)
211(v3): 210(ptr) Variable UniformConstant
212: TypePointer UniformConstant 15(fvec4)
213(v4): 212(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
166: 163 Load 165(sampC)
167: 15(fvec4) ImageGather 166 137 30
Store 17(o) 167
172: 126(ptr) AccessChain 171(gl_ClipDistance) 74
173: 14(float) Load 172
175: 174(ptr) AccessChain 17(o) 125
Store 175 173
176: 2 FunctionCall 6(bar3()
177: 2 FunctionCall 8(bar4()
178: 2 FunctionCall 10(bar5()
179: 2 FunctionCall 12(bar6()
168: 165 Load 167(sampC)
169: 15(fvec4) ImageGather 168 139 30
Store 17(o) 169
174: 128(ptr) AccessChain 173(gl_ClipDistance) 74
175: 14(float) Load 174
177: 176(ptr) AccessChain 17(o) 127
Store 177 175
178: 2 FunctionCall 6(bar3()
179: 2 FunctionCall 8(bar4()
180: 2 FunctionCall 10(bar5()
181: 2 FunctionCall 12(bar6()
Return
FunctionEnd
6(bar3(): 2 Function None 3
@@ -232,74 +232,76 @@ Linked fragment stage:
FunctionEnd
10(bar5(): 2 Function None 3
11: Label
122(f): 121(ptr) Variable Function
131(c): 130(ptr) Variable Function
124(f): 123(ptr) Variable Function
133(c): 132(ptr) Variable Function
73: 70 Load 72(Sca)
75: 66(ivec3) ImageQuerySizeLod 73 74
Store 68(io) 75
76: 70 Load 72(Sca)
79: 15(fvec4) Load 78(i)
80: 15(fvec4) ImageSampleImplicitLod 76 79
81: 15(fvec4) Load 17(o)
82: 15(fvec4) FAdd 81 80
Store 17(o) 82
87: 84 Load 86(Isca)
88: 15(fvec4) Load 78(i)
91: 90(ivec4) ImageSampleImplicitLod 87 88 Bias 89
92: 66(ivec3) VectorShuffle 91 91 0 1 2
93: 66(ivec3) Load 68(io)
94: 66(ivec3) IAdd 93 92
Store 68(io) 94
103: 100 Load 102(Usca)
104: 15(fvec4) Load 78(i)
105: 96(ivec4) ImageSampleImplicitLod 103 104
Store 98(uo) 105
106: 70 Load 72(Sca)
107: 15(fvec4) Load 78(i)
109: 15(fvec4) ImageSampleExplicitLod 106 107 Lod 108
110: 15(fvec4) Load 17(o)
111: 15(fvec4) FAdd 110 109
Store 17(o) 111
118: 115 Load 117(Scas)
119: 66(ivec3) ImageQuerySizeLod 118 74
120: 39(fvec3) ConvertSToF 119
Store 113(a) 120
123: 115 Load 117(Scas)
124: 15(fvec4) Load 78(i)
127: 126(ptr) AccessChain 78(i) 125
128: 14(float) Load 127
129: 14(float) ImageSampleDrefImplicitLod 123 124 128
Store 122(f) 129
132: 84 Load 86(Isca)
133: 15(fvec4) Load 78(i)
138: 90(ivec4) ImageSampleExplicitLod 132 133 Grad 135 137
Store 131(c) 138
139: 39(fvec3) Load 113(a)
140: 14(float) Load 122(f)
141: 90(ivec4) Load 131(c)
142: 15(fvec4) ConvertSToF 141
143: 15(fvec4) CompositeConstruct 140 140 140 140
144: 15(fvec4) FAdd 143 142
145: 14(float) CompositeExtract 139 0
146: 14(float) CompositeExtract 139 1
147: 14(float) CompositeExtract 139 2
148: 14(float) CompositeExtract 144 0
149: 15(fvec4) CompositeConstruct 145 146 147 148
150: 15(fvec4) Load 17(o)
151: 15(fvec4) FAdd 150 149
Store 17(o) 151
75: 69 Image 73
76: 66(ivec3) ImageQuerySizeLod 75 74
Store 68(io) 76
77: 70 Load 72(Sca)
80: 15(fvec4) Load 79(i)
81: 15(fvec4) ImageSampleImplicitLod 77 80
82: 15(fvec4) Load 17(o)
83: 15(fvec4) FAdd 82 81
Store 17(o) 83
88: 85 Load 87(Isca)
89: 15(fvec4) Load 79(i)
92: 91(ivec4) ImageSampleImplicitLod 88 89 Bias 90
93: 66(ivec3) VectorShuffle 92 92 0 1 2
94: 66(ivec3) Load 68(io)
95: 66(ivec3) IAdd 94 93
Store 68(io) 95
104: 101 Load 103(Usca)
105: 15(fvec4) Load 79(i)
106: 97(ivec4) ImageSampleImplicitLod 104 105
Store 99(uo) 106
107: 70 Load 72(Sca)
108: 15(fvec4) Load 79(i)
110: 15(fvec4) ImageSampleExplicitLod 107 108 Lod 109
111: 15(fvec4) Load 17(o)
112: 15(fvec4) FAdd 111 110
Store 17(o) 112
119: 116 Load 118(Scas)
120: 115 Image 119
121: 66(ivec3) ImageQuerySizeLod 120 74
122: 39(fvec3) ConvertSToF 121
Store 114(a) 122
125: 116 Load 118(Scas)
126: 15(fvec4) Load 79(i)
129: 128(ptr) AccessChain 79(i) 127
130: 14(float) Load 129
131: 14(float) ImageSampleDrefImplicitLod 125 126 130
Store 124(f) 131
134: 85 Load 87(Isca)
135: 15(fvec4) Load 79(i)
140: 91(ivec4) ImageSampleExplicitLod 134 135 Grad 137 139
Store 133(c) 140
141: 39(fvec3) Load 114(a)
142: 14(float) Load 124(f)
143: 91(ivec4) Load 133(c)
144: 15(fvec4) ConvertSToF 143
145: 15(fvec4) CompositeConstruct 142 142 142 142
146: 15(fvec4) FAdd 145 144
147: 14(float) CompositeExtract 141 0
148: 14(float) CompositeExtract 141 1
149: 14(float) CompositeExtract 141 2
150: 14(float) CompositeExtract 146 0
151: 15(fvec4) CompositeConstruct 147 148 149 150
152: 15(fvec4) Load 17(o)
153: 15(fvec4) FAdd 152 151
Store 17(o) 153
Return
FunctionEnd
12(bar6(): 2 Function None 3
13: Label
152(a1): 121(ptr) Variable Function
155(m43): 154(ptr) Variable Function
158(b): 121(ptr) Variable Function
156: 121(ptr) AccessChain 155(m43) 74 125
157: 14(float) Load 156
Store 152(a1) 157
160: 14(float) Load 152(a1)
161: 14(float) FMul 159 160
Store 158(b) 161
154(a1): 123(ptr) Variable Function
157(m43): 156(ptr) Variable Function
160(b): 123(ptr) Variable Function
158: 123(ptr) AccessChain 157(m43) 74 127
159: 14(float) Load 158
Store 154(a1) 159
162: 14(float) Load 154(a1)
163: 14(float) FMul 161 162
Store 160(b) 163
Return
FunctionEnd

View File

@@ -5,12 +5,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 97
// Id's are bound by 100
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 43 28 33 33
EntryPoint Fragment 4 "main" 16 28 33 43
ExecutionMode 4 OriginLowerLeft
Source GLSL 140
Name 4 "main"
@@ -22,41 +22,41 @@ Linked fragment stage:
Name 33 "gl_ClipDistance"
Name 43 "k"
Name 55 "sampR"
Name 62 "sampB"
Name 84 "samp2Da"
Name 88 "bn"
MemberName 88(bn) 0 "matra"
MemberName 88(bn) 1 "matca"
MemberName 88(bn) 2 "matr"
MemberName 88(bn) 3 "matc"
MemberName 88(bn) 4 "matrdef"
Name 90 ""
Name 93 "bi"
MemberName 93(bi) 0 "v"
Name 96 "bname"
Name 63 "sampB"
Name 86 "samp2Da"
Name 91 "bn"
MemberName 91(bn) 0 "matra"
MemberName 91(bn) 1 "matca"
MemberName 91(bn) 2 "matr"
MemberName 91(bn) 3 "matc"
MemberName 91(bn) 4 "matrdef"
Name 93 ""
Name 96 "bi"
MemberName 96(bi) 0 "v"
Name 99 "bname"
Decorate 16(gl_FrontFacing) BuiltIn FrontFacing
Decorate 33(gl_ClipDistance) BuiltIn ClipDistance
Decorate 87 ArrayStride 64
Decorate 87 ArrayStride 64
MemberDecorate 88(bn) 0 RowMajor
MemberDecorate 88(bn) 0 Offset 0
MemberDecorate 88(bn) 0 MatrixStride 16
MemberDecorate 88(bn) 1 ColMajor
MemberDecorate 88(bn) 1 Offset 256
MemberDecorate 88(bn) 1 MatrixStride 16
MemberDecorate 88(bn) 2 RowMajor
MemberDecorate 88(bn) 2 Offset 512
MemberDecorate 88(bn) 2 MatrixStride 16
MemberDecorate 88(bn) 3 ColMajor
MemberDecorate 88(bn) 3 Offset 576
MemberDecorate 88(bn) 3 MatrixStride 16
MemberDecorate 88(bn) 4 RowMajor
MemberDecorate 88(bn) 4 Offset 640
MemberDecorate 88(bn) 4 MatrixStride 16
Decorate 88(bn) Block
Decorate 92 ArrayStride 16
MemberDecorate 93(bi) 0 Offset 0
Decorate 93(bi) Block
Decorate 89 ArrayStride 64
Decorate 90 ArrayStride 64
MemberDecorate 91(bn) 0 RowMajor
MemberDecorate 91(bn) 0 Offset 0
MemberDecorate 91(bn) 0 MatrixStride 16
MemberDecorate 91(bn) 1 ColMajor
MemberDecorate 91(bn) 1 Offset 256
MemberDecorate 91(bn) 1 MatrixStride 16
MemberDecorate 91(bn) 2 RowMajor
MemberDecorate 91(bn) 2 Offset 512
MemberDecorate 91(bn) 2 MatrixStride 16
MemberDecorate 91(bn) 3 ColMajor
MemberDecorate 91(bn) 3 Offset 576
MemberDecorate 91(bn) 3 MatrixStride 16
MemberDecorate 91(bn) 4 RowMajor
MemberDecorate 91(bn) 4 Offset 640
MemberDecorate 91(bn) 4 MatrixStride 16
Decorate 91(bn) Block
Decorate 95 ArrayStride 16
MemberDecorate 96(bi) 0 Offset 0
Decorate 96(bi) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -92,31 +92,32 @@ Linked fragment stage:
53: TypeSampledImage 52
54: TypePointer UniformConstant 53
55(sampR): 54(ptr) Variable UniformConstant
57: TypeVector 34(int) 2
59: TypeImage 34(int) Buffer sampled format:Unknown
60: TypeSampledImage 59
61: TypePointer UniformConstant 60
62(sampB): 61(ptr) Variable UniformConstant
67: TypeVector 6(float) 2
70: 6(float) Constant 1120403456
72: 29(int) Constant 3
80: TypeImage 6(float) 2D sampled format:Unknown
81: TypeSampledImage 80
82: TypeArray 81 72
83: TypePointer UniformConstant 82
84(samp2Da): 83(ptr) Variable UniformConstant
85: TypeMatrix 26(fvec4) 4
86: 29(int) Constant 4
87: TypeArray 85 86
88(bn): TypeStruct 87 87 85 85 85
89: TypePointer Uniform 88(bn)
90: 89(ptr) Variable Uniform
91: TypeVector 6(float) 3
92: TypeArray 91(fvec3) 50
93(bi): TypeStruct 92
94: TypeArray 93(bi) 86
95: TypePointer Uniform 94
96(bname): 95(ptr) Variable Uniform
58: TypeVector 34(int) 2
60: TypeImage 34(int) Buffer sampled format:Unknown
61: TypeSampledImage 60
62: TypePointer UniformConstant 61
63(sampB): 62(ptr) Variable UniformConstant
69: TypeVector 6(float) 2
72: 6(float) Constant 1120403456
74: 29(int) Constant 3
82: TypeImage 6(float) 2D sampled format:Unknown
83: TypeSampledImage 82
84: TypeArray 83 74
85: TypePointer UniformConstant 84
86(samp2Da): 85(ptr) Variable UniformConstant
87: TypeMatrix 26(fvec4) 4
88: 29(int) Constant 4
89: TypeArray 87 88
90: TypeArray 87 88
91(bn): TypeStruct 89 90 87 87 87
92: TypePointer Uniform 91(bn)
93: 92(ptr) Variable Uniform
94: TypeVector 6(float) 3
95: TypeArray 94(fvec3) 50
96(bi): TypeStruct 95
97: TypeArray 96(bi) 88
98: TypePointer Uniform 97
99(bname): 98(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
13: 12(ptr) Variable Function
@@ -145,25 +146,27 @@ Linked fragment stage:
51: 40(ptr) AccessChain 28(o) 50
Store 51 49
56: 53 Load 55(sampR)
58: 57(ivec2) ImageQuerySize 56
63: 60 Load 62(sampB)
64: 34(int) ImageQuerySize 63
65: 57(ivec2) CompositeConstruct 64 64
66: 57(ivec2) IAdd 58 65
68: 67(fvec2) ConvertSToF 66
69: 6(float) CompositeExtract 68 0
71: 6(float) FDiv 69 70
73: 40(ptr) AccessChain 28(o) 72
Store 73 71
74: 6(float) FunctionCall 8(foo()
75: 40(ptr) AccessChain 28(o) 50
Store 75 74
57: 52 Image 56
59: 58(ivec2) ImageQuerySize 57
64: 61 Load 63(sampB)
65: 60 Image 64
66: 34(int) ImageQuerySize 65
67: 58(ivec2) CompositeConstruct 66 66
68: 58(ivec2) IAdd 59 67
70: 69(fvec2) ConvertSToF 68
71: 6(float) CompositeExtract 70 0
73: 6(float) FDiv 71 72
75: 40(ptr) AccessChain 28(o) 74
Store 75 73
76: 6(float) FunctionCall 8(foo()
77: 40(ptr) AccessChain 28(o) 50
Store 77 76
Return
FunctionEnd
8(foo(): 6(float) Function None 7
9: Label
76: 6(float) Load 11(i1)
77: 6(float) Load 24(i2)
78: 6(float) FAdd 76 77
ReturnValue 78
78: 6(float) Load 11(i1)
79: 6(float) Load 24(i2)
80: 6(float) FAdd 78 79
ReturnValue 80
FunctionEnd

View File

@@ -10,9 +10,9 @@ Linked geometry stage:
Capability Geometry
1: ExtInstImport "GLSL.std.450"
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 Invocations 0
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 30
Source GLSL 150

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 17 39 48 49
EntryPoint Vertex 4 "main" 13 17 39 48 49
Source GLSL 150
Name 4 "main"
Name 11 "gl_PerVertex"

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 25 11 39
EntryPoint Vertex 4 "main" 11 23 25 33 39
Source ESSL 300
Name 4 "main"
Name 8 "i"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 29 11 9 26 15
EntryPoint Fragment 4 "main" 9 11 15 26 29
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
Name 4 "main"

View File

@@ -3,4 +3,244 @@ spv.300layout.vert
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

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Name 4 "main"
Name 9 "pos"

View File

@@ -12,7 +12,7 @@ Linked compute stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
EntryPoint GLCompute 4 "main" 53
ExecutionMode 4 LocalSize 16 32 4
Source ESSL 310
Name 4 "main"

View File

@@ -10,9 +10,9 @@ Linked geometry stage:
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 20 13
EntryPoint Geometry 4 "main" 13 20
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 0
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3
Source GLSL 330

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects"
@@ -163,7 +163,7 @@ Linked fragment stage:
7: Label
16: 13 Load 15(u2drs)
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
31: 30(ptr) AccessChain 11(outp) 29
32: 8(float) Load 31

View File

@@ -12,7 +12,7 @@ Linked tessellation control stage:
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects"

View File

@@ -12,7 +12,7 @@ Linked tessellation evaluation stage:
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
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 SpacingFractionalOdd
ExecutionMode 4 VertexOrderCcw

View File

@@ -12,7 +12,7 @@ Linked geometry stage:
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 14 23 46
EntryPoint Geometry 4 "main" 14 23 28 33 46
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 4
ExecutionMode 4 OutputLineStrip

View File

@@ -12,7 +12,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Name 4 "main"
Name 10 "gl_PerVertex"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 77 38 43
EntryPoint Fragment 4 "main" 38 43 77
ExecutionMode 4 OriginLowerLeft
Source GLSL 430
Name 4 "main"

View File

@@ -1,31 +1,36 @@
spv.Operations.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 418
// Id's are bound by 507
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
EntryPoint Fragment 4 "main" 483
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Source GLSL 450
Name 4 "main"
Name 9 "v"
Name 11 "uv4"
Name 20 "i"
Name 22 "ui"
Name 172 "uf"
Name 219 "b"
Name 253 "ub41"
Name 255 "ub42"
Name 318 "f"
Name 397 "gl_FragColor"
Name 415 "uiv4"
Name 417 "ub"
Name 181 "ub41"
Name 188 "f"
Name 212 "uf"
Name 285 "u"
Name 288 "uui"
Name 305 "b"
Name 342 "ub42"
Name 483 "FragColor"
Name 501 "uiv4"
Name 503 "ub"
Name 506 "uuv4"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -37,38 +42,45 @@ Linked fragment stage:
19: TypePointer Function 18(int)
21: TypePointer UniformConstant 18(int)
22(ui): 21(ptr) Variable UniformConstant
129: TypeInt 32 0
130: 129(int) Constant 0
131: TypePointer Function 6(float)
171: TypePointer UniformConstant 6(float)
172(uf): 171(ptr) Variable UniformConstant
217: TypeBool
218: TypePointer Function 217(bool)
222: TypeVector 217(bool) 4
252: TypePointer UniformConstant 222(bvec4)
253(ub41): 252(ptr) Variable UniformConstant
255(ub42): 252(ptr) Variable UniformConstant
309: 18(int) Constant 2
316: 18(int) Constant 1
347: TypeVector 6(float) 3
366: 6(float) Constant 1073741824
373: 6(float) Constant 1065353216
378: 18(int) Constant 66
384: 18(int) Constant 17
396: TypePointer Output 7(fvec4)
397(gl_FragColor): 396(ptr) Variable Output
413: TypeVector 18(int) 4
414: TypePointer UniformConstant 413(ivec4)
415(uiv4): 414(ptr) Variable UniformConstant
416: TypePointer UniformConstant 217(bool)
417(ub): 416(ptr) Variable UniformConstant
141: TypeInt 32 0
142: 141(int) Constant 0
143: TypePointer Function 6(float)
178: TypeBool
179: TypeVector 178(bool) 4
180: TypePointer UniformConstant 179(bvec4)
181(ub41): 180(ptr) Variable UniformConstant
211: TypePointer UniformConstant 6(float)
212(uf): 211(ptr) Variable UniformConstant
284: TypePointer Function 141(int)
287: TypePointer UniformConstant 141(int)
288(uui): 287(ptr) Variable UniformConstant
304: TypePointer Function 178(bool)
342(ub42): 180(ptr) Variable UniformConstant
396: 18(int) Constant 2
403: 18(int) Constant 1
433: TypeVector 6(float) 3
452: 6(float) Constant 1073741824
459: 6(float) Constant 1065353216
464: 18(int) Constant 66
470: 18(int) Constant 17
482: TypePointer Output 7(fvec4)
483(FragColor): 482(ptr) Variable Output
499: TypeVector 18(int) 4
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
5: Label
9(v): 8(ptr) Variable Function
20(i): 19(ptr) Variable Function
219(b): 218(ptr) Variable Function
318(f): 131(ptr) Variable Function
398: 8(ptr) Variable Function
188(f): 143(ptr) Variable Function
285(u): 284(ptr) Variable Function
305(b): 304(ptr) Variable Function
484: 8(ptr) Variable Function
12: 7(fvec4) Load 11(uv4)
13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
Store 9(v) 13
@@ -193,362 +205,461 @@ Linked fragment stage:
114: 7(fvec4) FAdd 113 112
Store 9(v) 114
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)
118: 7(fvec4) FAdd 117 116
Store 9(v) 118
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)
122: 7(fvec4) FAdd 121 120
Store 9(v) 122
123: 7(fvec4) Load 9(v)
124: 7(fvec4) Load 9(v)
125: 7(fvec4) FMod 123 124
126: 7(fvec4) Load 9(v)
127: 7(fvec4) FAdd 126 125
Store 9(v) 127
128: 7(fvec4) Load 9(v)
132: 131(ptr) AccessChain 9(v) 130
133: 6(float) Load 132
134: 7(fvec4) CompositeConstruct 133 133 133 133
135: 7(fvec4) FMod 128 134
124: 7(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 123
125: 7(fvec4) Load 9(v)
126: 7(fvec4) FAdd 125 124
Store 9(v) 126
127: 7(fvec4) Load 9(v)
128: 7(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 127
129: 7(fvec4) Load 9(v)
130: 7(fvec4) FAdd 129 128
Store 9(v) 130
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)
137: 7(fvec4) FAdd 136 135
Store 9(v) 137
137: 7(fvec4) FMod 135 136
138: 7(fvec4) Load 9(v)
139: 7(fvec4) Load 11(uv4)
140: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 138 139
141: 7(fvec4) Load 9(v)
142: 7(fvec4) FAdd 141 140
Store 9(v) 142
143: 7(fvec4) Load 9(v)
144: 7(fvec4) Load 11(uv4)
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
139: 7(fvec4) FAdd 138 137
Store 9(v) 139
140: 7(fvec4) Load 9(v)
144: 143(ptr) AccessChain 9(v) 142
145: 6(float) Load 144
146: 7(fvec4) CompositeConstruct 145 145 145 145
147: 7(fvec4) FMod 140 146
148: 7(fvec4) Load 9(v)
149: 7(fvec4) Load 11(uv4)
150: 7(fvec4) Load 11(uv4)
151: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 148 149 150
149: 7(fvec4) FAdd 148 147
Store 9(v) 149
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)
153: 7(fvec4) FAdd 152 151
Store 9(v) 153
154: 7(fvec4) Load 9(v)
155: 7(fvec4) Load 9(v)
156: 7(fvec4) Load 9(v)
157: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 154 155 156
158: 7(fvec4) Load 9(v)
159: 7(fvec4) FAdd 158 157
Store 9(v) 159
160: 7(fvec4) Load 9(v)
161: 7(fvec4) Load 9(v)
162: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 160 161
163: 7(fvec4) Load 9(v)
164: 7(fvec4) FAdd 163 162
Store 9(v) 164
165: 7(fvec4) Load 9(v)
166: 7(fvec4) Load 9(v)
167: 7(fvec4) Load 9(v)
168: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 165 166 167
169: 7(fvec4) Load 9(v)
170: 7(fvec4) FAdd 169 168
Store 9(v) 170
173: 6(float) Load 172(uf)
155: 7(fvec4) Load 11(uv4)
156: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 154 155
157: 7(fvec4) Load 9(v)
158: 7(fvec4) FAdd 157 156
Store 9(v) 158
159: 7(fvec4) Load 9(v)
160: 7(fvec4) Load 11(uv4)
161: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 159 160
162: 7(fvec4) Load 9(v)
163: 7(fvec4) FAdd 162 161
Store 9(v) 163
164: 7(fvec4) Load 9(v)
165: 7(fvec4) Load 11(uv4)
166: 7(fvec4) Load 11(uv4)
167: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 164 165 166
168: 7(fvec4) Load 9(v)
169: 7(fvec4) FAdd 168 167
Store 9(v) 169
170: 7(fvec4) Load 9(v)
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)
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)
177: 7(fvec4) FAdd 176 175
Store 9(v) 177
178: 6(float) Load 172(uf)
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
177: 7(fvec4) Load 9(v)
182: 179(bvec4) Load 181(ub41)
183: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 176 177 182
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)
187: 7(fvec4) FAdd 186 185
Store 9(v) 187
188: 7(fvec4) Load 9(v)
189: 7(fvec4) Load 9(v)
190: 7(fvec4) Load 9(v)
191: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 188 189 190
187: 7(fvec4) Load 9(v)
189: 6(float) Load 188(f)
190: 7(fvec4) CompositeConstruct 189 189 189 189
191: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 190
192: 7(fvec4) Load 9(v)
193: 7(fvec4) FAdd 192 191
Store 9(v) 193
194: 7(fvec4) Load 9(v)
195: 7(fvec4) Load 9(v)
196: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 194 195
197: 7(fvec4) Load 9(v)
198: 7(fvec4) FAdd 197 196
Store 9(v) 198
199: 7(fvec4) Load 9(v)
195: 7(fvec4) Load 11(uv4)
196: 7(fvec4) Load 9(v)
197: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 194 195 196
198: 7(fvec4) Load 9(v)
199: 7(fvec4) FAdd 198 197
Store 9(v) 199
200: 7(fvec4) Load 9(v)
201: 6(float) Load 172(uf)
202: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 199 200 201
201: 7(fvec4) Load 9(v)
202: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 200 201
203: 7(fvec4) Load 9(v)
204: 7(fvec4) FAdd 203 202
Store 9(v) 204
205: 7(fvec4) Load 9(v)
206: 7(fvec4) DPdx 205
206: 7(fvec4) Load 9(v)
207: 7(fvec4) Load 9(v)
208: 7(fvec4) FAdd 207 206
Store 9(v) 208
208: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 205 206 207
209: 7(fvec4) Load 9(v)
210: 7(fvec4) DPdy 209
211: 7(fvec4) Load 9(v)
212: 7(fvec4) FAdd 211 210
Store 9(v) 212
213: 7(fvec4) Load 9(v)
214: 7(fvec4) Fwidth 213
215: 7(fvec4) Load 9(v)
216: 7(fvec4) FAdd 215 214
Store 9(v) 216
220: 7(fvec4) Load 9(v)
221: 7(fvec4) Load 11(uv4)
223: 222(bvec4) FOrdLessThan 220 221
224: 217(bool) Any 223
Store 219(b) 224
225: 217(bool) Load 219(b)
SelectionMerge 227 None
BranchConditional 225 226 227
226: Label
228: 7(fvec4) Load 9(v)
229: 7(fvec4) Load 11(uv4)
230: 222(bvec4) FOrdLessThanEqual 228 229
231: 217(bool) Any 230
Branch 227
227: Label
232: 217(bool) Phi 225 5 231 226
Store 219(b) 232
233: 217(bool) Load 219(b)
SelectionMerge 235 None
BranchConditional 233 234 235
234: Label
236: 7(fvec4) Load 9(v)
237: 7(fvec4) Load 11(uv4)
238: 222(bvec4) FOrdGreaterThan 236 237
239: 217(bool) Any 238
Branch 235
235: Label
240: 217(bool) Phi 233 227 239 234
Store 219(b) 240
241: 217(bool) Load 219(b)
SelectionMerge 243 None
BranchConditional 241 242 243
242: Label
244: 7(fvec4) Load 9(v)
245: 7(fvec4) Load 11(uv4)
246: 222(bvec4) FOrdGreaterThanEqual 244 245
247: 217(bool) Any 246
Branch 243
243: Label
248: 217(bool) Phi 241 235 247 242
Store 219(b) 248
249: 217(bool) Load 219(b)
SelectionMerge 251 None
BranchConditional 249 250 251
250: Label
254: 222(bvec4) Load 253(ub41)
256: 222(bvec4) Load 255(ub42)
257: 222(bvec4) IEqual 254 256
258: 217(bool) Any 257
Branch 251
251: Label
259: 217(bool) Phi 249 243 258 250
Store 219(b) 259
260: 217(bool) Load 219(b)
SelectionMerge 262 None
BranchConditional 260 261 262
261: Label
263: 222(bvec4) Load 253(ub41)
264: 222(bvec4) Load 255(ub42)
265: 222(bvec4) INotEqual 263 264
266: 217(bool) Any 265
Branch 262
262: Label
267: 217(bool) Phi 260 251 266 261
Store 219(b) 267
268: 217(bool) Load 219(b)
269: 222(bvec4) Load 253(ub41)
270: 217(bool) Any 269
271: 217(bool) LogicalAnd 268 270
Store 219(b) 271
272: 217(bool) Load 219(b)
273: 222(bvec4) Load 253(ub41)
274: 217(bool) All 273
275: 217(bool) LogicalAnd 272 274
Store 219(b) 275
276: 217(bool) Load 219(b)
SelectionMerge 278 None
BranchConditional 276 277 278
277: Label
279: 222(bvec4) Load 253(ub41)
280: 222(bvec4) LogicalNot 279
281: 217(bool) Any 280
Branch 278
278: Label
282: 217(bool) Phi 276 262 281 277
Store 219(b) 282
283: 18(int) Load 20(i)
284: 18(int) Load 22(ui)
285: 18(int) IAdd 283 284
286: 18(int) Load 20(i)
287: 18(int) IMul 285 286
288: 18(int) Load 22(ui)
289: 18(int) ISub 287 288
290: 18(int) Load 20(i)
291: 18(int) SDiv 289 290
Store 20(i) 291
292: 18(int) Load 20(i)
293: 18(int) Load 22(ui)
294: 18(int) SMod 292 293
Store 20(i) 294
295: 18(int) Load 20(i)
296: 18(int) Load 22(ui)
297: 217(bool) IEqual 295 296
298: 217(bool) LogicalNot 297
SelectionMerge 300 None
BranchConditional 298 299 300
299: Label
301: 18(int) Load 20(i)
302: 18(int) Load 22(ui)
303: 217(bool) INotEqual 301 302
304: 18(int) Load 20(i)
305: 18(int) Load 22(ui)
306: 217(bool) IEqual 304 305
307: 217(bool) LogicalAnd 303 306
308: 18(int) Load 20(i)
310: 217(bool) INotEqual 308 309
311: 217(bool) LogicalNotEqual 307 310
Branch 300
300: Label
312: 217(bool) Phi 297 278 311 299
SelectionMerge 314 None
BranchConditional 312 313 314
313: Label
315: 18(int) Load 20(i)
317: 18(int) IAdd 315 316
Store 20(i) 317
Branch 314
314: Label
319: 6(float) Load 172(uf)
320: 6(float) Load 172(uf)
321: 6(float) FAdd 319 320
322: 6(float) Load 172(uf)
323: 6(float) FMul 321 322
324: 6(float) Load 172(uf)
325: 6(float) FSub 323 324
326: 6(float) Load 172(uf)
327: 6(float) FDiv 325 326
Store 318(f) 327
328: 7(fvec4) Load 9(v)
329: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 328
330: 6(float) Load 318(f)
331: 6(float) FAdd 330 329
Store 318(f) 331
332: 7(fvec4) Load 9(v)
333: 7(fvec4) Load 9(v)
334: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 332 333
335: 6(float) Load 318(f)
336: 6(float) FAdd 335 334
Store 318(f) 336
337: 7(fvec4) Load 9(v)
338: 7(fvec4) Load 9(v)
339: 6(float) Dot 337 338
340: 6(float) Load 318(f)
341: 6(float) FAdd 340 339
Store 318(f) 341
342: 6(float) Load 318(f)
343: 6(float) Load 172(uf)
344: 6(float) FMul 342 343
345: 6(float) Load 318(f)
346: 6(float) FAdd 345 344
Store 318(f) 346
348: 7(fvec4) Load 9(v)
349: 347(fvec3) VectorShuffle 348 348 0 1 2
350: 7(fvec4) Load 9(v)
351: 347(fvec3) VectorShuffle 350 350 0 1 2
352: 347(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 349 351
353: 6(float) CompositeExtract 352 0
354: 6(float) Load 318(f)
355: 6(float) FAdd 354 353
Store 318(f) 355
356: 6(float) Load 318(f)
357: 6(float) Load 172(uf)
358: 217(bool) FOrdEqual 356 357
359: 217(bool) LogicalNot 358
SelectionMerge 361 None
BranchConditional 359 360 361
360: Label
362: 6(float) Load 318(f)
363: 6(float) Load 172(uf)
364: 217(bool) FOrdNotEqual 362 363
365: 6(float) Load 318(f)
367: 217(bool) FOrdNotEqual 365 366
368: 217(bool) LogicalAnd 364 367
Branch 361
361: Label
369: 217(bool) Phi 358 314 368 360
SelectionMerge 371 None
BranchConditional 369 370 371
370: Label
372: 6(float) Load 318(f)
374: 6(float) FAdd 372 373
Store 318(f) 374
Branch 371
371: Label
210: 7(fvec4) FAdd 209 208
Store 9(v) 210
213: 6(float) Load 212(uf)
214: 7(fvec4) Load 9(v)
215: 7(fvec4) CompositeConstruct 213 213 213 213
216: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 215 214
217: 7(fvec4) Load 9(v)
218: 7(fvec4) FAdd 217 216
Store 9(v) 218
219: 6(float) Load 212(uf)
220: 6(float) Load 212(uf)
221: 7(fvec4) Load 9(v)
222: 7(fvec4) CompositeConstruct 219 219 219 219
223: 7(fvec4) CompositeConstruct 220 220 220 220
224: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 222 223 221
225: 7(fvec4) Load 9(v)
226: 7(fvec4) FAdd 225 224
Store 9(v) 226
227: 7(fvec4) Load 9(v)
228: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 227
229: 7(fvec4) Load 9(v)
230: 7(fvec4) FAdd 229 228
Store 9(v) 230
231: 7(fvec4) Load 9(v)
232: 7(fvec4) Load 9(v)
233: 7(fvec4) Load 9(v)
234: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 231 232 233
235: 7(fvec4) Load 9(v)
236: 7(fvec4) FAdd 235 234
Store 9(v) 236
237: 7(fvec4) Load 9(v)
238: 7(fvec4) Load 9(v)
239: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 237 238
240: 7(fvec4) Load 9(v)
241: 7(fvec4) FAdd 240 239
Store 9(v) 241
242: 7(fvec4) Load 9(v)
243: 7(fvec4) Load 9(v)
244: 6(float) Load 212(uf)
245: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 242 243 244
246: 7(fvec4) Load 9(v)
247: 7(fvec4) FAdd 246 245
Store 9(v) 247
248: 7(fvec4) Load 9(v)
249: 7(fvec4) DPdx 248
250: 7(fvec4) Load 9(v)
251: 7(fvec4) FAdd 250 249
Store 9(v) 251
252: 7(fvec4) Load 9(v)
253: 7(fvec4) DPdy 252
254: 7(fvec4) Load 9(v)
255: 7(fvec4) FAdd 254 253
Store 9(v) 255
256: 7(fvec4) Load 9(v)
257: 7(fvec4) Fwidth 256
258: 7(fvec4) Load 9(v)
259: 7(fvec4) FAdd 258 257
Store 9(v) 259
260: 18(int) Load 22(ui)
261: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 260
262: 18(int) Load 20(i)
263: 18(int) IAdd 262 261
Store 20(i) 263
264: 18(int) Load 20(i)
265: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 264
266: 18(int) Load 20(i)
267: 18(int) IAdd 266 265
Store 20(i) 267
268: 18(int) Load 20(i)
269: 18(int) Load 22(ui)
270: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 268 269
271: 18(int) Load 20(i)
272: 18(int) IAdd 271 270
Store 20(i) 272
273: 18(int) Load 20(i)
274: 18(int) Load 22(ui)
275: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 273 274
276: 18(int) Load 20(i)
277: 18(int) IAdd 276 275
Store 20(i) 277
278: 18(int) Load 20(i)
279: 18(int) Load 22(ui)
280: 18(int) Load 22(ui)
281: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 278 279 280
282: 18(int) Load 20(i)
283: 18(int) IAdd 282 281
Store 20(i) 283
286: 141(int) Load 285(u)
289: 141(int) Load 288(uui)
290: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 286 289
291: 141(int) Load 285(u)
292: 141(int) IAdd 291 290
Store 285(u) 292
293: 141(int) Load 285(u)
294: 141(int) Load 288(uui)
295: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 293 294
296: 141(int) Load 285(u)
297: 141(int) IAdd 296 295
Store 285(u) 297
298: 141(int) Load 285(u)
299: 141(int) Load 288(uui)
300: 141(int) Load 288(uui)
301: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 298 299 300
302: 141(int) Load 285(u)
303: 141(int) IAdd 302 301
Store 285(u) 303
306: 6(float) Load 212(uf)
307: 178(bool) IsNan 306
Store 305(b) 307
308: 6(float) Load 188(f)
309: 178(bool) IsInf 308
Store 305(b) 309
310: 7(fvec4) Load 9(v)
311: 7(fvec4) Load 11(uv4)
312: 179(bvec4) FOrdLessThan 310 311
313: 178(bool) Any 312
Store 305(b) 313
314: 178(bool) Load 305(b)
SelectionMerge 316 None
BranchConditional 314 315 316
315: Label
317: 7(fvec4) Load 9(v)
318: 7(fvec4) Load 11(uv4)
319: 179(bvec4) FOrdLessThanEqual 317 318
320: 178(bool) Any 319
Branch 316
316: Label
321: 178(bool) Phi 314 5 320 315
Store 305(b) 321
322: 178(bool) Load 305(b)
SelectionMerge 324 None
BranchConditional 322 323 324
323: Label
325: 7(fvec4) Load 9(v)
326: 7(fvec4) Load 11(uv4)
327: 179(bvec4) FOrdGreaterThan 325 326
328: 178(bool) Any 327
Branch 324
324: Label
329: 178(bool) Phi 322 316 328 323
Store 305(b) 329
330: 178(bool) Load 305(b)
SelectionMerge 332 None
BranchConditional 330 331 332
331: Label
333: 7(fvec4) Load 9(v)
334: 7(fvec4) Load 11(uv4)
335: 179(bvec4) FOrdGreaterThanEqual 333 334
336: 178(bool) Any 335
Branch 332
332: Label
337: 178(bool) Phi 330 324 336 331
Store 305(b) 337
338: 178(bool) Load 305(b)
SelectionMerge 340 None
BranchConditional 338 339 340
339: Label
341: 179(bvec4) Load 181(ub41)
343: 179(bvec4) Load 342(ub42)
344: 179(bvec4) IEqual 341 343
345: 178(bool) Any 344
Branch 340
340: Label
346: 178(bool) Phi 338 332 345 339
Store 305(b) 346
347: 178(bool) Load 305(b)
SelectionMerge 349 None
BranchConditional 347 348 349
348: Label
350: 179(bvec4) Load 181(ub41)
351: 179(bvec4) Load 342(ub42)
352: 179(bvec4) INotEqual 350 351
353: 178(bool) Any 352
Branch 349
349: Label
354: 178(bool) Phi 347 340 353 348
Store 305(b) 354
355: 178(bool) Load 305(b)
356: 179(bvec4) Load 181(ub41)
357: 178(bool) Any 356
358: 178(bool) LogicalAnd 355 357
Store 305(b) 358
359: 178(bool) Load 305(b)
360: 179(bvec4) Load 181(ub41)
361: 178(bool) All 360
362: 178(bool) LogicalAnd 359 361
Store 305(b) 362
363: 178(bool) Load 305(b)
SelectionMerge 365 None
BranchConditional 363 364 365
364: Label
366: 179(bvec4) Load 181(ub41)
367: 179(bvec4) LogicalNot 366
368: 178(bool) Any 367
Branch 365
365: Label
369: 178(bool) Phi 363 349 368 364
Store 305(b) 369
370: 18(int) Load 20(i)
371: 18(int) Load 22(ui)
372: 18(int) IAdd 370 371
373: 18(int) Load 20(i)
374: 18(int) IMul 372 373
375: 18(int) Load 22(ui)
376: 18(int) Load 20(i)
377: 18(int) BitwiseAnd 376 375
Store 20(i) 377
376: 18(int) ISub 374 375
377: 18(int) Load 20(i)
378: 18(int) SDiv 376 377
Store 20(i) 378
379: 18(int) Load 20(i)
380: 18(int) BitwiseOr 379 378
Store 20(i) 380
381: 18(int) Load 22(ui)
380: 18(int) Load 22(ui)
381: 18(int) SMod 379 380
Store 20(i) 381
382: 18(int) Load 20(i)
383: 18(int) BitwiseXor 382 381
Store 20(i) 383
385: 18(int) Load 20(i)
386: 18(int) SMod 385 384
Store 20(i) 386
387: 18(int) Load 20(i)
388: 18(int) ShiftRightArithmetic 387 309
Store 20(i) 388
389: 18(int) Load 22(ui)
390: 18(int) Load 20(i)
391: 18(int) ShiftLeftLogical 390 389
Store 20(i) 391
392: 18(int) Load 20(i)
393: 18(int) Not 392
Store 20(i) 393
394: 217(bool) Load 219(b)
395: 217(bool) LogicalNot 394
Store 219(b) 395
399: 217(bool) Load 219(b)
383: 18(int) Load 22(ui)
384: 178(bool) IEqual 382 383
385: 178(bool) LogicalNot 384
SelectionMerge 387 None
BranchConditional 385 386 387
386: Label
388: 18(int) Load 20(i)
389: 18(int) Load 22(ui)
390: 178(bool) INotEqual 388 389
391: 18(int) Load 20(i)
392: 18(int) Load 22(ui)
393: 178(bool) IEqual 391 392
394: 178(bool) LogicalAnd 390 393
395: 18(int) Load 20(i)
397: 178(bool) INotEqual 395 396
398: 178(bool) LogicalNotEqual 394 397
Branch 387
387: Label
399: 178(bool) Phi 384 365 398 386
SelectionMerge 401 None
BranchConditional 399 400 410
BranchConditional 399 400 401
400: Label
402: 18(int) Load 20(i)
403: 6(float) ConvertSToF 402
404: 7(fvec4) CompositeConstruct 403 403 403 403
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
404: 18(int) IAdd 402 403
Store 20(i) 404
Branch 401
401: Label
412: 7(fvec4) Load 398
Store 397(gl_FragColor) 412
405: 6(float) Load 212(uf)
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
FunctionEnd

View File

@@ -1,9 +1,473 @@
spv.aggOps.frag
WARNING: 0:4: varying deprecated in version 130; may be removed in future release
WARNING: 0:6: 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.
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

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21
EntryPoint Fragment 4 "main" 21 59
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21
EntryPoint Fragment 4 "main" 21 38
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
Name 4 "main"

View 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

View 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

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17
EntryPoint Fragment 4 "main" 17 34
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 16
EntryPoint Fragment 4 "main" 12 16
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 18
EntryPoint Fragment 4 "main" 12 18
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -13,7 +13,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 27 24 38
EntryPoint Vertex 4 "main" 24 27 33 38
Source GLSL 130
Name 4 "main"
Name 8 "i"

View File

@@ -3,4 +3,206 @@ spv.deepRvalue.frag
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

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 14 10 8 8
EntryPoint Fragment 4 "main" 8 10 14
ExecutionMode 4 OriginLowerLeft
ExecutionMode 4 DepthGreater
ExecutionMode 4 DepthReplacing

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21
EntryPoint Fragment 4 "main" 21 59
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11
EntryPoint Fragment 4 "main" 11 33
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked compute stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
EntryPoint GLCompute 4 "main" 26 33
ExecutionMode 4 LocalSize 1 1 1
Source GLSL 430
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 18 11
EntryPoint Fragment 4 "main" 11 18 107
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 18 11
EntryPoint Fragment 4 "main" 11 18 37
ExecutionMode 4 OriginLowerLeft
Source GLSL 120
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 101
EntryPoint Fragment 4 "main" 11 36 101
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 20
EntryPoint Fragment 4 "main" 20 30
ExecutionMode 4 OriginLowerLeft
Source ESSL 100
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 57
EntryPoint Fragment 4 "main" 57 68
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
EntryPoint Fragment 4 "main" 149
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
Name 4 "main"

View File

@@ -333,7 +333,7 @@ Linked fragment stage:
214: 96 Load 98(i2DMS)
215: 29(ivec2) Load 142(ic2D)
217: 125(fvec4) Load 127(v)
ImageWrite 214 215 216
ImageWrite 214 215 217 Sample 216
218: 106 Load 108(i2DMSArray)
219: 7(ivec3) Load 152(ic3D)
221: 125(fvec4) ImageRead 218 219 Sample 220
@@ -343,7 +343,7 @@ Linked fragment stage:
224: 106 Load 108(i2DMSArray)
225: 7(ivec3) Load 152(ic3D)
227: 125(fvec4) Load 127(v)
ImageWrite 224 225 226
ImageWrite 224 225 227 Sample 226
Store 229(ui) 19
233: 6(int) Load 132(ic1D)
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 0

View File

@@ -12,7 +12,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Name 4 "main"
Name 9 "iout"

View 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

View 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

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 14
EntryPoint Fragment 4 "main" 14 26
ExecutionMode 4 OriginLowerLeft
Source GLSL 120
Name 4 "main"

View File

@@ -13,7 +13,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 40 97
EntryPoint Fragment 4 "main" 40 97 107
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11
EntryPoint Fragment 4 "main" 11 597
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11
EntryPoint Fragment 4 "main" 11 140
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 73 92
EntryPoint Vertex 4 "main" 69 73 92
Source GLSL 130
Name 4 "main"
Name 14 "xf(mf33;vf3;"

View File

@@ -1,10 +1,286 @@
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:
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

View File

@@ -1,10 +1,265 @@
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:
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

View File

@@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 277
// Id's are bound by 278
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 430
Name 4 "main"
@@ -39,17 +39,17 @@ Linked fragment stage:
Name 227 "is2DArray"
Name 237 "iv2"
Name 241 "sCubeShadow"
Name 246 "FragData"
Name 258 "is2Dms"
Name 262 "us2D"
Name 266 "us3D"
Name 270 "usCube"
Name 274 "us2DArray"
Name 276 "ic4D"
Name 247 "FragData"
Name 259 "is2Dms"
Name 263 "us2D"
Name 267 "us3D"
Name 271 "usCube"
Name 275 "us2DArray"
Name 277 "ic4D"
Decorate 81(ic3D) Flat
Decorate 84(ic1D) Flat
Decorate 91(ic2D) Flat
Decorate 276(ic4D) Flat
Decorate 277(ic4D) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -140,31 +140,31 @@ Linked fragment stage:
240: TypePointer UniformConstant 239
241(sCubeShadow): 240(ptr) Variable UniformConstant
243: 67(int) Constant 2
245: TypePointer Output 7(fvec4)
246(FragData): 245(ptr) Variable Output
250: 6(float) Constant 0
255: TypeImage 67(int) 2D multi-sampled sampled format:Unknown
256: TypeSampledImage 255
257: TypePointer UniformConstant 256
258(is2Dms): 257(ptr) Variable UniformConstant
259: TypeImage 32(int) 2D sampled format:Unknown
260: TypeSampledImage 259
261: TypePointer UniformConstant 260
262(us2D): 261(ptr) Variable UniformConstant
263: TypeImage 32(int) 3D sampled format:Unknown
264: TypeSampledImage 263
265: TypePointer UniformConstant 264
266(us3D): 265(ptr) Variable UniformConstant
267: TypeImage 32(int) Cube sampled format:Unknown
268: TypeSampledImage 267
269: TypePointer UniformConstant 268
270(usCube): 269(ptr) Variable UniformConstant
271: TypeImage 32(int) 2D array sampled format:Unknown
272: TypeSampledImage 271
273: TypePointer UniformConstant 272
274(us2DArray): 273(ptr) Variable UniformConstant
275: TypePointer Input 162(ivec4)
276(ic4D): 275(ptr) Variable Input
246: TypePointer Output 7(fvec4)
247(FragData): 246(ptr) Variable Output
251: 6(float) Constant 0
256: TypeImage 67(int) 2D multi-sampled sampled format:Unknown
257: TypeSampledImage 256
258: TypePointer UniformConstant 257
259(is2Dms): 258(ptr) Variable UniformConstant
260: TypeImage 32(int) 2D sampled format:Unknown
261: TypeSampledImage 260
262: TypePointer UniformConstant 261
263(us2D): 262(ptr) Variable UniformConstant
264: TypeImage 32(int) 3D sampled format:Unknown
265: TypeSampledImage 264
266: TypePointer UniformConstant 265
267(us3D): 266(ptr) Variable UniformConstant
268: TypeImage 32(int) Cube sampled format:Unknown
269: TypeSampledImage 268
270: TypePointer UniformConstant 269
271(usCube): 270(ptr) Variable UniformConstant
272: TypeImage 32(int) 2D array sampled format:Unknown
273: TypeSampledImage 272
274: TypePointer UniformConstant 273
275(us2DArray): 274(ptr) Variable UniformConstant
276: TypePointer Input 162(ivec4)
277(ic4D): 276(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
@@ -345,15 +345,16 @@ Linked fragment stage:
235: 7(fvec4) FAdd 234 233
Store 9(v) 235
242: 239 Load 241(sCubeShadow)
244: 68(ivec2) ImageQuerySizeLod 242 243
Store 237(iv2) 244
247: 7(fvec4) Load 9(v)
248: 68(ivec2) Load 237(iv2)
249: 15(fvec2) ConvertSToF 248
251: 6(float) CompositeExtract 249 0
252: 6(float) CompositeExtract 249 1
253: 7(fvec4) CompositeConstruct 251 252 250 250
254: 7(fvec4) FAdd 247 253
Store 246(FragData) 254
244: 238 Image 242
245: 68(ivec2) ImageQuerySizeLod 244 243
Store 237(iv2) 245
248: 7(fvec4) Load 9(v)
249: 68(ivec2) Load 237(iv2)
250: 15(fvec2) ConvertSToF 249
252: 6(float) CompositeExtract 250 0
253: 6(float) CompositeExtract 250 1
254: 7(fvec4) CompositeConstruct 252 253 251 251
255: 7(fvec4) FAdd 248 254
Store 247(FragData) 255
Return
FunctionEnd

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 12 55
EntryPoint Vertex 4 "main" 12 28 55
Source GLSL 120
Name 4 "main"
Name 9 "a"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 57 59 23 71
EntryPoint Fragment 4 "main" 23 57 59 71
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
Name 4 "main"
@@ -168,7 +168,7 @@ Linked fragment stage:
18(bv2): 16(ptr) FunctionParameter
20: Label
27: 15(bvec2) Load 18(bv2)
31: 15(bvec2) IEqual 27 30
31: 15(bvec2) LogicalEqual 27 30
32: 14(bool) All 31
ReturnValue 32
FunctionEnd

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
EntryPoint Fragment 4 "main" 90
ExecutionMode 4 OriginLowerLeft
Source GLSL 140
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Name 4 "main"
Name 9 "outVc"

View File

@@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 211
// Id's are bound by 237
Capability Shader
1: ExtInstImport "GLSL.std.450"
@@ -19,28 +19,28 @@ Linked fragment stage:
Name 9 "lod"
Name 13 "samp1D"
Name 16 "pf"
Name 23 "isamp2D"
Name 25 "pf2"
Name 34 "usamp3D"
Name 38 "pf3"
Name 46 "sampCube"
Name 55 "isamp1DA"
Name 64 "usamp2DA"
Name 73 "isampCubeA"
Name 82 "samp1Ds"
Name 91 "samp2Ds"
Name 100 "sampCubes"
Name 109 "samp1DAs"
Name 118 "samp2DAs"
Name 127 "sampCubeAs"
Name 134 "levels"
Name 140 "usamp2D"
Name 148 "isamp3D"
Name 156 "isampCube"
Name 168 "samp2DA"
Name 176 "usampCubeA"
Name 206 "sampBuf"
Name 210 "sampRect"
Name 24 "isamp2D"
Name 26 "pf2"
Name 36 "usamp3D"
Name 40 "pf3"
Name 49 "sampCube"
Name 59 "isamp1DA"
Name 69 "usamp2DA"
Name 79 "isampCubeA"
Name 89 "samp1Ds"
Name 99 "samp2Ds"
Name 109 "sampCubes"
Name 119 "samp1DAs"
Name 129 "samp2DAs"
Name 139 "sampCubeAs"
Name 147 "levels"
Name 154 "usamp2D"
Name 163 "isamp3D"
Name 172 "isampCube"
Name 186 "samp2DA"
Name 195 "usampCubeA"
Name 232 "sampBuf"
Name 236 "sampRect"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -51,230 +51,256 @@ Linked fragment stage:
12: TypePointer UniformConstant 11
13(samp1D): 12(ptr) Variable UniformConstant
15: TypePointer Function 6(float)
19: TypeInt 32 1
20: TypeImage 19(int) 2D sampled format:Unknown
21: TypeSampledImage 20
22: TypePointer UniformConstant 21
23(isamp2D): 22(ptr) Variable UniformConstant
30: TypeInt 32 0
31: TypeImage 30(int) 3D sampled format:Unknown
32: TypeSampledImage 31
33: TypePointer UniformConstant 32
34(usamp3D): 33(ptr) Variable UniformConstant
36: TypeVector 6(float) 3
37: TypePointer Function 36(fvec3)
43: TypeImage 6(float) Cube sampled format:Unknown
44: TypeSampledImage 43
45: TypePointer UniformConstant 44
46(sampCube): 45(ptr) Variable UniformConstant
52: TypeImage 19(int) 1D array sampled format:Unknown
53: TypeSampledImage 52
54: TypePointer UniformConstant 53
55(isamp1DA): 54(ptr) Variable UniformConstant
61: TypeImage 30(int) 2D array sampled format:Unknown
62: TypeSampledImage 61
63: TypePointer UniformConstant 62
64(usamp2DA): 63(ptr) Variable UniformConstant
70: TypeImage 19(int) Cube array sampled format:Unknown
71: TypeSampledImage 70
72: TypePointer UniformConstant 71
73(isampCubeA): 72(ptr) Variable UniformConstant
79: TypeImage 6(float) 1D depth sampled format:Unknown
80: TypeSampledImage 79
81: TypePointer UniformConstant 80
82(samp1Ds): 81(ptr) Variable UniformConstant
88: TypeImage 6(float) 2D depth sampled format:Unknown
89: TypeSampledImage 88
90: TypePointer UniformConstant 89
91(samp2Ds): 90(ptr) Variable UniformConstant
97: 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
20: TypeInt 32 1
21: TypeImage 20(int) 2D sampled format:Unknown
22: TypeSampledImage 21
23: TypePointer UniformConstant 22
24(isamp2D): 23(ptr) Variable UniformConstant
32: TypeInt 32 0
33: TypeImage 32(int) 3D sampled format:Unknown
34: TypeSampledImage 33
35: TypePointer UniformConstant 34
36(usamp3D): 35(ptr) Variable UniformConstant
38: TypeVector 6(float) 3
39: TypePointer Function 38(fvec3)
46: TypeImage 6(float) Cube sampled format:Unknown
47: TypeSampledImage 46
48: TypePointer UniformConstant 47
49(sampCube): 48(ptr) Variable UniformConstant
56: TypeImage 20(int) 1D array sampled format:Unknown
57: TypeSampledImage 56
58: TypePointer UniformConstant 57
59(isamp1DA): 58(ptr) Variable UniformConstant
66: TypeImage 32(int) 2D array sampled format:Unknown
67: TypeSampledImage 66
68: TypePointer UniformConstant 67
69(usamp2DA): 68(ptr) Variable UniformConstant
76: TypeImage 20(int) Cube array sampled format:Unknown
77: TypeSampledImage 76
78: TypePointer UniformConstant 77
79(isampCubeA): 78(ptr) Variable UniformConstant
86: TypeImage 6(float) 1D depth sampled format:Unknown
87: TypeSampledImage 86
88: TypePointer UniformConstant 87
89(samp1Ds): 88(ptr) Variable UniformConstant
96: TypeImage 6(float) 2D depth sampled format:Unknown
97: TypeSampledImage 96
98: TypePointer UniformConstant 97
99(samp2Ds): 98(ptr) Variable UniformConstant
106: TypeImage 6(float) Cube depth sampled format:Unknown
107: TypeSampledImage 106
108: TypePointer UniformConstant 107
109(samp1DAs): 108(ptr) Variable UniformConstant
115: TypeImage 6(float) 2D depth array sampled format:Unknown
116: TypeSampledImage 115
117: TypePointer UniformConstant 116
118(samp2DAs): 117(ptr) Variable UniformConstant
124: TypeImage 6(float) Cube depth array sampled format:Unknown
125: TypeSampledImage 124
126: TypePointer UniformConstant 125
127(sampCubeAs): 126(ptr) Variable UniformConstant
133: TypePointer Function 19(int)
137: TypeImage 30(int) 2D sampled format:Unknown
138: TypeSampledImage 137
139: TypePointer UniformConstant 138
140(usamp2D): 139(ptr) Variable UniformConstant
145: TypeImage 19(int) 3D sampled format:Unknown
146: TypeSampledImage 145
147: TypePointer UniformConstant 146
148(isamp3D): 147(ptr) Variable UniformConstant
153: TypeImage 19(int) Cube sampled format:Unknown
154: TypeSampledImage 153
155: TypePointer UniformConstant 154
156(isampCube): 155(ptr) Variable UniformConstant
165: TypeImage 6(float) 2D array sampled format:Unknown
166: TypeSampledImage 165
167: TypePointer UniformConstant 166
168(samp2DA): 167(ptr) Variable UniformConstant
173: TypeImage 30(int) Cube array sampled format:Unknown
174: TypeSampledImage 173
175: TypePointer UniformConstant 174
176(usampCubeA): 175(ptr) Variable UniformConstant
203: TypeImage 6(float) Buffer sampled format:Unknown
204: TypeSampledImage 203
205: TypePointer UniformConstant 204
206(sampBuf): 205(ptr) Variable UniformConstant
207: TypeImage 6(float) Rect sampled format:Unknown
208: TypeSampledImage 207
209: TypePointer UniformConstant 208
210(sampRect): 209(ptr) Variable UniformConstant
109(sampCubes): 108(ptr) Variable UniformConstant
116: TypeImage 6(float) 1D depth array sampled format:Unknown
117: TypeSampledImage 116
118: TypePointer UniformConstant 117
119(samp1DAs): 118(ptr) Variable UniformConstant
126: TypeImage 6(float) 2D depth array sampled format:Unknown
127: TypeSampledImage 126
128: TypePointer UniformConstant 127
129(samp2DAs): 128(ptr) Variable UniformConstant
136: TypeImage 6(float) Cube depth array sampled format:Unknown
137: TypeSampledImage 136
138: TypePointer UniformConstant 137
139(sampCubeAs): 138(ptr) Variable UniformConstant
146: TypePointer Function 20(int)
151: TypeImage 32(int) 2D sampled format:Unknown
152: TypeSampledImage 151
153: TypePointer UniformConstant 152
154(usamp2D): 153(ptr) Variable UniformConstant
160: TypeImage 20(int) 3D sampled format:Unknown
161: TypeSampledImage 160
162: TypePointer UniformConstant 161
163(isamp3D): 162(ptr) Variable UniformConstant
169: TypeImage 20(int) Cube sampled format:Unknown
170: TypeSampledImage 169
171: TypePointer UniformConstant 170
172(isampCube): 171(ptr) Variable UniformConstant
183: TypeImage 6(float) 2D array sampled format:Unknown
184: TypeSampledImage 183
185: TypePointer UniformConstant 184
186(samp2DA): 185(ptr) Variable UniformConstant
192: TypeImage 32(int) Cube array sampled format:Unknown
193: TypeSampledImage 192
194: TypePointer UniformConstant 193
195(usampCubeA): 194(ptr) Variable UniformConstant
229: TypeImage 6(float) Buffer sampled format:Unknown
230: TypeSampledImage 229
231: TypePointer UniformConstant 230
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
5: Label
9(lod): 8(ptr) Variable Function
16(pf): 15(ptr) Variable Function
25(pf2): 8(ptr) Variable Function
38(pf3): 37(ptr) Variable Function
134(levels): 133(ptr) Variable Function
26(pf2): 8(ptr) Variable Function
40(pf3): 39(ptr) Variable Function
147(levels): 146(ptr) Variable Function
14: 11 Load 13(samp1D)
17: 6(float) Load 16(pf)
18: 7(fvec2) ImageQueryLod 14 17
Store 9(lod) 18
24: 21 Load 23(isamp2D)
26: 7(fvec2) Load 25(pf2)
27: 7(fvec2) ImageQueryLod 24 26
28: 7(fvec2) Load 9(lod)
29: 7(fvec2) FAdd 28 27
Store 9(lod) 29
35: 32 Load 34(usamp3D)
39: 36(fvec3) Load 38(pf3)
40: 7(fvec2) ImageQueryLod 35 39
41: 7(fvec2) Load 9(lod)
42: 7(fvec2) FAdd 41 40
Store 9(lod) 42
47: 44 Load 46(sampCube)
48: 36(fvec3) Load 38(pf3)
49: 7(fvec2) ImageQueryLod 47 48
50: 7(fvec2) Load 9(lod)
51: 7(fvec2) FAdd 50 49
Store 9(lod) 51
56: 53 Load 55(isamp1DA)
57: 6(float) Load 16(pf)
58: 7(fvec2) ImageQueryLod 56 57
59: 7(fvec2) Load 9(lod)
60: 7(fvec2) FAdd 59 58
Store 9(lod) 60
65: 62 Load 64(usamp2DA)
66: 7(fvec2) Load 25(pf2)
67: 7(fvec2) ImageQueryLod 65 66
68: 7(fvec2) Load 9(lod)
69: 7(fvec2) FAdd 68 67
Store 9(lod) 69
74: 71 Load 73(isampCubeA)
75: 36(fvec3) Load 38(pf3)
76: 7(fvec2) ImageQueryLod 74 75
77: 7(fvec2) Load 9(lod)
78: 7(fvec2) FAdd 77 76
Store 9(lod) 78
83: 80 Load 82(samp1Ds)
84: 6(float) Load 16(pf)
85: 7(fvec2) ImageQueryLod 83 84
86: 7(fvec2) Load 9(lod)
87: 7(fvec2) FAdd 86 85
Store 9(lod) 87
92: 89 Load 91(samp2Ds)
93: 7(fvec2) Load 25(pf2)
94: 7(fvec2) ImageQueryLod 92 93
95: 7(fvec2) Load 9(lod)
96: 7(fvec2) FAdd 95 94
Store 9(lod) 96
101: 98 Load 100(sampCubes)
102: 36(fvec3) Load 38(pf3)
103: 7(fvec2) ImageQueryLod 101 102
18: 10 Image 14
19: 7(fvec2) ImageQueryLod 18 17
Store 9(lod) 19
25: 22 Load 24(isamp2D)
27: 7(fvec2) Load 26(pf2)
28: 21 Image 25
29: 7(fvec2) ImageQueryLod 28 27
30: 7(fvec2) Load 9(lod)
31: 7(fvec2) FAdd 30 29
Store 9(lod) 31
37: 34 Load 36(usamp3D)
41: 38(fvec3) Load 40(pf3)
42: 33 Image 37
43: 7(fvec2) ImageQueryLod 42 41
44: 7(fvec2) Load 9(lod)
45: 7(fvec2) FAdd 44 43
Store 9(lod) 45
50: 47 Load 49(sampCube)
51: 38(fvec3) Load 40(pf3)
52: 46 Image 50
53: 7(fvec2) ImageQueryLod 52 51
54: 7(fvec2) Load 9(lod)
55: 7(fvec2) FAdd 54 53
Store 9(lod) 55
60: 57 Load 59(isamp1DA)
61: 6(float) Load 16(pf)
62: 56 Image 60
63: 7(fvec2) ImageQueryLod 62 61
64: 7(fvec2) Load 9(lod)
65: 7(fvec2) FAdd 64 63
Store 9(lod) 65
70: 67 Load 69(usamp2DA)
71: 7(fvec2) Load 26(pf2)
72: 66 Image 70
73: 7(fvec2) ImageQueryLod 72 71
74: 7(fvec2) Load 9(lod)
75: 7(fvec2) FAdd 74 73
Store 9(lod) 75
80: 77 Load 79(isampCubeA)
81: 38(fvec3) Load 40(pf3)
82: 76 Image 80
83: 7(fvec2) ImageQueryLod 82 81
84: 7(fvec2) Load 9(lod)
85: 7(fvec2) FAdd 84 83
Store 9(lod) 85
90: 87 Load 89(samp1Ds)
91: 6(float) Load 16(pf)
92: 86 Image 90
93: 7(fvec2) ImageQueryLod 92 91
94: 7(fvec2) Load 9(lod)
95: 7(fvec2) FAdd 94 93
Store 9(lod) 95
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)
105: 7(fvec2) FAdd 104 103
Store 9(lod) 105
110: 107 Load 109(samp1DAs)
111: 6(float) Load 16(pf)
112: 7(fvec2) ImageQueryLod 110 111
113: 7(fvec2) Load 9(lod)
114: 7(fvec2) FAdd 113 112
Store 9(lod) 114
119: 116 Load 118(samp2DAs)
120: 7(fvec2) Load 25(pf2)
121: 7(fvec2) ImageQueryLod 119 120
122: 7(fvec2) Load 9(lod)
123: 7(fvec2) FAdd 122 121
Store 9(lod) 123
128: 125 Load 127(sampCubeAs)
129: 36(fvec3) Load 38(pf3)
130: 7(fvec2) ImageQueryLod 128 129
131: 7(fvec2) Load 9(lod)
132: 7(fvec2) FAdd 131 130
Store 9(lod) 132
135: 11 Load 13(samp1D)
136: 19(int) ImageQueryLevels 135
Store 134(levels) 136
141: 138 Load 140(usamp2D)
142: 19(int) ImageQueryLevels 141
143: 19(int) Load 134(levels)
144: 19(int) IAdd 143 142
Store 134(levels) 144
149: 146 Load 148(isamp3D)
150: 19(int) ImageQueryLevels 149
151: 19(int) Load 134(levels)
152: 19(int) IAdd 151 150
Store 134(levels) 152
157: 154 Load 156(isampCube)
158: 19(int) ImageQueryLevels 157
159: 19(int) Load 134(levels)
160: 19(int) IAdd 159 158
Store 134(levels) 160
161: 53 Load 55(isamp1DA)
162: 19(int) ImageQueryLevels 161
163: 19(int) Load 134(levels)
164: 19(int) IAdd 163 162
Store 134(levels) 164
169: 166 Load 168(samp2DA)
170: 19(int) ImageQueryLevels 169
171: 19(int) Load 134(levels)
172: 19(int) IAdd 171 170
Store 134(levels) 172
177: 174 Load 176(usampCubeA)
178: 19(int) ImageQueryLevels 177
179: 19(int) Load 134(levels)
180: 19(int) IAdd 179 178
Store 134(levels) 180
181: 80 Load 82(samp1Ds)
182: 19(int) ImageQueryLevels 181
Store 134(levels) 182
183: 89 Load 91(samp2Ds)
184: 19(int) ImageQueryLevels 183
185: 19(int) Load 134(levels)
186: 19(int) IAdd 185 184
Store 134(levels) 186
187: 98 Load 100(sampCubes)
188: 19(int) ImageQueryLevels 187
189: 19(int) Load 134(levels)
190: 19(int) IAdd 189 188
Store 134(levels) 190
191: 107 Load 109(samp1DAs)
192: 19(int) ImageQueryLevels 191
193: 19(int) Load 134(levels)
194: 19(int) IAdd 193 192
Store 134(levels) 194
195: 116 Load 118(samp2DAs)
196: 19(int) ImageQueryLevels 195
197: 19(int) Load 134(levels)
198: 19(int) IAdd 197 196
Store 134(levels) 198
199: 125 Load 127(sampCubeAs)
200: 19(int) ImageQueryLevels 199
201: 19(int) Load 134(levels)
202: 19(int) IAdd 201 200
Store 134(levels) 202
110: 107 Load 109(sampCubes)
111: 38(fvec3) Load 40(pf3)
112: 106 Image 110
113: 7(fvec2) ImageQueryLod 112 111
114: 7(fvec2) Load 9(lod)
115: 7(fvec2) FAdd 114 113
Store 9(lod) 115
120: 117 Load 119(samp1DAs)
121: 6(float) Load 16(pf)
122: 116 Image 120
123: 7(fvec2) ImageQueryLod 122 121
124: 7(fvec2) Load 9(lod)
125: 7(fvec2) FAdd 124 123
Store 9(lod) 125
130: 127 Load 129(samp2DAs)
131: 7(fvec2) Load 26(pf2)
132: 126 Image 130
133: 7(fvec2) ImageQueryLod 132 131
134: 7(fvec2) Load 9(lod)
135: 7(fvec2) FAdd 134 133
Store 9(lod) 135
140: 137 Load 139(sampCubeAs)
141: 38(fvec3) Load 40(pf3)
142: 136 Image 140
143: 7(fvec2) ImageQueryLod 142 141
144: 7(fvec2) Load 9(lod)
145: 7(fvec2) FAdd 144 143
Store 9(lod) 145
148: 11 Load 13(samp1D)
149: 10 Image 148
150: 20(int) ImageQueryLevels 149
Store 147(levels) 150
155: 152 Load 154(usamp2D)
156: 151 Image 155
157: 20(int) ImageQueryLevels 156
158: 20(int) Load 147(levels)
159: 20(int) IAdd 158 157
Store 147(levels) 159
164: 161 Load 163(isamp3D)
165: 160 Image 164
166: 20(int) ImageQueryLevels 165
167: 20(int) Load 147(levels)
168: 20(int) IAdd 167 166
Store 147(levels) 168
173: 170 Load 172(isampCube)
174: 169 Image 173
175: 20(int) ImageQueryLevels 174
176: 20(int) Load 147(levels)
177: 20(int) IAdd 176 175
Store 147(levels) 177
178: 57 Load 59(isamp1DA)
179: 56 Image 178
180: 20(int) ImageQueryLevels 179
181: 20(int) Load 147(levels)
182: 20(int) IAdd 181 180
Store 147(levels) 182
187: 184 Load 186(samp2DA)
188: 183 Image 187
189: 20(int) ImageQueryLevels 188
190: 20(int) Load 147(levels)
191: 20(int) IAdd 190 189
Store 147(levels) 191
196: 193 Load 195(usampCubeA)
197: 192 Image 196
198: 20(int) ImageQueryLevels 197
199: 20(int) Load 147(levels)
200: 20(int) IAdd 199 198
Store 147(levels) 200
201: 87 Load 89(samp1Ds)
202: 86 Image 201
203: 20(int) ImageQueryLevels 202
Store 147(levels) 203
204: 97 Load 99(samp2Ds)
205: 96 Image 204
206: 20(int) ImageQueryLevels 205
207: 20(int) Load 147(levels)
208: 20(int) IAdd 207 206
Store 147(levels) 208
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
FunctionEnd

View 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

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12
EntryPoint Fragment 4 "main" 12 16
ExecutionMode 4 OriginLowerLeft
Source GLSL 150
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Name 4 "main"
Name 9 "glPos"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 44
EntryPoint Fragment 4 "main" 31 44
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 61
EntryPoint Fragment 4 "main" 61 99
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 54
EntryPoint Fragment 4 "main" 45 54
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 30
EntryPoint Fragment 4 "main" 30 69
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
Name 4 "main"

View File

@@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 55
// Id's are bound by 56
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 20 38
EntryPoint Fragment 4 "main" 20 38 44
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
Name 4 "main"
@@ -82,7 +82,8 @@ Linked fragment stage:
51: 6(float) Load 50(blend)
52: 6(float) Load 8(blendscale)
53: 6(float) FMul 51 52
54: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 53
Store 44(gl_FragColor) 54
54: 10(fvec4) CompositeConstruct 53 53 53 53
55: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 54
Store 44(gl_FragColor) 55
Return
FunctionEnd

View File

@@ -12,7 +12,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 21 11 9 26
EntryPoint Vertex 4 "main" 9 11 15 21 26
Source GLSL 130
Name 4 "main"
Name 9 "uv"

View File

@@ -8,12 +8,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 290
// Id's are bound by 291
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 289 47
EntryPoint Fragment 4 "main" 47 276 290
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"
@@ -39,8 +39,8 @@ Linked fragment stage:
Name 276 "gl_FragColor"
Name 279 "u"
Name 282 "blend"
Name 288 "scale"
Name 289 "t"
Name 289 "scale"
Name 290 "t"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -103,9 +103,9 @@ Linked fragment stage:
279(u): 278(ptr) Variable UniformConstant
281: TypePointer UniformConstant 6(float)
282(blend): 281(ptr) Variable UniformConstant
287: TypePointer UniformConstant 45(fvec2)
288(scale): 287(ptr) Variable UniformConstant
289(t): 46(ptr) Variable Input
288: TypePointer UniformConstant 45(fvec2)
289(scale): 288(ptr) Variable UniformConstant
290(t): 46(ptr) Variable Input
4(main): 2 Function None 3
5: Label
8(blendscale): 7(ptr) Variable Function
@@ -268,7 +268,7 @@ Linked fragment stage:
Store 26(color) 173
174: 137 Load 139(shadowSampler1D)
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
178: 22(fvec4) Load 26(color)
179: 22(fvec4) CompositeConstruct 177 177 177 177
@@ -277,7 +277,7 @@ Linked fragment stage:
181: 137 Load 139(shadowSampler1D)
182: 22(fvec4) Load 24(coords4D)
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
186: 22(fvec4) Load 26(color)
187: 22(fvec4) CompositeConstruct 185 185 185 185
@@ -285,7 +285,7 @@ Linked fragment stage:
Store 26(color) 188
189: 156 Load 158(shadowSampler2D)
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
193: 22(fvec4) Load 26(color)
194: 22(fvec4) CompositeConstruct 192 192 192 192
@@ -294,7 +294,7 @@ Linked fragment stage:
196: 156 Load 158(shadowSampler2D)
197: 22(fvec4) Load 24(coords4D)
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
201: 22(fvec4) Load 26(color)
202: 22(fvec4) CompositeConstruct 200 200 200 200
@@ -370,7 +370,8 @@ Linked fragment stage:
283: 6(float) Load 282(blend)
284: 6(float) Load 8(blendscale)
285: 6(float) FMul 283 284
286: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 285
Store 276(gl_FragColor) 286
286: 22(fvec4) CompositeConstruct 285 285 285 285
287: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 286
Store 276(gl_FragColor) 287
Return
FunctionEnd

View File

@@ -10,7 +10,7 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 39 144
EntryPoint Vertex 4 "main" 39 140 144
Source GLSL 130
Name 4 "main"
Name 8 "lod"
@@ -174,7 +174,7 @@ Linked vertex stage:
123: 100 Load 102(shadowSampler1D)
124: 18(fvec4) Load 20(coords4D)
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
128: 18(fvec4) Load 23(color)
129: 18(fvec4) CompositeConstruct 127 127 127 127
@@ -183,7 +183,7 @@ Linked vertex stage:
131: 112 Load 114(shadowSampler2D)
132: 18(fvec4) Load 20(coords4D)
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
136: 18(fvec4) Load 23(color)
137: 18(fvec4) CompositeConstruct 135 135 135 135

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 130
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 15 200 77 68
EntryPoint Fragment 4 "main" 15 68 77 200
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
EntryPoint Fragment 4 "main" 47
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -12,7 +12,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 63
EntryPoint Fragment 4 "main" 54 63
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -15,7 +15,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 34 39 19 19 48
EntryPoint Fragment 4 "main" 19 34 39 45 48
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -15,7 +15,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 45 50 30 30 19
EntryPoint Fragment 4 "main" 19 30 45 50 56
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"

View File

@@ -10,7 +10,7 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 41
EntryPoint Fragment 4 "main" 37 41
ExecutionMode 4 OriginLowerLeft
Source GLSL 120
Name 4 "main"

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