Merge branch 'master' of github.com:KhronosGroup/glslang into clang-format

This commit is contained in:
Dejan Mircevski 2016-03-09 00:38:08 -05:00
commit 37c2a2d31d
286 changed files with 25003 additions and 24226 deletions

2
.gitignore vendored
View file

@ -3,8 +3,6 @@
*.so
*.exe
tags
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp.h
build/
Test/localResults/
Test/multiThread.out

View file

@ -47,6 +47,20 @@ CMake: The currently maintained and preferred way of building is through CMake.
In MSVC, after running CMake, you may need to use the Configuration Manager to
check the INSTALL project.
The grammar in glslang/MachineIndependent/glslang.y has to be recompiled with
bison if it changes, the output files are committed to the repo to avoid every
developer needing to have bison configured to compile the project when grammar
changes are quite infrequent. For windows you can get binaries from
[GnuWin32](http://gnuwin32.sourceforge.net/packages/bison.htm).
The command to rebuild is:
```
bison --defines=MachineIndependent/glslang_tab.cpp.h
-t MachineIndependent/glslang.y
-o MachineIndependent/glslang_tab.cpp
```
Programmatic Interfaces
-----------------------

View file

@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 2.8)
set(SOURCES
GlslangToSpv.cpp
InReadableOrder.cpp
SpvBuilder.cpp
SPVRemapper.cpp
doc.cpp

View file

@ -1,5 +1,5 @@
/*
** Copyright (c) 2014-2015 The Khronos Group Inc.
** Copyright (c) 2014-2016 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a copy
** of this software and/or associated documentation files (the "Materials"),
@ -27,8 +27,8 @@
#ifndef GLSLstd450_H
#define GLSLstd450_H
const int GLSLstd450Version = 99;
const int GLSLstd450Revision = 3;
static const int GLSLstd450Version = 100;
static const int GLSLstd450Revision = 1;
enum GLSLstd450 {
GLSLstd450Bad = 0, // Don't use
@ -83,7 +83,7 @@ enum GLSLstd450 {
GLSLstd450UClamp = 44,
GLSLstd450SClamp = 45,
GLSLstd450FMix = 46,
GLSLstd450IMix = 47,
GLSLstd450IMix = 47, // Reserved
GLSLstd450Step = 48,
GLSLstd450SmoothStep = 49,
@ -121,6 +121,10 @@ enum GLSLstd450 {
GLSLstd450InterpolateAtSample = 77,
GLSLstd450InterpolateAtOffset = 78,
GLSLstd450NMin = 79,
GLSLstd450NMax = 80,
GLSLstd450NClamp = 81,
GLSLstd450Count
};

File diff suppressed because it is too large Load diff

117
SPIRV/InReadableOrder.cpp Normal file
View file

@ -0,0 +1,117 @@
//
//Copyright (C) 2016 Google, Inc.
//
//All rights reserved.
//
//Redistribution and use in source and binary forms, with or without
//modification, are permitted provided that the following conditions
//are met:
//
// Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
//
// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.
//
// Author: Dejan Mircevski, Google
//
// The SPIR-V spec requires code blocks to appear in an order satisfying the
// dominator-tree direction (ie, dominator before the dominated). This is,
// actually, easy to achieve: any pre-order CFG traversal algorithm will do it.
// Because such algorithms visit a block only after traversing some path to it
// from the root, they necessarily visit the block's idom first.
//
// But not every graph-traversal algorithm outputs blocks in an order that
// appears logical to human readers. The problem is that unrelated branches may
// be interspersed with each other, and merge blocks may come before some of the
// branches being merged.
//
// A good, human-readable order of blocks may be achieved by performing
// depth-first search but delaying merge nodes until after all their branches
// have been visited. This is implemented below by the inReadableOrder()
// function.
#include "spvIR.h"
#include <cassert>
#include <unordered_map>
using spv::Block;
using spv::Id;
namespace {
// Traverses CFG in a readable order, invoking a pre-set callback on each block.
// Use by calling visit() on the root block.
class ReadableOrderTraverser {
public:
explicit ReadableOrderTraverser(std::function<void(Block*)> callback) : callback_(callback) {}
// Visits the block if it hasn't been visited already and isn't currently
// being delayed. Invokes callback(block), then descends into its
// successors. Delays merge-block and continue-block processing until all
// the branches have been completed.
void visit(Block* block)
{
assert(block);
if (visited_[block] || delayed_[block])
return;
callback_(block);
visited_[block] = true;
Block* mergeBlock = nullptr;
Block* continueBlock = nullptr;
auto mergeInst = block->getMergeInstruction();
if (mergeInst) {
Id mergeId = mergeInst->getIdOperand(0);
mergeBlock = block->getParent().getParent().getInstruction(mergeId)->getBlock();
delayed_[mergeBlock] = true;
if (mergeInst->getOpCode() == spv::OpLoopMerge) {
Id continueId = mergeInst->getIdOperand(1);
continueBlock =
block->getParent().getParent().getInstruction(continueId)->getBlock();
delayed_[continueBlock] = true;
}
}
const auto successors = block->getSuccessors();
for (auto it = successors.cbegin(); it != successors.cend(); ++it)
visit(*it);
if (continueBlock) {
delayed_[continueBlock] = false;
visit(continueBlock);
}
if (mergeBlock) {
delayed_[mergeBlock] = false;
visit(mergeBlock);
}
}
private:
std::function<void(Block*)> callback_;
// Whether a block has already been visited or is being delayed.
std::unordered_map<Block *, bool> visited_, delayed_;
};
}
void spv::inReadableOrder(Block* root, std::function<void(Block*)> callback)
{
ReadableOrderTraverser(callback).visit(root);
}

View file

@ -140,20 +140,17 @@ namespace spv {
}
}
bool spirvbin_t::isFlowCtrlOpen(spv::Op opCode) const
bool spirvbin_t::isFlowCtrl(spv::Op opCode) const
{
switch (opCode) {
case spv::OpBranchConditional:
case spv::OpSwitch: return true;
default: return false;
}
}
bool spirvbin_t::isFlowCtrlClose(spv::Op opCode) const
{
switch (opCode) {
case spv::OpBranch:
case spv::OpSwitch:
case spv::OpLoopMerge:
case spv::OpSelectionMerge: return true;
case spv::OpSelectionMerge:
case spv::OpLabel:
case spv::OpFunction:
case spv::OpFunctionEnd: return true;
default: return false;
}
}
@ -440,7 +437,7 @@ namespace spv {
}
// Store IDs from instruction in our map
for (int op = 0; op < spv::InstructionDesc[opCode].operands.getNum(); ++op, --numOperands) {
for (int op = 0; numOperands > 0; ++op, --numOperands) {
switch (spv::InstructionDesc[opCode].operands.getClass(op)) {
case spv::OperandId:
idFn(asId(word++));
@ -468,19 +465,36 @@ namespace spv {
}
return nextInst;
case spv::OperandLiteralString:
// word += literalStringWords(literalString(word)); // for clarity
case spv::OperandLiteralString: {
const int stringWordCount = literalStringWords(literalString(word));
word += stringWordCount;
numOperands -= (stringWordCount-1); // -1 because for() header post-decrements
break;
}
// Execution mode might have extra literal operands. Skip them.
case spv::OperandExecutionMode:
return nextInst;
// Single word operands we simply ignore, as they hold no IDs
// Single word operands we simply ignore, as they hold no IDs
case spv::OperandLiteralNumber:
case spv::OperandSource:
case spv::OperandExecutionModel:
case spv::OperandAddressing:
case spv::OperandMemory:
case spv::OperandExecutionMode:
case spv::OperandStorage:
case spv::OperandDimensionality:
case spv::OperandSamplerAddressingMode:
case spv::OperandSamplerFilterMode:
case spv::OperandSamplerImageFormat:
case spv::OperandImageChannelOrder:
case spv::OperandImageChannelDataType:
case spv::OperandImageOperands:
case spv::OperandFPFastMath:
case spv::OperandFPRoundingMode:
case spv::OperandLinkageType:
case spv::OperandAccessQualifier:
case spv::OperandFuncParamAttr:
case spv::OperandDecoration:
case spv::OperandBuiltIn:
case spv::OperandSelect:
@ -492,10 +506,12 @@ namespace spv {
case spv::OperandGroupOperation:
case spv::OperandKernelEnqueueFlags:
case spv::OperandKernelProfilingInfo:
case spv::OperandCapability:
++word;
break;
default:
assert(0 && "Unhandled Operand Class");
break;
}
}
@ -558,7 +574,7 @@ namespace spv {
// Window size for context-sensitive canonicalization values
// Emperical best size from a single data set. TODO: Would be a good tunable.
// We essentially performa a little convolution around each instruction,
// We essentially perform a little convolution around each instruction,
// to capture the flavor of nearby code, to hopefully match to similar
// code in other modules.
static const unsigned windowSize = 2;
@ -713,49 +729,71 @@ namespace spv {
strip(); // strip out data we decided to eliminate
}
// remove bodies of uncalled functions
// optimize loads and stores
void spirvbin_t::optLoadStore()
{
idset_t fnLocalVars;
// Map of load result IDs to what they load
idmap_t idMap;
idset_t fnLocalVars; // candidates for removal (only locals)
idmap_t idMap; // Map of load result IDs to what they load
blockmap_t blockMap; // Map of IDs to blocks they first appear in
int blockNum = 0; // block count, to avoid crossing flow control
// Find all the function local pointers stored at most once, and not via access chains
process(
[&](spv::Op opCode, unsigned start) {
const int wordCount = asWordCount(start);
// Count blocks, so we can avoid crossing flow control
if (isFlowCtrl(opCode))
++blockNum;
// Add local variables to the map
if ((opCode == spv::OpVariable && spv[start+3] == spv::StorageClassFunction && asWordCount(start) == 4))
if ((opCode == spv::OpVariable && spv[start+3] == spv::StorageClassFunction && asWordCount(start) == 4)) {
fnLocalVars.insert(asId(start+2));
return true;
}
// Ignore process vars referenced via access chain
if ((opCode == spv::OpAccessChain || opCode == spv::OpInBoundsAccessChain) && fnLocalVars.count(asId(start+3)) > 0) {
fnLocalVars.erase(asId(start+3));
idMap.erase(asId(start+3));
return true;
}
if (opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0) {
// Avoid loads before stores (TODO: why? Crashes driver, but seems like it shouldn't).
if (idMap.find(asId(start+3)) == idMap.end()) {
fnLocalVars.erase(asId(start+3));
idMap.erase(asId(start+3));
const spv::Id varId = asId(start+3);
// Avoid loads before stores
if (idMap.find(varId) == idMap.end()) {
fnLocalVars.erase(varId);
idMap.erase(varId);
}
// don't do for volatile references
if (wordCount > 4 && (spv[start+4] & spv::MemoryAccessVolatileMask)) {
fnLocalVars.erase(asId(start+3));
idMap.erase(asId(start+3));
fnLocalVars.erase(varId);
idMap.erase(varId);
}
// Handle flow control
if (blockMap.find(varId) == blockMap.end()) {
blockMap[varId] = blockNum; // track block we found it in.
} else if (blockMap[varId] != blockNum) {
fnLocalVars.erase(varId); // Ignore if crosses flow control
idMap.erase(varId);
}
return true;
}
if (opCode == spv::OpStore && fnLocalVars.count(asId(start+1)) > 0) {
if (idMap.find(asId(start+1)) == idMap.end()) {
idMap[asId(start+1)] = asId(start+2);
const spv::Id varId = asId(start+1);
if (idMap.find(varId) == idMap.end()) {
idMap[varId] = asId(start+2);
} else {
// Remove if it has more than one store to the same pointer
fnLocalVars.erase(asId(start+1));
idMap.erase(asId(start+1));
fnLocalVars.erase(varId);
idMap.erase(varId);
}
// don't do for volatile references
@ -763,11 +801,29 @@ namespace spv {
fnLocalVars.erase(asId(start+3));
idMap.erase(asId(start+3));
}
// Handle flow control
if (blockMap.find(varId) == blockMap.end()) {
blockMap[varId] = blockNum; // track block we found it in.
} else if (blockMap[varId] != blockNum) {
fnLocalVars.erase(varId); // Ignore if crosses flow control
idMap.erase(varId);
}
return true;
}
return true;
return false;
},
op_fn_nop);
// If local var id used anywhere else, don't eliminate
[&](spv::Id& id) {
if (fnLocalVars.count(id) > 0) {
fnLocalVars.erase(id);
idMap.erase(id);
}
}
);
process(
[&](spv::Op opCode, unsigned start) {
@ -777,12 +833,27 @@ namespace spv {
},
op_fn_nop);
// Chase replacements to their origins, in case there is a chain such as:
// 2 = store 1
// 3 = load 2
// 4 = store 3
// 5 = load 4
// We want to replace uses of 5 with 1.
for (const auto& idPair : idMap) {
spv::Id id = idPair.first;
while (idMap.find(id) != idMap.end()) // Chase to end of chain
id = idMap[id];
idMap[idPair.first] = id; // replace with final result
}
// Remove the load/store/variables for the ones we've discovered
process(
[&](spv::Op opCode, unsigned start) {
if ((opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0) ||
(opCode == spv::OpStore && fnLocalVars.count(asId(start+1)) > 0) ||
(opCode == spv::OpVariable && fnLocalVars.count(asId(start+2)) > 0)) {
stripInst(start);
return true;
}
@ -790,7 +861,9 @@ namespace spv {
return false;
},
[&](spv::Id& id) { if (idMap.find(id) != idMap.end()) id = idMap[id]; }
[&](spv::Id& id) {
if (idMap.find(id) != idMap.end()) id = idMap[id];
}
);
strip(); // strip out data we decided to eliminate

View file

@ -131,6 +131,7 @@ private:
// Local to global, or global to local ID map
typedef std::unordered_map<spv::Id, spv::Id> idmap_t;
typedef std::unordered_set<spv::Id> idset_t;
typedef std::unordered_map<spv::Id, int> blockmap_t;
void remap(std::uint32_t opts = DO_EVERYTHING);
@ -164,8 +165,7 @@ private:
bool isConstOp(spv::Op opCode) const;
bool isTypeOp(spv::Op opCode) const;
bool isStripOp(spv::Op opCode) const;
bool isFlowCtrlOpen(spv::Op opCode) const;
bool isFlowCtrlClose(spv::Op opCode) const;
bool isFlowCtrl(spv::Op opCode) const;
range_t literalRange(spv::Op opCode) const;
range_t typeRange(spv::Op opCode) const;
range_t constRange(spv::Op opCode) const;

701
SPIRV/SpvBuilder.cpp Executable file → Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
//
// Copyright (C) 2014 LunarG, Inc.
//Copyright (C) 2014-2015 LunarG, Inc.
//Copyright (C) 2015-2016 Google, Inc.
//
// All rights reserved.
//
@ -53,6 +54,8 @@
#include <algorithm>
#include <map>
#include <memory>
#include <set>
#include <stack>
namespace spv {
@ -77,7 +80,7 @@ public:
memoryModel = mem;
}
void addCapability(spv::Capability cap) { capabilities.push_back(cap); }
void addCapability(spv::Capability cap) { capabilities.insert(cap); }
// To get a new <id> for anything needing a new one.
Id getUniqueId() { return ++uniqueId; }
// To get a set of new <id>s, e.g., for a set of function parameters
@ -96,13 +99,13 @@ public:
Id makeIntType(int width) { return makeIntegerType(width, true); }
Id makeUintType(int width) { return makeIntegerType(width, false); }
Id makeFloatType(int width);
Id makeStructType(std::vector<Id>& members, const char*);
Id makeStructType(const std::vector<Id>& members, const char*);
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, int stride); // 0 means no stride decoration
Id makeArrayType(Id element, Id sizeId, int stride); // 0 stride means no stride decoration
Id makeRuntimeArray(Id element);
Id makeFunctionType(Id returnType, std::vector<Id>& paramTypes);
Id makeFunctionType(Id returnType, const std::vector<Id>& paramTypes);
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled,
ImageFormat format);
Id makeSamplerType();
@ -121,6 +124,11 @@ public:
Id getContainedTypeId(Id typeId) const;
Id getContainedTypeId(Id typeId, int) const;
StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
ImageFormat getImageTypeFormat(Id typeId) const
{
return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6);
}
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)); }
@ -201,7 +209,7 @@ public:
Id makeDoubleConstant(double d, bool specConstant = false);
// Turn the array of constants into a proper spv constant of the requested type.
Id makeCompositeConstant(Id type, std::vector<Id>& comps);
Id makeCompositeConstant(Id type, std::vector<Id>& comps, bool specConst = false);
// Methods for adding information outside the CFG.
Instruction* addEntryPoint(ExecutionModel, Function*, const char* name);
@ -216,13 +224,16 @@ public:
// At the end of what block do the next create*() instructions go?
void setBuildPoint(Block* bp) { buildPoint = bp; }
Block* getBuildPoint() const { return buildPoint; }
// Make the main function.
// Make the main function. The returned pointer is only valid
// for the lifetime of this builder.
Function* makeMain();
// Make a shader-style function, and create its entry block if entry is non-zero.
// Return the function, pass back the entry.
Function* makeFunctionEntry(Id returnType, const char* name, std::vector<Id>& paramTypes,
Block** entry = 0);
// The returned pointer is only valid for the lifetime of this builder.
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
const std::vector<Id>& paramTypes,
const std::vector<Decoration>& precisions, Block** entry = 0);
// Create a return. An 'implicit' return is one not appearing in the source
// code. In the case of an implicit return, no post-return block is inserted.
@ -237,7 +248,7 @@ public:
// Create a global or function local or IO variable.
Id createVariable(StorageClass, Id type, const char* name = 0);
// Create an imtermediate with an undefined value.
// Create an intermediate with an undefined value.
Id createUndefined(Id type);
// Store into an Id and return the l-value
@ -274,7 +285,8 @@ public:
// Take an rvalue (source) and a set of channels to extract from it to
// make a new rvalue, which is returned.
Id createRvalueSwizzle(Id typeId, Id source, std::vector<unsigned>& channels);
Id createRvalueSwizzle(Decoration precision, Id typeId, Id source,
std::vector<unsigned>& channels);
// Take a copy of an lvalue (target) and a source of components, and set the
// source components into the lvalue where the 'channels' say to put them.
@ -282,13 +294,15 @@ 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 NoPrecision,
// it gets tagged with the requested precision.
void setPrecision(Id /* value */, Decoration precision)
// If both the id and precision are valid, the id
// gets tagged with the requested precision.
// The passed in id is always the returned id, to simplify use patterns.
Id setPrecision(Id id, Decoration precision)
{
if (precision != NoPrecision) {
; // TODO
}
if (precision != NoPrecision && id != NoResult)
addDecoration(id, precision);
return id;
}
// Can smear a scalar to a vector for the following forms:
@ -312,8 +326,7 @@ public:
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);
Id createBuiltinCall(Id resultType, Id builtins, int entryPoint, std::vector<Id>& args);
// List of parameters used to create a texture operation
struct TextureParameters {
@ -328,11 +341,13 @@ public:
Id gradY;
Id sample;
Id comp;
Id texelOut;
Id lodClamp;
};
// Select the correct texture operation based on all inputs, and emit the correct instruction
Id createTextureCall(Decoration precision, Id resultType, bool fetch, bool proj, bool gather,
const TextureParameters&);
Id createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj,
bool gather, bool noImplicit, const TextureParameters&);
// Emit the OpTextureQuery* instruction that was passed in.
// Figure out the right return value and type, and return it.
@ -343,7 +358,7 @@ public:
Id createBitFieldExtractCall(Decoration precision, Id, Id, Id, bool isSigned);
Id createBitFieldInsertCall(Decoration precision, Id, Id, Id, Id);
// Reduction comparision for composites: For equal and not-equal resulting in a scalar.
// Reduction comparison for composites: For equal and not-equal resulting in a scalar.
Id createCompositeCompare(Decoration precision, Id, Id,
bool /* true if for equal, false if for not-equal */);
@ -403,28 +418,24 @@ public:
// Finish off the innermost switch.
void endSwitch(std::vector<Block*>& segmentBB);
// Start the beginning of a new loop, and prepare the builder to
// generate code for the loop test.
// The loopTestFirst parameter is true when the loop test executes before
// the body. (It is false for do-while loops.)
void makeNewLoop(bool loopTestFirst);
struct LoopBlocks {
Block &head, &body, &merge, &continue_target;
};
// Add the branch for the loop test, based on the given condition.
// The true branch goes to the first block in the loop body, and
// the false branch goes to the loop's merge block. The builder insertion
// point will be placed at the start of the body.
void createLoopTestBranch(Id condition);
// Start a new loop and prepare the builder to generate code for it. Until
// closeLoop() is called for this loop, createLoopContinue() and
// createLoopExit() will target its corresponding blocks.
LoopBlocks& makeNewLoop();
// Generate an unconditional branch to the loop body. The builder insertion
// point will be placed at the start of the body. Use this when there is
// no loop test.
void createBranchToBody();
// Create a new block in the function containing the build point. Memory is
// owned by the function object.
Block& makeNewBlock();
// Add a branch to the test of the current (innermost) loop.
// The way we generate code, that's also the loop header.
// Add a branch to the continue_target of the current (innermost) loop.
void createLoopContinue();
// Add an exit (e.g. "break") for the innermost loop that you're in
// Add an exit (e.g. "break") from the innermost loop that we're currently
// in.
void createLoopExit();
// Close the innermost loop that you're in
@ -515,13 +526,21 @@ public:
void accessChainStore(Id rvalue);
// use accessChain and swizzle to load an r-value
Id accessChainLoad(Id ResultType);
Id accessChainLoad(Decoration precision, Id ResultType);
// get the direct pointer for an l-value
Id accessChainGetLValue();
// Get the inferred SPIR-V type of the result of the current access chain,
// based on the type of the base and the chain of dereferences.
Id accessChainGetInferredType();
void dump(std::vector<unsigned int>&) const;
void createBranch(Block* block);
void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control);
protected:
Id makeIntConstant(Id typeId, unsigned value, bool specConstant);
Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value) const;
@ -531,21 +550,16 @@ protected:
void transferAccessChainSwizzle(bool dynamic);
void simplifyAccessChainSwizzle();
void createAndSetNoPredecessorBlock(const char*);
void createBranch(Block* block);
void createSelectionMerge(Block* mergeBlock, unsigned int control);
void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control);
void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
void dumpInstructions(std::vector<unsigned int>&, const std::vector<Instruction*>&) const;
struct Loop; // Defined below.
void createBranchToLoopHeaderFromInside(const Loop& loop);
void dumpInstructions(std::vector<unsigned int>&,
const std::vector<std::unique_ptr<Instruction> >&) const;
SourceLanguage source;
int sourceVersion;
std::vector<const char*> extensions;
AddressingModel addressModel;
MemoryModel memoryModel;
std::vector<spv::Capability> capabilities;
std::set<spv::Capability> capabilities;
int builderNumber;
Module module;
Block* buildPoint;
@ -554,14 +568,15 @@ protected:
AccessChain accessChain;
// special blocks of instructions for output
std::vector<Instruction*> imports;
std::vector<Instruction*> entryPoints;
std::vector<Instruction*> executionModes;
std::vector<Instruction*> names;
std::vector<Instruction*> lines;
std::vector<Instruction*> decorations;
std::vector<Instruction*> constantsTypesGlobals;
std::vector<Instruction*> externals;
std::vector<std::unique_ptr<Instruction> > imports;
std::vector<std::unique_ptr<Instruction> > entryPoints;
std::vector<std::unique_ptr<Instruction> > executionModes;
std::vector<std::unique_ptr<Instruction> > names;
std::vector<std::unique_ptr<Instruction> > lines;
std::vector<std::unique_ptr<Instruction> > decorations;
std::vector<std::unique_ptr<Instruction> > constantsTypesGlobals;
std::vector<std::unique_ptr<Instruction> > externals;
std::vector<std::unique_ptr<Function> > functions;
// not output, internally used for quick & dirty canonical (unique) creation
std::vector<Instruction*> groupedConstants[OpConstant]; // all types appear before OpConstant
@ -570,47 +585,8 @@ protected:
// stack of switches
std::stack<Block*> switchMerges;
// Data that needs to be kept in order to properly handle loops.
struct Loop {
// Constructs a default Loop structure containing new header, merge, and
// body blocks for the current function.
// The testFirst argument indicates whether the loop test executes at
// the top of the loop rather than at the bottom. In the latter case,
// also create a phi instruction whose value indicates whether we're on
// the first iteration of the loop. The phi instruction is initialized
// with no values or predecessor operands.
Loop(Builder& builder, bool testFirst);
// The function containing the loop.
Function* const function;
// The header is the first block generated for the loop.
// It dominates all the blocks in the loop, i.e. it is always
// executed before any others.
// If the loop test is executed before the body (as in "while" and
// "for" loops), then the header begins with the test code.
// Otherwise, the loop is a "do-while" loop and the header contains the
// start of the body of the loop (if the body exists).
Block* const header;
// The merge block marks the end of the loop. Control is transferred
// to the merge block when either the loop test fails, or when a
// nested "break" is encountered.
Block* const merge;
// The body block is the first basic block in the body of the loop, i.e.
// the code that is to be repeatedly executed, aside from loop control.
// This member is null until we generate code that references the loop
// body block.
Block* const body;
// True when the loop test executes before the body.
const bool testFirst;
// When the test executes after the body, this is defined as the phi
// instruction that tells us whether we are on the first iteration of
// the loop. Otherwise this is null. This is non-const because
// it has to be initialized outside of the initializer-list.
Instruction* isFirstIteration;
};
// Our loop stack.
std::stack<Loop> loops;
std::stack<LoopBlocks> loops;
}; // end Builder class
// Use for non-fatal notes about what's not complete

7
SPIRV/disassemble.cpp Executable file → Normal file
View file

@ -59,7 +59,7 @@ const char* GlslStd450DebugNames[spv::GLSLstd450Count];
namespace spv {
void Kill(std::ostream& out, const char* message)
static void Kill(std::ostream& out, const char* message)
{
out << std::endl << "Disassembly failed: " << message << std::endl;
exit(1);
@ -473,6 +473,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
else
out << OperandClassParams[operandClass].getName(stream[word++]);
--numOperands;
break;
}
}
@ -480,7 +481,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
return;
}
void GLSLstd450GetDebugNames(const char** names)
static void GLSLstd450GetDebugNames(const char** names)
{
for (int i = 0; i < GLSLstd450Count; ++i)
names[i] = "Unknown";
@ -531,7 +532,6 @@ void GLSLstd450GetDebugNames(const char** names)
names[GLSLstd450SClamp] = "SClamp";
names[GLSLstd450UClamp] = "UClamp";
names[GLSLstd450FMix] = "FMix";
names[GLSLstd450IMix] = "IMix";
names[GLSLstd450Step] = "Step";
names[GLSLstd450SmoothStep] = "SmoothStep";
names[GLSLstd450Fma] = "Fma";
@ -568,6 +568,7 @@ void GLSLstd450GetDebugNames(const char** names)
void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
{
SpirvStream SpirvStream(out, stream);
spv::Parameterize();
GLSLstd450GetDebugNames(GlslStd450DebugNames);
SpirvStream.validate();
SpirvStream.processInstructions();

View file

@ -712,7 +712,7 @@ const char* KernelProfilingInfoString(int info)
}
}
const int CapabilityCeiling = 57;
const int CapabilityCeiling = 58;
const char* CapabilityString(int info)
{
@ -775,6 +775,7 @@ const char* CapabilityString(int info)
case 54: return "GeometryStreams";
case 55: return "StorageImageReadWithoutFormat";
case 56: return "StorageImageWriteWithoutFormat";
case 57: return "MultiViewport";
case CapabilityCeiling:
default: return "Bad";
@ -1104,6 +1105,7 @@ const char* OpcodeString(int op)
case 317: return "OpNoLine";
case 318: return "OpAtomicFlagTestAndSet";
case 319: return "OpAtomicFlagClear";
case 320: return "OpImageSparseRead";
case OpcodeCeiling:
default:
@ -1311,7 +1313,6 @@ void Parameterize()
CapabilityParams[CapabilityTessellation].caps.push_back(CapabilityShader);
CapabilityParams[CapabilityVector16].caps.push_back(CapabilityKernel);
CapabilityParams[CapabilityFloat16Buffer].caps.push_back(CapabilityKernel);
CapabilityParams[CapabilityFloat16].caps.push_back(CapabilityFloat16Buffer);
CapabilityParams[CapabilityInt64Atomics].caps.push_back(CapabilityInt64);
CapabilityParams[CapabilityImageBasic].caps.push_back(CapabilityKernel);
CapabilityParams[CapabilityImageReadWrite].caps.push_back(CapabilityImageBasic);
@ -1353,6 +1354,7 @@ void Parameterize()
CapabilityParams[CapabilityGeometryStreams].caps.push_back(CapabilityGeometry);
CapabilityParams[CapabilityStorageImageReadWithoutFormat].caps.push_back(CapabilityShader);
CapabilityParams[CapabilityStorageImageWriteWithoutFormat].caps.push_back(CapabilityShader);
CapabilityParams[CapabilityMultiViewport].caps.push_back(CapabilityGeometry);
AddressingParams[AddressingModelPhysical32].caps.push_back(CapabilityAddresses);
AddressingParams[AddressingModelPhysical64].caps.push_back(CapabilityAddresses);
@ -1362,7 +1364,7 @@ void Parameterize()
MemoryParams[MemoryModelOpenCL].caps.push_back(CapabilityKernel);
MemorySemanticsParams[MemorySemanticsUniformMemoryShift].caps.push_back(CapabilityShader);
MemorySemanticsParams[MemorySemanticsAtomicCounterMemoryShift].caps.push_back(CapabilityShader);
MemorySemanticsParams[MemorySemanticsAtomicCounterMemoryShift].caps.push_back(CapabilityAtomicStorage);
ExecutionModelParams[ExecutionModelVertex].caps.push_back(CapabilityShader);
ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapabilityTessellation);
@ -1528,7 +1530,7 @@ void Parameterize()
DecorationParams[DecorationFlat].caps.push_back(CapabilityShader);
DecorationParams[DecorationPatch].caps.push_back(CapabilityTessellation);
DecorationParams[DecorationCentroid].caps.push_back(CapabilityShader);
DecorationParams[DecorationSample].caps.push_back(CapabilityShader);
DecorationParams[DecorationSample].caps.push_back(CapabilitySampleRateShading);
DecorationParams[DecorationInvariant].caps.push_back(CapabilityShader);
DecorationParams[DecorationConstant].caps.push_back(CapabilityKernel);
DecorationParams[DecorationUniform].caps.push_back(CapabilityShader);
@ -1537,14 +1539,14 @@ void Parameterize()
DecorationParams[DecorationStream].caps.push_back(CapabilityGeometryStreams);
DecorationParams[DecorationLocation].caps.push_back(CapabilityShader);
DecorationParams[DecorationComponent].caps.push_back(CapabilityShader);
DecorationParams[DecorationOffset].caps.push_back(CapabilityShader);
DecorationParams[DecorationIndex].caps.push_back(CapabilityShader);
DecorationParams[DecorationBinding].caps.push_back(CapabilityShader);
DecorationParams[DecorationDescriptorSet].caps.push_back(CapabilityShader);
DecorationParams[DecorationXfbBuffer].caps.push_back(CapabilityTransformFeedback);
DecorationParams[DecorationXfbStride].caps.push_back(CapabilityTransformFeedback);
DecorationParams[DecorationArrayStride].caps.push_back(CapabilityShader);
DecorationParams[DecorationMatrixStride].caps.push_back(CapabilityShader);
DecorationParams[DecorationBuiltIn].caps.push_back(CapabilityShader);
DecorationParams[DecorationMatrixStride].caps.push_back(CapabilityMatrix);
DecorationParams[DecorationFuncParamAttr].caps.push_back(CapabilityKernel);
DecorationParams[DecorationFPRoundingMode].caps.push_back(CapabilityKernel);
DecorationParams[DecorationFPFastMathMode].caps.push_back(CapabilityKernel);
@ -1556,8 +1558,8 @@ void Parameterize()
BuiltInParams[BuiltInPosition].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInPointSize].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInClipDistance].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInCullDistance].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInClipDistance].caps.push_back(CapabilityClipDistance);
BuiltInParams[BuiltInCullDistance].caps.push_back(CapabilityCullDistance);
BuiltInParams[BuiltInVertexId].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInVertexId].desc = "Vertex ID, which takes on values 0, 1, 2, . . . .";
@ -1576,7 +1578,7 @@ void Parameterize()
BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityGeometry);
BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityTessellation);
BuiltInParams[BuiltInLayer].caps.push_back(CapabilityGeometry);
BuiltInParams[BuiltInViewportIndex].caps.push_back(CapabilityGeometry);
BuiltInParams[BuiltInViewportIndex].caps.push_back(CapabilityMultiViewport);
BuiltInParams[BuiltInTessLevelOuter].caps.push_back(CapabilityTessellation);
BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapabilityTessellation);
BuiltInParams[BuiltInTessCoord].caps.push_back(CapabilityTessellation);
@ -1584,9 +1586,9 @@ void Parameterize()
BuiltInParams[BuiltInFragCoord].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInPointCoord].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInFrontFacing].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInSampleId].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInSamplePosition].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInSampleMask].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInSampleId].caps.push_back(CapabilitySampleRateShading);
BuiltInParams[BuiltInSamplePosition].caps.push_back(CapabilitySampleRateShading);
BuiltInParams[BuiltInSampleMask].caps.push_back(CapabilitySampleRateShading);
BuiltInParams[BuiltInFragDepth].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInWorkDim].caps.push_back(CapabilityKernel);
@ -1962,6 +1964,12 @@ void Parameterize()
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true);
InstructionDesc[OpImageSparseDrefGather].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'");
InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true);
InstructionDesc[OpImageSparseRead].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'");
InstructionDesc[OpImageSparseTexelsResident].capabilities.push_back(CapabilitySparseResidency);

5
SPIRV/doc.h Executable file → Normal file
View file

@ -67,6 +67,8 @@ const char* SamplerFilterModeString(int);
const char* ImageFormatString(int);
const char* ImageChannelOrderString(int);
const char* ImageChannelTypeString(int);
const char* ImageChannelDataTypeString(int type);
const char* ImageOperandsString(int format);
const char* ImageOperands(int);
const char* FPFastMathString(int);
const char* FPRoundingModeString(int);
@ -81,6 +83,7 @@ const char* KernelEnqueueFlagsString(int);
const char* KernelProfilingInfoString(int);
const char* CapabilityString(int);
const char* OpcodeString(int);
const char* ScopeString(int mem);
// For grouping opcodes into subsections
enum OpcodeClass {
@ -243,7 +246,7 @@ protected:
int resultPresent : 1;
};
const int OpcodeCeiling = 320;
const int OpcodeCeiling = 321;
// The set of objects that hold all the instruction/operand
// parameterization information.

View file

@ -1,4 +1,4 @@
// Copyright (c) 2014-2015 The Khronos Group Inc.
// Copyright (c) 2014-2016 The Khronos Group Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and/or associated documentation files (the "Materials"),
@ -39,19 +39,19 @@
// "Mask" in their name, and a parallel enum that has the shift
// amount (1 << x) for each corresponding enumerant.
#ifndef spirv_H
#define spirv_H
#ifndef spirv_HPP
#define spirv_HPP
namespace spv {
typedef unsigned int Id;
#define SPV_VERSION 10000
#define SPV_REVISION 2
#define SPV_VERSION 0x10000
#define SPV_REVISION 3
static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000;
static const unsigned int Revision = 2;
static const unsigned int Revision = 3;
static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16;
@ -563,6 +563,7 @@ enum Capability {
CapabilityGeometryStreams = 54,
CapabilityStorageImageReadWithoutFormat = 55,
CapabilityStorageImageWriteWithoutFormat = 56,
CapabilityMultiViewport = 57,
};
enum Op {
@ -859,6 +860,7 @@ enum Op {
OpNoLine = 317,
OpAtomicFlagTestAndSet = 318,
OpAtomicFlagClear = 319,
OpImageSparseRead = 320,
};
// Overload operator| for mask bit combining
@ -874,5 +876,4 @@ inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfil
} // end namespace spv
#endif // #ifndef spirv_H
#endif // #ifndef spirv_HPP

View file

@ -52,12 +52,16 @@
#include "spirv.hpp"
#include <vector>
#include <algorithm>
#include <cassert>
#include <functional>
#include <iostream>
#include <assert.h>
#include <memory>
#include <vector>
namespace spv {
class Block;
class Function;
class Module;
@ -66,7 +70,17 @@ const Id NoType = 0;
const unsigned int BadValue = 0xFFFFFFFF;
const Decoration NoPrecision = (Decoration)BadValue;
const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)0x3FF;
const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsAcquireMask |
MemorySemanticsReleaseMask |
MemorySemanticsAcquireReleaseMask |
MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsUniformMemoryMask |
MemorySemanticsSubgroupMemoryMask |
MemorySemanticsWorkgroupMemoryMask |
MemorySemanticsCrossWorkgroupMemoryMask |
MemorySemanticsAtomicCounterMemoryMask |
MemorySemanticsImageMemoryMask);
//
// SPIR-V IR instruction.
@ -74,8 +88,8 @@ const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)0x3FF;
class Instruction {
public:
Instruction(Id resultId, Id typeId, Op opCode) : resultId(resultId), typeId(typeId), opCode(opCode) { }
explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode) { }
Instruction(Id resultId, Id typeId, Op opCode) : resultId(resultId), typeId(typeId), opCode(opCode), block(nullptr) { }
explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { }
virtual ~Instruction() {}
void addIdOperand(Id id) { operands.push_back(id); }
void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); }
@ -106,6 +120,8 @@ public:
addImmediateOperand(word);
}
}
void setBlock(Block* b) { block = b; }
Block* getBlock() const { return block; }
Op getOpCode() const { return opCode; }
int getNumOperands() const { return (int)operands.size(); }
Id getResultId() const { return resultId; }
@ -144,6 +160,7 @@ protected:
Op opCode;
std::vector<Id> operands;
std::string originalString; // could be optimized away; convenience for getting string operand
Block* block;
};
//
@ -155,18 +172,31 @@ public:
Block(Id id, Function& parent);
virtual ~Block()
{
// TODO: free instructions
}
Id getId() { return instructions.front()->getResultId(); }
Function& getParent() const { return parent; }
void addInstruction(Instruction* inst);
void addPredecessor(Block* pred) { predecessors.push_back(pred); }
void addLocalVariable(Instruction* inst) { localVariables.push_back(inst); }
int getNumPredecessors() const { return (int)predecessors.size(); }
void addInstruction(std::unique_ptr<Instruction> inst);
void addPredecessor(Block* pred) { predecessors.push_back(pred); pred->successors.push_back(this);}
void addLocalVariable(std::unique_ptr<Instruction> inst) { localVariables.push_back(std::move(inst)); }
const std::vector<Block*>& getPredecessors() const { return predecessors; }
const std::vector<Block*>& getSuccessors() const { return successors; }
void setUnreachable() { unreachable = true; }
bool isUnreachable() const { return unreachable; }
// Returns the block's merge instruction, if one exists (otherwise null).
const Instruction* getMergeInstruction() const {
if (instructions.size() < 2) return nullptr;
const Instruction* nextToLast = (instructions.cend() - 2)->get();
switch (nextToLast->getOpCode()) {
case OpSelectionMerge:
case OpLoopMerge:
return nextToLast;
default:
return nullptr;
}
return nullptr;
}
bool isTerminated() const
{
@ -185,12 +215,6 @@ public:
void dump(std::vector<unsigned int>& out) const
{
// skip the degenerate unreachable blocks
// TODO: code gen: skip all unreachable blocks (transitive closure)
// (but, until that's done safer to keep non-degenerate unreachable blocks, in case others depend on something)
if (unreachable && instructions.size() <= 2)
return;
instructions[0]->dump(out);
for (int i = 0; i < (int)localVariables.size(); ++i)
localVariables[i]->dump(out);
@ -205,9 +229,9 @@ protected:
// To enforce keeping parent and ownership in sync:
friend Function;
std::vector<Instruction*> instructions;
std::vector<Block*> predecessors;
std::vector<Instruction*> localVariables;
std::vector<std::unique_ptr<Instruction> > instructions;
std::vector<Block*> predecessors, successors;
std::vector<std::unique_ptr<Instruction> > localVariables;
Function& parent;
// track whether this block is known to be uncreachable (not necessarily
@ -216,6 +240,11 @@ protected:
bool unreachable;
};
// Traverses the control-flow graph rooted at root in an order suited for
// readable code generation. Invokes callback at every node in the traversal
// order.
void inReadableOrder(Block* root, std::function<void(Block*)> callback);
//
// SPIR-V IR Function.
//
@ -235,12 +264,18 @@ public:
Id getParamId(int p) { return parameterInstructions[p]->getResultId(); }
void addBlock(Block* block) { blocks.push_back(block); }
void popBlock(Block*) { blocks.pop_back(); }
void removeBlock(Block* block)
{
auto found = find(blocks.begin(), blocks.end(), block);
assert(found != blocks.end());
blocks.erase(found);
delete block;
}
Module& getParent() const { return parent; }
Block* getEntryBlock() const { return blocks.front(); }
Block* getLastBlock() const { return blocks.back(); }
void addLocalVariable(Instruction* inst);
void addLocalVariable(std::unique_ptr<Instruction> inst);
Id getReturnType() const { return functionInstruction.getTypeId(); }
void dump(std::vector<unsigned int>& out) const
{
@ -252,8 +287,7 @@ public:
parameterInstructions[p]->dump(out);
// Blocks
for (int b = 0; b < (int)blocks.size(); ++b)
blocks[b]->dump(out);
inReadableOrder(blocks[0], [&out](const Block* b) { b->dump(out); });
Instruction end(0, 0, OpFunctionEnd);
end.dump(out);
}
@ -341,22 +375,27 @@ __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParam
}
}
__inline void Function::addLocalVariable(Instruction* inst)
__inline void Function::addLocalVariable(std::unique_ptr<Instruction> inst)
{
blocks[0]->addLocalVariable(inst);
parent.mapInstruction(inst);
Instruction* raw_instruction = inst.get();
blocks[0]->addLocalVariable(std::move(inst));
parent.mapInstruction(raw_instruction);
}
__inline Block::Block(Id id, Function& parent) : parent(parent), unreachable(false)
{
instructions.push_back(new Instruction(id, NoType, OpLabel));
instructions.push_back(std::unique_ptr<Instruction>(new Instruction(id, NoType, OpLabel)));
instructions.back()->setBlock(this);
parent.getParent().mapInstruction(instructions.back().get());
}
__inline void Block::addInstruction(Instruction* inst)
__inline void Block::addInstruction(std::unique_ptr<Instruction> inst)
{
instructions.push_back(inst);
if (inst->getResultId())
parent.getParent().mapInstruction(inst);
Instruction* raw_instruction = inst.get();
instructions.push_back(std::move(inst));
raw_instruction->setBlock(this);
if (raw_instruction->getResultId())
parent.getParent().mapInstruction(raw_instruction);
}
}; // end spv namespace

View file

@ -435,6 +435,8 @@ void ProcessConfigFile()
}
if (configStrings)
FreeFileData(configStrings);
else
delete[] config;
}
// thread-safe list of shaders to asynchronously grab and compile
@ -658,13 +660,23 @@ void StderrIfNonEmpty(const char* str)
}
}
// Simple bundling of what makes a compilation unit for ease in passing around,
// and separation of handling file IO versus API (programmatic) compilation.
struct ShaderCompUnit {
EShLanguage stage;
std::string fileName;
char** text; // memory owned/managed externally
};
//
// For linking mode: Will independently parse each item in the worklist, but then put them
// in the same program and link them together.
// For linking mode: Will independently parse each compilation unit, but then put them
// in the same program and link them together, making at most one linked module per
// pipeline stage.
//
// Uses the new C++ interface instead of the old handle-based interface.
//
void CompileAndLinkShaders()
void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
{
// keep track of what to free
std::list<glslang::TShader*> shaders;
@ -677,22 +689,14 @@ void CompileAndLinkShaders()
//
glslang::TProgram& program = *new glslang::TProgram;
glslang::TWorkItem* workItem;
while (Worklist.remove(workItem)) {
EShLanguage stage = FindLanguage(workItem->name);
glslang::TShader* shader = new glslang::TShader(stage);
for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
const auto &compUnit = *it;
glslang::TShader* shader = new glslang::TShader(compUnit.stage);
shader->setStrings(compUnit.text, 1);
shaders.push_back(shader);
char** shaderStrings = ReadFileData(workItem->name.c_str());
if (! shaderStrings) {
usage();
delete &program;
return;
}
const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100;
shader->setStrings(shaderStrings, 1);
if (Options & EOptionOutputPreprocessed) {
std::string str;
if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false,
@ -703,7 +707,6 @@ void CompileAndLinkShaders()
}
StderrIfNonEmpty(shader->getInfoLog());
StderrIfNonEmpty(shader->getInfoDebugLog());
FreeFileData(shaderStrings);
continue;
}
if (! shader->parse(&Resources, defaultVersion, false, messages))
@ -711,13 +714,12 @@ void CompileAndLinkShaders()
program.addShader(shader);
if (! (Options & EOptionSuppressInfolog)) {
PutsIfNonEmpty(workItem->name.c_str());
if (! (Options & EOptionSuppressInfolog) &&
! (Options & EOptionMemoryLeakMode)) {
PutsIfNonEmpty(compUnit.fileName.c_str());
PutsIfNonEmpty(shader->getInfoLog());
PutsIfNonEmpty(shader->getInfoDebugLog());
}
FreeFileData(shaderStrings);
}
//
@ -727,7 +729,8 @@ void CompileAndLinkShaders()
if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
LinkFailed = true;
if (! (Options & EOptionSuppressInfolog)) {
if (! (Options & EOptionSuppressInfolog) &&
! (Options & EOptionMemoryLeakMode)) {
PutsIfNonEmpty(program.getInfoLog());
PutsIfNonEmpty(program.getInfoDebugLog());
}
@ -745,10 +748,14 @@ void CompileAndLinkShaders()
if (program.getIntermediate((EShLanguage)stage)) {
std::vector<unsigned int> spirv;
glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv);
glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
if (Options & EOptionHumanReadableSpv) {
spv::Parameterize();
spv::Disassemble(std::cout, spirv);
// Dump the spv to a file or stdout, etc., but only if not doing
// memory/perf testing, as it's not internal to programmatic use.
if (! (Options & EOptionMemoryLeakMode)) {
glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
if (Options & EOptionHumanReadableSpv) {
spv::Disassemble(std::cout, spirv);
}
}
}
}
@ -766,6 +773,59 @@ void CompileAndLinkShaders()
}
}
//
// Do file IO part of compile and link, handing off the pure
// API/programmatic mode to CompileAndLinkShaderUnits(), which can
// be put in a loop for testing memory footprint and performance.
//
// This is just for linking mode: meaning all the shaders will be put into the
// the same program linked together.
//
// This means there are a limited number of work items (not multi-threading mode)
// and that the point is testing at the linking level. Hence, to enable
// performance and memory testing, the actual compile/link can be put in
// a loop, independent of processing the work items and file IO.
//
void CompileAndLinkShaderFiles()
{
std::vector<ShaderCompUnit> compUnits;
// Transfer all the work items from to a simple list of
// of compilation units. (We don't care about the thread
// work-item distribution properties in this path, which
// is okay due to the limited number of shaders, know since
// they are all getting linked together.)
glslang::TWorkItem* workItem;
while (Worklist.remove(workItem)) {
ShaderCompUnit compUnit = {
FindLanguage(workItem->name),
workItem->name,
ReadFileData(workItem->name.c_str())
};
if (! compUnit.text) {
usage();
return;
}
compUnits.push_back(compUnit);
}
// Actual call to programmatic processing of compile and link,
// in a loop for testing memory and performance. This part contains
// all the perf/memory that a programmatic consumer will care about.
for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) {
for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j)
CompileAndLinkShaderUnits(compUnits);
if (Options & EOptionMemoryLeakMode)
glslang::OS_DumpMemoryCounters();
}
for (auto it = compUnits.begin(); it != compUnits.end(); ++it)
FreeFileData(it->text);
}
int C_DECL main(int argc, char* argv[])
{
ProcessArguments(argc, argv);
@ -803,8 +863,13 @@ int C_DECL main(int argc, char* argv[])
if (Options & EOptionLinkProgram ||
Options & EOptionOutputPreprocessed) {
glslang::InitializeProcess();
CompileAndLinkShaders();
CompileAndLinkShaderFiles();
glslang::FinalizeProcess();
for (int w = 0; w < NumWorkItems; ++w) {
if (Work[w]) {
delete Work[w];
}
}
} else {
ShInitialize();
@ -837,6 +902,8 @@ int C_DECL main(int argc, char* argv[])
ShFinalize();
}
delete[] Work;
if (CompileFailed)
return EFailCompile;
if (LinkFailed)

View file

@ -120,7 +120,8 @@ namespace {
if (fp.fail())
errHandler(std::string("error opening file for write: ") + outFile);
for (auto word : spv) {
for (auto it = spv.cbegin(); it != spv.cend(); ++it) {
SpvWord word = *it;
fp.write((char *)&word, sizeof(word));
if (fp.fail())
errHandler(std::string("error writing file: ") + outFile);
@ -157,7 +158,8 @@ namespace {
void execute(const std::vector<std::string>& inputFile, const std::string& outputDir,
int opts, int verbosity)
{
for (const auto& filename : inputFile) {
for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) {
const std::string &filename = *it;
std::vector<SpvWord> spv;
read(spv, filename, verbosity);
spv::spirvbin_t(verbosity).remap(spv, opts);

View file

@ -139,6 +139,14 @@ void foo2()
bool b = any(lessThan(v4, attv4)); // tests aggregate arg to unary built-in
}
void noise()
{
float f1 = noise1(1.0);
vec2 f2 = noise2(vec2(1.0));
vec3 f3 = noise3(vec3(1.0));
vec4 f4 = noise4(vec4(1.0));
}
// version 130 features
uniform int c;

View file

@ -60,7 +60,7 @@ patch out vec4 patchOut; // ERROR
void foo24()
{
dvec3 df, di;
df = modf(outp.xyz, di);
df = modf(dvec3(outp.xyz), di);
}
in float in1;
@ -185,3 +185,13 @@ void qlod()
}
struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member
uniform uint uu;
out int iout;
void bitwiseConv()
{
iout = uu & i;
iout += uu ^ i;
iout += i | uu;
}

View file

@ -115,3 +115,216 @@ void qlod()
lod = textureQueryLod(samp1D, pf); // ERROR, only in fragment
lod = textureQueryLod(samp2Ds, pf2); // ERROR, only in fragment
}
void doubles()
{
double doublev;
dvec2 dvec2v;
dvec3 dvec3v;
dvec4 dvec4v;
bool boolv;
bvec2 bvec2v;
bvec3 bvec3v;
bvec4 bvec4v;
doublev = sqrt(2.9);
dvec2v = sqrt(dvec2(2.7));
dvec3v = sqrt(dvec3(2.0));
dvec4v = sqrt(dvec4(2.1));
doublev += inversesqrt(doublev);
dvec2v += inversesqrt(dvec2v);
dvec3v += inversesqrt(dvec3v);
dvec4v += inversesqrt(dvec4v);
doublev += abs(doublev);
dvec2v += abs(dvec2v);
dvec3v += abs(dvec3v);
dvec4v += abs(dvec4v);
doublev += sign(doublev);
dvec2v += sign(dvec2v);
dvec3v += sign(dvec3v);
dvec4v += sign(dvec4v);
doublev += floor(doublev);
dvec2v += floor(dvec2v);
dvec3v += floor(dvec3v);
dvec4v += floor(dvec4v);
doublev += trunc(doublev);
dvec2v += trunc(dvec2v);
dvec3v += trunc(dvec3v);
dvec4v += trunc(dvec4v);
doublev += round(doublev);
dvec2v += round(dvec2v);
dvec3v += round(dvec3v);
dvec4v += round(dvec4v);
doublev += roundEven(doublev);
dvec2v += roundEven(dvec2v);
dvec3v += roundEven(dvec3v);
dvec4v += roundEven(dvec4v);
doublev += ceil(doublev);
dvec2v += ceil(dvec2v);
dvec3v += ceil(dvec3v);
dvec4v += ceil(dvec4v);
doublev += fract(doublev);
dvec2v += fract(dvec2v);
dvec3v += fract(dvec3v);
dvec4v += fract(dvec4v);
doublev += mod(doublev, doublev);
dvec2v += mod(dvec2v, doublev);
dvec3v += mod(dvec3v, doublev);
dvec4v += mod(dvec4v, doublev);
dvec2v += mod(dvec2v, dvec2v);
dvec3v += mod(dvec3v, dvec3v);
dvec4v += mod(dvec4v, dvec4v);
doublev += modf(doublev, doublev);
dvec2v += modf(dvec2v, dvec2v);
dvec3v += modf(dvec3v, dvec3v);
dvec4v += modf(dvec4v, dvec4v);
doublev += min(doublev, doublev);
dvec2v += min(dvec2v, doublev);
dvec3v += min(dvec3v, doublev);
dvec4v += min(dvec4v, doublev);
dvec2v += min(dvec2v, dvec2v);
dvec3v += min(dvec3v, dvec3v);
dvec4v += min(dvec4v, dvec4v);
doublev += max(doublev, doublev);
dvec2v += max(dvec2v, doublev);
dvec3v += max(dvec3v, doublev);
dvec4v += max(dvec4v, doublev);
dvec2v += max(dvec2v, dvec2v);
dvec3v += max(dvec3v, dvec3v);
dvec4v += max(dvec4v, dvec4v);
doublev += clamp(doublev, doublev, doublev);
dvec2v += clamp(dvec2v, doublev, doublev);
dvec3v += clamp(dvec3v, doublev, doublev);
dvec4v += clamp(dvec4v, doublev, doublev);
dvec2v += clamp(dvec2v, dvec2v, dvec2v);
dvec3v += clamp(dvec3v, dvec3v, dvec3v);
dvec4v += clamp(dvec4v, dvec4v, dvec4v);
doublev += mix(doublev, doublev, doublev);
dvec2v += mix(dvec2v, dvec2v, doublev);
dvec3v += mix(dvec3v, dvec3v, doublev);
dvec4v += mix(dvec4v, dvec4v, doublev);
dvec2v += mix(dvec2v, dvec2v, dvec2v);
dvec3v += mix(dvec3v, dvec3v, dvec3v);
dvec4v += mix(dvec4v, dvec4v, dvec4v);
doublev += mix(doublev, doublev, boolv);
dvec2v += mix(dvec2v, dvec2v, bvec2v);
dvec3v += mix(dvec3v, dvec3v, bvec3v);
dvec4v += mix(dvec4v, dvec4v, bvec4v);
doublev += step(doublev, doublev);
dvec2v += step(dvec2v, dvec2v);
dvec3v += step(dvec3v, dvec3v);
dvec4v += step(dvec4v, dvec4v);
dvec2v += step(doublev, dvec2v);
dvec3v += step(doublev, dvec3v);
dvec4v += step(doublev, dvec4v);
doublev += smoothstep(doublev, doublev, doublev);
dvec2v += smoothstep(dvec2v, dvec2v, dvec2v);
dvec3v += smoothstep(dvec3v, dvec3v, dvec3v);
dvec4v += smoothstep(dvec4v, dvec4v, dvec4v);
dvec2v += smoothstep(doublev, doublev, dvec2v);
dvec3v += smoothstep(doublev, doublev, dvec3v);
dvec4v += smoothstep(doublev, doublev, dvec4v);
boolv = isnan(doublev);
bvec2v = isnan(dvec2v);
bvec3v = isnan(dvec3v);
bvec4v = isnan(dvec4v);
boolv = boolv ? isinf(doublev) : false;
bvec2v = boolv ? isinf(dvec2v) : bvec2(false);
bvec3v = boolv ? isinf(dvec3v) : bvec3(false);
bvec4v = boolv ? isinf(dvec4v) : bvec4(false);
doublev += length(doublev);
doublev += length(dvec2v);
doublev += length(dvec3v);
doublev += length(dvec4v);
doublev += distance(doublev, doublev);
doublev += distance(dvec2v, dvec2v);
doublev += distance(dvec3v, dvec3v);
doublev += distance(dvec4v, dvec4v);
doublev += dot(doublev, doublev);
doublev += dot(dvec2v, dvec2v);
doublev += dot(dvec3v, dvec3v);
doublev += dot(dvec4v, dvec4v);
dvec3v += cross(dvec3v, dvec3v);
doublev += normalize(doublev);
dvec2v += normalize(dvec2v);
dvec3v += normalize(dvec3v);
dvec4v += normalize(dvec4v);
doublev += faceforward(doublev, doublev, doublev);
dvec2v += faceforward(dvec2v, dvec2v, dvec2v);
dvec3v += faceforward(dvec3v, dvec3v, dvec3v);
dvec4v += faceforward(dvec4v, dvec4v, dvec4v);
doublev += reflect(doublev, doublev);
dvec2v += reflect(dvec2v, dvec2v);
dvec3v += reflect(dvec3v, dvec3v);
dvec4v += reflect(dvec4v, dvec4v);
doublev += refract(doublev, doublev, doublev);
dvec2v += refract(dvec2v, dvec2v, doublev);
dvec3v += refract(dvec3v, dvec3v, doublev);
dvec4v += refract(dvec4v, dvec4v, doublev);
dmat2 dmat2v = outerProduct(dvec2v, dvec2v);
dmat3 dmat3v = outerProduct(dvec3v, dvec3v);
dmat4 dmat4v = outerProduct(dvec4v, dvec4v);
dmat2x3 dmat2x3v = outerProduct(dvec3v, dvec2v);
dmat3x2 dmat3x2v = outerProduct(dvec2v, dvec3v);
dmat2x4 dmat2x4v = outerProduct(dvec4v, dvec2v);
dmat4x2 dmat4x2v = outerProduct(dvec2v, dvec4v);
dmat3x4 dmat3x4v = outerProduct(dvec4v, dvec3v);
dmat4x3 dmat4x3v = outerProduct(dvec3v, dvec4v);
dmat2v *= matrixCompMult(dmat2v, dmat2v);
dmat3v *= matrixCompMult(dmat3v, dmat3v);
dmat4v *= matrixCompMult(dmat4v, dmat4v);
dmat2x3v = matrixCompMult(dmat2x3v, dmat2x3v);
dmat2x4v = matrixCompMult(dmat2x4v, dmat2x4v);
dmat3x2v = matrixCompMult(dmat3x2v, dmat3x2v);
dmat3x4v = matrixCompMult(dmat3x4v, dmat3x4v);
dmat4x2v = matrixCompMult(dmat4x2v, dmat4x2v);
dmat4x3v = matrixCompMult(dmat4x3v, dmat4x3v);
dmat2v *= transpose(dmat2v);
dmat3v *= transpose(dmat3v);
dmat4v *= transpose(dmat4v);
dmat2x3v = transpose(dmat3x2v);
dmat3x2v = transpose(dmat2x3v);
dmat2x4v = transpose(dmat4x2v);
dmat4x2v = transpose(dmat2x4v);
dmat3x4v = transpose(dmat4x3v);
dmat4x3v = transpose(dmat3x4v);
doublev += determinant(dmat2v);
doublev += determinant(dmat3v);
doublev += determinant(dmat4v);
dmat2v *= inverse(dmat2v);
dmat3v *= inverse(dmat3v);
dmat4v *= inverse(dmat4v);
}

View file

@ -7,10 +7,10 @@ uniform bvec4 ub41, ub42;
uniform float uf;
uniform int ui;
#ifdef TEST_POST_110
uniform uvec4 uuv4;
uniform unsigned int uui;
#endif
uniform uint uui;
void main()
{
@ -19,9 +19,9 @@ void main()
bool b;
bvec4 bv4;
int i;
#ifdef TEST_POST_110
uint u;
#endif
// floating point
v = radians(uv4);
@ -51,37 +51,37 @@ void main()
v += sign(v);
v += floor(v);
#ifdef TEST_POST_110
v += trunc(v);
v += round(v);
v += roundEven(v);
#endif
v += ceil(v);
v += fract(v);
v += mod(v, v);
v += mod(v, v.x);
#ifdef TEST_POST_110
v += modf(v, v);
#endif
v += min(v, uv4);
v += max(v, uv4);
v += clamp(v, uv4, uv4);
v += mix(v,v,v);
#ifdef TEST_POST_110
v += mix(v,v,ub);
v += intBitsToFloat(v);
v += uintBitsToFloat(v);
v += fma(v);
v += mix(v,v,bv4);
v += intBitsToFloat(ivec4(i));
v += uintBitsToFloat(uv4);
v += fma(v,v,v);
v += frexp(v);
v += ldexp(v);
v += unpackUnorm2x16(v);
v += unpackUnorm4x8(v);
v += unpackSnorm4x8(v);
#endif
v += step(v,v);
v += smoothstep(v,v,v);
@ -96,7 +96,7 @@ void main()
v += fwidth(v);
//noise*(v);
#ifdef TEST_POST_110
// signed integer
i += abs(ui);
i += sign(i);
@ -118,15 +118,15 @@ void main()
u += floatsBitToInt(v);
u += packUnorm2x16(v);
u += packUnorm4x8(v);
u += packSnorm4x8(v);
u += floatBitsToUInt(v);
#endif
i += uui & i; // ERRORs, no int/uint conversions before 400
i += uui ^ i;
i += i | uui;
// bool
#ifdef TEST_POST_110
b = isnan(uf);
b = isinf(v);
#endif
b = isinf(v.y);
b = any(lessThan(v, uv4));
b = (b && any(lessThanEqual(v, uv4)));
b = (b && any(greaterThan(v, uv4)));

View file

@ -45,39 +45,39 @@ ERROR: 0:108: 'overloadE' : no matching overloaded function found
ERROR: 0:111: 'overloadE' : no matching overloaded function found
ERROR: 0:117: 'overloadF' : no matching overloaded function found
ERROR: 0:121: 'gl_TexCoord array size' : must be less than gl_MaxTextureCoords (32)
ERROR: 0:157: 'switch' : Reserved word.
ERROR: 0:163: 'default' : Reserved word.
ERROR: 0:157: 'switch statements' : not supported for this version or the enabled extensions
ERROR: 0:168: 'bit shift left' : not supported for this version or the enabled extensions
ERROR: 0:168: 'bit shift right' : not supported for this version or the enabled extensions
ERROR: 0:168: 'bitwise and' : not supported for this version or the enabled extensions
ERROR: 0:168: 'bitwise inclusive or' : not supported for this version or the enabled extensions
ERROR: 0:171: 'modf' : no matching overloaded function found
ERROR: 0:171: '=' : cannot convert from 'const float' to 'temp 3-component vector of float'
ERROR: 0:172: 'trunc' : no matching overloaded function found
ERROR: 0:173: 'round' : no matching overloaded function found
ERROR: 0:173: '=' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:174: 'roundEven' : no matching overloaded function found
ERROR: 0:174: '=' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:175: 'isnan' : no matching overloaded function found
ERROR: 0:175: '=' : cannot convert from 'const float' to 'temp 2-component vector of bool'
ERROR: 0:176: 'isinf' : no matching overloaded function found
ERROR: 0:176: '=' : cannot convert from 'const float' to 'temp 4-component vector of bool'
ERROR: 0:178: 'sinh' : no matching overloaded function found
ERROR: 0:179: 'cosh' : no matching overloaded function found
ERROR: 0:179: 'tanh' : no matching overloaded function found
ERROR: 0:180: 'c4D' : undeclared identifier
ERROR: 0:180: 'asinh' : no matching overloaded function found
ERROR: 0:180: 'acosh' : no matching overloaded function found
ERROR: 0:181: 'atanh' : no matching overloaded function found
ERROR: 0:183: 'gl_VertexID' : undeclared identifier
ERROR: 0:183: '=' : cannot convert from 'temp float' to 'temp int'
ERROR: 0:184: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:184: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
ERROR: 0:184: 'assign' : l-value required (can't modify a const)
ERROR: 0:190: 'token pasting (##)' : not supported for this version or the enabled extensions
ERROR: 0:190: '##' : token pasting not implemented (internal error)
ERROR: 0:190: '' : syntax error
ERROR: 0:165: 'switch' : Reserved word.
ERROR: 0:171: 'default' : Reserved word.
ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions
ERROR: 0:176: 'bit shift left' : not supported for this version or the enabled extensions
ERROR: 0:176: 'bit shift right' : not supported for this version or the enabled extensions
ERROR: 0:176: 'bitwise and' : not supported for this version or the enabled extensions
ERROR: 0:176: 'bitwise inclusive or' : not supported for this version or the enabled extensions
ERROR: 0:179: 'modf' : no matching overloaded function found
ERROR: 0:179: '=' : cannot convert from 'const float' to 'temp 3-component vector of float'
ERROR: 0:180: 'trunc' : no matching overloaded function found
ERROR: 0:181: 'round' : no matching overloaded function found
ERROR: 0:181: '=' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:182: 'roundEven' : no matching overloaded function found
ERROR: 0:182: '=' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:183: 'isnan' : no matching overloaded function found
ERROR: 0:183: '=' : cannot convert from 'const float' to 'temp 2-component vector of bool'
ERROR: 0:184: 'isinf' : no matching overloaded function found
ERROR: 0:184: '=' : cannot convert from 'const float' to 'temp 4-component vector of bool'
ERROR: 0:186: 'sinh' : no matching overloaded function found
ERROR: 0:187: 'cosh' : no matching overloaded function found
ERROR: 0:187: 'tanh' : no matching overloaded function found
ERROR: 0:188: 'c4D' : undeclared identifier
ERROR: 0:188: 'asinh' : no matching overloaded function found
ERROR: 0:188: 'acosh' : no matching overloaded function found
ERROR: 0:189: 'atanh' : no matching overloaded function found
ERROR: 0:191: 'gl_VertexID' : undeclared identifier
ERROR: 0:191: '=' : cannot convert from 'temp float' to 'temp int'
ERROR: 0:192: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:192: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
ERROR: 0:192: 'assign' : l-value required (can't modify a const)
ERROR: 0:198: 'token pasting (##)' : not supported for this version or the enabled extensions
ERROR: 0:198: '##' : token pasting not implemented (internal error)
ERROR: 0:198: '' : syntax error
ERROR: 79 compilation errors. No code generated.
@ -314,66 +314,99 @@ ERROR: node is still EOpNull!
0:139 Compare Less Than (global 4-component vector of bool)
0:139 'v4' (temp 4-component vector of float)
0:139 'attv4' (in 4-component vector of float)
0:154 Function Definition: foo213( (global void)
0:154 Function Parameters:
0:156 Sequence
0:156 Sequence
0:156 move second child to first child (temp float)
0:156 'f' (temp float)
0:156 Constant:
0:156 3.000000
0:157 switch
0:157 condition
0:157 'c' (uniform int)
0:157 body
0:157 Sequence
0:158 case: with expression
0:158 Constant:
0:158 1 (const int)
0:142 Function Definition: noise( (global void)
0:142 Function Parameters:
0:144 Sequence
0:144 Sequence
0:144 move second child to first child (temp float)
0:144 'f1' (temp float)
0:144 noise (global float)
0:144 Constant:
0:144 1.000000
0:145 Sequence
0:145 move second child to first child (temp 2-component vector of float)
0:145 'f2' (temp 2-component vector of float)
0:145 noise (global 2-component vector of float)
0:145 Constant:
0:145 1.000000
0:145 1.000000
0:146 Sequence
0:146 move second child to first child (temp 3-component vector of float)
0:146 'f3' (temp 3-component vector of float)
0:146 noise (global 3-component vector of float)
0:146 Constant:
0:146 1.000000
0:146 1.000000
0:146 1.000000
0:147 Sequence
0:147 move second child to first child (temp 4-component vector of float)
0:147 'f4' (temp 4-component vector of float)
0:147 noise (global 4-component vector of float)
0:147 Constant:
0:147 1.000000
0:147 1.000000
0:147 1.000000
0:147 1.000000
0:162 Function Definition: foo213( (global void)
0:162 Function Parameters:
0:164 Sequence
0:164 Sequence
0:164 move second child to first child (temp float)
0:164 'f' (temp float)
0:164 Constant:
0:164 3.000000
0:165 switch
0:165 condition
0:165 'c' (uniform int)
0:165 body
0:165 Sequence
0:166 case: with expression
0:166 Constant:
0:166 1 (const int)
0:? Sequence
0:159 move second child to first child (temp float)
0:159 'f' (temp float)
0:159 sine (global float)
0:159 'f' (temp float)
0:160 Branch: Break
0:161 case: with expression
0:161 Constant:
0:161 2 (const int)
0:167 move second child to first child (temp float)
0:167 'f' (temp float)
0:167 sine (global float)
0:167 'f' (temp float)
0:168 Branch: Break
0:169 case: with expression
0:169 Constant:
0:169 2 (const int)
0:? Sequence
0:162 move second child to first child (temp float)
0:162 'f' (temp float)
0:162 component-wise multiply (temp float)
0:162 'f' (temp float)
0:162 'f' (temp float)
0:163 default:
0:170 move second child to first child (temp float)
0:170 'f' (temp float)
0:170 component-wise multiply (temp float)
0:170 'f' (temp float)
0:170 'f' (temp float)
0:171 default:
0:? Sequence
0:164 move second child to first child (temp float)
0:164 'f' (temp float)
0:164 Constant:
0:164 3.000000
0:168 inclusive-or (temp int)
0:168 left-shift (temp int)
0:168 'i' (temp int)
0:168 Constant:
0:168 3 (const int)
0:168 Constant:
0:168 69 (const int)
0:172 Sequence
0:172 move second child to first child (temp float)
0:172 't' (temp float)
0:172 Constant:
0:172 0.000000
0:178 Constant:
0:178 0.000000
0:180 Constant:
0:180 0.000000
0:181 Constant:
0:181 0.000000
0:184 move second child to first child (temp float)
0:184 Constant:
0:184 0.000000
0:184 Constant:
0:184 0.300000
0:172 move second child to first child (temp float)
0:172 'f' (temp float)
0:172 Constant:
0:172 3.000000
0:176 inclusive-or (temp int)
0:176 left-shift (temp int)
0:176 'i' (temp int)
0:176 Constant:
0:176 3 (const int)
0:176 Constant:
0:176 69 (const int)
0:180 Sequence
0:180 move second child to first child (temp float)
0:180 't' (temp float)
0:180 Constant:
0:180 0.000000
0:186 Constant:
0:186 0.000000
0:188 Constant:
0:188 0.000000
0:189 Constant:
0:189 0.000000
0:192 move second child to first child (temp float)
0:192 Constant:
0:192 0.000000
0:192 Constant:
0:192 0.300000
0:? Linker Objects
0:? 'i' (in 4-component vector of float)
0:? 'o' (smooth out 4-component vector of float)
@ -633,66 +666,99 @@ ERROR: node is still EOpNull!
0:139 Compare Less Than (global 4-component vector of bool)
0:139 'v4' (temp 4-component vector of float)
0:139 'attv4' (in 4-component vector of float)
0:154 Function Definition: foo213( (global void)
0:154 Function Parameters:
0:156 Sequence
0:156 Sequence
0:156 move second child to first child (temp float)
0:156 'f' (temp float)
0:156 Constant:
0:156 3.000000
0:157 switch
0:157 condition
0:157 'c' (uniform int)
0:157 body
0:157 Sequence
0:158 case: with expression
0:158 Constant:
0:158 1 (const int)
0:142 Function Definition: noise( (global void)
0:142 Function Parameters:
0:144 Sequence
0:144 Sequence
0:144 move second child to first child (temp float)
0:144 'f1' (temp float)
0:144 noise (global float)
0:144 Constant:
0:144 1.000000
0:145 Sequence
0:145 move second child to first child (temp 2-component vector of float)
0:145 'f2' (temp 2-component vector of float)
0:145 noise (global 2-component vector of float)
0:145 Constant:
0:145 1.000000
0:145 1.000000
0:146 Sequence
0:146 move second child to first child (temp 3-component vector of float)
0:146 'f3' (temp 3-component vector of float)
0:146 noise (global 3-component vector of float)
0:146 Constant:
0:146 1.000000
0:146 1.000000
0:146 1.000000
0:147 Sequence
0:147 move second child to first child (temp 4-component vector of float)
0:147 'f4' (temp 4-component vector of float)
0:147 noise (global 4-component vector of float)
0:147 Constant:
0:147 1.000000
0:147 1.000000
0:147 1.000000
0:147 1.000000
0:162 Function Definition: foo213( (global void)
0:162 Function Parameters:
0:164 Sequence
0:164 Sequence
0:164 move second child to first child (temp float)
0:164 'f' (temp float)
0:164 Constant:
0:164 3.000000
0:165 switch
0:165 condition
0:165 'c' (uniform int)
0:165 body
0:165 Sequence
0:166 case: with expression
0:166 Constant:
0:166 1 (const int)
0:? Sequence
0:159 move second child to first child (temp float)
0:159 'f' (temp float)
0:159 sine (global float)
0:159 'f' (temp float)
0:160 Branch: Break
0:161 case: with expression
0:161 Constant:
0:161 2 (const int)
0:167 move second child to first child (temp float)
0:167 'f' (temp float)
0:167 sine (global float)
0:167 'f' (temp float)
0:168 Branch: Break
0:169 case: with expression
0:169 Constant:
0:169 2 (const int)
0:? Sequence
0:162 move second child to first child (temp float)
0:162 'f' (temp float)
0:162 component-wise multiply (temp float)
0:162 'f' (temp float)
0:162 'f' (temp float)
0:163 default:
0:170 move second child to first child (temp float)
0:170 'f' (temp float)
0:170 component-wise multiply (temp float)
0:170 'f' (temp float)
0:170 'f' (temp float)
0:171 default:
0:? Sequence
0:164 move second child to first child (temp float)
0:164 'f' (temp float)
0:164 Constant:
0:164 3.000000
0:168 inclusive-or (temp int)
0:168 left-shift (temp int)
0:168 'i' (temp int)
0:168 Constant:
0:168 3 (const int)
0:168 Constant:
0:168 69 (const int)
0:172 Sequence
0:172 move second child to first child (temp float)
0:172 't' (temp float)
0:172 Constant:
0:172 0.000000
0:178 Constant:
0:178 0.000000
0:180 Constant:
0:180 0.000000
0:181 Constant:
0:181 0.000000
0:184 move second child to first child (temp float)
0:184 Constant:
0:184 0.000000
0:184 Constant:
0:184 0.300000
0:172 move second child to first child (temp float)
0:172 'f' (temp float)
0:172 Constant:
0:172 3.000000
0:176 inclusive-or (temp int)
0:176 left-shift (temp int)
0:176 'i' (temp int)
0:176 Constant:
0:176 3 (const int)
0:176 Constant:
0:176 69 (const int)
0:180 Sequence
0:180 move second child to first child (temp float)
0:180 't' (temp float)
0:180 Constant:
0:180 0.000000
0:186 Constant:
0:186 0.000000
0:188 Constant:
0:188 0.000000
0:189 Constant:
0:189 0.000000
0:192 move second child to first child (temp float)
0:192 Constant:
0:192 0.000000
0:192 Constant:
0:192 0.300000
0:? Linker Objects
0:? 'i' (in 4-component vector of float)
0:? 'o' (smooth out 4-component vector of float)

View file

@ -8,7 +8,7 @@ ERROR: 0:39: 'location qualifier on input' : not supported in this stage: comput
ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader
ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader
ERROR: 0:44: 'shared' : cannot apply layout qualifiers to a shared variable
ERROR: 0:44: 'location' : can only appy to uniform, buffer, in, or out storage qualifiers
ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
ERROR: 0:45: 'shared' : cannot initialize this type of qualifier
ERROR: 0:47: 'local_size' : can only apply to 'in'
ERROR: 0:47: 'local_size' : can only apply to 'in'

View file

@ -218,26 +218,18 @@ ERROR: node is still EOpNull!
0:? Sequence
0:63 move second child to first child (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 Comma (global 3-component vector of float)
0:63 move second child to first child (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:63 modf (global 3-component vector of float)
0:63 vector swizzle (temp 3-component vector of float)
0:63 'outp' (out 4-component vector of float)
0:63 Sequence
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 2 (const int)
0:63 'tempArg' (temp 3-component vector of float)
0:63 move second child to first child (temp 3-component vector of double)
0:63 'di' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 'tempArg' (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:63 modf (global 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 vector swizzle (temp 3-component vector of float)
0:63 'outp' (out 4-component vector of float)
0:63 Sequence
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 2 (const int)
0:63 'di' (temp 3-component vector of double)
0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters:
0:73 Sequence
@ -707,26 +699,18 @@ ERROR: node is still EOpNull!
0:? Sequence
0:63 move second child to first child (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 Comma (global 3-component vector of float)
0:63 move second child to first child (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:63 modf (global 3-component vector of float)
0:63 vector swizzle (temp 3-component vector of float)
0:63 'outp' (out 4-component vector of float)
0:63 Sequence
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 2 (const int)
0:63 'tempArg' (temp 3-component vector of float)
0:63 move second child to first child (temp 3-component vector of double)
0:63 'di' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 'tempArg' (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:63 modf (global 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 vector swizzle (temp 3-component vector of float)
0:63 'outp' (out 4-component vector of float)
0:63 Sequence
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 2 (const int)
0:63 'di' (temp 3-component vector of double)
0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters:
0:73 Sequence

File diff suppressed because it is too large Load diff

View file

@ -9,7 +9,6 @@ ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sa
ERROR: 0:13: 'uniform' : too many storage qualifiers
ERROR: 0:18: '=' : global const initializers must be constant 'const int'
ERROR: 0:20: 'const' : no qualifiers allowed for function return
ERROR: 0:27: '' : constant expression required
ERROR: 0:27: '' : array size must be a constant integer expression
ERROR: 0:38: 'j' : undeclared identifier
ERROR: 0:38: '=' : cannot convert from 'temp float' to 'temp int'
@ -33,7 +32,6 @@ ERROR: 0:85: 'patch' : not supported in this stage: vertex
ERROR: 0:85: '' : vertex input cannot be further qualified
ERROR: 0:86: 'patch' : not supported in this stage: vertex
ERROR: 0:100: '=' : global const initializers must be constant 'const int'
ERROR: 0:101: '' : constant expression required
ERROR: 0:101: '' : array size must be a constant integer expression
ERROR: 0:107: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:114: 'imageAtomicMin' : only supported on image with format r32i or r32ui
@ -53,7 +51,7 @@ ERROR: 0:157: 'textureQueryLevels' : no matching overloaded function found
ERROR: 0:157: 'assign' : cannot convert from 'const float' to 'temp int'
ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found
ERROR: 0:158: 'assign' : cannot convert from 'const float' to 'temp int'
ERROR: 52 compilation errors. No code generated.
ERROR: 50 compilation errors. No code generated.
Shader version: 420

View file

@ -7,7 +7,7 @@ ERROR: 0:43: 'location qualifier on input' : not supported in this stage: comput
ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader
ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader
ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable
ERROR: 0:48: 'location' : can only appy to uniform, buffer, in, or out storage qualifiers
ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
ERROR: 0:49: 'shared' : cannot initialize this type of qualifier
ERROR: 0:51: 'local_size' : can only apply to 'in'
ERROR: 0:51: 'local_size' : can only apply to 'in'

View file

@ -1,6 +1,6 @@
430.vert
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'location' : can only appy to uniform, buffer, in, or out storage qualifiers
ERROR: 0:3: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
ERROR: 0:7: 'input block' : not supported in this stage: vertex
ERROR: 0:7: 'location qualifier on in/out block' : not supported for this version or the enabled extensions
ERROR: 0:8: 'location qualifier on in/out block' : not supported for this version or the enabled extensions

View file

@ -1,6 +1,34 @@
Operations.frag
ERROR: 0:76: 'intBitsToFloat' : no matching overloaded function found
ERROR: 0:77: 'uintBitsToFloat' : no matching overloaded function found
ERROR: 0:78: 'fma' : no matching overloaded function found
ERROR: 0:79: 'frexp' : no matching overloaded function found
ERROR: 0:80: 'ldexp' : no matching overloaded function found
ERROR: 0:81: 'unpackUnorm2x16' : no matching overloaded function found
ERROR: 0:82: 'unpackUnorm4x8' : no matching overloaded function found
ERROR: 0:83: 'unpackSnorm4x8' : no matching overloaded function found
ERROR: 0:107: 'floatsBitsToInt' : no matching overloaded function found
ERROR: 0:108: 'packUnorm2x16' : no matching overloaded function found
ERROR: 0:109: 'packUnorm4x8' : no matching overloaded function found
ERROR: 0:110: 'packSnorm4x8' : no matching overloaded function found
ERROR: 0:113: 'assign' : cannot convert from 'global float' to 'temp uint'
ERROR: 0:114: 'assign' : cannot convert from 'global float' to 'temp uint'
ERROR: 0:118: 'floatsBitToInt' : no matching overloaded function found
ERROR: 0:118: 'assign' : cannot convert from 'const float' to 'temp uint'
ERROR: 0:119: 'packUnorm2x16' : no matching overloaded function found
ERROR: 0:119: 'assign' : cannot convert from 'const float' to 'temp uint'
ERROR: 0:120: 'packUnorm4x8' : no matching overloaded function found
ERROR: 0:120: 'assign' : cannot convert from 'const float' to 'temp uint'
ERROR: 0:121: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type 'uniform uint' and a right operand of type 'temp int' (or there is no acceptable conversion)
ERROR: 0:121: 'assign' : cannot convert from 'uniform uint' to 'temp int'
ERROR: 0:122: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type 'uniform uint' and a right operand of type 'temp int' (or there is no acceptable conversion)
ERROR: 0:122: 'assign' : cannot convert from 'uniform uint' to 'temp int'
ERROR: 0:123: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type 'temp int' and a right operand of type 'uniform uint' (or there is no acceptable conversion)
ERROR: 25 compilation errors. No code generated.
Shader version: 130
0:? Sequence
ERROR: node is still EOpNull!
0:15 Function Definition: main( (global void)
0:15 Function Parameters:
0:? Sequence
@ -107,6 +135,18 @@ Shader version: 130
0:52 'v' (temp 4-component vector of float)
0:52 Floor (global 4-component vector of float)
0:52 'v' (temp 4-component vector of float)
0:55 add second child into first child (temp 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:55 trunc (global 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:56 add second child into first child (temp 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:56 round (global 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:57 add second child into first child (temp 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:57 roundEven (global 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:60 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float)
0:60 Ceiling (global 4-component vector of float)
@ -128,6 +168,11 @@ Shader version: 130
0:63 'v' (temp 4-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:66 add second child into first child (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 modf (global 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:69 add second child into first child (temp 4-component vector of float)
0:69 'v' (temp 4-component vector of float)
0:69 min (global 4-component vector of float)
@ -150,6 +195,44 @@ Shader version: 130
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:75 add second child into first child (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 mix (global 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'bv4' (temp 4-component vector of bool)
0:76 add second child into first child (temp 4-component vector of float)
0:76 'v' (temp 4-component vector of float)
0:76 Constant:
0:76 0.000000
0:77 add second child into first child (temp 4-component vector of float)
0:77 'v' (temp 4-component vector of float)
0:77 Constant:
0:77 0.000000
0:78 add second child into first child (temp 4-component vector of float)
0:78 'v' (temp 4-component vector of float)
0:78 Constant:
0:78 0.000000
0:79 add second child into first child (temp 4-component vector of float)
0:79 'v' (temp 4-component vector of float)
0:79 Constant:
0:79 0.000000
0:80 add second child into first child (temp 4-component vector of float)
0:80 'v' (temp 4-component vector of float)
0:80 Constant:
0:80 0.000000
0:81 add second child into first child (temp 4-component vector of float)
0:81 'v' (temp 4-component vector of float)
0:81 Constant:
0:81 0.000000
0:82 add second child into first child (temp 4-component vector of float)
0:82 'v' (temp 4-component vector of float)
0:82 Constant:
0:82 0.000000
0:83 add second child into first child (temp 4-component vector of float)
0:83 'v' (temp 4-component vector of float)
0:83 Constant:
0:83 0.000000
0:86 add second child into first child (temp 4-component vector of float)
0:86 'v' (temp 4-component vector of float)
0:86 step (global 4-component vector of float)
@ -205,6 +288,75 @@ Shader version: 130
0:96 'v' (temp 4-component vector of float)
0:96 fwidth (global 4-component vector of float)
0:96 'v' (temp 4-component vector of float)
0:101 add second child into first child (temp int)
0:101 'i' (temp int)
0:101 Absolute value (global int)
0:101 'ui' (uniform int)
0:102 add second child into first child (temp int)
0:102 'i' (temp int)
0:102 Sign (global int)
0:102 'i' (temp int)
0:103 add second child into first child (temp int)
0:103 'i' (temp int)
0:103 min (global int)
0:103 'i' (temp int)
0:103 'ui' (uniform int)
0:104 add second child into first child (temp int)
0:104 'i' (temp int)
0:104 max (global int)
0:104 'i' (temp int)
0:104 'ui' (uniform int)
0:105 add second child into first child (temp int)
0:105 'i' (temp int)
0:105 clamp (global int)
0:105 'i' (temp int)
0:105 'ui' (uniform int)
0:105 'ui' (uniform int)
0:107 Constant:
0:107 0.000000
0:108 Constant:
0:108 0.000000
0:109 Constant:
0:109 0.000000
0:110 Constant:
0:110 0.000000
0:113 'u' (temp uint)
0:114 'u' (temp uint)
0:115 add second child into first child (temp uint)
0:115 'u' (temp uint)
0:115 min (global uint)
0:115 'u' (temp uint)
0:115 'uui' (uniform uint)
0:116 add second child into first child (temp uint)
0:116 'u' (temp uint)
0:116 max (global uint)
0:116 'u' (temp uint)
0:116 'uui' (uniform uint)
0:117 add second child into first child (temp uint)
0:117 'u' (temp uint)
0:117 clamp (global uint)
0:117 'u' (temp uint)
0:117 'uui' (uniform uint)
0:117 'uui' (uniform uint)
0:118 'u' (temp uint)
0:119 'u' (temp uint)
0:120 'u' (temp uint)
0:121 'i' (temp int)
0:122 'i' (temp int)
0:123 add second child into first child (temp int)
0:123 'i' (temp int)
0:123 'i' (temp int)
0:127 move second child to first child (temp bool)
0:127 'b' (temp bool)
0:127 isnan (global bool)
0:127 'uf' (uniform float)
0:128 move second child to first child (temp bool)
0:128 'b' (temp bool)
0:128 isinf (global bool)
0:128 direct index (temp float)
0:128 'v' (temp 4-component vector of float)
0:128 Constant:
0:128 1 (const int)
0:130 move second child to first child (temp bool)
0:130 'b' (temp bool)
0:130 any (global bool)
@ -431,13 +583,15 @@ Shader version: 130
0:? 'ub42' (uniform 4-component vector of bool)
0:? 'uf' (uniform float)
0:? 'ui' (uniform int)
0:? 'uuv4' (uniform 4-component vector of uint)
0:? 'uui' (uniform uint)
Linked fragment stage:
Shader version: 130
0:? Sequence
ERROR: node is still EOpNull!
0:15 Function Definition: main( (global void)
0:15 Function Parameters:
0:? Sequence
@ -544,6 +698,18 @@ Shader version: 130
0:52 'v' (temp 4-component vector of float)
0:52 Floor (global 4-component vector of float)
0:52 'v' (temp 4-component vector of float)
0:55 add second child into first child (temp 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:55 trunc (global 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:56 add second child into first child (temp 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:56 round (global 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:57 add second child into first child (temp 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:57 roundEven (global 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:60 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float)
0:60 Ceiling (global 4-component vector of float)
@ -565,6 +731,11 @@ Shader version: 130
0:63 'v' (temp 4-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:66 add second child into first child (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 modf (global 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:69 add second child into first child (temp 4-component vector of float)
0:69 'v' (temp 4-component vector of float)
0:69 min (global 4-component vector of float)
@ -587,6 +758,44 @@ Shader version: 130
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:75 add second child into first child (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 mix (global 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'bv4' (temp 4-component vector of bool)
0:76 add second child into first child (temp 4-component vector of float)
0:76 'v' (temp 4-component vector of float)
0:76 Constant:
0:76 0.000000
0:77 add second child into first child (temp 4-component vector of float)
0:77 'v' (temp 4-component vector of float)
0:77 Constant:
0:77 0.000000
0:78 add second child into first child (temp 4-component vector of float)
0:78 'v' (temp 4-component vector of float)
0:78 Constant:
0:78 0.000000
0:79 add second child into first child (temp 4-component vector of float)
0:79 'v' (temp 4-component vector of float)
0:79 Constant:
0:79 0.000000
0:80 add second child into first child (temp 4-component vector of float)
0:80 'v' (temp 4-component vector of float)
0:80 Constant:
0:80 0.000000
0:81 add second child into first child (temp 4-component vector of float)
0:81 'v' (temp 4-component vector of float)
0:81 Constant:
0:81 0.000000
0:82 add second child into first child (temp 4-component vector of float)
0:82 'v' (temp 4-component vector of float)
0:82 Constant:
0:82 0.000000
0:83 add second child into first child (temp 4-component vector of float)
0:83 'v' (temp 4-component vector of float)
0:83 Constant:
0:83 0.000000
0:86 add second child into first child (temp 4-component vector of float)
0:86 'v' (temp 4-component vector of float)
0:86 step (global 4-component vector of float)
@ -642,6 +851,75 @@ Shader version: 130
0:96 'v' (temp 4-component vector of float)
0:96 fwidth (global 4-component vector of float)
0:96 'v' (temp 4-component vector of float)
0:101 add second child into first child (temp int)
0:101 'i' (temp int)
0:101 Absolute value (global int)
0:101 'ui' (uniform int)
0:102 add second child into first child (temp int)
0:102 'i' (temp int)
0:102 Sign (global int)
0:102 'i' (temp int)
0:103 add second child into first child (temp int)
0:103 'i' (temp int)
0:103 min (global int)
0:103 'i' (temp int)
0:103 'ui' (uniform int)
0:104 add second child into first child (temp int)
0:104 'i' (temp int)
0:104 max (global int)
0:104 'i' (temp int)
0:104 'ui' (uniform int)
0:105 add second child into first child (temp int)
0:105 'i' (temp int)
0:105 clamp (global int)
0:105 'i' (temp int)
0:105 'ui' (uniform int)
0:105 'ui' (uniform int)
0:107 Constant:
0:107 0.000000
0:108 Constant:
0:108 0.000000
0:109 Constant:
0:109 0.000000
0:110 Constant:
0:110 0.000000
0:113 'u' (temp uint)
0:114 'u' (temp uint)
0:115 add second child into first child (temp uint)
0:115 'u' (temp uint)
0:115 min (global uint)
0:115 'u' (temp uint)
0:115 'uui' (uniform uint)
0:116 add second child into first child (temp uint)
0:116 'u' (temp uint)
0:116 max (global uint)
0:116 'u' (temp uint)
0:116 'uui' (uniform uint)
0:117 add second child into first child (temp uint)
0:117 'u' (temp uint)
0:117 clamp (global uint)
0:117 'u' (temp uint)
0:117 'uui' (uniform uint)
0:117 'uui' (uniform uint)
0:118 'u' (temp uint)
0:119 'u' (temp uint)
0:120 'u' (temp uint)
0:121 'i' (temp int)
0:122 'i' (temp int)
0:123 add second child into first child (temp int)
0:123 'i' (temp int)
0:123 'i' (temp int)
0:127 move second child to first child (temp bool)
0:127 'b' (temp bool)
0:127 isnan (global bool)
0:127 'uf' (uniform float)
0:128 move second child to first child (temp bool)
0:128 'b' (temp bool)
0:128 isinf (global bool)
0:128 direct index (temp float)
0:128 'v' (temp 4-component vector of float)
0:128 Constant:
0:128 1 (const int)
0:130 move second child to first child (temp bool)
0:130 'b' (temp bool)
0:130 any (global bool)
@ -868,4 +1146,6 @@ Shader version: 130
0:? 'ub42' (uniform 4-component vector of bool)
0:? 'uf' (uniform float)
0:? 'ui' (uniform int)
0:? 'uuv4' (uniform 4-component vector of uint)
0:? 'uui' (uniform uint)

View file

@ -1,14 +1,11 @@
constErrors.frag
ERROR: 0:14: 'non-constant initializer' : not supported for this version or the enabled extensions
ERROR: 0:17: '' : constant expression required
ERROR: 0:17: '' : array size must be a constant integer expression
ERROR: 0:18: '' : constant expression required
ERROR: 0:18: '' : array size must be a constant integer expression
ERROR: 0:19: '' : constant expression required
ERROR: 0:19: '' : array size must be a constant integer expression
ERROR: 0:27: '=' : global const initializers must be constant 'const structure{global 3-component vector of float v3, global 2-component vector of int iv2}'
ERROR: 0:33: '=' : global const initializers must be constant 'const structure{global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}'
ERROR: 9 compilation errors. No code generated.
ERROR: 6 compilation errors. No code generated.
Shader version: 330

View file

@ -270,6 +270,14 @@ ERROR: node is still EOpNull!
0:128 76.000000
0:128 59.000000
0:128 88.000000
0:138 Function Definition: foo4( (global void)
0:138 Function Parameters:
0:140 Sequence
0:140 Sequence
0:140 move second child to first child (temp int)
0:140 'a' (temp int)
0:140 Constant:
0:140 9 (const int)
0:? Linker Objects
0:? 'a' (const int)
0:? 1 (const int)
@ -356,6 +364,16 @@ ERROR: node is still EOpNull!
0:? 13.000000
0:? 14.000000
0:? 15.000000
0:? 'a0' (const 3-element array of structure{global int i, global float f, global bool b})
0:? 3 (const int)
0:? 2.000000
0:? true (const bool)
0:? 1 (const int)
0:? 5.000000
0:? true (const bool)
0:? 1 (const int)
0:? 9.000000
0:? false (const bool)
Linked fragment stage:
@ -622,6 +640,14 @@ ERROR: node is still EOpNull!
0:128 76.000000
0:128 59.000000
0:128 88.000000
0:138 Function Definition: foo4( (global void)
0:138 Function Parameters:
0:140 Sequence
0:140 Sequence
0:140 move second child to first child (temp int)
0:140 'a' (temp int)
0:140 Constant:
0:140 9 (const int)
0:? Linker Objects
0:? 'a' (const int)
0:? 1 (const int)
@ -708,4 +734,14 @@ ERROR: node is still EOpNull!
0:? 13.000000
0:? 14.000000
0:? 15.000000
0:? 'a0' (const 3-element array of structure{global int i, global float f, global bool b})
0:? 3 (const int)
0:? 2.000000
0:? true (const bool)
0:? 1 (const int)
0:? 5.000000
0:? true (const bool)
0:? 1 (const int)
0:? 9.000000
0:? false (const bool)

View file

@ -0,0 +1,30 @@
nonVulkan.frag
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'constant_id' : only allowed when generating SPIR-V
ERROR: 0:4: 'input_attachment_index' : only allowed when using GLSL for Vulkan
ERROR: 0:4: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:5: 'push_constant' : only allowed when using GLSL for Vulkan
ERROR: 4 compilation errors. No code generated.
Shader version: 450
ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'arraySize' (specialization-constant const int)
0:? 12 (const int)
0:? 'foo' (temp int)
0:? 'ubi' (layout(column_major std430 push_constant ) uniform block{layout(column_major std430 offset=0 ) uniform int a})
Linked fragment stage:
ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
Shader version: 450
ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'arraySize' (specialization-constant const int)
0:? 12 (const int)
0:? 'foo' (temp int)
0:? 'ubi' (layout(column_major std430 push_constant ) uniform block{layout(column_major std430 offset=0 ) uniform int a})

View file

@ -85,7 +85,7 @@ Uniform block reflection:
nameless: offset -1, type ffffffff, size 496, index -1
named: offset -1, type ffffffff, size 304, index -1
c_nameless: offset -1, type ffffffff, size 112, index -1
nested: offset -1, type ffffffff, size 28, index -1
nested: offset -1, type ffffffff, size 32, index -1
abl[0]: offset -1, type ffffffff, size 4, index -1
abl[1]: offset -1, type ffffffff, size 4, index -1
abl[2]: offset -1, type ffffffff, size 4, index -1

View file

@ -1,6 +1,6 @@
specExamples.vert
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:29: 'location' : can only appy to uniform, buffer, in, or out storage qualifiers
ERROR: 0:29: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
ERROR: 0:31: 'triangles' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:31: 'invocations' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:33: 'lines' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)

View file

@ -1,18 +1,20 @@
spv.100ops.frag
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 47
// Id's are bound by 49
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 36
ExecutionMode 4 OriginLowerLeft
Source ESSL 100
EntryPoint Fragment 4 "main" 21 26 37
ExecutionMode 4 OriginUpperLeft
Source ESSL 310
Name 4 "main"
Name 8 "foo("
Name 11 "face1"
@ -20,13 +22,29 @@ Linked fragment stage:
Name 17 "z"
Name 21 "low"
Name 26 "high"
Name 36 "gl_FragColor"
Name 37 "Color"
Decorate 8(foo() RelaxedPrecision
Decorate 11(face1) RelaxedPrecision
Decorate 13(face2) RelaxedPrecision
Decorate 17(z) RelaxedPrecision
Decorate 21(low) RelaxedPrecision
Decorate 22 RelaxedPrecision
Decorate 23 RelaxedPrecision
Decorate 25 RelaxedPrecision
Decorate 26(high) RelaxedPrecision
Decorate 36(gl_FragColor) RelaxedPrecision
Decorate 27 RelaxedPrecision
Decorate 32 RelaxedPrecision
Decorate 34 RelaxedPrecision
Decorate 37(Color) RelaxedPrecision
Decorate 38 RelaxedPrecision
Decorate 39 RelaxedPrecision
Decorate 40 RelaxedPrecision
Decorate 41 RelaxedPrecision
Decorate 42 RelaxedPrecision
Decorate 43 RelaxedPrecision
Decorate 44 RelaxedPrecision
Decorate 45 RelaxedPrecision
Decorate 46 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -39,47 +57,48 @@ Linked fragment stage:
15: TypeInt 32 1
16: TypePointer Function 15(int)
18: 15(int) Constant 3
19: 15(int) Constant 2
20: TypePointer UniformConstant 15(int)
21(low): 20(ptr) Variable UniformConstant
24: 15(int) Constant 1
26(high): 20(ptr) Variable UniformConstant
19: 6(float) Constant 1073741824
20: TypePointer Input 6(float)
21(low): 20(ptr) Variable Input
24: 6(float) Constant 1065353216
26(high): 20(ptr) Variable Input
28: TypeBool
34: TypeVector 6(float) 4
35: TypePointer Output 34(fvec4)
36(gl_FragColor): 35(ptr) Variable Output
33: 15(int) Constant 1
35: TypeVector 6(float) 4
36: TypePointer Output 35(fvec4)
37(Color): 36(ptr) Variable Output
4(main): 2 Function None 3
5: Label
17(z): 16(ptr) Variable Function
Store 11(face1) 12
Store 13(face2) 14
Store 17(z) 18
22: 15(int) Load 21(low)
23: 15(int) IMul 19 22
25: 15(int) IAdd 23 24
27: 15(int) Load 26(high)
29: 28(bool) SLessThan 25 27
22: 6(float) Load 21(low)
23: 6(float) FMul 19 22
25: 6(float) FAdd 23 24
27: 6(float) Load 26(high)
29: 28(bool) FOrdLessThan 25 27
SelectionMerge 31 None
BranchConditional 29 30 31
30: Label
32: 15(int) Load 17(z)
33: 15(int) IAdd 32 24
Store 17(z) 33
34: 15(int) IAdd 32 33
Store 17(z) 34
Branch 31
31: Label
37: 6(float) Load 11(face1)
38: 15(int) Load 17(z)
39: 6(float) ConvertSToF 38
40: 34(fvec4) CompositeConstruct 39 39 39 39
41: 34(fvec4) VectorTimesScalar 40 37
42: 6(float) FunctionCall 8(foo()
43: 34(fvec4) CompositeConstruct 42 42 42 42
44: 34(fvec4) FAdd 41 43
Store 36(gl_FragColor) 44
38: 6(float) Load 11(face1)
39: 15(int) Load 17(z)
40: 6(float) ConvertSToF 39
41: 35(fvec4) CompositeConstruct 40 40 40 40
42: 35(fvec4) VectorTimesScalar 41 38
43: 6(float) FunctionCall 8(foo()
44: 35(fvec4) CompositeConstruct 43 43 43 43
45: 35(fvec4) FAdd 42 44
Store 37(Color) 45
Return
FunctionEnd
8(foo(): 6(float) Function None 7
9: Label
45: 6(float) Load 13(face2)
ReturnValue 45
46: 6(float) Load 13(face2)
ReturnValue 46
FunctionEnd

View file

@ -1,5 +1,5 @@
spv.130.frag
WARNING: 0:34: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
WARNING: 0:31: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
Linked fragment stage:
@ -7,14 +7,19 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 214
// Id's are bound by 205
Capability Shader
Capability ClipDistance
Capability SampledRect
Capability Sampled1D
Capability SampledCubeArray
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 68 79 99 173 184 185 186 187
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
EntryPoint Fragment 4 "main" 17 68 79 99 173 184 185 186
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
SourceExtension "GL_ARB_gpu_shader5"
SourceExtension "GL_ARB_shader_texture_lod"
SourceExtension "GL_ARB_shading_language_420pack"
@ -50,21 +55,31 @@ Linked fragment stage:
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"
Name 193 "bounds"
Name 194 "s2D"
Name 195 "s2DR"
Name 199 "s2DRS"
Name 203 "s1D"
Name 204 "s2DS"
Decorate 21(samp2D) DescriptorSet 0
Decorate 37(samp2DA) DescriptorSet 0
Decorate 47(samp2DR) DescriptorSet 0
Decorate 55(samp2DS) DescriptorSet 0
Decorate 72(Sca) DescriptorSet 0
Decorate 87(Isca) DescriptorSet 0
Decorate 103(Usca) DescriptorSet 0
Decorate 118(Scas) DescriptorSet 0
Decorate 167(sampC) DescriptorSet 0
Decorate 173(gl_ClipDistance) BuiltIn ClipDistance
Decorate 184(fflat) Flat
Decorate 186(fnop) NoPerspective
Decorate 194(bounds) Binding 0
Decorate 193(bounds) DescriptorSet 0
Decorate 193(bounds) Binding 0
Decorate 194(s2D) DescriptorSet 0
Decorate 195(s2DR) DescriptorSet 0
Decorate 199(s2DRS) DescriptorSet 0
Decorate 203(s1D) DescriptorSet 0
Decorate 204(s2DS) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
14: TypeFloat 32
@ -155,33 +170,24 @@ Linked fragment stage:
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
187: 96(int) Constant 3
188: TypeArray 26(int) 187
189: 26(int) Constant 10
190: 26(int) Constant 23
191: 26(int) Constant 32
192: 188 ConstantComposite 189 190 191
193(bounds): 20(ptr) Variable UniformConstant
194(s2D): 20(ptr) Variable UniformConstant
195(s2DR): 46(ptr) Variable UniformConstant
196: TypeImage 14(float) Rect depth sampled format:Unknown
197: TypeSampledImage 196
198: TypePointer UniformConstant 197
199(s2DRS): 198(ptr) Variable UniformConstant
200: TypeImage 14(float) 1D sampled format:Unknown
201: TypeSampledImage 200
202: TypePointer UniformConstant 201
203(s1D): 202(ptr) Variable UniformConstant
204(s2DS): 54(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
168: 165 Load 167(sampC)

View file

@ -5,13 +5,17 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 100
// Id's are bound by 101
Capability Shader
Capability ClipDistance
Capability SampledRect
Capability SampledBuffer
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 16 28 33 43
ExecutionMode 4 OriginLowerLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 8 "foo("
@ -23,40 +27,45 @@ Linked fragment stage:
Name 43 "k"
Name 55 "sampR"
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"
Name 87 "samp2Da"
Name 92 "bn"
MemberName 92(bn) 0 "matra"
MemberName 92(bn) 1 "matca"
MemberName 92(bn) 2 "matr"
MemberName 92(bn) 3 "matc"
MemberName 92(bn) 4 "matrdef"
Name 94 ""
Name 97 "bi"
MemberName 97(bi) 0 "v"
Name 100 "bname"
Decorate 16(gl_FrontFacing) BuiltIn FrontFacing
Decorate 33(gl_ClipDistance) BuiltIn ClipDistance
Decorate 89 ArrayStride 64
Decorate 55(sampR) DescriptorSet 0
Decorate 63(sampB) DescriptorSet 0
Decorate 87(samp2Da) DescriptorSet 0
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
Decorate 91 ArrayStride 64
MemberDecorate 92(bn) 0 RowMajor
MemberDecorate 92(bn) 0 Offset 0
MemberDecorate 92(bn) 0 MatrixStride 16
MemberDecorate 92(bn) 1 ColMajor
MemberDecorate 92(bn) 1 Offset 256
MemberDecorate 92(bn) 1 MatrixStride 16
MemberDecorate 92(bn) 2 RowMajor
MemberDecorate 92(bn) 2 Offset 512
MemberDecorate 92(bn) 2 MatrixStride 16
MemberDecorate 92(bn) 3 ColMajor
MemberDecorate 92(bn) 3 Offset 576
MemberDecorate 92(bn) 3 MatrixStride 16
MemberDecorate 92(bn) 4 RowMajor
MemberDecorate 92(bn) 4 Offset 640
MemberDecorate 92(bn) 4 MatrixStride 16
Decorate 92(bn) Block
Decorate 94 DescriptorSet 0
Decorate 96 ArrayStride 16
MemberDecorate 97(bi) 0 Offset 0
Decorate 97(bi) Block
Decorate 100(bname) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -100,24 +109,24 @@ Linked fragment stage:
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
83: TypeImage 6(float) 2D sampled format:Unknown
84: TypeSampledImage 83
85: TypeArray 84 74
86: TypePointer UniformConstant 85
87(samp2Da): 86(ptr) Variable UniformConstant
88: TypeMatrix 26(fvec4) 4
89: 29(int) Constant 4
90: TypeArray 88 89
91: TypeArray 88 89
92(bn): TypeStruct 90 91 88 88 88
93: TypePointer Uniform 92(bn)
94: 93(ptr) Variable Uniform
95: TypeVector 6(float) 3
96: TypeArray 95(fvec3) 50
97(bi): TypeStruct 96
98: TypeArray 97(bi) 89
99: TypePointer Uniform 98
100(bname): 99(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
13: 12(ptr) Variable Function

View file

@ -8,6 +8,9 @@ Linked geometry stage:
// Id's are bound by 71
Capability Geometry
Capability GeometryPointSize
Capability ClipDistance
Capability GeometryStreams
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 10 18 29 33 47 49 51 70

View file

@ -5,12 +5,13 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 50
// Id's are bound by 63
Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 13 17 39 48 49
EntryPoint Vertex 4 "main" 13 17 23 38 62
Source GLSL 150
Name 4 "main"
Name 11 "gl_PerVertex"
@ -20,25 +21,23 @@ Linked vertex stage:
Name 13 ""
Name 17 "iv4"
Name 23 "ps"
Name 35 "s1"
MemberName 35(s1) 0 "a"
MemberName 35(s1) 1 "a2"
MemberName 35(s1) 2 "b"
Name 37 "s2"
MemberName 37(s2) 0 "c"
MemberName 37(s2) 1 "d"
Name 39 "s2out"
Name 41 "i"
Name 46 "ui"
Name 48 "gl_VertexID"
Name 49 "gl_InstanceID"
Name 34 "s1"
MemberName 34(s1) 0 "a"
MemberName 34(s1) 1 "a2"
MemberName 34(s1) 2 "b"
Name 36 "s2"
MemberName 36(s2) 0 "c"
MemberName 36(s2) 1 "d"
Name 38 "s2out"
Name 40 "i"
Name 47 "s2D"
Name 62 "ui"
MemberDecorate 11(gl_PerVertex) 0 Invariant
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 11(gl_PerVertex) Block
Decorate 48(gl_VertexID) BuiltIn VertexId
Decorate 49(gl_InstanceID) BuiltIn InstanceId
Decorate 47(s2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -55,41 +54,54 @@ Linked vertex stage:
17(iv4): 16(ptr) Variable Input
19: TypePointer Output 7(fvec4)
21: 14(int) Constant 1
22: TypePointer UniformConstant 6(float)
23(ps): 22(ptr) Variable UniformConstant
22: TypePointer Input 6(float)
23(ps): 22(ptr) Variable Input
25: TypePointer Output 6(float)
27: 14(int) Constant 2
28: 8(int) Constant 0
29: TypePointer Input 6(float)
33: 8(int) Constant 3
34: TypeArray 7(fvec4) 33
35(s1): TypeStruct 14(int) 14(int) 34
36: TypeArray 35(s1) 9
37(s2): TypeStruct 14(int) 36
38: TypePointer Output 37(s2)
39(s2out): 38(ptr) Variable Output
40: TypePointer Function 14(int)
45: TypePointer UniformConstant 14(int)
46(ui): 45(ptr) Variable UniformConstant
47: TypePointer Input 14(int)
48(gl_VertexID): 47(ptr) Variable Input
49(gl_InstanceID): 47(ptr) Variable Input
32: 8(int) Constant 3
33: TypeArray 7(fvec4) 32
34(s1): TypeStruct 14(int) 14(int) 33
35: TypeArray 34(s1) 9
36(s2): TypeStruct 14(int) 35
37: TypePointer Output 36(s2)
38(s2out): 37(ptr) Variable Output
39: TypePointer Function 14(int)
44: TypeImage 6(float) 2D sampled format:Unknown
45: TypeSampledImage 44
46: TypePointer UniformConstant 45
47(s2D): 46(ptr) Variable UniformConstant
49: TypeVector 6(float) 2
50: 6(float) Constant 1056964608
51: 49(fvec2) ConstantComposite 50 50
52: 6(float) Constant 0
55: TypeVector 6(float) 3
56: 55(fvec3) ConstantComposite 50 50 50
59: 6(float) Constant 1078774989
61: TypePointer Input 14(int)
62(ui): 61(ptr) Variable Input
4(main): 2 Function None 3
5: Label
41(i): 40(ptr) Variable Function
40(i): 39(ptr) Variable Function
18: 7(fvec4) Load 17(iv4)
20: 19(ptr) AccessChain 13 15
Store 20 18
24: 6(float) Load 23(ps)
26: 25(ptr) AccessChain 13 21
Store 26 24
30: 29(ptr) AccessChain 17(iv4) 28
31: 6(float) Load 30
32: 25(ptr) AccessChain 13 27 27
Store 32 31
42: 14(int) Load 41(i)
43: 6(float) Load 23(ps)
44: 25(ptr) AccessChain 39(s2out) 21 42 27 27 33
Store 44 43
29: 22(ptr) AccessChain 17(iv4) 28
30: 6(float) Load 29
31: 25(ptr) AccessChain 13 27 27
Store 31 30
41: 14(int) Load 40(i)
42: 6(float) Load 23(ps)
43: 25(ptr) AccessChain 38(s2out) 21 41 27 27 32
Store 43 42
48: 45 Load 47(s2D)
53: 7(fvec4) ImageSampleExplicitLod 48 51 Lod 52
54: 45 Load 47(s2D)
57: 7(fvec4) ImageSampleProjExplicitLod 54 56 Lod 52
58: 45 Load 47(s2D)
60: 7(fvec4) ImageSampleExplicitLod 58 51 Lod 59
Return
FunctionEnd

View file

@ -1,76 +1,79 @@
spv.300BuiltIns.vert
Warning, version 310 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 40
// Id's are bound by 42
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 11 23 25 33 39
Source ESSL 300
EntryPoint Vertex 4 "main" 10 14 21 34
Source ESSL 310
Name 4 "main"
Name 8 "i"
Name 11 "gl_VertexID"
Name 16 "j"
Name 23 "gl_Position"
Name 25 "ps"
Name 33 "gl_PointSize"
Name 39 "gl_InstanceID"
Decorate 8(i) RelaxedPrecision
Decorate 11(gl_VertexID) BuiltIn VertexId
Decorate 16(j) RelaxedPrecision
Decorate 23(gl_Position) Invariant
Decorate 23(gl_Position) BuiltIn Position
Decorate 25(ps) RelaxedPrecision
Decorate 33(gl_PointSize) BuiltIn PointSize
Decorate 39(gl_InstanceID) BuiltIn InstanceId
Name 8 "gl_PerVertex"
MemberName 8(gl_PerVertex) 0 "gl_Position"
MemberName 8(gl_PerVertex) 1 "gl_PointSize"
Name 10 ""
Name 14 "ps"
Name 21 "gl_VertexIndex"
Name 34 "gl_InstanceIndex"
MemberDecorate 8(gl_PerVertex) 0 Invariant
MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize
Decorate 8(gl_PerVertex) Block
Decorate 14(ps) RelaxedPrecision
Decorate 15 RelaxedPrecision
Decorate 21(gl_VertexIndex) BuiltIn VertexIndex
Decorate 30 RelaxedPrecision
Decorate 34(gl_InstanceIndex) BuiltIn InstanceIndex
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 4
10: TypePointer Input 6(int)
11(gl_VertexID): 10(ptr) Variable Input
14: 6(int) Constant 10
20: TypeFloat 32
21: TypeVector 20(float) 4
22: TypePointer Output 21(fvec4)
23(gl_Position): 22(ptr) Variable Output
24: TypePointer Input 20(float)
25(ps): 24(ptr) Variable Input
32: TypePointer Output 20(float)
33(gl_PointSize): 32(ptr) Variable Output
39(gl_InstanceID): 10(ptr) Variable Input
6: TypeFloat 32
7: TypeVector 6(float) 4
8(gl_PerVertex): TypeStruct 7(fvec4) 6(float)
9: TypePointer Output 8(gl_PerVertex)
10: 9(ptr) Variable Output
11: TypeInt 32 1
12: 11(int) Constant 0
13: TypePointer Input 6(float)
14(ps): 13(ptr) Variable Input
17: TypePointer Output 7(fvec4)
19: 11(int) Constant 4
20: TypePointer Input 11(int)
21(gl_VertexIndex): 20(ptr) Variable Input
29: 11(int) Constant 1
31: TypePointer Output 6(float)
33: 11(int) Constant 5
34(gl_InstanceIndex): 20(ptr) Variable Input
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
16(j): 7(ptr) Variable Function
12: 6(int) Load 11(gl_VertexID)
13: 6(int) IMul 9 12
15: 6(int) ISub 13 14
Store 8(i) 15
17: 6(int) Load 11(gl_VertexID)
18: 6(int) IMul 9 17
19: 6(int) ISub 18 14
Store 16(j) 19
26: 20(float) Load 25(ps)
27: 21(fvec4) CompositeConstruct 26 26 26 26
Store 23(gl_Position) 27
28: 6(int) Load 8(i)
29: 20(float) ConvertSToF 28
30: 21(fvec4) Load 23(gl_Position)
31: 21(fvec4) VectorTimesScalar 30 29
Store 23(gl_Position) 31
34: 20(float) Load 25(ps)
Store 33(gl_PointSize) 34
35: 6(int) Load 16(j)
36: 20(float) ConvertSToF 35
37: 20(float) Load 33(gl_PointSize)
38: 20(float) FMul 37 36
Store 33(gl_PointSize) 38
15: 6(float) Load 14(ps)
16: 7(fvec4) CompositeConstruct 15 15 15 15
18: 17(ptr) AccessChain 10 12
Store 18 16
22: 11(int) Load 21(gl_VertexIndex)
23: 11(int) ISub 19 22
24: 6(float) ConvertSToF 23
25: 17(ptr) AccessChain 10 12
26: 7(fvec4) Load 25
27: 7(fvec4) VectorTimesScalar 26 24
28: 17(ptr) AccessChain 10 12
Store 28 27
30: 6(float) Load 14(ps)
32: 31(ptr) AccessChain 10 29
Store 32 30
35: 11(int) Load 34(gl_InstanceIndex)
36: 11(int) ISub 33 35
37: 6(float) ConvertSToF 36
38: 31(ptr) AccessChain 10 29
39: 6(float) Load 38
40: 6(float) FMul 39 37
41: 31(ptr) AccessChain 10 29
Store 41 40
Return
FunctionEnd

View file

@ -1,4 +1,6 @@
spv.300layout.frag
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Linked fragment stage:
@ -11,8 +13,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 11 15 26 29
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
ExecutionMode 4 OriginUpperLeft
Source ESSL 310
Name 4 "main"
Name 9 "c"
Name 11 "color"
@ -25,11 +27,17 @@ Linked fragment stage:
Decorate 9(c) RelaxedPrecision
Decorate 9(c) Location 7
Decorate 11(color) RelaxedPrecision
Decorate 12 RelaxedPrecision
MemberDecorate 13(S) 0 RelaxedPrecision
MemberDecorate 13(S) 1 RelaxedPrecision
Decorate 19 RelaxedPrecision
Decorate 20 RelaxedPrecision
Decorate 26(p) RelaxedPrecision
Decorate 26(p) Location 3
Decorate 29(pos) RelaxedPrecision
Decorate 30 RelaxedPrecision
Decorate 33 RelaxedPrecision
Decorate 34 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32

View file

@ -1,17 +1,19 @@
spv.300layout.vert
Warning, version 310 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 165
// Id's are bound by 163
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
EntryPoint Vertex 4 "main" 9 11 98 100 108 114 120 128
Source ESSL 310
Name 4 "main"
Name 9 "pos"
Name 11 "p"
@ -27,21 +29,19 @@ Linked vertex stage:
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"
Name 78 "T2"
MemberName 78(T2) 0 "b"
MemberName 78(T2) 1 "t2m"
Name 80 ""
Name 98 "color"
Name 100 "c"
Name 108 "iout"
Name 114 "uiuin"
Name 120 "aiv2"
Name 126 "S"
MemberName 126(S) 0 "c"
MemberName 126(S) 1 "f"
Name 128 "s"
Decorate 11(p) Location 3
MemberDecorate 17(Transform) 0 RowMajor
MemberDecorate 17(Transform) 0 Offset 0
@ -54,19 +54,29 @@ Linked vertex stage:
MemberDecorate 17(Transform) 2 MatrixStride 16
MemberDecorate 17(Transform) 3 Offset 176
Decorate 17(Transform) Block
Decorate 19(tblock) DescriptorSet 0
Decorate 44 ArrayStride 16
MemberDecorate 45(T3) 0 ColMajor
MemberDecorate 45(T3) 0 Offset 0
MemberDecorate 45(T3) 0 MatrixStride 16
MemberDecorate 45(T3) 1 RowMajor
MemberDecorate 45(T3) 1 Offset 64
MemberDecorate 45(T3) 1 MatrixStride 16
MemberDecorate 45(T3) 2 ColMajor
Decorate 45(T3) GLSLShared
MemberDecorate 45(T3) 2 Offset 128
MemberDecorate 45(T3) 2 MatrixStride 16
MemberDecorate 45(T3) 3 Offset 160
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
Decorate 47 DescriptorSet 0
MemberDecorate 78(T2) 0 Offset 0
MemberDecorate 78(T2) 1 RowMajor
MemberDecorate 78(T2) 1 Offset 16
MemberDecorate 78(T2) 1 MatrixStride 16
Decorate 78(T2) Block
Decorate 80 DescriptorSet 0
Decorate 100(c) Location 7
Decorate 108(iout) Flat
Decorate 120(aiv2) Location 9
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -93,42 +103,40 @@ Linked vertex stage:
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)
78(T2): TypeStruct 41(int) 13
79: TypePointer Uniform 78(T2)
80: 79(ptr) Variable Uniform
97: TypePointer Output 14(fvec3)
98(color): 97(ptr) Variable Output
99: TypePointer Input 14(fvec3)
100(c): 99(ptr) Variable Input
102: 16(int) Constant 2
103: TypePointer Uniform 15
107: TypePointer Output 16(int)
108(iout): 107(ptr) Variable Output
109: 16(int) Constant 3
110: TypePointer Uniform 16(int)
113: TypePointer Input 41(int)
114(uiuin): 113(ptr) Variable Input
118: TypeVector 16(int) 2
119: TypePointer Input 118(ivec2)
120(aiv2): 119(ptr) Variable Input
121: 41(int) Constant 1
122: TypePointer Input 16(int)
126(S): TypeStruct 14(fvec3) 6(float)
127: TypePointer Output 126(S)
128(s): 127(ptr) Variable Output
131: 41(int) Constant 0
132: TypePointer Input 6(float)
135: TypePointer Output 6(float)
137: TypeBool
138: TypePointer Uniform 14(fvec3)
141: 6(float) Constant 1065353216
142: 14(fvec3) ConstantComposite 141 141 141
143: TypeVector 78(bool) 3
143: TypeVector 137(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)
@ -179,63 +187,63 @@ Linked vertex stage:
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
81: 21(ptr) AccessChain 80 24
82: 13 Load 81
83: 7(fvec4) CompositeExtract 77 0
84: 7(fvec4) CompositeExtract 82 0
85: 7(fvec4) FAdd 83 84
86: 7(fvec4) CompositeExtract 77 1
87: 7(fvec4) CompositeExtract 82 1
88: 7(fvec4) FAdd 86 87
89: 7(fvec4) CompositeExtract 77 2
90: 7(fvec4) CompositeExtract 82 2
91: 7(fvec4) FAdd 89 90
92: 7(fvec4) CompositeExtract 77 3
93: 7(fvec4) CompositeExtract 82 3
94: 7(fvec4) FAdd 92 93
95: 13 CompositeConstruct 85 88 91 94
96: 7(fvec4) VectorTimesMatrix 12 95
Store 9(pos) 96
101: 14(fvec3) Load 100(c)
104: 103(ptr) AccessChain 19(tblock) 102
105: 15 Load 104
106: 14(fvec3) VectorTimesMatrix 101 105
Store 98(color) 106
111: 110(ptr) AccessChain 19(tblock) 109
112: 16(int) Load 111
115: 41(int) Load 114(uiuin)
116: 16(int) Bitcast 115
117: 16(int) IAdd 112 116
123: 122(ptr) AccessChain 120(aiv2) 121
124: 16(int) Load 123
125: 16(int) IAdd 117 124
Store 108(iout) 125
129: 14(fvec3) Load 100(c)
130: 97(ptr) AccessChain 128(s) 20
Store 130 129
133: 132(ptr) AccessChain 11(p) 131
134: 6(float) Load 133
136: 135(ptr) AccessChain 128(s) 24
Store 136 134
139: 138(ptr) AccessChain 47 102 24
140: 14(fvec3) Load 139
144: 143(bvec3) FOrdNotEqual 140 142
145: 78(bool) Any 144
146: 78(bool) LogicalNot 145
145: 137(bool) Any 144
146: 137(bool) LogicalNot 145
SelectionMerge 148 None
BranchConditional 146 147 148
147: Label
150: 149(ptr) AccessChain 47 110 103
150: 149(ptr) AccessChain 47 109 102
151: 42(ivec3) Load 150
154: 143(bvec3) INotEqual 151 153
155: 78(bool) Any 154
155: 137(bool) Any 154
Branch 148
148: Label
156: 78(bool) Phi 145 5 155 147
156: 137(bool) Phi 145 5 155 147
SelectionMerge 158 None
BranchConditional 156 157 158
157: Label
159: 98(ptr) AccessChain 129(s) 20
159: 97(ptr) AccessChain 128(s) 20
160: 14(fvec3) Load 159
161: 14(fvec3) CompositeConstruct 141 141 141
162: 14(fvec3) FAdd 160 161

View file

@ -1,17 +1,19 @@
spv.300layoutp.vert
Warning, version 310 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 117
// Id's are bound by 115
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 9 11 51 53 61 73 81 115 116
Source ESSL 300
EntryPoint Vertex 4 "main" 9 11 50 52 60 72 80
Source ESSL 310
Name 4 "main"
Name 9 "pos"
Name 11 "p"
@ -27,21 +29,19 @@ Linked vertex stage:
MemberName 33(T3) 2 "N2"
MemberName 33(T3) 3 "uv3a"
Name 35 ""
Name 43 "T2"
MemberName 43(T2) 0 "b"
MemberName 43(T2) 1 "t2m"
Name 45 ""
Name 51 "color"
Name 53 "c"
Name 61 "iout"
Name 67 "uiuin"
Name 73 "aiv2"
Name 79 "S"
MemberName 79(S) 0 "c"
MemberName 79(S) 1 "f"
Name 81 "s"
Name 115 "gl_VertexID"
Name 116 "gl_InstanceID"
Name 42 "T2"
MemberName 42(T2) 0 "b"
MemberName 42(T2) 1 "t2m"
Name 44 ""
Name 50 "color"
Name 52 "c"
Name 60 "iout"
Name 66 "uiuin"
Name 72 "aiv2"
Name 78 "S"
MemberName 78(S) 0 "c"
MemberName 78(S) 1 "f"
Name 80 "s"
Decorate 11(p) Location 3
MemberDecorate 17(Transform) 0 RowMajor
MemberDecorate 17(Transform) 0 Offset 0
@ -54,19 +54,29 @@ Linked vertex stage:
MemberDecorate 17(Transform) 2 MatrixStride 16
MemberDecorate 17(Transform) 3 Offset 176
Decorate 17(Transform) Block
Decorate 19(tblock) DescriptorSet 0
Decorate 32 ArrayStride 16
MemberDecorate 33(T3) 0 ColMajor
MemberDecorate 33(T3) 0 Offset 0
MemberDecorate 33(T3) 0 MatrixStride 16
MemberDecorate 33(T3) 1 RowMajor
MemberDecorate 33(T3) 1 Offset 64
MemberDecorate 33(T3) 1 MatrixStride 16
MemberDecorate 33(T3) 2 ColMajor
Decorate 33(T3) GLSLShared
MemberDecorate 33(T3) 2 Offset 128
MemberDecorate 33(T3) 2 MatrixStride 16
MemberDecorate 33(T3) 3 Offset 160
Decorate 33(T3) Block
MemberDecorate 43(T2) 1 RowMajor
Decorate 43(T2) GLSLShared
Decorate 43(T2) Block
Decorate 53(c) Location 7
Decorate 61(iout) Flat
Decorate 73(aiv2) Location 9
Decorate 115(gl_VertexID) BuiltIn VertexId
Decorate 116(gl_InstanceID) BuiltIn InstanceId
Decorate 35 DescriptorSet 0
MemberDecorate 42(T2) 0 Offset 0
MemberDecorate 42(T2) 1 RowMajor
MemberDecorate 42(T2) 1 Offset 16
MemberDecorate 42(T2) 1 MatrixStride 16
Decorate 42(T2) Block
Decorate 44 DescriptorSet 0
Decorate 52(c) Location 7
Decorate 60(iout) Flat
Decorate 72(aiv2) Location 9
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -93,42 +103,40 @@ Linked vertex stage:
33(T3): TypeStruct 13 13 28 32
34: TypePointer Uniform 33(T3)
35: 34(ptr) Variable Uniform
42: TypeBool
43(T2): TypeStruct 42(bool) 13
44: TypePointer Uniform 43(T2)
45: 44(ptr) Variable Uniform
50: TypePointer Output 14(fvec3)
51(color): 50(ptr) Variable Output
52: TypePointer Input 14(fvec3)
53(c): 52(ptr) Variable Input
55: 16(int) Constant 2
56: TypePointer Uniform 15
60: TypePointer Output 16(int)
61(iout): 60(ptr) Variable Output
62: 16(int) Constant 3
63: TypePointer Uniform 16(int)
66: TypePointer UniformConstant 29(int)
67(uiuin): 66(ptr) Variable UniformConstant
71: TypeVector 16(int) 2
72: TypePointer Input 71(ivec2)
73(aiv2): 72(ptr) Variable Input
74: 29(int) Constant 1
75: TypePointer Input 16(int)
79(S): TypeStruct 14(fvec3) 6(float)
80: TypePointer Output 79(S)
81(s): 80(ptr) Variable Output
84: 29(int) Constant 0
85: TypePointer Input 6(float)
88: TypePointer Output 6(float)
42(T2): TypeStruct 29(int) 13
43: TypePointer Uniform 42(T2)
44: 43(ptr) Variable Uniform
49: TypePointer Output 14(fvec3)
50(color): 49(ptr) Variable Output
51: TypePointer Input 14(fvec3)
52(c): 51(ptr) Variable Input
54: 16(int) Constant 2
55: TypePointer Uniform 15
59: TypePointer Output 16(int)
60(iout): 59(ptr) Variable Output
61: 16(int) Constant 3
62: TypePointer Uniform 16(int)
65: TypePointer Private 29(int)
66(uiuin): 65(ptr) Variable Private
70: TypeVector 16(int) 2
71: TypePointer Input 70(ivec2)
72(aiv2): 71(ptr) Variable Input
73: 29(int) Constant 1
74: TypePointer Input 16(int)
78(S): TypeStruct 14(fvec3) 6(float)
79: TypePointer Output 78(S)
80(s): 79(ptr) Variable Output
83: 29(int) Constant 0
84: TypePointer Input 6(float)
87: TypePointer Output 6(float)
89: TypeBool
90: TypePointer Uniform 14(fvec3)
93: 6(float) Constant 1065353216
94: 14(fvec3) ConstantComposite 93 93 93
95: TypeVector 42(bool) 3
95: TypeVector 89(bool) 3
101: TypePointer Uniform 30(ivec3)
104: 29(int) Constant 5
105: 30(ivec3) ConstantComposite 104 104 104
115(gl_VertexID): 75(ptr) Variable Input
116(gl_InstanceID): 75(ptr) Variable Input
4(main): 2 Function None 3
5: Label
12: 7(fvec4) Load 11(p)
@ -143,51 +151,51 @@ Linked vertex stage:
39: 21(ptr) AccessChain 35 20
40: 13 Load 39
41: 13 MatrixTimesMatrix 38 40
46: 21(ptr) AccessChain 45 24
47: 13 Load 46
48: 13 MatrixTimesMatrix 41 47
49: 7(fvec4) VectorTimesMatrix 12 48
Store 9(pos) 49
54: 14(fvec3) Load 53(c)
57: 56(ptr) AccessChain 19(tblock) 55
58: 15 Load 57
59: 14(fvec3) VectorTimesMatrix 54 58
Store 51(color) 59
64: 63(ptr) AccessChain 19(tblock) 62
65: 16(int) Load 64
68: 29(int) Load 67(uiuin)
69: 16(int) Bitcast 68
70: 16(int) IAdd 65 69
76: 75(ptr) AccessChain 73(aiv2) 74
77: 16(int) Load 76
78: 16(int) IAdd 70 77
Store 61(iout) 78
82: 14(fvec3) Load 53(c)
83: 50(ptr) AccessChain 81(s) 20
Store 83 82
86: 85(ptr) AccessChain 11(p) 84
87: 6(float) Load 86
89: 88(ptr) AccessChain 81(s) 24
Store 89 87
91: 90(ptr) AccessChain 35 55 24
45: 21(ptr) AccessChain 44 24
46: 13 Load 45
47: 13 MatrixTimesMatrix 41 46
48: 7(fvec4) VectorTimesMatrix 12 47
Store 9(pos) 48
53: 14(fvec3) Load 52(c)
56: 55(ptr) AccessChain 19(tblock) 54
57: 15 Load 56
58: 14(fvec3) VectorTimesMatrix 53 57
Store 50(color) 58
63: 62(ptr) AccessChain 19(tblock) 61
64: 16(int) Load 63
67: 29(int) Load 66(uiuin)
68: 16(int) Bitcast 67
69: 16(int) IAdd 64 68
75: 74(ptr) AccessChain 72(aiv2) 73
76: 16(int) Load 75
77: 16(int) IAdd 69 76
Store 60(iout) 77
81: 14(fvec3) Load 52(c)
82: 49(ptr) AccessChain 80(s) 20
Store 82 81
85: 84(ptr) AccessChain 11(p) 83
86: 6(float) Load 85
88: 87(ptr) AccessChain 80(s) 24
Store 88 86
91: 90(ptr) AccessChain 35 54 24
92: 14(fvec3) Load 91
96: 95(bvec3) FOrdNotEqual 92 94
97: 42(bool) Any 96
98: 42(bool) LogicalNot 97
97: 89(bool) Any 96
98: 89(bool) LogicalNot 97
SelectionMerge 100 None
BranchConditional 98 99 100
99: Label
102: 101(ptr) AccessChain 35 62 55
102: 101(ptr) AccessChain 35 61 54
103: 30(ivec3) Load 102
106: 95(bvec3) INotEqual 103 105
107: 42(bool) Any 106
107: 89(bool) Any 106
Branch 100
100: Label
108: 42(bool) Phi 97 5 107 99
108: 89(bool) Phi 97 5 107 99
SelectionMerge 110 None
BranchConditional 108 109 110
109: Label
111: 50(ptr) AccessChain 81(s) 20
111: 49(ptr) AccessChain 80(s) 20
112: 14(fvec3) Load 111
113: 14(fvec3) CompositeConstruct 93 93 93
114: 14(fvec3) FAdd 112 113

View file

@ -33,19 +33,29 @@ Linked compute stage:
MemberName 48(outs) 1 "va"
Name 50 "outnames"
Name 53 "gl_LocalInvocationID"
Decorate 13(outb) GLSLShared
Decorate 12 ArrayStride 16
MemberDecorate 13(outb) 0 Offset 0
MemberDecorate 13(outb) 1 Offset 4
MemberDecorate 13(outb) 2 Offset 8
MemberDecorate 13(outb) 3 Offset 16
Decorate 13(outb) BufferBlock
Decorate 24(outbna) GLSLShared
Decorate 15(outbname) DescriptorSet 0
MemberDecorate 24(outbna) 0 Offset 0
MemberDecorate 24(outbna) 1 Offset 16
Decorate 24(outbna) BufferBlock
Decorate 48(outs) GLSLShared
Decorate 26(outbnamena) DescriptorSet 0
Decorate 47 ArrayStride 16
MemberDecorate 48(outs) 0 Offset 0
MemberDecorate 48(outs) 1 Offset 16
Decorate 48(outs) BufferBlock
Decorate 50(outnames) DescriptorSet 0
Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 66 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 1
8: 6(int) Constant 1023
8: 6(int) Constant 4062
9: 6(int) Constant 0
10: TypeFloat 32
11: TypeVector 10(float) 3

View file

@ -8,6 +8,7 @@ Linked geometry stage:
// Id's are bound by 32
Capability Geometry
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 13 20
@ -29,8 +30,6 @@ Linked geometry stage:
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 11(gl_PerVertex) 1 BuiltIn ClipDistance
Decorate 11(gl_PerVertex) Block
Decorate 11(gl_PerVertex) Stream 0
Decorate 13 Stream 0
MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 16(gl_PerVertex) 1 BuiltIn ClipDistance
Decorate 16(gl_PerVertex) Block

File diff suppressed because it is too large Load diff

View file

@ -10,6 +10,8 @@ Linked tessellation control stage:
// Id's are bound by 93
Capability Tessellation
Capability TessellationPointSize
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 23 40 43 46 52 66 73 79 83 84 87 88 91 92
@ -71,7 +73,7 @@ Linked tessellation control stage:
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 1
8: 6(int) Constant 1023
8: 6(int) Constant 4062
9: 6(int) Constant 0
10: TypeInt 32 1
11: TypePointer Function 10(int)

View file

@ -10,6 +10,8 @@ Linked tessellation evaluation stage:
// Id's are bound by 98
Capability Tessellation
Capability TessellationPointSize
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 21 38 41 47 53 61 68 77 81 82 86 90 93 94 97

View file

@ -7,9 +7,12 @@ Linked geometry stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 74
// Id's are bound by 72
Capability Geometry
Capability GeometryPointSize
Capability GeometryStreams
Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 14 23 28 33 46
@ -34,7 +37,6 @@ Linked geometry stage:
Name 46 "coord"
Name 64 "i"
Name 67 "indexable"
Name 73 "v4"
MemberDecorate 9(gl_PerVertex) 0 BuiltIn PointSize
Decorate 9(gl_PerVertex) Block
MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize
@ -44,6 +46,7 @@ Linked geometry stage:
Decorate 28(gl_ViewportIndex) Stream 0
Decorate 28(gl_ViewportIndex) BuiltIn ViewportIndex
Decorate 33(gl_InvocationID) BuiltIn InvocationId
Decorate 41(s2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -92,12 +95,10 @@ Linked geometry stage:
60: 15(int) Constant 2
61: 50(ivec2) ConstantComposite 60 16
62: 52 ConstantComposite 53 55 57 59 61
63: TypePointer UniformConstant 15(int)
64(i): 63(ptr) Variable UniformConstant
63: TypePointer Private 15(int)
64(i): 63(ptr) Variable Private
66: TypePointer Function 52
68: TypePointer Function 50(ivec2)
72: TypePointer UniformConstant 35(fvec4)
73(v4): 72(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(p): 7(ptr) Variable Function

View file

@ -1,5 +1,5 @@
spv.430.vert
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Linked vertex stage:
@ -7,50 +7,76 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 63
// Id's are bound by 66
Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 12 23 34 44 45 61 62
Source GLSL 430
EntryPoint Vertex 4 "main" 12 23 34 38 41 42 62 65
Source GLSL 450
Name 4 "main"
Name 10 "gl_PerVertex"
MemberName 10(gl_PerVertex) 0 "gl_ClipDistance"
Name 12 ""
Name 23 "bad"
Name 34 "badorder3"
Name 39 "f"
Name 43 "uv4"
Name 44 "badorder"
Name 45 "badorder2"
Name 46 "boundblock"
MemberName 46(boundblock) 0 "aoeu"
Name 48 "boundInst"
Name 49 "anonblock"
MemberName 49(anonblock) 0 "aoeu"
Name 51 ""
Name 55 "sampb1"
Name 58 "sampb2"
Name 59 "sampb4"
Name 61 "gl_VertexID"
Name 62 "gl_InstanceID"
Name 38 "f"
Name 41 "badorder"
Name 42 "badorder2"
Name 43 "boundblock"
MemberName 43(boundblock) 0 "aoeu"
Name 45 "boundInst"
Name 46 "anonblock"
MemberName 46(anonblock) 0 "aoeu"
Name 48 ""
Name 52 "sampb1"
Name 55 "sampb2"
Name 56 "sampb4"
Name 59 "S"
MemberName 59(S) 0 "a"
MemberName 59(S) 1 "b"
MemberName 59(S) 2 "c"
Name 60 "SS"
MemberName 60(SS) 0 "b"
MemberName 60(SS) 1 "s"
MemberName 60(SS) 2 "c"
Name 62 "var"
Name 63 "MS"
MemberName 63(MS) 0 "f"
Name 65 "outMS"
MemberDecorate 10(gl_PerVertex) 0 BuiltIn ClipDistance
Decorate 10(gl_PerVertex) Block
Decorate 34(badorder3) Flat
Decorate 43(uv4) Location 4
Decorate 45(badorder2) Invariant
Decorate 46(boundblock) GLSLShared
Decorate 46(boundblock) Block
Decorate 48(boundInst) Binding 3
Decorate 49(anonblock) GLSLShared
Decorate 49(anonblock) Block
Decorate 51 Binding 7
Decorate 55(sampb1) Binding 4
Decorate 58(sampb2) Binding 5
Decorate 59(sampb4) Binding 31
Decorate 61(gl_VertexID) BuiltIn VertexId
Decorate 62(gl_InstanceID) BuiltIn InstanceId
Decorate 42(badorder2) Invariant
MemberDecorate 43(boundblock) 0 Offset 0
Decorate 43(boundblock) Block
Decorate 45(boundInst) DescriptorSet 0
Decorate 45(boundInst) Binding 3
MemberDecorate 46(anonblock) 0 Offset 0
Decorate 46(anonblock) Block
Decorate 48 DescriptorSet 0
Decorate 48 Binding 7
Decorate 52(sampb1) DescriptorSet 0
Decorate 52(sampb1) Binding 4
Decorate 55(sampb2) DescriptorSet 0
Decorate 55(sampb2) Binding 5
Decorate 56(sampb4) DescriptorSet 0
Decorate 56(sampb4) Binding 31
MemberDecorate 59(S) 0 Flat
MemberDecorate 59(S) 0 Location 1
MemberDecorate 59(S) 1 Flat
MemberDecorate 59(S) 1 Location 2
MemberDecorate 59(S) 2 Flat
MemberDecorate 59(S) 2 Location 3
MemberDecorate 60(SS) 0 Flat
MemberDecorate 60(SS) 0 Location 0
MemberDecorate 60(SS) 1 Flat
MemberDecorate 60(SS) 1 Location 1
MemberDecorate 60(SS) 2 Flat
MemberDecorate 60(SS) 2 Location 4
MemberDecorate 63(MS) 0 Location 17
Decorate 63(MS) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -77,29 +103,32 @@ Linked vertex stage:
33: TypePointer Output 19(fvec4)
34(badorder3): 33(ptr) Variable Output
35: TypePointer Input 19(fvec4)
38: TypePointer UniformConstant 6(float)
39(f): 38(ptr) Variable UniformConstant
42: TypePointer UniformConstant 19(fvec4)
43(uv4): 42(ptr) Variable UniformConstant
44(badorder): 35(ptr) Variable Input
45(badorder2): 33(ptr) Variable Output
46(boundblock): TypeStruct 13(int)
47: TypePointer Uniform 46(boundblock)
48(boundInst): 47(ptr) Variable Uniform
49(anonblock): TypeStruct 13(int)
50: TypePointer Uniform 49(anonblock)
51: 50(ptr) Variable Uniform
52: TypeImage 6(float) 2D sampled format:Unknown
53: TypeSampledImage 52
38(f): 25(ptr) Variable Input
41(badorder): 35(ptr) Variable Input
42(badorder2): 33(ptr) Variable Output
43(boundblock): TypeStruct 13(int)
44: TypePointer Uniform 43(boundblock)
45(boundInst): 44(ptr) Variable Uniform
46(anonblock): TypeStruct 13(int)
47: TypePointer Uniform 46(anonblock)
48: 47(ptr) Variable Uniform
49: TypeImage 6(float) 2D sampled format:Unknown
50: TypeSampledImage 49
51: TypePointer UniformConstant 50
52(sampb1): 51(ptr) Variable UniformConstant
53: TypeArray 50 20
54: TypePointer UniformConstant 53
55(sampb1): 54(ptr) Variable UniformConstant
56: TypeArray 53 20
57: TypePointer UniformConstant 56
58(sampb2): 57(ptr) Variable UniformConstant
59(sampb4): 54(ptr) Variable UniformConstant
60: TypePointer Input 13(int)
61(gl_VertexID): 60(ptr) Variable Input
62(gl_InstanceID): 60(ptr) Variable Input
55(sampb2): 54(ptr) Variable UniformConstant
56(sampb4): 51(ptr) Variable UniformConstant
57: TypeVector 7(int) 2
58: TypeVector 6(float) 3
59(S): TypeStruct 6(float) 57(ivec2) 58(fvec3)
60(SS): TypeStruct 19(fvec4) 59(S) 19(fvec4)
61: TypePointer Output 60(SS)
62(var): 61(ptr) Variable Output
63(MS): TypeStruct 6(float)
64: TypePointer Output 63(MS)
65(outMS): 64(ptr) Variable Output
4(main): 2 Function None 3
5: Label
18: 17(ptr) AccessChain 12 14 15
@ -115,8 +144,8 @@ Linked vertex stage:
Store 34(badorder3) 37
Branch 32
32: Label
40: 6(float) Load 39(f)
41: 17(ptr) AccessChain 12 14 14
Store 41 40
39: 6(float) Load 38(f)
40: 17(ptr) AccessChain 12 14 14
Store 40 39
Return
FunctionEnd

View file

@ -7,34 +7,40 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 103
// Id's are bound by 104
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 38 43 77
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 39 44 68 70 72 78
ExecutionMode 4 OriginUpperLeft
Source GLSL 430
Name 4 "main"
Name 17 "foo(f1[5][7];"
Name 16 "a"
Name 20 "r"
Name 38 "outfloat"
Name 41 "g4"
Name 43 "g5"
Name 44 "param"
Name 47 "u"
Name 51 "param"
Name 65 "many"
Name 67 "i"
Name 69 "j"
Name 71 "k"
Name 77 "infloat"
Name 93 "uAofA"
MemberName 93(uAofA) 0 "f"
Name 97 "nameAofA"
Decorate 93(uAofA) GLSLShared
Decorate 93(uAofA) Block
Name 39 "outfloat"
Name 42 "g4"
Name 44 "g5"
Name 45 "param"
Name 48 "u"
Name 52 "param"
Name 66 "many"
Name 68 "i"
Name 70 "j"
Name 72 "k"
Name 78 "infloat"
Name 94 "uAofA"
MemberName 94(uAofA) 0 "f"
Name 98 "nameAofA"
Decorate 68(i) Flat
Decorate 70(j) Flat
Decorate 72(k) Flat
Decorate 92 ArrayStride 16
Decorate 93 ArrayStride 64
MemberDecorate 94(uAofA) 0 Offset 0
Decorate 94(uAofA) Block
Decorate 98(nameAofA) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -53,82 +59,82 @@ Linked fragment stage:
25: 21(int) Constant 0
28: 21(int) Constant 1
32: 21(int) Constant 3
37: TypePointer Output 6(float)
38(outfloat): 37(ptr) Variable Output
39: 6(float) Constant 0
40: TypePointer Private 14
41(g4): 40(ptr) Variable Private
42: TypePointer Input 11
43(g5): 42(ptr) Variable Input
48: 6(float) Constant 1077936128
49: TypePointer Function 6(float)
54: 7(int) Constant 6
55: TypeArray 6(float) 54
56: TypeArray 55 10
57: TypeArray 56 13
58: 7(int) Constant 3
59: TypeArray 57 58
60: 7(int) Constant 2
61: TypeArray 59 60
62: 7(int) Constant 1
63: TypeArray 61 62
64: TypePointer Private 63
65(many): 64(ptr) Variable Private
66: TypePointer UniformConstant 21(int)
67(i): 66(ptr) Variable UniformConstant
69(j): 66(ptr) Variable UniformConstant
71(k): 66(ptr) Variable UniformConstant
76: TypePointer Input 6(float)
77(infloat): 76(ptr) Variable Input
79: TypePointer Private 6(float)
91: TypeArray 6(float) 13
92: TypeArray 91 60
93(uAofA): TypeStruct 92
94: TypeArray 93(uAofA) 10
95: TypeArray 94 58
96: TypePointer Uniform 95
97(nameAofA): 96(ptr) Variable Uniform
98: TypePointer Uniform 6(float)
38: TypePointer Output 6(float)
39(outfloat): 38(ptr) Variable Output
40: 6(float) Constant 0
41: TypePointer Private 14
42(g4): 41(ptr) Variable Private
43: TypePointer Input 11
44(g5): 43(ptr) Variable Input
49: 6(float) Constant 1077936128
50: TypePointer Function 6(float)
55: 7(int) Constant 6
56: TypeArray 6(float) 55
57: TypeArray 56 10
58: TypeArray 57 13
59: 7(int) Constant 3
60: TypeArray 58 59
61: 7(int) Constant 2
62: TypeArray 60 61
63: 7(int) Constant 1
64: TypeArray 62 63
65: TypePointer Private 64
66(many): 65(ptr) Variable Private
67: TypePointer Input 21(int)
68(i): 67(ptr) Variable Input
70(j): 67(ptr) Variable Input
72(k): 67(ptr) Variable Input
77: TypePointer Input 6(float)
78(infloat): 77(ptr) Variable Input
80: TypePointer Private 6(float)
92: TypeArray 6(float) 13
93: TypeArray 92 61
94(uAofA): TypeStruct 93
95: TypeArray 94(uAofA) 10
96: TypeArray 95 59
97: TypePointer Uniform 96
98(nameAofA): 97(ptr) Variable Uniform
99: TypePointer Uniform 6(float)
4(main): 2 Function None 3
5: Label
44(param): 12(ptr) Variable Function
47(u): 12(ptr) Variable Function
51(param): 12(ptr) Variable Function
Store 38(outfloat) 39
45: 11 Load 43(g5)
Store 44(param) 45
46: 14 FunctionCall 17(foo(f1[5][7];) 44(param)
Store 41(g4) 46
50: 49(ptr) AccessChain 47(u) 22 22
Store 50 48
52: 11 Load 47(u)
Store 51(param) 52
53: 14 FunctionCall 17(foo(f1[5][7];) 51(param)
68: 21(int) Load 67(i)
70: 21(int) Load 69(j)
72: 21(int) Load 71(k)
73: 21(int) Load 67(i)
74: 21(int) Load 69(j)
75: 21(int) Load 71(k)
78: 6(float) Load 77(infloat)
80: 79(ptr) AccessChain 65(many) 68 70 72 73 74 75
Store 80 78
81: 21(int) Load 69(j)
82: 21(int) Load 69(j)
83: 21(int) Load 69(j)
84: 21(int) Load 69(j)
85: 21(int) Load 69(j)
86: 21(int) Load 69(j)
87: 79(ptr) AccessChain 65(many) 81 82 83 84 85 86
88: 6(float) Load 87
89: 6(float) Load 38(outfloat)
90: 6(float) FAdd 89 88
Store 38(outfloat) 90
99: 98(ptr) AccessChain 97(nameAofA) 28 22 25 25 32
100: 6(float) Load 99
101: 6(float) Load 38(outfloat)
102: 6(float) FAdd 101 100
Store 38(outfloat) 102
45(param): 12(ptr) Variable Function
48(u): 12(ptr) Variable Function
52(param): 12(ptr) Variable Function
Store 39(outfloat) 40
46: 11 Load 44(g5)
Store 45(param) 46
47: 14 FunctionCall 17(foo(f1[5][7];) 45(param)
Store 42(g4) 47
51: 50(ptr) AccessChain 48(u) 22 22
Store 51 49
53: 11 Load 48(u)
Store 52(param) 53
54: 14 FunctionCall 17(foo(f1[5][7];) 52(param)
69: 21(int) Load 68(i)
71: 21(int) Load 70(j)
73: 21(int) Load 72(k)
74: 21(int) Load 68(i)
75: 21(int) Load 70(j)
76: 21(int) Load 72(k)
79: 6(float) Load 78(infloat)
81: 80(ptr) AccessChain 66(many) 69 71 73 74 75 76
Store 81 79
82: 21(int) Load 70(j)
83: 21(int) Load 70(j)
84: 21(int) Load 70(j)
85: 21(int) Load 70(j)
86: 21(int) Load 70(j)
87: 21(int) Load 70(j)
88: 80(ptr) AccessChain 66(many) 82 83 84 85 86 87
89: 6(float) Load 88
90: 6(float) Load 39(outfloat)
91: 6(float) FAdd 90 89
Store 39(outfloat) 91
100: 99(ptr) AccessChain 98(nameAofA) 28 22 25 25 32
101: 6(float) Load 100
102: 6(float) Load 39(outfloat)
103: 6(float) FAdd 102 101
Store 39(outfloat) 103
Return
FunctionEnd
17(foo(f1[5][7];): 14 Function None 15

View file

@ -7,13 +7,13 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 507
// Id's are bound by 509
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 483
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 11 22 212 288 485 503 508
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "v"
@ -27,52 +27,56 @@ Linked fragment stage:
Name 288 "uui"
Name 305 "b"
Name 342 "ub42"
Name 483 "FragColor"
Name 501 "uiv4"
Name 503 "ub"
Name 506 "uuv4"
Name 485 "FragColor"
Name 503 "uiv4"
Name 505 "ub"
Name 508 "uuv4"
Decorate 22(ui) Flat
Decorate 288(uui) Flat
Decorate 503(uiv4) Flat
Decorate 508(uuv4) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypePointer UniformConstant 7(fvec4)
11(uv4): 10(ptr) Variable UniformConstant
10: TypePointer Input 7(fvec4)
11(uv4): 10(ptr) Variable Input
18: TypeInt 32 1
19: TypePointer Function 18(int)
21: TypePointer UniformConstant 18(int)
22(ui): 21(ptr) Variable UniformConstant
21: TypePointer Input 18(int)
22(ui): 21(ptr) Variable Input
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
180: TypePointer Private 179(bvec4)
181(ub41): 180(ptr) Variable Private
211: TypePointer Input 6(float)
212(uf): 211(ptr) Variable Input
284: TypePointer Function 141(int)
287: TypePointer UniformConstant 141(int)
288(uui): 287(ptr) Variable UniformConstant
287: TypePointer Input 141(int)
288(uui): 287(ptr) Variable Input
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
342(ub42): 180(ptr) Variable Private
398: 18(int) Constant 2
405: 18(int) Constant 1
435: TypeVector 6(float) 3
454: 6(float) Constant 1073741824
461: 6(float) Constant 1065353216
466: 18(int) Constant 66
472: 18(int) Constant 17
484: TypePointer Output 7(fvec4)
485(FragColor): 484(ptr) Variable Output
501: TypeVector 18(int) 4
502: TypePointer Input 501(ivec4)
503(uiv4): 502(ptr) Variable Input
504: TypePointer Private 178(bool)
505(ub): 504(ptr) Variable Private
506: TypeVector 141(int) 4
507: TypePointer Input 506(ivec4)
508(uuv4): 507(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
@ -80,7 +84,7 @@ Linked fragment stage:
188(f): 143(ptr) Variable Function
285(u): 284(ptr) Variable Function
305(b): 304(ptr) Variable Function
484: 8(ptr) Variable Function
486: 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
@ -529,137 +533,142 @@ Linked fragment stage:
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
SelectionMerge 392 None
BranchConditional 390 391 392
391: Label
393: 18(int) Load 20(i)
394: 18(int) Load 22(ui)
395: 178(bool) IEqual 393 394
Branch 392
392: Label
396: 178(bool) Phi 390 386 395 391
397: 18(int) Load 20(i)
399: 178(bool) INotEqual 397 398
400: 178(bool) LogicalNotEqual 396 399
Branch 387
387: Label
399: 178(bool) Phi 384 365 398 386
SelectionMerge 401 None
BranchConditional 399 400 401
400: Label
402: 18(int) Load 20(i)
404: 18(int) IAdd 402 403
Store 20(i) 404
Branch 401
401: Label
405: 6(float) Load 212(uf)
406: 6(float) Load 212(uf)
407: 6(float) FAdd 405 406
401: 178(bool) Phi 384 365 400 392
SelectionMerge 403 None
BranchConditional 401 402 403
402: Label
404: 18(int) Load 20(i)
406: 18(int) IAdd 404 405
Store 20(i) 406
Branch 403
403: Label
407: 6(float) Load 212(uf)
408: 6(float) Load 212(uf)
409: 6(float) FMul 407 408
409: 6(float) FAdd 407 408
410: 6(float) Load 212(uf)
411: 6(float) FSub 409 410
411: 6(float) FMul 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
413: 6(float) FSub 411 412
414: 6(float) Load 212(uf)
415: 6(float) FDiv 413 414
Store 188(f) 415
416: 7(fvec4) Load 9(v)
417: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 416
418: 6(float) Load 188(f)
419: 6(float) FAdd 418 417
Store 188(f) 419
420: 7(fvec4) Load 9(v)
421: 7(fvec4) Load 9(v)
422: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 420 421
423: 6(float) Load 188(f)
424: 6(float) FAdd 423 422
Store 188(f) 424
425: 7(fvec4) Load 9(v)
426: 7(fvec4) Load 9(v)
427: 6(float) Dot 425 426
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
429: 6(float) FAdd 428 427
Store 188(f) 429
430: 6(float) Load 188(f)
431: 6(float) Load 212(uf)
432: 6(float) FMul 430 431
433: 6(float) Load 188(f)
434: 6(float) FAdd 433 432
Store 188(f) 434
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
437: 435(fvec3) VectorShuffle 436 436 0 1 2
438: 7(fvec4) Load 9(v)
439: 435(fvec3) VectorShuffle 438 438 0 1 2
440: 435(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 437 439
441: 6(float) CompositeExtract 440 0
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
443: 6(float) FAdd 442 441
Store 188(f) 443
444: 6(float) Load 188(f)
445: 6(float) Load 212(uf)
446: 178(bool) FOrdEqual 444 445
447: 178(bool) LogicalNot 446
SelectionMerge 449 None
BranchConditional 447 448 449
448: Label
450: 6(float) Load 188(f)
451: 6(float) Load 212(uf)
452: 178(bool) FOrdNotEqual 450 451
453: 6(float) Load 188(f)
455: 178(bool) FOrdNotEqual 453 454
456: 178(bool) LogicalAnd 452 455
Branch 449
449: Label
457: 178(bool) Phi 446 403 456 448
SelectionMerge 459 None
BranchConditional 457 458 459
458: Label
460: 6(float) Load 188(f)
462: 6(float) FAdd 460 461
Store 188(f) 462
Branch 459
459: Label
463: 18(int) Load 22(ui)
464: 18(int) Load 20(i)
465: 18(int) BitwiseAnd 464 463
Store 20(i) 465
467: 18(int) Load 20(i)
468: 18(int) BitwiseOr 467 466
Store 20(i) 468
469: 18(int) Load 22(ui)
470: 18(int) Load 20(i)
471: 18(int) BitwiseXor 470 469
Store 20(i) 471
473: 18(int) Load 20(i)
474: 18(int) ShiftRightArithmetic 473 396
474: 18(int) SMod 473 472
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
475: 18(int) Load 20(i)
476: 18(int) ShiftRightArithmetic 475 398
Store 20(i) 476
477: 18(int) Load 22(ui)
478: 18(int) Load 20(i)
479: 18(int) Not 478
479: 18(int) ShiftLeftLogical 478 477
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)
480: 18(int) Load 20(i)
481: 18(int) Not 480
Store 20(i) 481
482: 178(bool) Load 305(b)
483: 178(bool) LogicalNot 482
Store 305(b) 483
487: 178(bool) Load 305(b)
SelectionMerge 489 None
BranchConditional 487 488 498
488: Label
490: 18(int) Load 20(i)
491: 6(float) ConvertSToF 490
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
493: 6(float) Load 188(f)
494: 7(fvec4) CompositeConstruct 493 493 493 493
495: 7(fvec4) FAdd 492 494
496: 7(fvec4) Load 9(v)
497: 7(fvec4) FAdd 495 496
Store 486 497
Branch 489
498: Label
499: 7(fvec4) Load 9(v)
Store 486 499
Branch 489
489: Label
500: 7(fvec4) Load 486
Store 485(FragColor) 500
Return
FunctionEnd

View file

@ -12,8 +12,8 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 65
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 65 149
ExecutionMode 4 OriginUpperLeft
Source GLSL 420
Name 4 "main"
Name 8 "S"
@ -72,6 +72,7 @@ Linked fragment stage:
Name 190 "param"
Name 194 "param"
Decorate 65(OutColor) Location 0
Decorate 149(u) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -92,8 +93,8 @@ Linked fragment stage:
141: 6(float) Constant 0
142: 7(fvec3) ConstantComposite 141 141 141
143: TypePointer Function 8(S)
148: TypePointer UniformConstant 13(int)
149(u): 148(ptr) Variable UniformConstant
148: TypePointer Input 13(int)
149(u): 148(ptr) Variable Input
4(main): 2 Function None 3
5: Label
144(s): 143(ptr) Variable Function

View file

@ -7,13 +7,13 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 380
// Id's are bound by 215
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 16 41 90 376
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 16 41 101 213
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 8 "s1"
@ -23,41 +23,47 @@ Linked fragment stage:
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
Name 55 "s1"
MemberName 55(s1) 0 "i"
MemberName 55(s1) 1 "f"
Name 56 "s2"
MemberName 56(s2) 0 "i"
MemberName 56(s2) 1 "f"
MemberName 56(s2) 2 "s1_1"
Name 57 "ub1"
MemberName 57(ub1) 0 "foo2a"
Name 59 "uName1"
Name 64 "s1"
MemberName 64(s1) 0 "i"
MemberName 64(s1) 1 "f"
Name 65 "s2"
MemberName 65(s2) 0 "i"
MemberName 65(s2) 1 "f"
MemberName 65(s2) 2 "s1_1"
Name 66 "ub2"
MemberName 66(ub2) 0 "foo2b"
Name 68 "uName2"
Name 93 "v"
Name 97 "samp2D"
Name 101 "coord"
Name 213 "color"
MemberDecorate 55(s1) 0 Offset 0
MemberDecorate 55(s1) 1 Offset 4
MemberDecorate 56(s2) 0 Offset 0
MemberDecorate 56(s2) 1 Offset 4
MemberDecorate 56(s2) 2 Offset 16
MemberDecorate 57(ub1) 0 Offset 0
Decorate 57(ub1) Block
Decorate 59(uName1) DescriptorSet 0
MemberDecorate 64(s1) 0 Offset 0
MemberDecorate 64(s1) 1 Offset 4
MemberDecorate 65(s2) 0 Offset 0
MemberDecorate 65(s2) 1 Offset 4
MemberDecorate 65(s2) 2 Offset 8
MemberDecorate 66(ub2) 0 Offset 0
Decorate 66(ub2) BufferBlock
Decorate 68(uName2) DescriptorSet 0
Decorate 97(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -81,46 +87,43 @@ Linked fragment stage:
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
55(s1): TypeStruct 6(int) 7(float)
56(s2): TypeStruct 6(int) 7(float) 55(s1)
57(ub1): TypeStruct 56(s2)
58: TypePointer Uniform 57(ub1)
59(uName1): 58(ptr) Variable Uniform
60: 6(int) Constant 0
61: TypePointer Uniform 56(s2)
64(s1): TypeStruct 6(int) 7(float)
65(s2): TypeStruct 6(int) 7(float) 64(s1)
66(ub2): TypeStruct 65(s2)
67: TypePointer Uniform 66(ub2)
68(uName2): 67(ptr) Variable Uniform
69: TypePointer Uniform 65(s2)
72: TypeBool
92: TypePointer Function 14(fvec4)
94: TypeImage 7(float) 2D sampled format:Unknown
95: TypeSampledImage 94
96: TypePointer UniformConstant 95
97(samp2D): 96(ptr) Variable UniformConstant
99: TypeVector 7(float) 2
100: TypePointer Input 99(fvec2)
101(coord): 100(ptr) Variable Input
106: 7(float) Constant 1073741824
112: TypeVector 72(bool) 4
117: 7(float) Constant 1077936128
126: 7(float) Constant 1082130432
132: TypeVector 72(bool) 2
137: 7(float) Constant 1084227584
173: 7(float) Constant 1086324736
209: 7(float) Constant 1088421888
212: TypePointer Output 14(fvec4)
213(color): 212(ptr) Variable Output
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
93(v): 92(ptr) Variable Function
19: 18(ptr) AccessChain 16(u) 17
20: 7(float) Load 19
21: 6(int) ConvertFToS 20
@ -149,325 +152,159 @@ Linked fragment stage:
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
62: 61(ptr) AccessChain 59(uName1) 60
63: 56(s2) Load 62
70: 69(ptr) AccessChain 68(uName2) 60
71: 65(s2) Load 70
73: 6(int) CompositeExtract 63 0
74: 6(int) CompositeExtract 71 0
75: 72(bool) IEqual 73 74
76: 7(float) CompositeExtract 63 1
77: 7(float) CompositeExtract 71 1
78: 72(bool) FOrdEqual 76 77
79: 72(bool) LogicalAnd 75 78
80: 55(s1) CompositeExtract 63 2
81: 64(s1) CompositeExtract 71 2
82: 6(int) CompositeExtract 80 0
83: 6(int) CompositeExtract 81 0
84: 72(bool) IEqual 82 83
85: 7(float) CompositeExtract 80 1
86: 7(float) CompositeExtract 81 1
87: 72(bool) FOrdEqual 85 86
88: 72(bool) LogicalAnd 84 87
89: 72(bool) LogicalAnd 79 88
SelectionMerge 91 None
BranchConditional 89 90 104
90: Label
98: 95 Load 97(samp2D)
102: 99(fvec2) Load 101(coord)
103: 14(fvec4) ImageSampleImplicitLod 98 102
Store 93(v) 103
Branch 91
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
105: 95 Load 97(samp2D)
107: 99(fvec2) Load 101(coord)
108: 99(fvec2) VectorTimesScalar 107 106
109: 14(fvec4) ImageSampleImplicitLod 105 108
Store 93(v) 109
Branch 91
91: Label
110: 14(fvec4) Load 16(u)
111: 14(fvec4) Load 93(v)
113: 112(bvec4) FOrdEqual 110 111
114: 72(bool) All 113
SelectionMerge 116 None
BranchConditional 114 115 116
115: Label
118: 14(fvec4) Load 93(v)
119: 14(fvec4) VectorTimesScalar 118 117
Store 93(v) 119
Branch 116
116: Label
120: 14(fvec4) Load 16(u)
121: 14(fvec4) Load 93(v)
122: 112(bvec4) FOrdNotEqual 120 121
123: 72(bool) Any 122
SelectionMerge 125 None
BranchConditional 123 124 125
124: Label
127: 14(fvec4) Load 82(v)
127: 14(fvec4) Load 93(v)
128: 14(fvec4) VectorTimesScalar 127 126
Store 82(v) 128
Store 93(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
129: 99(fvec2) Load 101(coord)
130: 14(fvec4) Load 93(v)
131: 99(fvec2) VectorShuffle 130 130 1 3
133: 132(bvec2) FOrdEqual 129 131
134: 72(bool) All 133
SelectionMerge 136 None
BranchConditional 134 135 136
135: Label
138: 14(fvec4) Load 93(v)
139: 14(fvec4) VectorTimesScalar 138 137
Store 93(v) 139
Branch 136
136: Label
140: 11 Load 13(a)
141: 11 Load 37(b)
142: 8(s1) CompositeExtract 140 0
143: 8(s1) CompositeExtract 141 0
144: 6(int) CompositeExtract 142 0
145: 6(int) CompositeExtract 143 0
146: 72(bool) IEqual 144 145
147: 7(float) CompositeExtract 142 1
148: 7(float) CompositeExtract 143 1
149: 72(bool) FOrdEqual 147 148
150: 72(bool) LogicalAnd 146 149
151: 8(s1) CompositeExtract 140 1
152: 8(s1) CompositeExtract 141 1
153: 6(int) CompositeExtract 151 0
154: 61(bool) IEqual 152 153
155: 7(float) CompositeExtract 150 1
154: 6(int) CompositeExtract 152 0
155: 72(bool) IEqual 153 154
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
157: 7(float) CompositeExtract 152 1
158: 72(bool) FOrdEqual 156 157
159: 72(bool) LogicalAnd 155 158
160: 72(bool) LogicalAnd 150 159
161: 8(s1) CompositeExtract 140 2
162: 8(s1) CompositeExtract 141 2
163: 6(int) CompositeExtract 161 0
164: 61(bool) IEqual 162 163
165: 7(float) CompositeExtract 160 1
164: 6(int) CompositeExtract 162 0
165: 72(bool) IEqual 163 164
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
167: 7(float) CompositeExtract 162 1
168: 72(bool) FOrdEqual 166 167
169: 72(bool) LogicalAnd 165 168
170: 72(bool) LogicalAnd 160 169
SelectionMerge 172 None
BranchConditional 170 171 172
171: Label
174: 14(fvec4) Load 93(v)
175: 14(fvec4) VectorTimesScalar 174 173
Store 93(v) 175
Branch 172
172: Label
176: 11 Load 13(a)
177: 11 Load 37(b)
178: 8(s1) CompositeExtract 176 0
179: 8(s1) CompositeExtract 177 0
180: 6(int) CompositeExtract 178 0
181: 6(int) CompositeExtract 179 0
182: 72(bool) INotEqual 180 181
183: 7(float) CompositeExtract 178 1
184: 7(float) CompositeExtract 179 1
185: 72(bool) FOrdNotEqual 183 184
186: 72(bool) LogicalOr 182 185
187: 8(s1) CompositeExtract 176 1
188: 8(s1) CompositeExtract 177 1
189: 6(int) CompositeExtract 187 0
190: 6(int) CompositeExtract 188 0
191: 72(bool) INotEqual 189 190
192: 7(float) CompositeExtract 187 1
193: 7(float) CompositeExtract 188 1
194: 72(bool) FOrdNotEqual 192 193
195: 72(bool) LogicalOr 191 194
196: 72(bool) LogicalOr 186 195
197: 8(s1) CompositeExtract 176 2
198: 8(s1) CompositeExtract 177 2
199: 6(int) CompositeExtract 197 0
200: 6(int) CompositeExtract 198 0
201: 72(bool) INotEqual 199 200
202: 7(float) CompositeExtract 197 1
203: 7(float) CompositeExtract 198 1
204: 72(bool) FOrdNotEqual 202 203
205: 72(bool) LogicalOr 201 204
206: 72(bool) LogicalOr 196 205
SelectionMerge 208 None
BranchConditional 206 207 208
207: Label
210: 14(fvec4) Load 93(v)
211: 14(fvec4) VectorTimesScalar 210 209
Store 93(v) 211
Branch 208
208: Label
214: 14(fvec4) Load 93(v)
Store 213(color) 214
Return
FunctionEnd

23
Test/baseResults/spv.always-discard.frag.out Executable file → Normal file
View file

@ -11,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21 59
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "white"
Name 12 "black"
@ -110,23 +110,4 @@ Linked fragment stage:
Branch 49
49: Label
Kill
69: Label
70: 6(float) Load 36(radius)
72: 46(bool) FOrdGreaterThanEqual 70 71
SelectionMerge 74 None
BranchConditional 72 73 74
73: Label
75: 6(float) Load 36(radius)
77: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 75 76
78: 6(float) FDiv 77 27
79: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 78
80: 7(fvec4) Load 15(color)
81: 7(fvec4) CompositeConstruct 79 79 79 79
82: 7(fvec4) FSub 80 81
Store 15(color) 82
Branch 74
74: Label
83: 7(fvec4) Load 15(color)
Store 59(gl_FragColor) 83
Return
FunctionEnd

View file

@ -11,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21 38
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "white"
Name 12 "black"

View file

@ -1,132 +1,205 @@
spv.atomic.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 310
Requested GL_ARB_gl_spirv
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: func(au1; (global highp uint)
0:14 Function Parameters:
0:14 'c' (in highp atomic_uint)
0:16 Sequence
0:16 Branch: Return with expression
0:16 AtomicCounterIncrement (global highp uint)
0:16 'c' (in highp atomic_uint)
0:19 Function Definition: main( (global void)
0:19 Function Parameters:
0:21 Sequence
0:21 MemoryBarrierAtomicCounter (global void)
0:22 Function Call: func(au1; (global highp uint)
0:22 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
0:23 Sequence
0:23 move second child to first child (temp highp uint)
0:23 'val' (temp highp uint)
0:23 AtomicCounter (global highp uint)
0:23 direct index (layout(binding=0 offset=4 ) temp highp atomic_uint)
0:23 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
0:23 Constant:
0:23 2 (const int)
0:24 AtomicCounterDecrement (global highp uint)
0:24 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
0:36 Function Definition: atoms( (global void)
0:36 Function Parameters:
0:38 Sequence
0:38 Sequence
0:38 move second child to first child (temp highp int)
0:38 'origi' (temp highp int)
0:38 AtomicAdd (global highp int)
0:38 'atomi' (shared highp int)
0:38 Constant:
0:38 3 (const int)
0:39 Sequence
0:39 move second child to first child (temp highp uint)
0:39 'origu' (temp highp uint)
0:39 AtomicAnd (global highp uint)
0:39 'atomu' (shared highp uint)
0:39 'value' (shared highp uint)
0:40 move second child to first child (temp highp uint)
0:40 'origu' (temp highp uint)
0:40 AtomicOr (global highp uint)
0:40 'atomu' (shared highp uint)
0:40 Constant:
0:40 7 (const uint)
0:41 move second child to first child (temp highp uint)
0:41 'origu' (temp highp uint)
0:41 AtomicXor (global highp uint)
0:41 'atomu' (shared highp uint)
0:41 Constant:
0:41 7 (const uint)
0:42 move second child to first child (temp highp uint)
0:42 'origu' (temp highp uint)
0:42 AtomicMin (global highp uint)
0:42 'atomu' (shared highp uint)
0:42 'value' (shared highp uint)
0:43 move second child to first child (temp highp int)
0:43 'origi' (temp highp int)
0:43 AtomicMax (global highp int)
0:43 'atomi' (shared highp int)
0:43 Constant:
0:43 7 (const int)
0:44 move second child to first child (temp highp int)
0:44 'origi' (temp highp int)
0:44 AtomicExchange (global highp int)
0:44 'atomi' (shared highp int)
0:44 'origi' (temp highp int)
0:45 move second child to first child (temp highp uint)
0:45 'origu' (temp highp uint)
0:45 AtomicCompSwap (global highp uint)
0:45 'atomu' (shared highp uint)
0:45 Constant:
0:45 10 (const uint)
0:45 'value' (shared highp uint)
0:46 AtomicAdd (global highp int)
0:46 direct index (temp highp int)
0:46 n_frames_rendered: direct index for structure (layout(column_major std140 offset=16 ) buffer highp 4-component vector of int)
0:46 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 2 (const int)
0:46 Constant:
0:46 1 (const int)
0:? Linker Objects
0:? 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
0:? 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
0:? 'value' (shared highp uint)
0:? 'arrX' (global 1-element array of highp int)
0:? 'arrY' (global 1-element array of highp int)
0:? 'arrZ' (global 1-element array of highp int)
0:? 'atomi' (shared highp int)
0:? 'atomu' (shared highp uint)
0:? 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
Linked compute stage:
TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 74
Shader version: 310
Requested GL_ARB_gl_spirv
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: func(au1; (global highp uint)
0:14 Function Parameters:
0:14 'c' (in highp atomic_uint)
0:16 Sequence
0:16 Branch: Return with expression
0:16 AtomicCounterIncrement (global highp uint)
0:16 'c' (in highp atomic_uint)
0:19 Function Definition: main( (global void)
0:19 Function Parameters:
0:21 Sequence
0:21 MemoryBarrierAtomicCounter (global void)
0:22 Function Call: func(au1; (global highp uint)
0:22 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
0:23 Sequence
0:23 move second child to first child (temp highp uint)
0:23 'val' (temp highp uint)
0:23 AtomicCounter (global highp uint)
0:23 direct index (layout(binding=0 offset=4 ) temp highp atomic_uint)
0:23 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
0:23 Constant:
0:23 2 (const int)
0:24 AtomicCounterDecrement (global highp uint)
0:24 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
0:36 Function Definition: atoms( (global void)
0:36 Function Parameters:
0:38 Sequence
0:38 Sequence
0:38 move second child to first child (temp highp int)
0:38 'origi' (temp highp int)
0:38 AtomicAdd (global highp int)
0:38 'atomi' (shared highp int)
0:38 Constant:
0:38 3 (const int)
0:39 Sequence
0:39 move second child to first child (temp highp uint)
0:39 'origu' (temp highp uint)
0:39 AtomicAnd (global highp uint)
0:39 'atomu' (shared highp uint)
0:39 'value' (shared highp uint)
0:40 move second child to first child (temp highp uint)
0:40 'origu' (temp highp uint)
0:40 AtomicOr (global highp uint)
0:40 'atomu' (shared highp uint)
0:40 Constant:
0:40 7 (const uint)
0:41 move second child to first child (temp highp uint)
0:41 'origu' (temp highp uint)
0:41 AtomicXor (global highp uint)
0:41 'atomu' (shared highp uint)
0:41 Constant:
0:41 7 (const uint)
0:42 move second child to first child (temp highp uint)
0:42 'origu' (temp highp uint)
0:42 AtomicMin (global highp uint)
0:42 'atomu' (shared highp uint)
0:42 'value' (shared highp uint)
0:43 move second child to first child (temp highp int)
0:43 'origi' (temp highp int)
0:43 AtomicMax (global highp int)
0:43 'atomi' (shared highp int)
0:43 Constant:
0:43 7 (const int)
0:44 move second child to first child (temp highp int)
0:44 'origi' (temp highp int)
0:44 AtomicExchange (global highp int)
0:44 'atomi' (shared highp int)
0:44 'origi' (temp highp int)
0:45 move second child to first child (temp highp uint)
0:45 'origu' (temp highp uint)
0:45 AtomicCompSwap (global highp uint)
0:45 'atomu' (shared highp uint)
0:45 Constant:
0:45 10 (const uint)
0:45 'value' (shared highp uint)
0:46 AtomicAdd (global highp int)
0:46 direct index (temp highp int)
0:46 n_frames_rendered: direct index for structure (layout(column_major std140 offset=16 ) buffer highp 4-component vector of int)
0:46 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 2 (const int)
0:46 Constant:
0:46 1 (const int)
0:? Linker Objects
0:? 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
0:? 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
0:? 'value' (shared highp uint)
0:? 'arrX' (global 1-element array of highp int)
0:? 'arrY' (global 1-element array of highp int)
0:? 'arrZ' (global 1-element array of highp int)
0:? 'atomi' (shared highp int)
0:? 'atomu' (shared highp uint)
0:? 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 1 1 1
Source ESSL 310
Name 4 "main"
Name 10 "func(au1;"
Name 9 "c"
Name 12 "atoms("
Name 20 "counter"
Name 21 "param"
Name 24 "val"
Name 28 "countArr"
Name 35 "origi"
Name 37 "atomi"
Name 40 "origu"
Name 42 "atomu"
Name 44 "value"
Name 61 "dataSSB"
MemberName 61(dataSSB) 0 "f"
MemberName 61(dataSSB) 1 "n_frames_rendered"
Name 63 "result"
Name 71 "arrX"
Name 72 "arrY"
Name 73 "arrZ"
Decorate 20(counter) Binding 0
Decorate 28(countArr) Binding 0
MemberDecorate 61(dataSSB) 0 Offset 0
MemberDecorate 61(dataSSB) 1 Offset 16
Decorate 61(dataSSB) BufferBlock
Decorate 63(result) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1
15: 6(int) Constant 0
18: 6(int) Constant 1024
19: TypePointer AtomicCounter 6(int)
20(counter): 19(ptr) Variable AtomicCounter
25: 6(int) Constant 4
26: TypeArray 6(int) 25
27: TypePointer AtomicCounter 26
28(countArr): 27(ptr) Variable AtomicCounter
29: TypeInt 32 1
30: 29(int) Constant 2
34: TypePointer Function 29(int)
36: TypePointer Workgroup 29(int)
37(atomi): 36(ptr) Variable Workgroup
38: 29(int) Constant 3
41: TypePointer Workgroup 6(int)
42(atomu): 41(ptr) Variable Workgroup
43: TypePointer UniformConstant 6(int)
44(value): 43(ptr) Variable UniformConstant
47: 6(int) Constant 7
52: 29(int) Constant 7
56: 6(int) Constant 10
59: TypeFloat 32
60: TypeVector 29(int) 4
61(dataSSB): TypeStruct 59(float) 60(ivec4)
62: TypePointer Uniform 61(dataSSB)
63(result): 62(ptr) Variable Uniform
64: 29(int) Constant 1
65: 6(int) Constant 2
66: TypePointer Uniform 29(int)
69: TypeArray 29(int) 14
70: TypePointer Private 69
71(arrX): 70(ptr) Variable Private
72(arrY): 70(ptr) Variable Private
73(arrZ): 70(ptr) Variable Private
4(main): 2 Function None 3
5: Label
21(param): 7(ptr) Variable Function
24(val): 7(ptr) Variable Function
MemoryBarrier 14 18
22: 6(int) Load 20(counter)
Store 21(param) 22
23: 6(int) FunctionCall 10(func(au1;) 21(param)
31: 19(ptr) AccessChain 28(countArr) 30
32: 6(int) AtomicLoad 31 14 15
Store 24(val) 32
33: 6(int) AtomicIDecrement 20(counter) 14 15
Return
FunctionEnd
10(func(au1;): 6(int) Function None 8
9(c): 7(ptr) FunctionParameter
11: Label
16: 6(int) AtomicIIncrement 9(c) 14 15
ReturnValue 16
FunctionEnd
12(atoms(): 2 Function None 3
13: Label
35(origi): 34(ptr) Variable Function
40(origu): 7(ptr) Variable Function
39: 29(int) AtomicIAdd 37(atomi) 14 15 38
Store 35(origi) 39
45: 6(int) Load 44(value)
46: 6(int) AtomicAnd 42(atomu) 14 15 45
Store 40(origu) 46
48: 6(int) AtomicOr 42(atomu) 14 15 47
Store 40(origu) 48
49: 6(int) AtomicXor 42(atomu) 14 15 47
Store 40(origu) 49
50: 6(int) Load 44(value)
51: 6(int) AtomicUMin 42(atomu) 14 15 50
Store 40(origu) 51
53: 29(int) AtomicSMax 37(atomi) 14 15 52
Store 35(origi) 53
54: 29(int) Load 35(origi)
55: 29(int) AtomicExchange 37(atomi) 14 15 54
Store 35(origi) 55
57: 6(int) Load 44(value)
58: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56
Store 40(origu) 58
67: 66(ptr) AccessChain 63(result) 64 65
68: 29(int) AtomicIAdd 67 14 15 64
Return
FunctionEnd

View file

@ -12,8 +12,8 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 154
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 14 26 37 48 89 98 107 116 122 130 139 148 154
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "idata"
@ -32,6 +32,14 @@ Linked fragment stage:
Name 139 "u3"
Name 148 "u4"
Name 154 "fragColor"
Decorate 89(i1) Flat
Decorate 98(i2) Flat
Decorate 107(i3) Flat
Decorate 116(i4) Flat
Decorate 122(u1) Flat
Decorate 130(u2) Flat
Decorate 139(u3) Flat
Decorate 148(u4) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -40,22 +48,22 @@ Linked fragment stage:
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
13: TypePointer Input 12(float)
14(f1): 13(ptr) Variable Input
17: TypeInt 32 0
18: 17(int) Constant 0
19: TypePointer Function 6(int)
24: TypeVector 12(float) 2
25: TypePointer UniformConstant 24(fvec2)
26(f2): 25(ptr) Variable UniformConstant
25: TypePointer Input 24(fvec2)
26(f2): 25(ptr) Variable Input
28: TypeVector 6(int) 2
35: TypeVector 12(float) 3
36: TypePointer UniformConstant 35(fvec3)
37(f3): 36(ptr) Variable UniformConstant
36: TypePointer Input 35(fvec3)
37(f3): 36(ptr) Variable Input
39: TypeVector 6(int) 3
46: TypeVector 12(float) 4
47: TypePointer UniformConstant 46(fvec4)
48(f4): 47(ptr) Variable UniformConstant
47: TypePointer Input 46(fvec4)
48(f4): 47(ptr) Variable Input
53: TypeVector 17(int) 4
54: TypePointer Function 53(ivec4)
56: 53(ivec4) ConstantComposite 18 18 18 18
@ -65,23 +73,23 @@ Linked fragment stage:
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
88: TypePointer Input 6(int)
89(i1): 88(ptr) Variable Input
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
97: TypePointer Input 28(ivec2)
98(i2): 97(ptr) Variable Input
106: TypePointer Input 39(ivec3)
107(i3): 106(ptr) Variable Input
115: TypePointer Input 7(ivec4)
116(i4): 115(ptr) Variable Input
121: TypePointer Input 17(int)
122(u1): 121(ptr) Variable Input
129: TypePointer Input 65(ivec2)
130(u2): 129(ptr) Variable Input
138: TypePointer Input 73(ivec3)
139(u3): 138(ptr) Variable Input
147: TypePointer Input 53(ivec4)
148(u4): 147(ptr) Variable Input
153: TypePointer Output 46(fvec4)
154(fragColor): 153(ptr) Variable Output
159: TypeBool

View file

@ -10,83 +10,81 @@ Linked vertex stage:
// Id's are bound by 49
Capability Shader
Capability ClipDistance
Capability CullDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 23 47 48
EntryPoint Vertex 4 "main" 24
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
Name 22 "gl_PerVertex"
MemberName 22(gl_PerVertex) 0 "gl_Position"
MemberName 22(gl_PerVertex) 1 "gl_PointSize"
MemberName 22(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 22(gl_PerVertex) 3 "gl_CullDistance"
Name 24 ""
Name 29 "ubname"
MemberName 29(ubname) 0 "b"
Name 31 "ubinst"
Name 32 "param"
MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 22(gl_PerVertex) Block
MemberDecorate 29(ubname) 0 Offset 0
Decorate 29(ubname) Block
Decorate 31(ubinst) DescriptorSet 0
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
17: TypeFloat 32
18: TypeVector 17(float) 4
19: TypeInt 32 0
20: 19(int) Constant 1
21: TypeArray 17(float) 20
22(gl_PerVertex): TypeStruct 18(fvec4) 17(float) 21 21
23: TypePointer Output 22(gl_PerVertex)
24: 23(ptr) Variable Output
25: TypeInt 32 1
26: 25(int) Constant 0
27: TypePointer Function 18(fvec4)
29(ubname): TypeStruct 19(int)
30: TypePointer Uniform 29(ubname)
31(ubinst): 30(ptr) Variable Uniform
33: TypePointer Uniform 19(int)
36: 19(int) Constant 0
41: 17(float) Constant 0
42: 18(fvec4) ConstantComposite 41 41 41 41
44: 17(float) Constant 1065353216
45: 18(fvec4) ConstantComposite 44 44 44 44
47: TypePointer Output 18(fvec4)
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
28: 27(ptr) Variable Function
32(param): 7(ptr) Variable Function
34: 33(ptr) AccessChain 31(ubinst) 26
35: 19(int) Load 34
37: 6(bool) INotEqual 35 36
Store 32(param) 37
38: 6(bool) FunctionCall 10(foo(b1;) 32(param)
SelectionMerge 40 None
BranchConditional 38 39 43
39: Label
Store 28 42
Branch 40
43: Label
Store 28 45
Branch 40
40: Label
46: 18(fvec4) Load 28
48: 47(ptr) AccessChain 24 26
Store 48 46
Return
FunctionEnd
10(foo(b1;): 6(bool) Function None 8

View file

@ -0,0 +1,169 @@
spv.boolInBlock.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 107
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 75
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 14 "foo(vb4;vb2;"
Name 12 "paramb4"
Name 13 "paramb2"
Name 17 "b1"
Name 24 "Buffer"
MemberName 24(Buffer) 0 "b2"
Name 26 ""
Name 39 "Uniform"
MemberName 39(Uniform) 0 "b4"
Name 41 ""
Name 62 "param"
Name 67 "param"
Name 75 "fragColor"
MemberDecorate 24(Buffer) 0 Offset 0
Decorate 24(Buffer) BufferBlock
Decorate 26 DescriptorSet 0
Decorate 26 Binding 1
MemberDecorate 39(Uniform) 0 Offset 0
Decorate 39(Uniform) Block
Decorate 41 DescriptorSet 0
Decorate 41 Binding 0
Decorate 75(fragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeBool
7: TypeVector 6(bool) 4
8: TypePointer Function 7(bvec4)
9: TypeVector 6(bool) 2
10: TypePointer Function 9(bvec2)
11: TypeFunction 2 8(ptr) 10(ptr)
16: TypePointer Function 6(bool)
22: TypeInt 32 0
23: TypeVector 22(int) 2
24(Buffer): TypeStruct 23(ivec2)
25: TypePointer Uniform 24(Buffer)
26: 25(ptr) Variable Uniform
27: TypeInt 32 1
28: 27(int) Constant 0
29: 6(bool) ConstantFalse
30: 9(bvec2) ConstantComposite 29 29
31: 22(int) Constant 0
32: 23(ivec2) ConstantComposite 31 31
33: 22(int) Constant 1
34: 23(ivec2) ConstantComposite 33 33
36: TypePointer Uniform 23(ivec2)
38: TypeVector 22(int) 4
39(Uniform): TypeStruct 38(ivec4)
40: TypePointer Uniform 39(Uniform)
41: 40(ptr) Variable Uniform
42: TypePointer Uniform 38(ivec4)
65: 38(ivec4) ConstantComposite 31 31 31 31
72: TypeFloat 32
73: TypeVector 72(float) 4
74: TypePointer Output 73(fvec4)
75(fragColor): 74(ptr) Variable Output
87: 72(float) Constant 0
88: 72(float) Constant 1065353216
4(main): 2 Function None 3
5: Label
62(param): 8(ptr) Variable Function
67(param): 10(ptr) Variable Function
35: 23(ivec2) Select 30 34 32
37: 36(ptr) AccessChain 26 28
Store 37 35
43: 42(ptr) AccessChain 41 28
44: 38(ivec4) Load 43
45: 22(int) CompositeExtract 44 2
46: 6(bool) INotEqual 45 31
SelectionMerge 48 None
BranchConditional 46 47 48
47: Label
49: 42(ptr) AccessChain 41 28
50: 38(ivec4) Load 49
51: 22(int) CompositeExtract 50 0
52: 6(bool) INotEqual 51 31
53: 9(bvec2) CompositeConstruct 52 52
54: 23(ivec2) Select 53 34 32
55: 36(ptr) AccessChain 26 28
Store 55 54
Branch 48
48: Label
56: 36(ptr) AccessChain 26 28
57: 23(ivec2) Load 56
58: 22(int) CompositeExtract 57 0
59: 6(bool) INotEqual 58 31
SelectionMerge 61 None
BranchConditional 59 60 61
60: Label
63: 42(ptr) AccessChain 41 28
64: 38(ivec4) Load 63
66: 7(bvec4) INotEqual 64 65
Store 62(param) 66
68: 2 FunctionCall 14(foo(vb4;vb2;) 62(param) 67(param)
69: 9(bvec2) Load 67(param)
70: 23(ivec2) Select 69 34 32
71: 36(ptr) AccessChain 26 28
Store 71 70
Branch 61
61: Label
76: 42(ptr) AccessChain 41 28
77: 38(ivec4) Load 76
78: 22(int) CompositeExtract 77 0
79: 6(bool) INotEqual 78 31
SelectionMerge 81 None
BranchConditional 79 80 81
80: Label
82: 42(ptr) AccessChain 41 28
83: 38(ivec4) Load 82
84: 22(int) CompositeExtract 83 1
85: 6(bool) INotEqual 84 31
Branch 81
81: Label
86: 6(bool) Phi 79 61 85 80
89: 72(float) Select 86 88 87
90: 73(fvec4) CompositeConstruct 89 89 89 89
Store 75(fragColor) 90
91: 42(ptr) AccessChain 41 28
92: 38(ivec4) Load 91
93: 22(int) CompositeExtract 92 0
94: 6(bool) INotEqual 93 31
95: 6(bool) LogicalNot 94
SelectionMerge 97 None
BranchConditional 95 96 97
96: Label
98: 42(ptr) AccessChain 41 28
99: 38(ivec4) Load 98
100: 22(int) CompositeExtract 99 1
101: 6(bool) INotEqual 100 31
Branch 97
97: Label
102: 6(bool) Phi 94 81 101 96
103: 72(float) Select 102 88 87
104: 73(fvec4) CompositeConstruct 103 103 103 103
105: 73(fvec4) Load 75(fragColor)
106: 73(fvec4) FSub 105 104
Store 75(fragColor) 106
Return
FunctionEnd
14(foo(vb4;vb2;): 2 Function None 11
12(paramb4): 8(ptr) FunctionParameter
13(paramb2): 10(ptr) FunctionParameter
15: Label
17(b1): 16(ptr) Variable Function
18: 7(bvec4) Load 12(paramb4)
19: 6(bool) CompositeExtract 18 2
Store 17(b1) 19
20: 6(bool) Load 17(b1)
21: 9(bvec2) CompositeConstruct 20 20
Store 13(paramb2) 21
Return
FunctionEnd

View file

@ -0,0 +1,71 @@
spv.branch-return.vert
Warning, version 310 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 38
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 8 20
Source ESSL 310
Name 4 "main"
Name 8 "gl_InstanceIndex"
Name 18 "gl_PerVertex"
MemberName 18(gl_PerVertex) 0 "gl_Position"
MemberName 18(gl_PerVertex) 1 "gl_PointSize"
Name 20 ""
Decorate 8(gl_InstanceIndex) BuiltIn InstanceIndex
MemberDecorate 18(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 18(gl_PerVertex) 1 BuiltIn PointSize
Decorate 18(gl_PerVertex) Block
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Input 6(int)
8(gl_InstanceIndex): 7(ptr) Variable Input
16: TypeFloat 32
17: TypeVector 16(float) 4
18(gl_PerVertex): TypeStruct 17(fvec4) 16(float)
19: TypePointer Output 18(gl_PerVertex)
20: 19(ptr) Variable Output
21: 6(int) Constant 0
22: 16(float) Constant 0
23: 17(fvec4) ConstantComposite 22 22 22 22
24: TypePointer Output 17(fvec4)
30: 16(float) Constant 1039918957
31: TypeInt 32 0
32: 31(int) Constant 0
33: TypePointer Output 16(float)
4(main): 2 Function None 3
5: Label
9: 6(int) Load 8(gl_InstanceIndex)
SelectionMerge 14 None
Switch 9 14
case 0: 10
case 1: 11
case 2: 12
case 3: 13
10: Label
Return
11: Label
25: 24(ptr) AccessChain 20 21
Store 25 23
Branch 14
12: Label
Return
13: Label
Return
14: Label
34: 33(ptr) AccessChain 20 21 32
35: 16(float) Load 34
36: 16(float) FAdd 35 30
37: 33(ptr) AccessChain 20 21 32
Store 37 36
Return
FunctionEnd

View file

@ -13,13 +13,14 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 34
ExecutionMode 4 OriginLowerLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 400
Name 4 "main"
Name 9 "v"
Name 13 "tex"
Name 17 "coord"
Name 34 "gl_FragColor"
Decorate 13(tex) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32

View file

@ -11,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 39 53 157 322 446 448 450 452 454
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 8 "b"
Name 11 "u_i"
@ -62,13 +62,13 @@ Linked fragment stage:
6: TypeBool
7: TypePointer Function 6(bool)
9: TypeInt 32 1
10: TypePointer UniformConstant 9(int)
11(u_i): 10(ptr) Variable UniformConstant
10: TypePointer Private 9(int)
11(u_i): 10(ptr) Variable Private
13: TypeInt 32 0
14: 13(int) Constant 0
16: TypeFloat 32
17: TypePointer UniformConstant 16(float)
18(u_f): 17(ptr) Variable UniformConstant
17: TypePointer Private 16(float)
18(u_f): 17(ptr) Variable Private
20: 16(float) Constant 0
23: TypeVector 6(bool) 2
24: TypePointer Function 23(bvec2)
@ -86,22 +86,22 @@ Linked fragment stage:
66: TypeVector 9(int) 2
67: TypePointer Function 66(ivec2)
69: TypeVector 16(float) 2
70: TypePointer UniformConstant 69(fvec2)
71(u_f2): 70(ptr) Variable UniformConstant
70: TypePointer Private 69(fvec2)
71(u_f2): 70(ptr) Variable Private
75: 66(ivec2) ConstantComposite 62 62
76: 66(ivec2) ConstantComposite 63 63
79: TypeVector 9(int) 3
80: TypePointer Function 79(ivec3)
82: TypeVector 16(float) 3
83: TypePointer UniformConstant 82(fvec3)
84(u_f3): 83(ptr) Variable UniformConstant
83: TypePointer Private 82(fvec3)
84(u_f3): 83(ptr) Variable Private
88: 79(ivec3) ConstantComposite 62 62 62
89: 79(ivec3) ConstantComposite 63 63 63
92: TypeVector 9(int) 4
93: TypePointer Function 92(ivec4)
95: TypeVector 16(float) 4
96: TypePointer UniformConstant 95(fvec4)
97(u_f4): 96(ptr) Variable UniformConstant
96: TypePointer Private 95(fvec4)
97(u_f4): 96(ptr) Variable Private
101: 92(ivec4) ConstantComposite 62 62 62 62
102: 92(ivec4) ConstantComposite 63 63 63 63
105: TypePointer Function 16(float)
@ -124,24 +124,24 @@ Linked fragment stage:
322(gl_FragColor): 321(ptr) Variable Output
367: 13(int) Constant 2
380: 13(int) Constant 3
427: TypePointer UniformConstant 6(bool)
428(u_b): 427(ptr) Variable UniformConstant
429: TypePointer UniformConstant 23(bvec2)
430(u_b2): 429(ptr) Variable UniformConstant
431: TypePointer UniformConstant 31(bvec3)
432(u_b3): 431(ptr) Variable UniformConstant
433: TypePointer UniformConstant 43(bvec4)
434(u_b4): 433(ptr) Variable UniformConstant
435: TypePointer UniformConstant 66(ivec2)
436(u_i2): 435(ptr) Variable UniformConstant
437: TypePointer UniformConstant 79(ivec3)
438(u_i3): 437(ptr) Variable UniformConstant
439: TypePointer UniformConstant 92(ivec4)
440(u_i4): 439(ptr) Variable UniformConstant
441(i_b): 427(ptr) Variable UniformConstant
442(i_b2): 429(ptr) Variable UniformConstant
443(i_b3): 431(ptr) Variable UniformConstant
444(i_b4): 433(ptr) Variable UniformConstant
427: TypePointer Private 6(bool)
428(u_b): 427(ptr) Variable Private
429: TypePointer Private 23(bvec2)
430(u_b2): 429(ptr) Variable Private
431: TypePointer Private 31(bvec3)
432(u_b3): 431(ptr) Variable Private
433: TypePointer Private 43(bvec4)
434(u_b4): 433(ptr) Variable Private
435: TypePointer Private 66(ivec2)
436(u_i2): 435(ptr) Variable Private
437: TypePointer Private 79(ivec3)
438(u_i3): 437(ptr) Variable Private
439: TypePointer Private 92(ivec4)
440(u_i4): 439(ptr) Variable Private
441(i_b): 427(ptr) Variable Private
442(i_b2): 429(ptr) Variable Private
443(i_b3): 431(ptr) Variable Private
444(i_b4): 433(ptr) Variable Private
445: TypePointer Input 66(ivec2)
446(i_i2): 445(ptr) Variable Input
447: TypePointer Input 79(ivec3)

View file

@ -1,6 +1,4 @@
spv.dataOut.frag
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
Linked fragment stage:
@ -13,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 16
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 12 "gl_FragData"
Name 16 "Color"

View file

@ -1,44 +1,51 @@
spv.dataOutIndirect.frag
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 22
// Id's are bound by 26
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 18
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
EntryPoint Fragment 4 "main" 12 22
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 12 "gl_FragData"
Name 15 "i"
Name 18 "Color"
Name 12 "fcolor"
Name 14 "b"
MemberName 14(b) 0 "i"
Name 16 "bName"
Name 22 "Color"
MemberDecorate 14(b) 0 Offset 0
Decorate 14(b) Block
Decorate 16(bName) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 32
9: 8(int) Constant 4
10: TypeArray 7(fvec4) 9
11: TypePointer Output 10
12(gl_FragData): 11(ptr) Variable Output
12(fcolor): 11(ptr) Variable Output
13: TypeInt 32 1
14: TypePointer UniformConstant 13(int)
15(i): 14(ptr) Variable UniformConstant
17: TypePointer Input 7(fvec4)
18(Color): 17(ptr) Variable Input
20: TypePointer Output 7(fvec4)
14(b): TypeStruct 13(int)
15: TypePointer Uniform 14(b)
16(bName): 15(ptr) Variable Uniform
17: 13(int) Constant 0
18: TypePointer Uniform 13(int)
21: TypePointer Input 7(fvec4)
22(Color): 21(ptr) Variable Input
24: TypePointer Output 7(fvec4)
4(main): 2 Function None 3
5: Label
16: 13(int) Load 15(i)
19: 7(fvec4) Load 18(Color)
21: 20(ptr) AccessChain 12(gl_FragData) 16
Store 21 19
19: 18(ptr) AccessChain 16(bName) 17
20: 13(int) Load 19
23: 7(fvec4) Load 22(Color)
25: 24(ptr) AccessChain 12(fcolor) 20
Store 25 23
Return
FunctionEnd

View file

@ -1,6 +1,5 @@
spv.dataOutIndirect.vert
WARNING: 0:3: attribute deprecated in version 130; may be removed in future release
WARNING: 0:4: varying deprecated in version 130; may be removed in future release
Linked vertex stage:
@ -13,59 +12,59 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 23 26 32 37
Source GLSL 130
EntryPoint Vertex 4 "main" 25 28 34
Source GLSL 140
Name 4 "main"
Name 8 "i"
Name 23 "colorOut"
Name 26 "color"
Name 32 "gl_Position"
Name 37 "gl_VertexID"
Decorate 32(gl_Position) BuiltIn Position
Decorate 37(gl_VertexID) BuiltIn VertexId
Name 25 "colorOut"
Name 28 "color"
Name 34 "gl_Position"
Decorate 34(gl_Position) BuiltIn Position
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 1
14: 6(int) Constant 5
15: TypeBool
17: TypeFloat 32
18: TypeVector 17(float) 4
19: TypeInt 32 0
20: 19(int) Constant 6
21: TypeArray 18(fvec4) 20
22: TypePointer Output 21
23(colorOut): 22(ptr) Variable Output
25: TypePointer Input 18(fvec4)
26(color): 25(ptr) Variable Input
28: TypePointer Output 18(fvec4)
32(gl_Position): 28(ptr) Variable Output
33: 6(int) Constant 2
36: TypePointer Input 6(int)
37(gl_VertexID): 36(ptr) Variable Input
16: 6(int) Constant 5
17: TypeBool
19: TypeFloat 32
20: TypeVector 19(float) 4
21: TypeInt 32 0
22: 21(int) Constant 6
23: TypeArray 20(fvec4) 22
24: TypePointer Output 23
25(colorOut): 24(ptr) Variable Output
27: TypePointer Input 20(fvec4)
28(color): 27(ptr) Variable Input
30: TypePointer Output 20(fvec4)
34(gl_Position): 30(ptr) Variable Output
35: 6(int) Constant 2
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
13: 6(int) Load 8(i)
16: 15(bool) SLessThan 13 14
LoopMerge 11 10 None
BranchConditional 16 12 11
12: Label
24: 6(int) Load 8(i)
27: 18(fvec4) Load 26(color)
29: 28(ptr) AccessChain 23(colorOut) 24
Store 29 27
30: 6(int) Load 8(i)
31: 6(int) IAdd 30 9
Store 8(i) 31
LoopMerge 12 13 None
Branch 14
14: Label
15: 6(int) Load 8(i)
18: 17(bool) SLessThan 15 16
BranchConditional 18 11 12
11: Label
26: 6(int) Load 8(i)
29: 20(fvec4) Load 28(color)
31: 30(ptr) AccessChain 25(colorOut) 26
Store 31 29
Branch 13
13: Label
32: 6(int) Load 8(i)
33: 6(int) IAdd 32 9
Store 8(i) 33
Branch 10
11: Label
34: 28(ptr) AccessChain 23(colorOut) 33
35: 18(fvec4) Load 34
Store 32(gl_Position) 35
12: Label
36: 30(ptr) AccessChain 25(colorOut) 35
37: 20(fvec4) Load 36
Store 34(gl_Position) 37
Return
FunctionEnd

View file

@ -11,7 +11,7 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 149
ExecutionMode 4 OriginLowerLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 330
Name 4 "main"
Name 9 "v1"
@ -31,6 +31,7 @@ Linked fragment stage:
MemberName 134(str) 2 "c"
Name 136 "t"
Name 149 "gl_FragColor"
Decorate 111(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32

View file

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

View file

@ -11,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21 59
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "white"
Name 12 "black"

View file

@ -1,60 +1,46 @@
spv.do-simple.vert
Warning, version 310 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 29
// Id's are bound by 21
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 27 28
Source ESSL 300
EntryPoint Vertex 4 "main"
Source ESSL 310
Name 4 "main"
Name 8 "i"
Name 27 "gl_VertexID"
Name 28 "gl_InstanceID"
Decorate 27(gl_VertexID) BuiltIn VertexId
Decorate 28(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
14: TypeBool
15: 14(bool) ConstantTrue
19: 6(int) Constant 10
23: 6(int) Constant 1
25: 14(bool) ConstantFalse
26: TypePointer Input 6(int)
27(gl_VertexID): 26(ptr) Variable Input
28(gl_InstanceID): 26(ptr) Variable Input
15: 6(int) Constant 1
18: 6(int) Constant 10
19: TypeBool
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
13: 14(bool) Phi 15 5 25 12
LoopMerge 11 10 None
Branch 16
16: Label
SelectionMerge 12 None
BranchConditional 13 12 17
17: Label
18: 6(int) Load 8(i)
20: 14(bool) SLessThan 18 19
SelectionMerge 21 None
BranchConditional 20 21 11
21: Label
Branch 12
12: Label
22: 6(int) Load 8(i)
24: 6(int) IAdd 22 23
Store 8(i) 24
Branch 10
LoopMerge 12 13 None
Branch 11
11: Label
14: 6(int) Load 8(i)
16: 6(int) IAdd 14 15
Store 8(i) 16
Branch 13
13: Label
17: 6(int) Load 8(i)
20: 19(bool) SLessThan 17 18
BranchConditional 20 10 12
12: Label
Return
FunctionEnd

126
Test/baseResults/spv.do-while-continue-break.vert.out Executable file → Normal file
View file

@ -1,104 +1,84 @@
spv.do-while-continue-break.vert
Warning, version 310 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 51
// Id's are bound by 43
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 49 50
Source ESSL 300
EntryPoint Vertex 4 "main"
Source ESSL 310
Name 4 "main"
Name 8 "i"
Name 24 "A"
Name 30 "B"
Name 33 "C"
Name 39 "D"
Name 42 "E"
Name 44 "F"
Name 46 "G"
Name 49 "gl_VertexID"
Name 50 "gl_InstanceID"
Decorate 49(gl_VertexID) BuiltIn VertexId
Decorate 50(gl_InstanceID) BuiltIn InstanceId
Name 14 "A"
Name 21 "B"
Name 24 "C"
Name 30 "D"
Name 33 "E"
Name 35 "F"
Name 41 "G"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
14: TypeBool
15: 14(bool) ConstantTrue
19: 6(int) Constant 1
21: 6(int) Constant 19
26: 6(int) Constant 2
31: 14(bool) ConstantFalse
35: 6(int) Constant 5
40: 6(int) Constant 3
43: 6(int) Constant 42
45: 6(int) Constant 99
47: 6(int) Constant 12
48: TypePointer Input 6(int)
49(gl_VertexID): 48(ptr) Variable Input
50(gl_InstanceID): 48(ptr) Variable Input
16: 6(int) Constant 2
17: TypeBool
22: 6(int) Constant 1
26: 6(int) Constant 5
31: 6(int) Constant 3
34: 6(int) Constant 42
36: 6(int) Constant 99
39: 6(int) Constant 19
42: 6(int) Constant 12
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
24(A): 7(ptr) Variable Function
30(B): 7(ptr) Variable Function
33(C): 7(ptr) Variable Function
39(D): 7(ptr) Variable Function
42(E): 7(ptr) Variable Function
44(F): 7(ptr) Variable Function
46(G): 7(ptr) Variable Function
14(A): 7(ptr) Variable Function
21(B): 7(ptr) Variable Function
24(C): 7(ptr) Variable Function
30(D): 7(ptr) Variable Function
33(E): 7(ptr) Variable Function
35(F): 7(ptr) Variable Function
41(G): 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
13: 14(bool) Phi 15 5 31 28 31 38
LoopMerge 11 10 None
Branch 16
16: Label
SelectionMerge 12 None
BranchConditional 13 12 17
17: Label
18: 6(int) Load 8(i)
20: 6(int) IAdd 18 19
Store 8(i) 20
22: 14(bool) SLessThan 20 21
SelectionMerge 23 None
BranchConditional 22 23 11
23: Label
Branch 12
12: Label
Store 24(A) 9
LoopMerge 12 13 None
Branch 11
11: Label
Store 14(A) 9
15: 6(int) Load 8(i)
18: 17(bool) IEqual 15 16
SelectionMerge 20 None
BranchConditional 18 19 20
19: Label
Store 21(B) 22
Branch 13
20: Label
25: 6(int) Load 8(i)
27: 14(bool) IEqual 25 26
27: 17(bool) IEqual 25 26
SelectionMerge 29 None
BranchConditional 27 28 29
28: Label
Store 30(B) 19
Branch 10
32: Label
Store 33(C) 26
Branch 29
Store 30(D) 31
Branch 12
29: Label
34: 6(int) Load 8(i)
36: 14(bool) IEqual 34 35
SelectionMerge 38 None
BranchConditional 36 37 38
37: Label
Store 39(D) 40
Branch 11
41: Label
Store 42(E) 43
Branch 38
38: Label
Store 44(F) 45
Branch 10
11: Label
Store 46(G) 47
Store 35(F) 36
Branch 13
13: Label
37: 6(int) Load 8(i)
38: 6(int) IAdd 37 22
Store 8(i) 38
40: 17(bool) SLessThan 38 39
BranchConditional 40 10 12
12: Label
Store 41(G) 42
Return
FunctionEnd

View file

@ -5,20 +5,20 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 40
// Id's are bound by 34
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 38
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
EntryPoint Fragment 4 "main" 11 17 27 32
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "color"
Name 11 "BaseColor"
Name 17 "bigColor"
Name 27 "d"
Name 32 "bigColor"
Name 38 "gl_FragColor"
Name 32 "gl_FragColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -26,18 +26,15 @@ Linked fragment stage:
8: TypePointer Function 7(fvec4)
10: TypePointer Input 7(fvec4)
11(BaseColor): 10(ptr) Variable Input
17: TypeBool
18: 17(bool) ConstantTrue
17(bigColor): 10(ptr) Variable Input
21: TypeInt 32 0
22: 21(int) Constant 0
23: TypePointer Function 6(float)
26: TypePointer UniformConstant 6(float)
27(d): 26(ptr) Variable UniformConstant
31: TypePointer UniformConstant 7(fvec4)
32(bigColor): 31(ptr) Variable UniformConstant
36: 17(bool) ConstantFalse
37: TypePointer Output 7(fvec4)
38(gl_FragColor): 37(ptr) Variable Output
26: TypePointer Input 6(float)
27(d): 26(ptr) Variable Input
29: TypeBool
31: TypePointer Output 7(fvec4)
32(gl_FragColor): 31(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(color): 8(ptr) Variable Function
@ -45,29 +42,22 @@ Linked fragment stage:
Store 9(color) 12
Branch 13
13: Label
16: 17(bool) Phi 18 5 36 15
LoopMerge 14 13 None
Branch 19
19: Label
SelectionMerge 15 None
BranchConditional 16 15 20
20: Label
24: 23(ptr) AccessChain 9(color) 22
25: 6(float) Load 24
28: 6(float) Load 27(d)
29: 17(bool) FOrdLessThan 25 28
SelectionMerge 30 None
BranchConditional 29 30 14
30: Label
Branch 15
15: Label
33: 7(fvec4) Load 32(bigColor)
34: 7(fvec4) Load 9(color)
35: 7(fvec4) FAdd 34 33
Store 9(color) 35
Branch 13
LoopMerge 15 16 None
Branch 14
14: Label
39: 7(fvec4) Load 9(color)
Store 38(gl_FragColor) 39
18: 7(fvec4) Load 17(bigColor)
19: 7(fvec4) Load 9(color)
20: 7(fvec4) FAdd 19 18
Store 9(color) 20
Branch 16
16: Label
24: 23(ptr) AccessChain 9(color) 22
25: 6(float) Load 24
28: 6(float) Load 27(d)
30: 29(bool) FOrdLessThan 25 28
BranchConditional 30 13 15
15: Label
33: 7(fvec4) Load 9(color)
Store 32(gl_FragColor) 33
Return
FunctionEnd

View file

@ -7,9 +7,10 @@ Linked compute stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 62
// Id's are bound by 60
Capability Shader
Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 26 33
@ -26,12 +27,15 @@ Linked compute stage:
Name 33 "gl_LocalInvocationID"
Name 49 "aa"
Name 54 "globalCoef"
Name 58 "roll"
Name 61 "destTex"
Decorate 8(bufName) GLSLShared
Name 59 "destTex"
MemberDecorate 8(bufName) 0 Offset 0
MemberDecorate 8(bufName) 1 Offset 8
Decorate 8(bufName) BufferBlock
Decorate 10(bufInst) DescriptorSet 0
Decorate 26(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
Decorate 33(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 59(destTex) DescriptorSet 0
Decorate 59(destTex) NonReadable
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -66,11 +70,9 @@ Linked compute stage:
53: 47(fvec4) ConstantComposite 50 51 52 50
55: 7(float) Constant 0 1072693248
56: 7(float) Constant 3229815407 1074340298
57: TypePointer UniformConstant 7(float)
58(roll): 57(ptr) Variable UniformConstant
59: TypeImage 6(float) 2D nonsampled format:Unknown
60: TypePointer UniformConstant 59
61(destTex): 60(ptr) Variable UniformConstant
57: TypeImage 6(float) 2D nonsampled format:Unknown
58: TypePointer UniformConstant 57
59(destTex): 58(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
22(storePos): 21(ptr) Variable Function

View file

@ -5,29 +5,29 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 112
// Id's are bound by 110
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 18 107
ExecutionMode 4 OriginLowerLeft
Source GLSL 110
EntryPoint Fragment 4 "main" 11 14 17 19 25 30 39 51 63 105 109
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "color"
Name 11 "BaseColor"
Name 13 "color2"
Name 15 "otherColor"
Name 18 "c"
Name 21 "d"
Name 27 "bigColor"
Name 32 "smallColor"
Name 41 "minimum"
Name 53 "threshhold"
Name 65 "threshhold2"
Name 79 "b"
Name 107 "gl_FragColor"
Name 111 "threshhold3"
Name 14 "otherColor"
Name 17 "c"
Name 19 "d"
Name 25 "bigColor"
Name 30 "smallColor"
Name 39 "minimum"
Name 51 "threshhold"
Name 63 "threshhold2"
Name 77 "b"
Name 105 "gl_FragColor"
Name 109 "threshhold3"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -35,141 +35,139 @@ Linked fragment stage:
8: TypePointer Function 7(fvec4)
10: TypePointer Input 7(fvec4)
11(BaseColor): 10(ptr) Variable Input
14: TypePointer UniformConstant 7(fvec4)
15(otherColor): 14(ptr) Variable UniformConstant
17: TypePointer Input 6(float)
18(c): 17(ptr) Variable Input
20: TypePointer UniformConstant 6(float)
21(d): 20(ptr) Variable UniformConstant
23: TypeBool
27(bigColor): 14(ptr) Variable UniformConstant
32(smallColor): 14(ptr) Variable UniformConstant
36: TypeInt 32 0
37: 36(int) Constant 2
38: TypePointer Function 6(float)
41(minimum): 20(ptr) Variable UniformConstant
49: 6(float) Constant 1065353216
53(threshhold): 20(ptr) Variable UniformConstant
62: 36(int) Constant 3
65(threshhold2): 20(ptr) Variable UniformConstant
78: TypePointer UniformConstant 23(bool)
79(b): 78(ptr) Variable UniformConstant
87: 36(int) Constant 0
106: TypePointer Output 7(fvec4)
107(gl_FragColor): 106(ptr) Variable Output
111(threshhold3): 20(ptr) Variable UniformConstant
14(otherColor): 10(ptr) Variable Input
16: TypePointer Input 6(float)
17(c): 16(ptr) Variable Input
19(d): 16(ptr) Variable Input
21: TypeBool
25(bigColor): 10(ptr) Variable Input
30(smallColor): 10(ptr) Variable Input
34: TypeInt 32 0
35: 34(int) Constant 2
36: TypePointer Function 6(float)
39(minimum): 16(ptr) Variable Input
47: 6(float) Constant 1065353216
51(threshhold): 16(ptr) Variable Input
60: 34(int) Constant 3
63(threshhold2): 16(ptr) Variable Input
76: TypePointer Private 21(bool)
77(b): 76(ptr) Variable Private
85: 34(int) Constant 0
104: TypePointer Output 7(fvec4)
105(gl_FragColor): 104(ptr) Variable Output
109(threshhold3): 16(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(color): 8(ptr) Variable Function
13(color2): 8(ptr) Variable Function
12: 7(fvec4) Load 11(BaseColor)
Store 9(color) 12
16: 7(fvec4) Load 15(otherColor)
Store 13(color2) 16
19: 6(float) Load 18(c)
22: 6(float) Load 21(d)
24: 23(bool) FOrdGreaterThan 19 22
SelectionMerge 26 None
BranchConditional 24 25 31
25: Label
28: 7(fvec4) Load 27(bigColor)
29: 7(fvec4) Load 9(color)
30: 7(fvec4) FAdd 29 28
Store 9(color) 30
Branch 26
31: Label
33: 7(fvec4) Load 32(smallColor)
34: 7(fvec4) Load 9(color)
35: 7(fvec4) FAdd 34 33
Store 9(color) 35
Branch 26
26: Label
39: 38(ptr) AccessChain 9(color) 37
40: 6(float) Load 39
42: 6(float) Load 41(minimum)
43: 23(bool) FOrdLessThan 40 42
SelectionMerge 45 None
BranchConditional 43 44 45
44: Label
15: 7(fvec4) Load 14(otherColor)
Store 13(color2) 15
18: 6(float) Load 17(c)
20: 6(float) Load 19(d)
22: 21(bool) FOrdGreaterThan 18 20
SelectionMerge 24 None
BranchConditional 22 23 29
23: Label
26: 7(fvec4) Load 25(bigColor)
27: 7(fvec4) Load 9(color)
28: 7(fvec4) FAdd 27 26
Store 9(color) 28
Branch 24
29: Label
31: 7(fvec4) Load 30(smallColor)
32: 7(fvec4) Load 9(color)
33: 7(fvec4) FAdd 32 31
Store 9(color) 33
Branch 24
24: Label
37: 36(ptr) AccessChain 9(color) 35
38: 6(float) Load 37
40: 6(float) Load 39(minimum)
41: 21(bool) FOrdLessThan 38 40
SelectionMerge 43 None
BranchConditional 41 42 43
42: Label
Return
45: Label
47: 38(ptr) AccessChain 9(color) 37
48: 6(float) Load 47
50: 6(float) FAdd 48 49
Store 47 50
51: 38(ptr) AccessChain 9(color) 37
52: 6(float) Load 51
54: 6(float) Load 53(threshhold)
55: 23(bool) FOrdGreaterThan 52 54
SelectionMerge 57 None
BranchConditional 55 56 57
56: Label
43: Label
45: 36(ptr) AccessChain 9(color) 35
46: 6(float) Load 45
48: 6(float) FAdd 46 47
Store 45 48
49: 36(ptr) AccessChain 9(color) 35
50: 6(float) Load 49
52: 6(float) Load 51(threshhold)
53: 21(bool) FOrdGreaterThan 50 52
SelectionMerge 55 None
BranchConditional 53 54 55
54: Label
Kill
57: Label
59: 7(fvec4) Load 9(color)
60: 7(fvec4) CompositeConstruct 49 49 49 49
61: 7(fvec4) FAdd 59 60
Store 9(color) 61
63: 38(ptr) AccessChain 9(color) 62
64: 6(float) Load 63
66: 6(float) Load 65(threshhold2)
67: 23(bool) FOrdGreaterThan 64 66
SelectionMerge 69 None
BranchConditional 67 68 99
68: Label
70: 38(ptr) AccessChain 9(color) 37
71: 6(float) Load 70
72: 6(float) Load 65(threshhold2)
73: 23(bool) FOrdGreaterThan 71 72
SelectionMerge 75 None
BranchConditional 73 74 77
74: Label
55: Label
57: 7(fvec4) Load 9(color)
58: 7(fvec4) CompositeConstruct 47 47 47 47
59: 7(fvec4) FAdd 57 58
Store 9(color) 59
61: 36(ptr) AccessChain 9(color) 60
62: 6(float) Load 61
64: 6(float) Load 63(threshhold2)
65: 21(bool) FOrdGreaterThan 62 64
SelectionMerge 67 None
BranchConditional 65 66 97
66: Label
68: 36(ptr) AccessChain 9(color) 35
69: 6(float) Load 68
70: 6(float) Load 63(threshhold2)
71: 21(bool) FOrdGreaterThan 69 70
SelectionMerge 73 None
BranchConditional 71 72 75
72: Label
Return
77: Label
80: 23(bool) Load 79(b)
SelectionMerge 82 None
BranchConditional 80 81 86
81: Label
83: 38(ptr) AccessChain 9(color) 37
84: 6(float) Load 83
85: 6(float) FAdd 84 49
Store 83 85
Branch 82
86: Label
88: 38(ptr) AccessChain 9(color) 87
89: 6(float) Load 88
90: 6(float) Load 41(minimum)
91: 23(bool) FOrdLessThan 89 90
SelectionMerge 93 None
BranchConditional 91 92 95
92: Label
75: Label
78: 21(bool) Load 77(b)
SelectionMerge 80 None
BranchConditional 78 79 84
79: Label
81: 36(ptr) AccessChain 9(color) 35
82: 6(float) Load 81
83: 6(float) FAdd 82 47
Store 81 83
Branch 80
84: Label
86: 36(ptr) AccessChain 9(color) 85
87: 6(float) Load 86
88: 6(float) Load 39(minimum)
89: 21(bool) FOrdLessThan 87 88
SelectionMerge 91 None
BranchConditional 89 90 93
90: Label
Kill
95: Label
96: 7(fvec4) Load 9(color)
97: 7(fvec4) CompositeConstruct 49 49 49 49
98: 7(fvec4) FAdd 96 97
Store 9(color) 98
Branch 93
93: Label
Branch 82
82: Label
Branch 75
75: Label
Branch 69
99: Label
100: 23(bool) Load 79(b)
SelectionMerge 102 None
BranchConditional 100 101 104
101: Label
93: Label
94: 7(fvec4) Load 9(color)
95: 7(fvec4) CompositeConstruct 47 47 47 47
96: 7(fvec4) FAdd 94 95
Store 9(color) 96
Branch 91
91: Label
Branch 80
80: Label
Branch 73
73: Label
Branch 67
97: Label
98: 21(bool) Load 77(b)
SelectionMerge 100 None
BranchConditional 98 99 102
99: Label
Kill
104: Label
102: Label
Return
102: Label
Branch 69
69: Label
108: 7(fvec4) Load 9(color)
109: 7(fvec4) Load 13(color2)
110: 7(fvec4) FMul 108 109
Store 107(gl_FragColor) 110
100: Label
Branch 67
67: Label
106: 7(fvec4) Load 9(color)
107: 7(fvec4) Load 13(color2)
108: 7(fvec4) FMul 106 107
Store 105(gl_FragColor) 108
Return
FunctionEnd

View file

@ -5,24 +5,24 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 41
// Id's are bound by 39
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 18 37
ExecutionMode 4 OriginLowerLeft
Source GLSL 120
EntryPoint Fragment 4 "main" 11 14 17 19 25 30 35
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "color"
Name 11 "BaseColor"
Name 13 "color2"
Name 15 "otherColor"
Name 18 "c"
Name 21 "d"
Name 27 "bigColor"
Name 32 "smallColor"
Name 37 "gl_FragColor"
Name 14 "otherColor"
Name 17 "c"
Name 19 "d"
Name 25 "bigColor"
Name 30 "smallColor"
Name 35 "gl_FragColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -30,46 +30,44 @@ Linked fragment stage:
8: TypePointer Function 7(fvec4)
10: TypePointer Input 7(fvec4)
11(BaseColor): 10(ptr) Variable Input
14: TypePointer UniformConstant 7(fvec4)
15(otherColor): 14(ptr) Variable UniformConstant
17: TypePointer Input 6(float)
18(c): 17(ptr) Variable Input
20: TypePointer UniformConstant 6(float)
21(d): 20(ptr) Variable UniformConstant
23: TypeBool
27(bigColor): 14(ptr) Variable UniformConstant
32(smallColor): 14(ptr) Variable UniformConstant
36: TypePointer Output 7(fvec4)
37(gl_FragColor): 36(ptr) Variable Output
14(otherColor): 10(ptr) Variable Input
16: TypePointer Input 6(float)
17(c): 16(ptr) Variable Input
19(d): 16(ptr) Variable Input
21: TypeBool
25(bigColor): 10(ptr) Variable Input
30(smallColor): 10(ptr) Variable Input
34: TypePointer Output 7(fvec4)
35(gl_FragColor): 34(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(color): 8(ptr) Variable Function
13(color2): 8(ptr) Variable Function
12: 7(fvec4) Load 11(BaseColor)
Store 9(color) 12
16: 7(fvec4) Load 15(otherColor)
Store 13(color2) 16
19: 6(float) Load 18(c)
22: 6(float) Load 21(d)
24: 23(bool) FOrdGreaterThan 19 22
SelectionMerge 26 None
BranchConditional 24 25 31
25: Label
28: 7(fvec4) Load 27(bigColor)
29: 7(fvec4) Load 9(color)
30: 7(fvec4) FAdd 29 28
Store 9(color) 30
Branch 26
31: Label
33: 7(fvec4) Load 32(smallColor)
34: 7(fvec4) Load 9(color)
35: 7(fvec4) FAdd 34 33
Store 9(color) 35
Branch 26
26: Label
38: 7(fvec4) Load 9(color)
39: 7(fvec4) Load 13(color2)
40: 7(fvec4) FMul 38 39
Store 37(gl_FragColor) 40
15: 7(fvec4) Load 14(otherColor)
Store 13(color2) 15
18: 6(float) Load 17(c)
20: 6(float) Load 19(d)
22: 21(bool) FOrdGreaterThan 18 20
SelectionMerge 24 None
BranchConditional 22 23 29
23: Label
26: 7(fvec4) Load 25(bigColor)
27: 7(fvec4) Load 9(color)
28: 7(fvec4) FAdd 27 26
Store 9(color) 28
Branch 24
29: Label
31: 7(fvec4) Load 30(smallColor)
32: 7(fvec4) Load 9(color)
33: 7(fvec4) FAdd 32 31
Store 9(color) 33
Branch 24
24: Label
36: 7(fvec4) Load 9(color)
37: 7(fvec4) Load 13(color2)
38: 7(fvec4) FMul 36 37
Store 35(gl_FragColor) 38
Return
FunctionEnd

View file

@ -0,0 +1,72 @@
spv.for-complex-condition.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 35
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 18 31
Source GLSL 450
Name 4 "main"
Name 8 "i"
Name 18 "flag"
Name 31 "r"
Decorate 18(flag) Location 0
Decorate 31(r) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
17: TypePointer Input 6(int)
18(flag): 17(ptr) Variable Input
20: 6(int) Constant 1
21: TypeBool
25: 6(int) Constant 10
27: 6(int) Constant 15
30: TypePointer Output 6(int)
31(r): 30(ptr) Variable Output
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
16: 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
LoopMerge 12 13 None
Branch 14
14: Label
15: 6(int) Load 8(i)
19: 6(int) Load 18(flag)
22: 21(bool) IEqual 19 20
SelectionMerge 24 None
BranchConditional 22 23 26
23: Label
Store 16 25
Branch 24
26: Label
Store 16 27
Branch 24
24: Label
28: 6(int) Load 16
29: 21(bool) SLessThan 15 28
BranchConditional 29 11 12
11: Label
32: 6(int) Load 8(i)
Store 31(r) 32
Branch 13
13: Label
33: 6(int) Load 8(i)
34: 6(int) IAdd 33 20
Store 8(i) 34
Branch 10
12: Label
Return
FunctionEnd

84
Test/baseResults/spv.for-continue-break.vert.out Executable file → Normal file
View file

@ -1,50 +1,45 @@
spv.for-continue-break.vert
Warning, version 310 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 48
// Id's are bound by 45
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 46 47
Source ESSL 300
EntryPoint Vertex 4 "main"
Source ESSL 310
Name 4 "main"
Name 8 "i"
Name 17 "A"
Name 25 "B"
Name 19 "A"
Name 27 "B"
Name 29 "C"
Name 36 "D"
Name 38 "E"
Name 39 "F"
Name 43 "G"
Name 46 "gl_VertexID"
Name 47 "gl_InstanceID"
Decorate 46(gl_VertexID) BuiltIn VertexId
Decorate 47(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
14: 6(int) Constant 10
15: TypeBool
18: 6(int) Constant 1
20: 6(int) Constant 2
16: 6(int) Constant 10
17: TypeBool
20: 6(int) Constant 1
22: 6(int) Constant 2
31: 6(int) Constant 3
40: 6(int) Constant 12
44: 6(int) Constant 99
45: TypePointer Input 6(int)
46(gl_VertexID): 45(ptr) Variable Input
47(gl_InstanceID): 45(ptr) Variable Input
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
17(A): 7(ptr) Variable Function
25(B): 7(ptr) Variable Function
19(A): 7(ptr) Variable Function
27(B): 7(ptr) Variable Function
29(C): 7(ptr) Variable Function
36(D): 7(ptr) Variable Function
38(E): 7(ptr) Variable Function
@ -53,45 +48,40 @@ Linked vertex stage:
Store 8(i) 9
Branch 10
10: Label
13: 6(int) Load 8(i)
16: 15(bool) SLessThan 13 14
LoopMerge 11 10 None
BranchConditional 16 12 11
12: Label
Store 17(A) 18
19: 6(int) Load 8(i)
21: 6(int) SMod 19 20
22: 15(bool) IEqual 21 9
SelectionMerge 24 None
BranchConditional 22 23 24
23: Label
Store 25(B) 18
26: 6(int) Load 8(i)
27: 6(int) IAdd 26 18
Store 8(i) 27
Branch 10
28: Label
Store 29(C) 18
Branch 24
24: Label
LoopMerge 12 13 None
Branch 14
14: Label
15: 6(int) Load 8(i)
18: 17(bool) SLessThan 15 16
BranchConditional 18 11 12
11: Label
Store 19(A) 20
21: 6(int) Load 8(i)
23: 6(int) SMod 21 22
24: 17(bool) IEqual 23 9
SelectionMerge 26 None
BranchConditional 24 25 26
25: Label
Store 27(B) 20
Branch 13
26: Label
30: 6(int) Load 8(i)
32: 6(int) SMod 30 31
33: 15(bool) IEqual 32 9
33: 17(bool) IEqual 32 9
SelectionMerge 35 None
BranchConditional 33 34 35
34: Label
Store 36(D) 18
Branch 11
37: Label
Store 38(E) 18
Branch 35
Store 36(D) 20
Branch 12
35: Label
Store 39(F) 40
Branch 13
13: Label
41: 6(int) Load 8(i)
42: 6(int) IAdd 41 18
42: 6(int) IAdd 41 20
Store 8(i) 42
Branch 10
11: Label
12: Label
Store 43(G) 44
Return
FunctionEnd

View file

@ -0,0 +1,54 @@
spv.for-nobody.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 25
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 23
Source GLSL 450
Name 4 "main"
Name 8 "i"
Name 23 "r"
Decorate 23(r) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
16: 6(int) Constant 10
17: TypeBool
20: 6(int) Constant 1
22: TypePointer Output 6(int)
23(r): 22(ptr) Variable Output
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
LoopMerge 12 13 None
Branch 14
14: Label
15: 6(int) Load 8(i)
18: 17(bool) SLessThan 15 16
BranchConditional 18 11 12
11: Label
Branch 13
13: Label
19: 6(int) Load 8(i)
21: 6(int) IAdd 19 20
Store 8(i) 21
Branch 10
12: Label
24: 6(int) Load 8(i)
Store 23(r) 24
Return
FunctionEnd

View file

@ -0,0 +1,48 @@
spv.for-notest.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 20
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 15
Source GLSL 450
Name 4 "main"
Name 8 "i"
Name 15 "r"
Decorate 15(r) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
14: TypePointer Output 6(int)
15(r): 14(ptr) Variable Output
18: 6(int) Constant 1
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
LoopMerge 12 13 None
Branch 11
11: Label
16: 6(int) Load 8(i)
Store 15(r) 16
Branch 13
13: Label
17: 6(int) Load 8(i)
19: 6(int) IAdd 17 18
Store 8(i) 19
Branch 10
12: Label
Return
FunctionEnd

View file

@ -1,53 +1,52 @@
spv.for-simple.vert
Warning, version 310 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 25
// Id's are bound by 24
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 23 24
Source ESSL 300
EntryPoint Vertex 4 "main"
Source ESSL 310
Name 4 "main"
Name 8 "i"
Name 17 "j"
Name 23 "gl_VertexID"
Name 24 "gl_InstanceID"
Decorate 23(gl_VertexID) BuiltIn VertexId
Decorate 24(gl_InstanceID) BuiltIn InstanceId
Name 19 "j"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
14: 6(int) Constant 10
15: TypeBool
18: 6(int) Constant 12
20: 6(int) Constant 1
22: TypePointer Input 6(int)
23(gl_VertexID): 22(ptr) Variable Input
24(gl_InstanceID): 22(ptr) Variable Input
16: 6(int) Constant 10
17: TypeBool
20: 6(int) Constant 12
22: 6(int) Constant 1
4(main): 2 Function None 3
5: Label
8(i): 7(ptr) Variable Function
17(j): 7(ptr) Variable Function
19(j): 7(ptr) Variable Function
Store 8(i) 9
Branch 10
10: Label
13: 6(int) Load 8(i)
16: 15(bool) SLessThan 13 14
LoopMerge 11 10 None
BranchConditional 16 12 11
12: Label
Store 17(j) 18
19: 6(int) Load 8(i)
21: 6(int) IAdd 19 20
Store 8(i) 21
LoopMerge 12 13 None
Branch 14
14: Label
15: 6(int) Load 8(i)
18: 17(bool) SLessThan 15 16
BranchConditional 18 11 12
11: Label
Store 19(j) 20
Branch 13
13: Label
21: 6(int) Load 8(i)
23: 6(int) IAdd 21 22
Store 8(i) 23
Branch 10
11: Label
12: Label
Return
FunctionEnd

View file

@ -5,30 +5,32 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 122
// Id's are bound by 131
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 35 97
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
EntryPoint Fragment 4 "main" 11 24 28 36 53 104
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "color"
Name 11 "BaseColor"
Name 15 "i"
Name 22 "Count"
Name 27 "bigColor"
Name 35 "gl_FragColor"
Name 38 "sum"
Name 40 "i"
Name 50 "v4"
Name 60 "i"
Name 66 "tv4"
Name 83 "r"
Name 89 "i"
Name 97 "f"
Name 110 "i"
Name 24 "Count"
Name 28 "bigColor"
Name 36 "gl_FragColor"
Name 39 "sum"
Name 41 "i"
Name 53 "v4"
Name 63 "i"
Name 71 "tv4"
Name 88 "r"
Name 94 "i"
Name 104 "f"
Name 117 "i"
Decorate 24(Count) Flat
Decorate 53(v4) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -39,156 +41,175 @@ Linked fragment stage:
13: TypeInt 32 1
14: TypePointer Function 13(int)
16: 13(int) Constant 0
21: TypePointer UniformConstant 13(int)
22(Count): 21(ptr) Variable UniformConstant
24: TypeBool
26: TypePointer UniformConstant 7(fvec4)
27(bigColor): 26(ptr) Variable UniformConstant
32: 13(int) Constant 1
34: TypePointer Output 7(fvec4)
35(gl_FragColor): 34(ptr) Variable Output
37: TypePointer Function 6(float)
39: 6(float) Constant 0
45: 13(int) Constant 4
47: TypeInt 32 0
48: TypeVector 47(int) 4
49: TypePointer UniformConstant 48(ivec4)
50(v4): 49(ptr) Variable UniformConstant
52: TypePointer UniformConstant 47(int)
71: 47(int) Constant 4
84: TypeVector 6(float) 3
96: TypePointer Input 6(float)
97(f): 96(ptr) Variable Input
99: 47(int) Constant 3
115: 13(int) Constant 16
23: TypePointer Input 13(int)
24(Count): 23(ptr) Variable Input
26: TypeBool
28(bigColor): 10(ptr) Variable Input
33: 13(int) Constant 1
35: TypePointer Output 7(fvec4)
36(gl_FragColor): 35(ptr) Variable Output
38: TypePointer Function 6(float)
40: 6(float) Constant 0
48: 13(int) Constant 4
50: TypeInt 32 0
51: TypeVector 50(int) 4
52: TypePointer Input 51(ivec4)
53(v4): 52(ptr) Variable Input
55: TypePointer Input 50(int)
76: 50(int) Constant 4
89: TypeVector 6(float) 3
103: TypePointer Input 6(float)
104(f): 103(ptr) Variable Input
106: 50(int) Constant 3
124: 13(int) Constant 16
4(main): 2 Function None 3
5: Label
9(color): 8(ptr) Variable Function
15(i): 14(ptr) Variable Function
38(sum): 37(ptr) Variable Function
40(i): 14(ptr) Variable Function
60(i): 14(ptr) Variable Function
66(tv4): 8(ptr) Variable Function
83(r): 8(ptr) Variable Function
89(i): 14(ptr) Variable Function
110(i): 14(ptr) Variable Function
39(sum): 38(ptr) Variable Function
41(i): 14(ptr) Variable Function
63(i): 14(ptr) Variable Function
71(tv4): 8(ptr) Variable Function
88(r): 8(ptr) Variable Function
94(i): 14(ptr) Variable Function
117(i): 14(ptr) Variable Function
12: 7(fvec4) Load 11(BaseColor)
Store 9(color) 12
Store 15(i) 16
Branch 17
17: Label
20: 13(int) Load 15(i)
23: 13(int) Load 22(Count)
25: 24(bool) SLessThan 20 23
LoopMerge 18 17 None
BranchConditional 25 19 18
19: Label
28: 7(fvec4) Load 27(bigColor)
29: 7(fvec4) Load 9(color)
30: 7(fvec4) FAdd 29 28
Store 9(color) 30
31: 13(int) Load 15(i)
33: 13(int) IAdd 31 32
Store 15(i) 33
LoopMerge 19 20 None
Branch 21
21: Label
22: 13(int) Load 15(i)
25: 13(int) Load 24(Count)
27: 26(bool) SLessThan 22 25
BranchConditional 27 18 19
18: Label
29: 7(fvec4) Load 28(bigColor)
30: 7(fvec4) Load 9(color)
31: 7(fvec4) FAdd 30 29
Store 9(color) 31
Branch 20
20: Label
32: 13(int) Load 15(i)
34: 13(int) IAdd 32 33
Store 15(i) 34
Branch 17
18: Label
36: 7(fvec4) Load 9(color)
Store 35(gl_FragColor) 36
Store 38(sum) 39
Store 40(i) 16
Branch 41
41: Label
44: 13(int) Load 40(i)
46: 24(bool) SLessThan 44 45
LoopMerge 42 41 None
BranchConditional 46 43 42
43: Label
51: 13(int) Load 40(i)
53: 52(ptr) AccessChain 50(v4) 51
54: 47(int) Load 53
55: 6(float) ConvertUToF 54
56: 6(float) Load 38(sum)
57: 6(float) FAdd 56 55
Store 38(sum) 57
58: 13(int) Load 40(i)
59: 13(int) IAdd 58 32
Store 40(i) 59
Branch 41
19: Label
37: 7(fvec4) Load 9(color)
Store 36(gl_FragColor) 37
Store 39(sum) 40
Store 41(i) 16
Branch 42
42: Label
Store 60(i) 16
Branch 61
61: Label
64: 13(int) Load 60(i)
65: 24(bool) SLessThan 64 45
LoopMerge 62 61 None
BranchConditional 65 63 62
63: Label
67: 13(int) Load 60(i)
68: 13(int) Load 60(i)
69: 52(ptr) AccessChain 50(v4) 68
70: 47(int) Load 69
72: 47(int) IMul 70 71
73: 6(float) ConvertUToF 72
74: 37(ptr) AccessChain 66(tv4) 67
Store 74 73
75: 13(int) Load 60(i)
76: 13(int) IAdd 75 32
Store 60(i) 76
Branch 61
62: Label
77: 6(float) Load 38(sum)
78: 7(fvec4) CompositeConstruct 77 77 77 77
79: 7(fvec4) Load 66(tv4)
80: 7(fvec4) FAdd 78 79
81: 7(fvec4) Load 35(gl_FragColor)
82: 7(fvec4) FAdd 81 80
Store 35(gl_FragColor) 82
85: 7(fvec4) Load 11(BaseColor)
86: 84(fvec3) VectorShuffle 85 85 0 1 2
87: 7(fvec4) Load 83(r)
88: 7(fvec4) VectorShuffle 87 86 4 5 6 3
Store 83(r) 88
Store 89(i) 16
Branch 90
90: Label
93: 13(int) Load 89(i)
94: 13(int) Load 22(Count)
95: 24(bool) SLessThan 93 94
LoopMerge 91 90 None
BranchConditional 95 92 91
92: Label
98: 6(float) Load 97(f)
100: 37(ptr) AccessChain 83(r) 99
Store 100 98
101: 13(int) Load 89(i)
102: 13(int) IAdd 101 32
Store 89(i) 102
Branch 90
91: Label
103: 7(fvec4) Load 83(r)
104: 84(fvec3) VectorShuffle 103 103 0 1 2
105: 7(fvec4) Load 35(gl_FragColor)
106: 84(fvec3) VectorShuffle 105 105 0 1 2
107: 84(fvec3) FAdd 106 104
108: 7(fvec4) Load 35(gl_FragColor)
109: 7(fvec4) VectorShuffle 108 107 4 5 6 3
Store 35(gl_FragColor) 109
Store 110(i) 16
Branch 111
111: Label
114: 13(int) Load 110(i)
116: 24(bool) SLessThan 114 115
LoopMerge 112 111 None
BranchConditional 116 113 112
113: Label
117: 6(float) Load 97(f)
118: 7(fvec4) Load 35(gl_FragColor)
119: 7(fvec4) VectorTimesScalar 118 117
Store 35(gl_FragColor) 119
120: 13(int) Load 110(i)
121: 13(int) IAdd 120 45
Store 110(i) 121
Branch 111
112: Label
LoopMerge 44 45 None
Branch 46
46: Label
47: 13(int) Load 41(i)
49: 26(bool) SLessThan 47 48
BranchConditional 49 43 44
43: Label
54: 13(int) Load 41(i)
56: 55(ptr) AccessChain 53(v4) 54
57: 50(int) Load 56
58: 6(float) ConvertUToF 57
59: 6(float) Load 39(sum)
60: 6(float) FAdd 59 58
Store 39(sum) 60
Branch 45
45: Label
61: 13(int) Load 41(i)
62: 13(int) IAdd 61 33
Store 41(i) 62
Branch 42
44: Label
Store 63(i) 16
Branch 64
64: Label
LoopMerge 66 67 None
Branch 68
68: Label
69: 13(int) Load 63(i)
70: 26(bool) SLessThan 69 48
BranchConditional 70 65 66
65: Label
72: 13(int) Load 63(i)
73: 13(int) Load 63(i)
74: 55(ptr) AccessChain 53(v4) 73
75: 50(int) Load 74
77: 50(int) IMul 75 76
78: 6(float) ConvertUToF 77
79: 38(ptr) AccessChain 71(tv4) 72
Store 79 78
Branch 67
67: Label
80: 13(int) Load 63(i)
81: 13(int) IAdd 80 33
Store 63(i) 81
Branch 64
66: Label
82: 6(float) Load 39(sum)
83: 7(fvec4) CompositeConstruct 82 82 82 82
84: 7(fvec4) Load 71(tv4)
85: 7(fvec4) FAdd 83 84
86: 7(fvec4) Load 36(gl_FragColor)
87: 7(fvec4) FAdd 86 85
Store 36(gl_FragColor) 87
90: 7(fvec4) Load 11(BaseColor)
91: 89(fvec3) VectorShuffle 90 90 0 1 2
92: 7(fvec4) Load 88(r)
93: 7(fvec4) VectorShuffle 92 91 4 5 6 3
Store 88(r) 93
Store 94(i) 16
Branch 95
95: Label
LoopMerge 97 98 None
Branch 99
99: Label
100: 13(int) Load 94(i)
101: 13(int) Load 24(Count)
102: 26(bool) SLessThan 100 101
BranchConditional 102 96 97
96: Label
105: 6(float) Load 104(f)
107: 38(ptr) AccessChain 88(r) 106
Store 107 105
Branch 98
98: Label
108: 13(int) Load 94(i)
109: 13(int) IAdd 108 33
Store 94(i) 109
Branch 95
97: Label
110: 7(fvec4) Load 88(r)
111: 89(fvec3) VectorShuffle 110 110 0 1 2
112: 7(fvec4) Load 36(gl_FragColor)
113: 89(fvec3) VectorShuffle 112 112 0 1 2
114: 89(fvec3) FAdd 113 111
115: 7(fvec4) Load 36(gl_FragColor)
116: 7(fvec4) VectorShuffle 115 114 4 5 6 3
Store 36(gl_FragColor) 116
Store 117(i) 16
Branch 118
118: Label
LoopMerge 120 121 None
Branch 122
122: Label
123: 13(int) Load 117(i)
125: 26(bool) SLessThan 123 124
BranchConditional 125 119 120
119: Label
126: 6(float) Load 104(f)
127: 7(fvec4) Load 36(gl_FragColor)
128: 7(fvec4) VectorTimesScalar 127 126
Store 36(gl_FragColor) 128
Branch 121
121: Label
129: 13(int) Load 117(i)
130: 13(int) IAdd 129 48
Store 117(i) 130
Branch 118
120: Label
Return
FunctionEnd

View file

@ -10,9 +10,9 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 20 30
ExecutionMode 4 OriginLowerLeft
Source ESSL 100
EntryPoint Fragment 4 "main" 20 30 36 59
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 6 "bar("
Name 10 "unreachableReturn("
@ -25,12 +25,6 @@ Linked fragment stage:
Name 30 "gl_FragColor"
Name 36 "d"
Name 59 "bigColor"
Decorate 18(color) RelaxedPrecision
Decorate 20(BaseColor) RelaxedPrecision
Decorate 27(f) RelaxedPrecision
Decorate 30(gl_FragColor) RelaxedPrecision
Decorate 36(d) RelaxedPrecision
Decorate 59(bigColor) RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
@ -43,8 +37,8 @@ Linked fragment stage:
26: TypePointer Function 8(float)
29: TypePointer Output 12(fvec4)
30(gl_FragColor): 29(ptr) Variable Output
35: TypePointer UniformConstant 8(float)
36(d): 35(ptr) Variable UniformConstant
35: TypePointer Input 8(float)
36(d): 35(ptr) Variable Input
38: 8(float) Constant 1082549862
39: TypeBool
43: 8(float) Constant 1067030938
@ -52,8 +46,7 @@ Linked fragment stage:
49: TypeInt 32 0
50: 49(int) Constant 0
53: 49(int) Constant 1
58: TypePointer UniformConstant 12(fvec4)
59(bigColor): 58(ptr) Variable UniformConstant
59(bigColor): 19(ptr) Variable Input
4(main): 2 Function None 3
5: Label
18(color): 13(ptr) Variable Function

View file

@ -1,5 +1,7 @@
spv.functionCall.frag
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
WARNING: 0:4: varying deprecated in version 130; may be removed in future release
WARNING: 0:5: varying deprecated in version 130; may be removed in future release
Linked fragment stage:
@ -12,9 +14,9 @@ Linked fragment stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 57 68
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
EntryPoint Fragment 4 "main" 35 58 69 75
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 11 "foo(vf4;"
Name 10 "bar"
@ -22,13 +24,13 @@ Linked fragment stage:
Name 16 "unreachableReturn("
Name 18 "missingReturn("
Name 21 "h"
Name 34 "d"
Name 55 "color"
Name 57 "BaseColor"
Name 58 "param"
Name 63 "f"
Name 65 "g"
Name 68 "gl_FragColor"
Name 35 "d"
Name 56 "color"
Name 58 "BaseColor"
Name 59 "param"
Name 64 "f"
Name 66 "g"
Name 69 "gl_FragColor"
Name 75 "bigColor"
2: TypeVoid
3: TypeFunction 2
@ -44,42 +46,41 @@ Linked fragment stage:
24: 23(int) Constant 0
25: TypePointer Function 6(float)
28: 23(int) Constant 1
33: TypePointer UniformConstant 6(float)
34(d): 33(ptr) Variable UniformConstant
36: 6(float) Constant 1082549862
37: TypeBool
41: 6(float) Constant 1067030938
44: 6(float) Constant 1083179008
52: 6(float) Constant 1081711002
56: TypePointer Input 7(fvec4)
57(BaseColor): 56(ptr) Variable Input
67: TypePointer Output 7(fvec4)
68(gl_FragColor): 67(ptr) Variable Output
74: TypePointer UniformConstant 7(fvec4)
75(bigColor): 74(ptr) Variable UniformConstant
34: TypePointer Input 6(float)
35(d): 34(ptr) Variable Input
37: 6(float) Constant 1082549862
38: TypeBool
42: 6(float) Constant 1067030938
45: 6(float) Constant 1083179008
53: 6(float) Constant 1081711002
57: TypePointer Input 7(fvec4)
58(BaseColor): 57(ptr) Variable Input
68: TypePointer Output 7(fvec4)
69(gl_FragColor): 68(ptr) Variable Output
75(bigColor): 57(ptr) Variable Input
4(main): 2 Function None 3
5: Label
55(color): 8(ptr) Variable Function
58(param): 8(ptr) Variable Function
63(f): 25(ptr) Variable Function
65(g): 25(ptr) Variable Function
56(color): 8(ptr) Variable Function
59(param): 8(ptr) Variable Function
64(f): 25(ptr) Variable Function
66(g): 25(ptr) Variable Function
Store 21(h) 22
59: 7(fvec4) Load 57(BaseColor)
Store 58(param) 59
60: 6(float) FunctionCall 11(foo(vf4;) 58(param)
61: 7(fvec4) CompositeConstruct 60 60 60 60
Store 55(color) 61
62: 2 FunctionCall 13(bar()
64: 6(float) FunctionCall 16(unreachableReturn()
Store 63(f) 64
66: 6(float) FunctionCall 18(missingReturn()
Store 65(g) 66
69: 7(fvec4) Load 55(color)
70: 6(float) Load 63(f)
71: 7(fvec4) VectorTimesScalar 69 70
72: 6(float) Load 21(h)
73: 7(fvec4) VectorTimesScalar 71 72
Store 68(gl_FragColor) 73
60: 7(fvec4) Load 58(BaseColor)
Store 59(param) 60
61: 6(float) FunctionCall 11(foo(vf4;) 59(param)
62: 7(fvec4) CompositeConstruct 61 61 61 61
Store 56(color) 62
63: 2 FunctionCall 13(bar()
65: 6(float) FunctionCall 16(unreachableReturn()
Store 64(f) 65
67: 6(float) FunctionCall 18(missingReturn()
Store 66(g) 67
70: 7(fvec4) Load 56(color)
71: 6(float) Load 64(f)
72: 7(fvec4) VectorTimesScalar 70 71
73: 6(float) Load 21(h)
74: 7(fvec4) VectorTimesScalar 72 73
Store 69(gl_FragColor) 74
Return
FunctionEnd
11(foo(vf4;): 6(float) Function None 9
@ -98,29 +99,29 @@ Linked fragment stage:
FunctionEnd
16(unreachableReturn(): 6(float) Function None 15
17: Label
35: 6(float) Load 34(d)
38: 37(bool) FOrdLessThan 35 36
SelectionMerge 40 None
BranchConditional 38 39 43
39: Label
ReturnValue 41
43: Label
ReturnValue 44
40: Label
46: 6(float) Undef
ReturnValue 46
36: 6(float) Load 35(d)
39: 38(bool) FOrdLessThan 36 37
SelectionMerge 41 None
BranchConditional 39 40 44
40: Label
ReturnValue 42
44: Label
ReturnValue 45
41: Label
47: 6(float) Undef
ReturnValue 47
FunctionEnd
18(missingReturn(): 6(float) Function None 15
19: Label
47: 6(float) Load 34(d)
48: 37(bool) FOrdLessThan 47 44
SelectionMerge 50 None
BranchConditional 48 49 50
49: Label
51: 6(float) Load 34(d)
Store 21(h) 51
ReturnValue 52
50: Label
54: 6(float) Undef
ReturnValue 54
48: 6(float) Load 35(d)
49: 38(bool) FOrdLessThan 48 45
SelectionMerge 51 None
BranchConditional 49 50 51
50: Label
52: 6(float) Load 35(d)
Store 21(h) 52
ReturnValue 53
51: Label
55: 6(float) Undef
ReturnValue 55
FunctionEnd

View file

@ -7,13 +7,13 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 153
// Id's are bound by 156
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 149
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 76 152
ExecutionMode 4 OriginUpperLeft
Source GLSL 400
Name 4 "main"
Name 15 "foo(i1;i1;i1;i1;i1;i1;"
@ -29,25 +29,25 @@ Linked fragment stage:
Name 24 "r"
Name 28 "foo3("
Name 30 "sum"
Name 74 "u"
Name 86 "t"
Name 89 "s"
MemberName 89(s) 0 "t"
Name 91 "f"
Name 95 "color"
Name 101 "e"
Name 102 "param"
Name 103 "param"
Name 104 "param"
Name 76 "u"
Name 89 "t"
Name 92 "s"
MemberName 92(s) 0 "t"
Name 94 "f"
Name 98 "color"
Name 104 "e"
Name 105 "param"
Name 120 "ret"
Name 122 "tempReturn"
Name 127 "tempArg"
Name 128 "param"
Name 129 "param"
Name 130 "param"
Name 133 "arg"
Name 149 "gl_FragColor"
Name 106 "param"
Name 107 "param"
Name 108 "param"
Name 123 "ret"
Name 125 "tempReturn"
Name 130 "tempArg"
Name 131 "param"
Name 132 "param"
Name 133 "param"
Name 136 "arg"
Name 152 "gl_FragColor"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -61,103 +61,103 @@ Linked fragment stage:
27: TypeFunction 6(int)
38: 6(int) Constant 64
43: 6(int) Constant 1024
61: 17(float) Constant 1077936128
65: 17(float) Constant 1084227584
66: TypeInt 32 0
67: 66(int) Constant 1
73: TypePointer UniformConstant 17(float)
74(u): 73(ptr) Variable UniformConstant
76: 17(float) Constant 1078774989
77: TypeBool
82: 6(int) Constant 1000000
84: 6(int) Constant 2000000
87: 6(int) Constant 2
88: TypeVector 6(int) 4
89(s): TypeStruct 88(ivec4)
90: TypePointer Function 89(s)
92: 6(int) Constant 0
93: 6(int) Constant 32
96: 6(int) Constant 1
100: 6(int) Constant 8
112: 6(int) Constant 128
121: TypePointer Private 6(int)
122(tempReturn): 121(ptr) Variable Private
123: 17(float) Constant 1082130432
124: 17(float) Constant 1065353216
125: 17(float) Constant 1073741824
126: 19(fvec3) ConstantComposite 124 125 61
147: TypeVector 17(float) 4
148: TypePointer Output 147(fvec4)
149(gl_FragColor): 148(ptr) Variable Output
62: 17(float) Constant 1077936128
66: 17(float) Constant 1084227584
67: TypeInt 32 0
68: 67(int) Constant 1
75: TypePointer Input 17(float)
76(u): 75(ptr) Variable Input
78: 17(float) Constant 1078774989
79: TypeBool
84: 6(int) Constant 1000000
86: 6(int) Constant 2000000
90: 6(int) Constant 2
91: TypeVector 6(int) 4
92(s): TypeStruct 91(ivec4)
93: TypePointer Function 92(s)
95: 6(int) Constant 0
96: 6(int) Constant 32
99: 6(int) Constant 1
103: 6(int) Constant 8
115: 6(int) Constant 128
124: TypePointer Private 6(int)
125(tempReturn): 124(ptr) Variable Private
126: 17(float) Constant 1082130432
127: 17(float) Constant 1065353216
128: 17(float) Constant 1073741824
129: 19(fvec3) ConstantComposite 127 128 62
150: TypeVector 17(float) 4
151: TypePointer Output 150(fvec4)
152(gl_FragColor): 151(ptr) Variable Output
4(main): 2 Function None 3
5: Label
86(t): 7(ptr) Variable Function
91(f): 90(ptr) Variable Function
95(color): 7(ptr) Variable Function
101(e): 7(ptr) Variable Function
102(param): 7(ptr) Variable Function
103(param): 7(ptr) Variable Function
104(param): 7(ptr) Variable Function
89(t): 7(ptr) Variable Function
94(f): 93(ptr) Variable Function
98(color): 7(ptr) Variable Function
104(e): 7(ptr) Variable Function
105(param): 7(ptr) Variable Function
120(ret): 18(ptr) Variable Function
127(tempArg): 7(ptr) Variable Function
128(param): 18(ptr) Variable Function
129(param): 20(ptr) Variable Function
130(param): 7(ptr) Variable Function
133(arg): 18(ptr) Variable Function
Store 86(t) 87
94: 7(ptr) AccessChain 91(f) 92 67
Store 94 93
97: 6(int) Load 86(t)
98: 6(int) Load 86(t)
99: 6(int) IAdd 97 98
Store 102(param) 96
Store 103(param) 99
106: 7(ptr) AccessChain 91(f) 92 67
107: 6(int) Load 106
Store 105(param) 107
108: 6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 102(param) 87 103(param) 100 104(param) 105(param)
109: 6(int) Load 104(param)
Store 101(e) 109
110: 6(int) Load 105(param)
111: 7(ptr) AccessChain 91(f) 92 67
Store 111 110
Store 95(color) 108
113: 6(int) Load 101(e)
114: 7(ptr) AccessChain 91(f) 92 67
115: 6(int) Load 114
116: 6(int) IAdd 113 115
117: 6(int) IMul 112 116
118: 6(int) Load 95(color)
119: 6(int) IAdd 118 117
Store 95(color) 119
Store 128(param) 123
Store 129(param) 126
131: 6(int) FunctionCall 25(foo2(f1;vf3;i1;) 128(param) 129(param) 130(param)
132: 6(int) Load 130(param)
Store 127(tempArg) 132
Store 122(tempReturn) 131
134: 6(int) Load 127(tempArg)
135: 17(float) ConvertSToF 134
Store 133(arg) 135
136: 6(int) Load 122(tempReturn)
137: 17(float) ConvertSToF 136
Store 120(ret) 137
138: 17(float) Load 120(ret)
139: 17(float) Load 133(arg)
140: 17(float) FAdd 138 139
141: 6(int) ConvertFToS 140
142: 6(int) Load 95(color)
143: 6(int) IAdd 142 141
Store 95(color) 143
144: 6(int) FunctionCall 28(foo3()
145: 6(int) Load 95(color)
106(param): 7(ptr) Variable Function
107(param): 7(ptr) Variable Function
108(param): 7(ptr) Variable Function
123(ret): 18(ptr) Variable Function
130(tempArg): 7(ptr) Variable Function
131(param): 18(ptr) Variable Function
132(param): 20(ptr) Variable Function
133(param): 7(ptr) Variable Function
136(arg): 18(ptr) Variable Function
Store 89(t) 90
97: 7(ptr) AccessChain 94(f) 95 68
Store 97 96
100: 6(int) Load 89(t)
101: 6(int) Load 89(t)
102: 6(int) IAdd 100 101
Store 105(param) 99
Store 106(param) 102
109: 7(ptr) AccessChain 94(f) 95 68
110: 6(int) Load 109
Store 108(param) 110
111: 6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 105(param) 90 106(param) 103 107(param) 108(param)
112: 6(int) Load 107(param)
Store 104(e) 112
113: 6(int) Load 108(param)
114: 7(ptr) AccessChain 94(f) 95 68
Store 114 113
Store 98(color) 111
116: 6(int) Load 104(e)
117: 7(ptr) AccessChain 94(f) 95 68
118: 6(int) Load 117
119: 6(int) IAdd 116 118
120: 6(int) IMul 115 119
121: 6(int) Load 98(color)
122: 6(int) IAdd 121 120
Store 98(color) 122
Store 131(param) 126
Store 132(param) 129
134: 6(int) FunctionCall 25(foo2(f1;vf3;i1;) 131(param) 132(param) 133(param)
135: 6(int) Load 133(param)
Store 130(tempArg) 135
Store 125(tempReturn) 134
137: 6(int) Load 130(tempArg)
138: 17(float) ConvertSToF 137
Store 136(arg) 138
139: 6(int) Load 125(tempReturn)
140: 17(float) ConvertSToF 139
Store 123(ret) 140
141: 17(float) Load 123(ret)
142: 17(float) Load 136(arg)
143: 17(float) FAdd 141 142
144: 6(int) ConvertFToS 143
145: 6(int) Load 98(color)
146: 6(int) IAdd 145 144
Store 95(color) 146
150: 6(int) Load 95(color)
151: 17(float) ConvertSToF 150
152: 147(fvec4) CompositeConstruct 151 151 151 151
Store 149(gl_FragColor) 152
Store 98(color) 146
147: 6(int) FunctionCall 28(foo3()
148: 6(int) Load 98(color)
149: 6(int) IAdd 148 147
Store 98(color) 149
153: 6(int) Load 98(color)
154: 17(float) ConvertSToF 153
155: 150(fvec4) CompositeConstruct 154 154 154 154
Store 152(gl_FragColor) 155
Return
FunctionEnd
15(foo(i1;i1;i1;i1;i1;i1;): 6(int) Function None 8
@ -209,24 +209,24 @@ Linked fragment stage:
23(b): 20(ptr) FunctionParameter
24(r): 7(ptr) FunctionParameter
26: Label
62: 17(float) Load 22(a)
63: 17(float) FMul 61 62
64: 6(int) ConvertFToS 63
Store 24(r) 64
68: 18(ptr) AccessChain 23(b) 67
69: 17(float) Load 68
70: 17(float) FMul 65 69
71: 6(int) ConvertFToS 70
ReturnValue 71
63: 17(float) Load 22(a)
64: 17(float) FMul 62 63
65: 6(int) ConvertFToS 64
Store 24(r) 65
69: 18(ptr) AccessChain 23(b) 68
70: 17(float) Load 69
71: 17(float) FMul 66 70
72: 6(int) ConvertFToS 71
ReturnValue 72
FunctionEnd
28(foo3(): 6(int) Function None 27
29: Label
75: 17(float) Load 74(u)
78: 77(bool) FOrdGreaterThan 75 76
SelectionMerge 80 None
BranchConditional 78 79 80
79: Label
77: 17(float) Load 76(u)
80: 79(bool) FOrdGreaterThan 77 78
SelectionMerge 82 None
BranchConditional 80 81 82
81: Label
Kill
80: Label
ReturnValue 84
82: Label
ReturnValue 86
FunctionEnd

View file

@ -7,13 +7,21 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 372
// Id's are bound by 378
Capability Shader
Capability SampledRect
Capability Sampled1D
Capability SampledCubeArray
Capability SampledBuffer
Capability ImageMSArray
Capability StorageImageExtendedFormats
Capability ImageQuery
Capability StorageImageWriteWithoutFormat
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 356
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 132 142 152 248 362 377
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "iv"
@ -36,21 +44,43 @@ Linked fragment stage:
Name 232 "ii1D"
Name 245 "ui2D"
Name 248 "value"
Name 356 "fragData"
Name 371 "ic4D"
Name 357 "wo2D"
Name 362 "fragData"
Name 377 "ic4D"
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) Binding 0
Decorate 27(i2D) DescriptorSet 0
Decorate 27(i2D) Binding 1
Decorate 38(i3D) DescriptorSet 0
Decorate 38(i3D) Binding 2
Decorate 45(iCube) DescriptorSet 0
Decorate 45(iCube) Binding 3
Decorate 55(iCubeArray) DescriptorSet 0
Decorate 55(iCubeArray) Binding 4
Decorate 62(i2DRect) DescriptorSet 0
Decorate 62(i2DRect) Binding 5
Decorate 72(i1DArray) DescriptorSet 0
Decorate 72(i1DArray) Binding 6
Decorate 82(i2DArray) DescriptorSet 0
Decorate 82(i2DArray) Binding 7
Decorate 89(iBuffer) DescriptorSet 0
Decorate 89(iBuffer) Binding 8
Decorate 98(i2DMS) DescriptorSet 0
Decorate 98(i2DMS) Binding 9
Decorate 108(i2DMSArray) DescriptorSet 0
Decorate 108(i2DMSArray) Binding 10
Decorate 132(ic1D) Flat
Decorate 142(ic2D) Flat
Decorate 152(ic3D) Flat
Decorate 232(ii1D) DescriptorSet 0
Decorate 232(ii1D) Binding 11
Decorate 245(ui2D) DescriptorSet 0
Decorate 245(ui2D) Binding 12
Decorate 248(value) Flat
Decorate 357(wo2D) DescriptorSet 0
Decorate 357(wo2D) Binding 1
Decorate 357(wo2D) NonReadable
Decorate 377(ic4D) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -84,7 +114,7 @@ Linked fragment stage:
70: TypeImage 12(float) 1D array nonsampled format:Rgba32f
71: TypePointer UniformConstant 70
72(i1DArray): 71(ptr) Variable UniformConstant
80: TypeImage 12(float) 2D array nonsampled format:Rgba32f
80: TypeImage 12(float) 2D array nonsampled format:Rg16
81: TypePointer UniformConstant 80
82(i2DArray): 81(ptr) Variable UniformConstant
87: TypeImage 12(float) Buffer nonsampled format:Rgba32f
@ -100,12 +130,12 @@ Linked fragment stage:
126: TypePointer Function 125(fvec4)
128: 12(float) Constant 0
129: 125(fvec4) ConstantComposite 128 128 128 128
131: TypePointer UniformConstant 6(int)
132(ic1D): 131(ptr) Variable UniformConstant
141: TypePointer UniformConstant 29(ivec2)
142(ic2D): 141(ptr) Variable UniformConstant
151: TypePointer UniformConstant 7(ivec3)
152(ic3D): 151(ptr) Variable UniformConstant
131: TypePointer Input 6(int)
132(ic1D): 131(ptr) Variable Input
141: TypePointer Input 29(ivec2)
142(ic2D): 141(ptr) Variable Input
151: TypePointer Input 7(ivec3)
152(ic3D): 151(ptr) Variable Input
210: 6(int) Constant 1
216: 6(int) Constant 2
220: 6(int) Constant 3
@ -120,8 +150,8 @@ Linked fragment stage:
243: TypeImage 18(int) 2D nonsampled format:R32ui
244: TypePointer UniformConstant 243
245(ui2D): 244(ptr) Variable UniformConstant
247: TypePointer UniformConstant 18(int)
248(value): 247(ptr) Variable UniformConstant
247: TypePointer Input 18(int)
248(value): 247(ptr) Variable Input
250: TypePointer Image 18(int)
256: 6(int) Constant 11
270: 6(int) Constant 12
@ -132,18 +162,21 @@ Linked fragment stage:
340: 6(int) Constant 18
341: 6(int) Constant 17
349: 18(int) Constant 19
355: TypePointer Output 125(fvec4)
356(fragData): 355(ptr) Variable Output
362: TypeBool
369: TypeVector 6(int) 4
370: TypePointer UniformConstant 369(ivec4)
371(ic4D): 370(ptr) Variable UniformConstant
355: TypeImage 12(float) 2D nonsampled format:Unknown
356: TypePointer UniformConstant 355
357(wo2D): 356(ptr) Variable UniformConstant
361: TypePointer Output 125(fvec4)
362(fragData): 361(ptr) Variable Output
368: TypeBool
375: TypeVector 6(int) 4
376: TypePointer Input 375(ivec4)
377(ic4D): 376(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(iv): 8(ptr) Variable Function
127(v): 126(ptr) Variable Function
229(ui): 228(ptr) Variable Function
357: 126(ptr) Variable Function
363: 126(ptr) Variable Function
Store 9(iv) 11
16: 13 Load 15(i1D)
17: 6(int) ImageQuerySize 16
@ -346,7 +379,7 @@ Linked fragment stage:
ImageWrite 224 225 227 Sample 226
Store 229(ui) 19
233: 6(int) Load 132(ic1D)
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 0
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 19
238: 6(int) AtomicIAdd 236 237 19 234
239: 20(ptr) AccessChain 9(iv) 19
240: 6(int) Load 239
@ -355,13 +388,13 @@ Linked fragment stage:
Store 242 241
246: 29(ivec2) Load 142(ic2D)
249: 18(int) Load 248(value)
251: 250(ptr) ImageTexelPointer 245(ui2D) 246 0
251: 250(ptr) ImageTexelPointer 245(ui2D) 246 19
252: 18(int) AtomicIAdd 251 237 19 249
253: 18(int) Load 229(ui)
254: 18(int) IAdd 253 252
Store 229(ui) 254
255: 6(int) Load 132(ic1D)
257: 235(ptr) ImageTexelPointer 232(ii1D) 255 0
257: 235(ptr) ImageTexelPointer 232(ii1D) 255 19
258: 6(int) AtomicSMin 257 237 19 256
259: 20(ptr) AccessChain 9(iv) 19
260: 6(int) Load 259
@ -370,13 +403,13 @@ Linked fragment stage:
Store 262 261
263: 29(ivec2) Load 142(ic2D)
264: 18(int) Load 248(value)
265: 250(ptr) ImageTexelPointer 245(ui2D) 263 0
265: 250(ptr) ImageTexelPointer 245(ui2D) 263 19
266: 18(int) AtomicUMin 265 237 19 264
267: 18(int) Load 229(ui)
268: 18(int) IAdd 267 266
Store 229(ui) 268
269: 6(int) Load 132(ic1D)
271: 235(ptr) ImageTexelPointer 232(ii1D) 269 0
271: 235(ptr) ImageTexelPointer 232(ii1D) 269 19
272: 6(int) AtomicSMax 271 237 19 270
273: 20(ptr) AccessChain 9(iv) 19
274: 6(int) Load 273
@ -385,13 +418,13 @@ Linked fragment stage:
Store 276 275
277: 29(ivec2) Load 142(ic2D)
278: 18(int) Load 248(value)
279: 250(ptr) ImageTexelPointer 245(ui2D) 277 0
279: 250(ptr) ImageTexelPointer 245(ui2D) 277 19
280: 18(int) AtomicUMax 279 237 19 278
281: 18(int) Load 229(ui)
282: 18(int) IAdd 281 280
Store 229(ui) 282
283: 6(int) Load 132(ic1D)
285: 235(ptr) ImageTexelPointer 232(ii1D) 283 0
285: 235(ptr) ImageTexelPointer 232(ii1D) 283 19
286: 6(int) AtomicAnd 285 237 19 284
287: 20(ptr) AccessChain 9(iv) 19
288: 6(int) Load 287
@ -400,13 +433,13 @@ Linked fragment stage:
Store 290 289
291: 29(ivec2) Load 142(ic2D)
292: 18(int) Load 248(value)
293: 250(ptr) ImageTexelPointer 245(ui2D) 291 0
293: 250(ptr) ImageTexelPointer 245(ui2D) 291 19
294: 18(int) AtomicAnd 293 237 19 292
295: 18(int) Load 229(ui)
296: 18(int) IAdd 295 294
Store 229(ui) 296
297: 6(int) Load 132(ic1D)
299: 235(ptr) ImageTexelPointer 232(ii1D) 297 0
299: 235(ptr) ImageTexelPointer 232(ii1D) 297 19
300: 6(int) AtomicOr 299 237 19 298
301: 20(ptr) AccessChain 9(iv) 19
302: 6(int) Load 301
@ -415,13 +448,13 @@ Linked fragment stage:
Store 304 303
305: 29(ivec2) Load 142(ic2D)
306: 18(int) Load 248(value)
307: 250(ptr) ImageTexelPointer 245(ui2D) 305 0
307: 250(ptr) ImageTexelPointer 245(ui2D) 305 19
308: 18(int) AtomicOr 307 237 19 306
309: 18(int) Load 229(ui)
310: 18(int) IAdd 309 308
Store 229(ui) 310
311: 6(int) Load 132(ic1D)
313: 235(ptr) ImageTexelPointer 232(ii1D) 311 0
313: 235(ptr) ImageTexelPointer 232(ii1D) 311 19
314: 6(int) AtomicXor 313 237 19 312
315: 20(ptr) AccessChain 9(iv) 19
316: 6(int) Load 315
@ -430,13 +463,13 @@ Linked fragment stage:
Store 318 317
319: 29(ivec2) Load 142(ic2D)
320: 18(int) Load 248(value)
321: 250(ptr) ImageTexelPointer 245(ui2D) 319 0
321: 250(ptr) ImageTexelPointer 245(ui2D) 319 19
322: 18(int) AtomicXor 321 237 19 320
323: 18(int) Load 229(ui)
324: 18(int) IAdd 323 322
Store 229(ui) 324
325: 6(int) Load 132(ic1D)
327: 235(ptr) ImageTexelPointer 232(ii1D) 325 0
327: 235(ptr) ImageTexelPointer 232(ii1D) 325 19
328: 6(int) AtomicExchange 327 237 19 326
329: 20(ptr) AccessChain 9(iv) 19
330: 6(int) Load 329
@ -445,13 +478,13 @@ Linked fragment stage:
Store 332 331
333: 29(ivec2) Load 142(ic2D)
334: 18(int) Load 248(value)
335: 250(ptr) ImageTexelPointer 245(ui2D) 333 0
335: 250(ptr) ImageTexelPointer 245(ui2D) 333 19
336: 18(int) AtomicExchange 335 237 19 334
337: 18(int) Load 229(ui)
338: 18(int) IAdd 337 336
Store 229(ui) 338
339: 6(int) Load 132(ic1D)
342: 235(ptr) ImageTexelPointer 232(ii1D) 339 0
342: 235(ptr) ImageTexelPointer 232(ii1D) 339 19
343: 6(int) AtomicCompareExchange 342 237 19 19 341 340
344: 20(ptr) AccessChain 9(iv) 19
345: 6(int) Load 344
@ -460,27 +493,31 @@ Linked fragment stage:
Store 347 346
348: 29(ivec2) Load 142(ic2D)
350: 18(int) Load 248(value)
351: 250(ptr) ImageTexelPointer 245(ui2D) 348 0
351: 250(ptr) ImageTexelPointer 245(ui2D) 348 19
352: 18(int) AtomicCompareExchange 351 237 19 19 350 349
353: 18(int) Load 229(ui)
354: 18(int) IAdd 353 352
Store 229(ui) 354
358: 18(int) Load 229(ui)
359: 20(ptr) AccessChain 9(iv) 237
360: 6(int) Load 359
361: 18(int) Bitcast 360
363: 362(bool) INotEqual 358 361
SelectionMerge 365 None
BranchConditional 363 364 367
364: Label
366: 125(fvec4) Load 127(v)
Store 357 366
Branch 365
367: Label
Store 357 129
Branch 365
365: Label
368: 125(fvec4) Load 357
Store 356(fragData) 368
358: 355 Load 357(wo2D)
359: 29(ivec2) Load 142(ic2D)
360: 125(fvec4) Load 127(v)
ImageWrite 358 359 360
364: 18(int) Load 229(ui)
365: 20(ptr) AccessChain 9(iv) 237
366: 6(int) Load 365
367: 18(int) Bitcast 366
369: 368(bool) INotEqual 364 367
SelectionMerge 371 None
BranchConditional 369 370 373
370: Label
372: 125(fvec4) Load 127(v)
Store 363 372
Branch 371
373: Label
Store 363 129
Branch 371
371: Label
374: 125(fvec4) Load 363
Store 362(fragData) 374
Return
FunctionEnd

View file

@ -7,12 +7,12 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 270
// Id's are bound by 268
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 9 15 21 26 47 67 83 100 121 142 146 156 173 182 247 268 269
EntryPoint Vertex 4 "main" 9 15 21 26 47 67 83 100 121 142 146 156 173 182 247
Source ESSL 310
Name 4 "main"
Name 9 "iout"
@ -44,10 +44,8 @@ Linked vertex stage:
Name 173 "u3"
Name 182 "i3"
Name 247 "v4"
Name 268 "gl_VertexID"
Name 269 "gl_InstanceID"
Decorate 268(gl_VertexID) BuiltIn VertexId
Decorate 269(gl_InstanceID) BuiltIn InstanceId
Decorate 261 RelaxedPrecision
Decorate 265 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -115,8 +113,6 @@ Linked vertex stage:
182(i3): 181(ptr) Variable Input
246: TypePointer Input 19(fvec4)
247(v4): 246(ptr) Variable Input
268(gl_VertexID): 155(ptr) Variable Input
269(gl_InstanceID): 155(ptr) Variable Input
4(main): 2 Function None 3
5: Label
30(u2out): 29(ptr) Variable Function

View file

@ -7,13 +7,14 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 101
// Id's are bound by 100
Capability Shader
Capability InterpolationFunction
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 13 24 33 41 99
ExecutionMode 4 OriginLowerLeft
EntryPoint Fragment 4 "main" 13 24 33 41 47 72 98
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "f4"
@ -22,8 +23,10 @@ Linked fragment stage:
Name 33 "if3"
Name 41 "if4"
Name 47 "samp"
Name 73 "offset"
Name 99 "fragColor"
Name 72 "offset"
Name 98 "fragColor"
Decorate 47(samp) Flat
Decorate 72(offset) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -45,12 +48,11 @@ Linked fragment stage:
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
46: TypePointer Input 45(int)
47(samp): 46(ptr) Variable Input
72(offset): 23(ptr) Variable Input
97: TypePointer Output 7(fvec4)
98(fragColor): 97(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(f4): 8(ptr) Variable Function
@ -107,35 +109,35 @@ Linked fragment stage:
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
73: 22(fvec2) Load 72(offset)
74: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 73
75: 17(ptr) AccessChain 9(f4) 16
76: 6(float) Load 75
77: 6(float) FAdd 76 74
78: 17(ptr) AccessChain 9(f4) 16
Store 78 77
79: 22(fvec2) Load 72(offset)
80: 22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 79
81: 7(fvec4) Load 9(f4)
82: 22(fvec2) VectorShuffle 81 81 0 1
83: 22(fvec2) FAdd 82 80
84: 7(fvec4) Load 9(f4)
85: 7(fvec4) VectorShuffle 84 83 4 5 2 3
Store 9(f4) 85
86: 22(fvec2) Load 72(offset)
87: 31(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33(if3) 86
88: 7(fvec4) Load 9(f4)
89: 31(fvec3) VectorShuffle 88 88 0 1 2
90: 31(fvec3) FAdd 89 87
91: 7(fvec4) Load 9(f4)
92: 7(fvec4) VectorShuffle 91 90 4 5 6 3
Store 9(f4) 92
93: 22(fvec2) Load 72(offset)
94: 7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 41(if4) 93
95: 7(fvec4) Load 9(f4)
96: 7(fvec4) FAdd 95 94
Store 9(f4) 96
99: 7(fvec4) Load 9(f4)
Store 98(fragColor) 99
Return
FunctionEnd

View file

@ -7,12 +7,12 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 70
// Id's are bound by 67
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 63 66 68 69
EntryPoint Vertex 4 "main" 63 66
Source GLSL 450
Name 4 "main"
Name 14 "S"
@ -92,8 +92,6 @@ Linked vertex stage:
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
@ -175,8 +173,6 @@ Linked vertex stage:
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
@ -240,9 +236,6 @@ Linked vertex stage:
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

View file

@ -11,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 14 26
ExecutionMode 4 OriginLowerLeft
Source GLSL 120
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "t"
Name 14 "v"
@ -39,8 +39,8 @@ Linked fragment stage:
28: 24(fvec4) ConstantComposite 27 27 27 27
29: 10(int) Constant 3
30: TypeArray 24(fvec4) 29
31: TypePointer UniformConstant 30
32(u): 31(ptr) Variable UniformConstant
31: TypePointer Private 30
32(u): 31(ptr) Variable Private
4(main): 2 Function None 3
5: Label
9(t): 8(ptr) Variable Function

View file

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

File diff suppressed because it is too large Load diff

View file

@ -1,70 +1,40 @@
spv.loopsArtificial.frag
WARNING: 0:14: varying deprecated in version 130; may be removed in future release
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 191
// Id's are bound by 158
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 144
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
EntryPoint Fragment 4 "main" 11 17 27 80 140 142 143 144 145 146 147 148 149 150 151 152 153 154 157
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 9 "color"
Name 11 "BaseColor"
Name 17 "bigColor4"
Name 27 "d4"
Name 32 "bigColor4"
Name 84 "d13"
Name 144 "gl_FragColor"
Name 146 "bigColor"
Name 147 "bigColor1_1"
Name 148 "bigColor1_2"
Name 149 "bigColor1_3"
Name 150 "bigColor2"
Name 151 "bigColor3"
Name 152 "bigColor5"
Name 153 "bigColor6"
Name 154 "bigColor7"
Name 155 "bigColor8"
Name 156 "d"
Name 157 "d2"
Name 158 "d3"
Name 159 "d5"
Name 160 "d6"
Name 161 "d7"
Name 162 "d8"
Name 163 "d9"
Name 164 "d10"
Name 165 "d11"
Name 166 "d12"
Name 167 "d14"
Name 168 "d15"
Name 169 "d16"
Name 170 "d17"
Name 171 "d18"
Name 172 "d19"
Name 173 "d20"
Name 174 "d21"
Name 175 "d22"
Name 176 "d23"
Name 177 "d24"
Name 178 "d25"
Name 179 "d26"
Name 180 "d27"
Name 181 "d28"
Name 182 "d29"
Name 183 "d30"
Name 184 "d31"
Name 185 "d32"
Name 186 "d33"
Name 187 "d34"
Name 190 "Count"
Name 80 "d13"
Name 140 "gl_FragColor"
Name 142 "bigColor"
Name 143 "bigColor1_1"
Name 144 "bigColor1_2"
Name 145 "bigColor1_3"
Name 146 "bigColor2"
Name 147 "bigColor3"
Name 148 "bigColor5"
Name 149 "bigColor6"
Name 150 "bigColor7"
Name 151 "bigColor8"
Name 152 "d"
Name 153 "d2"
Name 154 "d3"
Name 157 "Count"
Decorate 157(Count) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -72,69 +42,37 @@ Linked fragment stage:
8: TypePointer Function 7(fvec4)
10: TypePointer Input 7(fvec4)
11(BaseColor): 10(ptr) Variable Input
17: TypeBool
18: 17(bool) ConstantTrue
17(bigColor4): 10(ptr) Variable Input
21: TypeInt 32 0
22: 21(int) Constant 2
22: 21(int) Constant 0
23: TypePointer Function 6(float)
26: TypePointer UniformConstant 6(float)
27(d4): 26(ptr) Variable UniformConstant
31: TypePointer UniformConstant 7(fvec4)
32(bigColor4): 31(ptr) Variable UniformConstant
36: 21(int) Constant 0
43: 6(float) Constant 1073741824
56: 6(float) Constant 1065353216
58: 17(bool) ConstantFalse
60: 21(int) Constant 1
81: 21(int) Constant 3
84(d13): 26(ptr) Variable UniformConstant
143: TypePointer Output 7(fvec4)
144(gl_FragColor): 143(ptr) Variable Output
146(bigColor): 31(ptr) Variable UniformConstant
147(bigColor1_1): 31(ptr) Variable UniformConstant
148(bigColor1_2): 31(ptr) Variable UniformConstant
149(bigColor1_3): 31(ptr) Variable UniformConstant
150(bigColor2): 31(ptr) Variable UniformConstant
151(bigColor3): 31(ptr) Variable UniformConstant
152(bigColor5): 31(ptr) Variable UniformConstant
153(bigColor6): 31(ptr) Variable UniformConstant
154(bigColor7): 31(ptr) Variable UniformConstant
155(bigColor8): 31(ptr) Variable UniformConstant
156(d): 26(ptr) Variable UniformConstant
157(d2): 26(ptr) Variable UniformConstant
158(d3): 26(ptr) Variable UniformConstant
159(d5): 26(ptr) Variable UniformConstant
160(d6): 26(ptr) Variable UniformConstant
161(d7): 26(ptr) Variable UniformConstant
162(d8): 26(ptr) Variable UniformConstant
163(d9): 26(ptr) Variable UniformConstant
164(d10): 26(ptr) Variable UniformConstant
165(d11): 26(ptr) Variable UniformConstant
166(d12): 26(ptr) Variable UniformConstant
167(d14): 26(ptr) Variable UniformConstant
168(d15): 26(ptr) Variable UniformConstant
169(d16): 26(ptr) Variable UniformConstant
170(d17): 26(ptr) Variable UniformConstant
171(d18): 26(ptr) Variable UniformConstant
172(d19): 26(ptr) Variable UniformConstant
173(d20): 26(ptr) Variable UniformConstant
174(d21): 26(ptr) Variable UniformConstant
175(d22): 26(ptr) Variable UniformConstant
176(d23): 26(ptr) Variable UniformConstant
177(d24): 26(ptr) Variable UniformConstant
178(d25): 26(ptr) Variable UniformConstant
179(d26): 26(ptr) Variable UniformConstant
180(d27): 26(ptr) Variable UniformConstant
181(d28): 26(ptr) Variable UniformConstant
182(d29): 26(ptr) Variable UniformConstant
183(d30): 26(ptr) Variable UniformConstant
184(d31): 26(ptr) Variable UniformConstant
185(d32): 26(ptr) Variable UniformConstant
186(d33): 26(ptr) Variable UniformConstant
187(d34): 26(ptr) Variable UniformConstant
188: TypeInt 32 1
189: TypePointer UniformConstant 188(int)
190(Count): 189(ptr) Variable UniformConstant
26: TypePointer Input 6(float)
27(d4): 26(ptr) Variable Input
29: TypeBool
33: 6(float) Constant 1073741824
34: 21(int) Constant 2
47: 6(float) Constant 1065353216
50: 21(int) Constant 1
77: 21(int) Constant 3
80(d13): 26(ptr) Variable Input
139: TypePointer Output 7(fvec4)
140(gl_FragColor): 139(ptr) Variable Output
142(bigColor): 10(ptr) Variable Input
143(bigColor1_1): 10(ptr) Variable Input
144(bigColor1_2): 10(ptr) Variable Input
145(bigColor1_3): 10(ptr) Variable Input
146(bigColor2): 10(ptr) Variable Input
147(bigColor3): 10(ptr) Variable Input
148(bigColor5): 10(ptr) Variable Input
149(bigColor6): 10(ptr) Variable Input
150(bigColor7): 10(ptr) Variable Input
151(bigColor8): 10(ptr) Variable Input
152(d): 26(ptr) Variable Input
153(d2): 26(ptr) Variable Input
154(d3): 26(ptr) Variable Input
155: TypeInt 32 1
156: TypePointer Input 155(int)
157(Count): 156(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(color): 8(ptr) Variable Function
@ -142,167 +80,164 @@ Linked fragment stage:
Store 9(color) 12
Branch 13
13: Label
16: 17(bool) Phi 18 5 58 52 58 66
LoopMerge 14 13 None
Branch 19
19: Label
SelectionMerge 15 None
BranchConditional 16 15 20
20: Label
24: 23(ptr) AccessChain 9(color) 22
25: 6(float) Load 24
28: 6(float) Load 27(d4)
29: 17(bool) FOrdLessThan 25 28
SelectionMerge 30 None
BranchConditional 29 30 14
30: Label
Branch 15
15: Label
33: 7(fvec4) Load 32(bigColor4)
34: 7(fvec4) Load 9(color)
35: 7(fvec4) FAdd 34 33
Store 9(color) 35
37: 23(ptr) AccessChain 9(color) 36
38: 6(float) Load 37
39: 6(float) Load 27(d4)
40: 17(bool) FOrdLessThan 38 39
SelectionMerge 42 None
BranchConditional 40 41 42
41: Label
44: 23(ptr) AccessChain 9(color) 22
45: 6(float) Load 44
46: 6(float) FAdd 45 43
47: 23(ptr) AccessChain 9(color) 22
Store 47 46
48: 23(ptr) AccessChain 9(color) 22
49: 6(float) Load 48
50: 6(float) Load 27(d4)
51: 17(bool) FOrdLessThan 49 50
SelectionMerge 53 None
BranchConditional 51 52 53
52: Label
54: 23(ptr) AccessChain 9(color) 36
55: 6(float) Load 54
57: 6(float) FAdd 55 56
Store 54 57
Branch 13
53: Label
Branch 42
42: Label
61: 23(ptr) AccessChain 9(color) 60
62: 6(float) Load 61
63: 6(float) Load 27(d4)
64: 17(bool) FOrdLessThan 62 63
SelectionMerge 66 None
BranchConditional 64 65 72
65: Label
67: 6(float) Load 27(d4)
68: 23(ptr) AccessChain 9(color) 60
69: 6(float) Load 68
70: 6(float) FAdd 69 67
71: 23(ptr) AccessChain 9(color) 60
Store 71 70
Branch 66
72: Label
73: 6(float) Load 27(d4)
74: 23(ptr) AccessChain 9(color) 36
75: 6(float) Load 74
76: 6(float) FAdd 75 73
77: 23(ptr) AccessChain 9(color) 36
Store 77 76
Branch 66
66: Label
Branch 13
LoopMerge 15 16 None
Branch 14
14: Label
Branch 78
78: Label
82: 23(ptr) AccessChain 9(color) 81
83: 6(float) Load 82
85: 6(float) Load 84(d13)
86: 17(bool) FOrdLessThan 83 85
LoopMerge 79 78 None
BranchConditional 86 80 79
80: Label
87: 23(ptr) AccessChain 9(color) 22
88: 6(float) Load 87
89: 6(float) Load 84(d13)
90: 17(bool) FOrdLessThan 88 89
SelectionMerge 92 None
BranchConditional 90 91 96
91: Label
18: 7(fvec4) Load 17(bigColor4)
19: 7(fvec4) Load 9(color)
20: 7(fvec4) FAdd 19 18
Store 9(color) 20
24: 23(ptr) AccessChain 9(color) 22
25: 6(float) Load 24
28: 6(float) Load 27(d4)
30: 29(bool) FOrdLessThan 25 28
SelectionMerge 32 None
BranchConditional 30 31 32
31: Label
35: 23(ptr) AccessChain 9(color) 34
36: 6(float) Load 35
37: 6(float) FAdd 36 33
38: 23(ptr) AccessChain 9(color) 34
Store 38 37
39: 23(ptr) AccessChain 9(color) 34
40: 6(float) Load 39
41: 6(float) Load 27(d4)
42: 29(bool) FOrdLessThan 40 41
SelectionMerge 44 None
BranchConditional 42 43 44
43: Label
45: 23(ptr) AccessChain 9(color) 22
46: 6(float) Load 45
48: 6(float) FAdd 46 47
Store 45 48
Branch 16
44: Label
Branch 32
32: Label
51: 23(ptr) AccessChain 9(color) 50
52: 6(float) Load 51
53: 6(float) Load 27(d4)
54: 29(bool) FOrdLessThan 52 53
SelectionMerge 56 None
BranchConditional 54 55 62
55: Label
57: 6(float) Load 27(d4)
58: 23(ptr) AccessChain 9(color) 50
59: 6(float) Load 58
60: 6(float) FAdd 59 57
61: 23(ptr) AccessChain 9(color) 50
Store 61 60
Branch 56
62: Label
63: 6(float) Load 27(d4)
64: 23(ptr) AccessChain 9(color) 22
65: 6(float) Load 64
66: 6(float) FAdd 65 63
67: 23(ptr) AccessChain 9(color) 22
Store 67 66
Branch 56
56: Label
Branch 16
16: Label
68: 23(ptr) AccessChain 9(color) 34
69: 6(float) Load 68
70: 6(float) Load 27(d4)
71: 29(bool) FOrdLessThan 69 70
BranchConditional 71 13 15
15: Label
Branch 72
72: Label
LoopMerge 74 75 None
Branch 76
76: Label
78: 23(ptr) AccessChain 9(color) 77
79: 6(float) Load 78
81: 6(float) Load 80(d13)
82: 29(bool) FOrdLessThan 79 81
BranchConditional 82 73 74
73: Label
83: 23(ptr) AccessChain 9(color) 34
84: 6(float) Load 83
85: 6(float) Load 80(d13)
86: 29(bool) FOrdLessThan 84 85
SelectionMerge 88 None
BranchConditional 86 87 92
87: Label
89: 7(fvec4) Load 9(color)
90: 7(fvec4) CompositeConstruct 47 47 47 47
91: 7(fvec4) FAdd 89 90
Store 9(color) 91
Branch 88
92: Label
93: 7(fvec4) Load 9(color)
94: 7(fvec4) CompositeConstruct 56 56 56 56
95: 7(fvec4) FAdd 93 94
94: 7(fvec4) CompositeConstruct 47 47 47 47
95: 7(fvec4) FSub 93 94
Store 9(color) 95
Branch 92
96: Label
97: 7(fvec4) Load 9(color)
98: 7(fvec4) CompositeConstruct 56 56 56 56
99: 7(fvec4) FSub 97 98
Store 9(color) 99
Branch 92
92: Label
100: 7(fvec4) Load 32(bigColor4)
101: 7(fvec4) Load 9(color)
102: 7(fvec4) FAdd 101 100
Store 9(color) 102
103: 23(ptr) AccessChain 9(color) 36
104: 6(float) Load 103
105: 6(float) Load 27(d4)
106: 17(bool) FOrdLessThan 104 105
SelectionMerge 108 None
BranchConditional 106 107 108
107: Label
109: 23(ptr) AccessChain 9(color) 22
Branch 88
88: Label
96: 7(fvec4) Load 17(bigColor4)
97: 7(fvec4) Load 9(color)
98: 7(fvec4) FAdd 97 96
Store 9(color) 98
99: 23(ptr) AccessChain 9(color) 22
100: 6(float) Load 99
101: 6(float) Load 27(d4)
102: 29(bool) FOrdLessThan 100 101
SelectionMerge 104 None
BranchConditional 102 103 104
103: Label
105: 23(ptr) AccessChain 9(color) 34
106: 6(float) Load 105
107: 6(float) FAdd 106 33
108: 23(ptr) AccessChain 9(color) 34
Store 108 107
109: 23(ptr) AccessChain 9(color) 34
110: 6(float) Load 109
111: 6(float) FAdd 110 43
112: 23(ptr) AccessChain 9(color) 22
Store 112 111
113: 23(ptr) AccessChain 9(color) 22
114: 6(float) Load 113
115: 6(float) Load 27(d4)
116: 17(bool) FOrdLessThan 114 115
SelectionMerge 118 None
BranchConditional 116 117 118
117: Label
119: 23(ptr) AccessChain 9(color) 36
120: 6(float) Load 119
121: 6(float) FAdd 120 56
Store 119 121
Branch 78
118: Label
Branch 108
108: Label
123: 23(ptr) AccessChain 9(color) 60
124: 6(float) Load 123
125: 6(float) Load 27(d4)
126: 17(bool) FOrdLessThan 124 125
SelectionMerge 128 None
BranchConditional 126 127 134
127: Label
129: 6(float) Load 27(d4)
130: 23(ptr) AccessChain 9(color) 60
131: 6(float) Load 130
132: 6(float) FAdd 131 129
133: 23(ptr) AccessChain 9(color) 60
Store 133 132
Branch 128
134: Label
135: 6(float) Load 27(d4)
136: 23(ptr) AccessChain 9(color) 36
137: 6(float) Load 136
138: 6(float) FAdd 137 135
139: 23(ptr) AccessChain 9(color) 36
Store 139 138
Branch 128
128: Label
Branch 78
79: Label
140: 7(fvec4) Load 9(color)
141: 7(fvec4) CompositeConstruct 56 56 56 56
142: 7(fvec4) FAdd 140 141
Store 9(color) 142
145: 7(fvec4) Load 9(color)
Store 144(gl_FragColor) 145
111: 6(float) Load 27(d4)
112: 29(bool) FOrdLessThan 110 111
SelectionMerge 114 None
BranchConditional 112 113 114
113: Label
115: 23(ptr) AccessChain 9(color) 22
116: 6(float) Load 115
117: 6(float) FAdd 116 47
Store 115 117
Branch 75
114: Label
Branch 104
104: Label
119: 23(ptr) AccessChain 9(color) 50
120: 6(float) Load 119
121: 6(float) Load 27(d4)
122: 29(bool) FOrdLessThan 120 121
SelectionMerge 124 None
BranchConditional 122 123 130
123: Label
125: 6(float) Load 27(d4)
126: 23(ptr) AccessChain 9(color) 50
127: 6(float) Load 126
128: 6(float) FAdd 127 125
129: 23(ptr) AccessChain 9(color) 50
Store 129 128
Branch 124
130: Label
131: 6(float) Load 27(d4)
132: 23(ptr) AccessChain 9(color) 22
133: 6(float) Load 132
134: 6(float) FAdd 133 131
135: 23(ptr) AccessChain 9(color) 22
Store 135 134
Branch 124
124: Label
Branch 75
75: Label
Branch 72
74: Label
136: 7(fvec4) Load 9(color)
137: 7(fvec4) CompositeConstruct 47 47 47 47
138: 7(fvec4) FAdd 136 137
Store 9(color) 138
141: 7(fvec4) Load 9(color)
Store 140(gl_FragColor) 141
Return
FunctionEnd

View file

@ -1,17 +1,20 @@
spv.matFun.vert
Warning, version 400 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 93
// Id's are bound by 103
Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 69 73 92
Source GLSL 130
EntryPoint Vertex 4 "main" 76 81
Source GLSL 400
Name 4 "main"
Name 14 "xf(mf33;vf3;"
Name 12 "m"
@ -21,18 +24,33 @@ Linked vertex stage:
Name 26 "mxv(mf44;vf3;"
Name 24 "m4"
Name 25 "v"
Name 63 "param"
Name 69 "gl_Position"
Name 71 "m4"
Name 73 "v3"
Name 74 "param"
Name 76 "param"
Name 80 "m3"
Name 81 "param"
Name 83 "param"
Name 92 "gl_VertexID"
Decorate 69(gl_Position) BuiltIn Position
Decorate 92(gl_VertexID) BuiltIn VertexId
Name 65 "param"
Name 74 "gl_PerVertex"
MemberName 74(gl_PerVertex) 0 "gl_Position"
MemberName 74(gl_PerVertex) 1 "gl_PointSize"
MemberName 74(gl_PerVertex) 2 "gl_ClipDistance"
Name 76 ""
Name 77 "bl"
MemberName 77(bl) 0 "m4"
MemberName 77(bl) 1 "m3"
Name 79 "bName"
Name 81 "v3"
Name 82 "param"
Name 86 "param"
Name 89 "param"
Name 93 "param"
MemberDecorate 74(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 74(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 74(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 74(gl_PerVertex) Block
MemberDecorate 77(bl) 0 ColMajor
MemberDecorate 77(bl) 0 Offset 0
MemberDecorate 77(bl) 0 MatrixStride 16
MemberDecorate 77(bl) 1 ColMajor
MemberDecorate 77(bl) 1 Offset 64
MemberDecorate 77(bl) 1 MatrixStride 16
Decorate 77(bl) Block
Decorate 79(bName) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -46,45 +64,52 @@ Linked vertex stage:
18: TypePointer Function 17
19: TypeFunction 8 18(ptr)
23: TypeFunction 7(fvec3) 18(ptr) 10(ptr)
32: TypeInt 32 1
33: 32(int) Constant 0
34: TypePointer Function 16(fvec4)
38: 32(int) Constant 1
42: 32(int) Constant 2
46: 6(float) Constant 1065353216
47: 6(float) Constant 0
68: TypePointer Output 16(fvec4)
69(gl_Position): 68(ptr) Variable Output
70: TypePointer UniformConstant 17
71(m4): 70(ptr) Variable UniformConstant
72: TypePointer Input 7(fvec3)
73(v3): 72(ptr) Variable Input
79: TypePointer UniformConstant 8
80(m3): 79(ptr) Variable UniformConstant
91: TypePointer Input 32(int)
92(gl_VertexID): 91(ptr) Variable Input
33: TypeInt 32 1
34: 33(int) Constant 0
35: TypePointer Function 16(fvec4)
39: 33(int) Constant 1
43: 33(int) Constant 2
47: 6(float) Constant 1065353216
48: 6(float) Constant 0
71: TypeInt 32 0
72: 71(int) Constant 1
73: TypeArray 6(float) 72
74(gl_PerVertex): TypeStruct 16(fvec4) 6(float) 73
75: TypePointer Output 74(gl_PerVertex)
76: 75(ptr) Variable Output
77(bl): TypeStruct 17 8
78: TypePointer Uniform 77(bl)
79(bName): 78(ptr) Variable Uniform
80: TypePointer Input 7(fvec3)
81(v3): 80(ptr) Variable Input
83: TypePointer Uniform 17
90: TypePointer Uniform 8
101: TypePointer Output 16(fvec4)
4(main): 2 Function None 3
5: Label
74(param): 18(ptr) Variable Function
76(param): 10(ptr) Variable Function
81(param): 9(ptr) Variable Function
83(param): 10(ptr) Variable Function
75: 17 Load 71(m4)
Store 74(param) 75
77: 7(fvec3) Load 73(v3)
Store 76(param) 77
78: 7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 74(param) 76(param)
82: 8 Load 80(m3)
Store 81(param) 82
84: 7(fvec3) Load 73(v3)
Store 83(param) 84
85: 7(fvec3) FunctionCall 14(xf(mf33;vf3;) 81(param) 83(param)
86: 7(fvec3) FAdd 78 85
87: 6(float) CompositeExtract 86 0
88: 6(float) CompositeExtract 86 1
89: 6(float) CompositeExtract 86 2
90: 16(fvec4) CompositeConstruct 87 88 89 46
Store 69(gl_Position) 90
82(param): 18(ptr) Variable Function
86(param): 10(ptr) Variable Function
89(param): 9(ptr) Variable Function
93(param): 10(ptr) Variable Function
84: 83(ptr) AccessChain 79(bName) 34
85: 17 Load 84
Store 82(param) 85
87: 7(fvec3) Load 81(v3)
Store 86(param) 87
88: 7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 82(param) 86(param)
91: 90(ptr) AccessChain 79(bName) 39
92: 8 Load 91
Store 89(param) 92
94: 7(fvec3) Load 81(v3)
Store 93(param) 94
95: 7(fvec3) FunctionCall 14(xf(mf33;vf3;) 89(param) 93(param)
96: 7(fvec3) FAdd 88 95
97: 6(float) CompositeExtract 96 0
98: 6(float) CompositeExtract 96 1
99: 6(float) CompositeExtract 96 2
100: 16(fvec4) CompositeConstruct 97 98 99 47
102: 101(ptr) AccessChain 76 34
Store 102 100
Return
FunctionEnd
14(xf(mf33;vf3;): 7(fvec3) Function None 11
@ -99,39 +124,39 @@ Linked vertex stage:
21(Mat3(mf44;): 8 Function None 19
20(m): 18(ptr) FunctionParameter
22: Label
35: 34(ptr) AccessChain 20(m) 33
36: 16(fvec4) Load 35
37: 7(fvec3) VectorShuffle 36 36 0 1 2
39: 34(ptr) AccessChain 20(m) 38
40: 16(fvec4) Load 39
41: 7(fvec3) VectorShuffle 40 40 0 1 2
43: 34(ptr) AccessChain 20(m) 42
44: 16(fvec4) Load 43
45: 7(fvec3) VectorShuffle 44 44 0 1 2
48: 6(float) CompositeExtract 37 0
49: 6(float) CompositeExtract 37 1
50: 6(float) CompositeExtract 37 2
51: 6(float) CompositeExtract 41 0
52: 6(float) CompositeExtract 41 1
53: 6(float) CompositeExtract 41 2
54: 6(float) CompositeExtract 45 0
55: 6(float) CompositeExtract 45 1
56: 6(float) CompositeExtract 45 2
57: 7(fvec3) CompositeConstruct 48 49 50
58: 7(fvec3) CompositeConstruct 51 52 53
59: 7(fvec3) CompositeConstruct 54 55 56
60: 8 CompositeConstruct 57 58 59
ReturnValue 60
36: 35(ptr) AccessChain 20(m) 34
37: 16(fvec4) Load 36
38: 7(fvec3) VectorShuffle 37 37 0 1 2
40: 35(ptr) AccessChain 20(m) 39
41: 16(fvec4) Load 40
42: 7(fvec3) VectorShuffle 41 41 0 1 2
44: 35(ptr) AccessChain 20(m) 43
45: 16(fvec4) Load 44
46: 7(fvec3) VectorShuffle 45 45 0 1 2
49: 6(float) CompositeExtract 38 0
50: 6(float) CompositeExtract 38 1
51: 6(float) CompositeExtract 38 2
52: 6(float) CompositeExtract 42 0
53: 6(float) CompositeExtract 42 1
54: 6(float) CompositeExtract 42 2
55: 6(float) CompositeExtract 46 0
56: 6(float) CompositeExtract 46 1
57: 6(float) CompositeExtract 46 2
58: 7(fvec3) CompositeConstruct 49 50 51
59: 7(fvec3) CompositeConstruct 52 53 54
60: 7(fvec3) CompositeConstruct 55 56 57
61: 8 CompositeConstruct 58 59 60
ReturnValue 61
FunctionEnd
26(mxv(mf44;vf3;): 7(fvec3) Function None 23
24(m4): 18(ptr) FunctionParameter
25(v): 10(ptr) FunctionParameter
27: Label
63(param): 18(ptr) Variable Function
62: 7(fvec3) Load 25(v)
64: 17 Load 24(m4)
Store 63(param) 64
65: 8 FunctionCall 21(Mat3(mf44;) 63(param)
66: 7(fvec3) VectorTimesMatrix 62 65
ReturnValue 66
65(param): 18(ptr) Variable Function
64: 7(fvec3) Load 25(v)
66: 17 Load 24(m4)
Store 65(param) 66
67: 8 FunctionCall 21(Mat3(mf44;) 65(param)
68: 7(fvec3) VectorTimesMatrix 64 67
ReturnValue 68
FunctionEnd

View file

@ -11,8 +11,8 @@ Linked fragment stage:
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 14 28 140 148 166
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
ExecutionMode 4 OriginUpperLeft
Source GLSL 140
Name 4 "main"
Name 10 "sum34"
Name 12 "m1"

View file

@ -5,13 +5,13 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 213
// Id's are bound by 221
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
EntryPoint Fragment 4 "main" 12 16 37 38 65 87 147 158 181 218 219 220
ExecutionMode 4 OriginUpperLeft
Source GLSL 150
Name 4 "main"
Name 10 "m34"
@ -22,15 +22,15 @@ Linked fragment stage:
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"
Name 147 "um4"
Name 156 "inv"
Name 158 "um2"
Name 179 "inv3"
Name 181 "um3"
Name 190 "inv4"
Name 218 "colorTransform"
Name 219 "m"
Name 220 "n"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -62,35 +62,35 @@ Linked fragment stage:
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
146: TypePointer Input 61
147(um4): 146(ptr) Variable Input
153: TypeVector 6(float) 2
154: TypeMatrix 153(fvec2) 2
155: TypePointer Function 154
157: TypePointer Input 154
158(um2): 157(ptr) Variable Input
161: TypeInt 32 1
162: 161(int) Constant 0
163: TypePointer Function 6(float)
166: 161(int) Constant 1
169: 54(int) Constant 1
177: TypeMatrix 14(fvec3) 3
178: TypePointer Function 177
180: TypePointer Input 177
181(um3): 180(ptr) Variable Input
184: 161(int) Constant 2
210: 54(int) Constant 3
211: TypePointer Output 6(float)
218(colorTransform): 180(ptr) Variable Input
219(m): 146(ptr) Variable Input
220(n): 146(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
156(inv): 155(ptr) Variable Function
179(inv3): 178(ptr) Variable Function
190(inv4): 62(ptr) Variable Function
13: 7(fvec4) Load 12(v)
17: 14(fvec3) Load 16(u)
18: 8 OuterProduct 13 17
@ -166,100 +166,108 @@ Linked fragment stage:
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
105: 7(fvec4) CompositeExtract 104 0
106: 7(fvec4) FNegate 105
107: 7(fvec4) CompositeExtract 104 1
108: 7(fvec4) FNegate 107
109: 7(fvec4) CompositeExtract 104 2
110: 7(fvec4) FNegate 109
111: 7(fvec4) CompositeExtract 104 3
112: 7(fvec4) FNegate 111
113: 61 CompositeConstruct 106 108 110 112
114: 7(fvec4) Load 12(v)
115: 7(fvec4) MatrixTimesVector 113 114
116: 7(fvec4) Load 37(FragColor)
117: 7(fvec4) FAdd 116 115
Store 37(FragColor) 117
118: 61 Load 63(m44)
119: 61 Load 63(m44)
120: 7(fvec4) CompositeExtract 118 0
121: 7(fvec4) CompositeExtract 119 0
122: 7(fvec4) FMul 120 121
123: 7(fvec4) CompositeExtract 118 1
124: 7(fvec4) CompositeExtract 119 1
125: 7(fvec4) FMul 123 124
126: 7(fvec4) CompositeExtract 118 2
127: 7(fvec4) CompositeExtract 119 2
128: 7(fvec4) FMul 126 127
129: 7(fvec4) CompositeExtract 118 3
130: 7(fvec4) CompositeExtract 119 3
131: 7(fvec4) FMul 129 130
132: 61 CompositeConstruct 122 125 128 131
133: 7(fvec4) Load 37(FragColor)
134: 7(fvec4) VectorTimesMatrix 133 132
Store 37(FragColor) 134
135: 85 Load 87(um43)
136: 8 Transpose 135
Store 10(m34) 136
137: 7(fvec4) Load 37(FragColor)
138: 8 Load 10(m34)
139: 14(fvec3) VectorTimesMatrix 137 138
140: 6(float) CompositeExtract 139 0
141: 6(float) CompositeExtract 139 1
142: 6(float) CompositeExtract 139 2
143: 7(fvec4) CompositeConstruct 140 141 142 40
144: 7(fvec4) Load 37(FragColor)
145: 7(fvec4) FMul 144 143
Store 37(FragColor) 145
148: 61 Load 147(um4)
149: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 148
150: 7(fvec4) CompositeConstruct 149 149 149 149
151: 7(fvec4) Load 37(FragColor)
152: 7(fvec4) FMul 151 150
Store 37(FragColor) 152
159: 154 Load 158(um2)
160: 154 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 159
Store 156(inv) 160
164: 163(ptr) AccessChain 156(inv) 162 55
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
167: 163(ptr) AccessChain 156(inv) 166 55
168: 6(float) Load 167
170: 163(ptr) AccessChain 156(inv) 162 169
171: 6(float) Load 170
172: 163(ptr) AccessChain 156(inv) 166 169
173: 6(float) Load 172
174: 7(fvec4) CompositeConstruct 165 168 171 173
175: 7(fvec4) Load 37(FragColor)
176: 7(fvec4) FMul 175 174
Store 37(FragColor) 176
182: 177 Load 181(um3)
183: 177 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 182
Store 179(inv3) 183
185: 163(ptr) AccessChain 179(inv3) 184 169
186: 6(float) Load 185
187: 7(fvec4) CompositeConstruct 186 186 186 186
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
189: 7(fvec4) FMul 188 187
Store 37(FragColor) 189
191: 61 Load 147(um4)
192: 61 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 191
Store 190(inv4) 192
193: 61 Load 190(inv4)
194: 7(fvec4) Load 37(FragColor)
195: 7(fvec4) VectorTimesMatrix 194 193
Store 37(FragColor) 195
196: 7(fvec4) Load 37(FragColor)
197: 8 Load 65(un34)
198: 8 Load 65(un34)
199: 7(fvec4) CompositeExtract 197 0
200: 7(fvec4) CompositeExtract 198 0
201: 7(fvec4) FMul 199 200
202: 7(fvec4) CompositeExtract 197 1
203: 7(fvec4) CompositeExtract 198 1
204: 7(fvec4) FMul 202 203
205: 7(fvec4) CompositeExtract 197 2
206: 7(fvec4) CompositeExtract 198 2
207: 7(fvec4) FMul 205 206
208: 8 CompositeConstruct 201 204 207
209: 14(fvec3) VectorTimesMatrix 196 208
212: 211(ptr) AccessChain 37(FragColor) 210
213: 6(float) Load 212
214: 6(float) CompositeExtract 209 0
215: 6(float) CompositeExtract 209 1
216: 6(float) CompositeExtract 209 2
217: 7(fvec4) CompositeConstruct 214 215 216 213
Store 37(FragColor) 217
Return
FunctionEnd

View file

@ -0,0 +1,181 @@
spv.memoryQualifier.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 97
Capability Shader
Capability SampledRect
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "texel"
Name 12 "i1D"
Name 19 "i2D"
Name 28 "i2DRect"
Name 35 "i3D"
Name 44 "iCube"
Name 49 "Data"
MemberName 49(Data) 0 "f1"
MemberName 49(Data) 1 "f2"
Name 50 "Buffer"
MemberName 50(Buffer) 0 "f1"
MemberName 50(Buffer) 1 "f2"
MemberName 50(Buffer) 2 "f3"
MemberName 50(Buffer) 3 "f4"
MemberName 50(Buffer) 4 "i1"
MemberName 50(Buffer) 5 "data"
Name 52 ""
Decorate 12(i1D) DescriptorSet 0
Decorate 12(i1D) Binding 0
Decorate 12(i1D) Coherent
Decorate 19(i2D) DescriptorSet 0
Decorate 19(i2D) Binding 1
Decorate 19(i2D) Volatile
Decorate 28(i2DRect) DescriptorSet 0
Decorate 28(i2DRect) Binding 2
Decorate 28(i2DRect) Restrict
Decorate 35(i3D) DescriptorSet 0
Decorate 35(i3D) Binding 3
Decorate 35(i3D) NonWritable
Decorate 44(iCube) DescriptorSet 0
Decorate 44(iCube) Binding 3
Decorate 44(iCube) NonReadable
MemberDecorate 49(Data) 0 Coherent
MemberDecorate 49(Data) 0 Offset 0
MemberDecorate 49(Data) 1 Coherent
MemberDecorate 49(Data) 1 Offset 8
MemberDecorate 50(Buffer) 0 Coherent
MemberDecorate 50(Buffer) 0 Volatile
MemberDecorate 50(Buffer) 0 Offset 0
MemberDecorate 50(Buffer) 1 Coherent
MemberDecorate 50(Buffer) 1 Restrict
MemberDecorate 50(Buffer) 1 Offset 8
MemberDecorate 50(Buffer) 2 Coherent
MemberDecorate 50(Buffer) 2 NonWritable
MemberDecorate 50(Buffer) 2 Offset 16
MemberDecorate 50(Buffer) 3 Coherent
MemberDecorate 50(Buffer) 3 NonReadable
MemberDecorate 50(Buffer) 3 Offset 32
MemberDecorate 50(Buffer) 4 Coherent
MemberDecorate 50(Buffer) 4 Offset 48
MemberDecorate 50(Buffer) 5 Coherent
MemberDecorate 50(Buffer) 5 Offset 56
Decorate 50(Buffer) BufferBlock
Decorate 52 DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 1D nonsampled format:R32f
11: TypePointer UniformConstant 10
12(i1D): 11(ptr) Variable UniformConstant
14: TypeInt 32 1
15: 14(int) Constant 1
17: TypeImage 6(float) 2D nonsampled format:R32f
18: TypePointer UniformConstant 17
19(i2D): 18(ptr) Variable UniformConstant
21: TypeVector 14(int) 2
22: 21(ivec2) ConstantComposite 15 15
26: TypeImage 6(float) Rect nonsampled format:R32f
27: TypePointer UniformConstant 26
28(i2DRect): 27(ptr) Variable UniformConstant
33: TypeImage 6(float) 3D nonsampled format:R32f
34: TypePointer UniformConstant 33
35(i3D): 34(ptr) Variable UniformConstant
37: TypeVector 14(int) 3
38: 37(ivec3) ConstantComposite 15 15 15
42: TypeImage 6(float) Cube nonsampled format:R32f
43: TypePointer UniformConstant 42
44(iCube): 43(ptr) Variable UniformConstant
47: TypeVector 6(float) 2
48: TypeVector 6(float) 3
49(Data): TypeStruct 6(float) 47(fvec2)
50(Buffer): TypeStruct 6(float) 47(fvec2) 48(fvec3) 7(fvec4) 14(int) 49(Data)
51: TypePointer Uniform 50(Buffer)
52: 51(ptr) Variable Uniform
53: 14(int) Constant 4
54: TypePointer Uniform 14(int)
57: 14(int) Constant 0
58: TypePointer Uniform 6(float)
61: TypePointer Function 6(float)
63: TypePointer Uniform 47(fvec2)
71: 14(int) Constant 2
72: TypePointer Uniform 48(fvec3)
80: 14(int) Constant 5
83: TypeInt 32 0
84: 83(int) Constant 1
88: 83(int) Constant 3
93: 14(int) Constant 3
95: TypePointer Uniform 7(fvec4)
4(main): 2 Function None 3
5: Label
9(texel): 8(ptr) Variable Function
13: 10 Load 12(i1D)
16: 7(fvec4) ImageRead 13 15
Store 9(texel) 16
20: 17 Load 19(i2D)
23: 7(fvec4) ImageRead 20 22
24: 7(fvec4) Load 9(texel)
25: 7(fvec4) FAdd 24 23
Store 9(texel) 25
29: 26 Load 28(i2DRect)
30: 7(fvec4) ImageRead 29 22
31: 7(fvec4) Load 9(texel)
32: 7(fvec4) FAdd 31 30
Store 9(texel) 32
36: 33 Load 35(i3D)
39: 7(fvec4) ImageRead 36 38
40: 7(fvec4) Load 9(texel)
41: 7(fvec4) FAdd 40 39
Store 9(texel) 41
45: 42 Load 44(iCube)
46: 7(fvec4) Load 9(texel)
ImageWrite 45 38 46
55: 54(ptr) AccessChain 52 53
56: 14(int) Load 55
59: 58(ptr) AccessChain 52 57
60: 6(float) Load 59
62: 61(ptr) AccessChain 9(texel) 56
Store 62 60
64: 63(ptr) AccessChain 52 15
65: 47(fvec2) Load 64
66: 7(fvec4) Load 9(texel)
67: 47(fvec2) VectorShuffle 66 66 0 1
68: 47(fvec2) FAdd 67 65
69: 7(fvec4) Load 9(texel)
70: 7(fvec4) VectorShuffle 69 68 4 5 2 3
Store 9(texel) 70
73: 72(ptr) AccessChain 52 71
74: 48(fvec3) Load 73
75: 7(fvec4) Load 9(texel)
76: 48(fvec3) VectorShuffle 75 75 0 1 2
77: 48(fvec3) FSub 76 74
78: 7(fvec4) Load 9(texel)
79: 7(fvec4) VectorShuffle 78 77 4 5 6 3
Store 9(texel) 79
81: 58(ptr) AccessChain 52 80 57
82: 6(float) Load 81
85: 58(ptr) AccessChain 52 80 15 84
86: 6(float) Load 85
87: 6(float) FAdd 82 86
89: 61(ptr) AccessChain 9(texel) 88
90: 6(float) Load 89
91: 6(float) FAdd 90 87
92: 61(ptr) AccessChain 9(texel) 88
Store 92 91
94: 7(fvec4) Load 9(texel)
96: 95(ptr) AccessChain 52 93
Store 96 94
Return
FunctionEnd

View file

@ -0,0 +1,47 @@
spv.merge-unreachable.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 25
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "v"
Decorate 9(v) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Input 7(fvec4)
9(v): 8(ptr) Variable Input
11: 6(float) Constant 1036831949
12: 6(float) Constant 1045220557
13: 6(float) Constant 1050253722
14: 6(float) Constant 1053609165
15: 7(fvec4) ConstantComposite 11 12 13 14
16: TypeBool
17: TypeVector 16(bool) 4
4(main): 2 Function None 3
5: Label
10: 7(fvec4) Load 9(v)
18: 17(bvec4) FOrdEqual 10 15
19: 16(bool) All 18
SelectionMerge 21 None
BranchConditional 19 20 23
20: Label
Kill
23: Label
Return
21: Label
Return
FunctionEnd

View file

@ -10,10 +10,13 @@ Linked fragment stage:
// Id's are bound by 278
Capability Shader
Capability SampledRect
Capability SampledCubeArray
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 26 29 55 81 84 91 247 277
ExecutionMode 4 OriginLowerLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 430
Name 4 "main"
Name 9 "v"
@ -46,9 +49,27 @@ Linked fragment stage:
Name 271 "usCube"
Name 275 "us2DArray"
Name 277 "ic4D"
Decorate 13(s2D) DescriptorSet 0
Decorate 23(sCubeArrayShadow) DescriptorSet 0
Decorate 42(s3D) DescriptorSet 0
Decorate 51(s2DArray) DescriptorSet 0
Decorate 64(s2DShadow) DescriptorSet 0
Decorate 81(ic3D) Flat
Decorate 84(ic1D) Flat
Decorate 91(ic2D) Flat
Decorate 100(sr) DescriptorSet 0
Decorate 125(sCube) DescriptorSet 0
Decorate 136(s2DArrayShadow) DescriptorSet 0
Decorate 168(is2D) DescriptorSet 0
Decorate 203(is3D) DescriptorSet 0
Decorate 215(isCube) DescriptorSet 0
Decorate 227(is2DArray) DescriptorSet 0
Decorate 241(sCubeShadow) DescriptorSet 0
Decorate 259(is2Dms) DescriptorSet 0
Decorate 263(us2D) DescriptorSet 0
Decorate 267(us3D) DescriptorSet 0
Decorate 271(usCube) DescriptorSet 0
Decorate 275(us2DArray) DescriptorSet 0
Decorate 277(ic4D) Flat
2: TypeVoid
3: TypeFunction 2

View file

@ -10,8 +10,8 @@ Linked vertex stage:
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 12 28 55
Source GLSL 120
EntryPoint Vertex 4 "main" 12 22 28 55
Source GLSL 140
Name 4 "main"
Name 9 "a"
Name 12 "v3"
@ -32,8 +32,8 @@ Linked vertex stage:
14: TypeMatrix 10(fvec3) 2
15: TypePointer Function 14
20: TypeMatrix 7(fvec2) 3
21: TypePointer UniformConstant 20
22(m32): 21(ptr) Variable UniformConstant
21: TypePointer Output 20
22(m32): 21(ptr) Variable Output
26: TypeVector 6(float) 4
27: TypePointer Output 26(fvec4)
28(gl_Position): 27(ptr) Variable Output

View file

@ -1,47 +1,92 @@
spv.precision.frag
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 112
// Id's are bound by 127
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 23 57 59 71
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
EntryPoint Fragment 4 "main" 23 59 61 73 116
ExecutionMode 4 OriginUpperLeft
Source ESSL 310
Name 4 "main"
Name 12 "foo(vf3;"
Name 11 "mv3"
Name 19 "boolfun(vb2;"
Name 18 "bv2"
Name 23 "highfin"
Name 36 "sum"
Name 38 "uniform_medium"
Name 40 "uniform_high"
Name 46 "uniform_low"
Name 51 "arg1"
Name 53 "arg2"
Name 55 "d"
Name 57 "lowfin"
Name 59 "mediumfin"
Name 63 "global_highp"
Name 67 "local_highp"
Name 71 "mediumfout"
Name 102 "ub2"
Name 103 "param"
Decorate 36(sum) RelaxedPrecision
Decorate 38(uniform_medium) RelaxedPrecision
Decorate 46(uniform_low) RelaxedPrecision
Decorate 51(arg1) RelaxedPrecision
Decorate 53(arg2) RelaxedPrecision
Decorate 55(d) RelaxedPrecision
Decorate 57(lowfin) RelaxedPrecision
Decorate 59(mediumfin) RelaxedPrecision
Decorate 71(mediumfout) RelaxedPrecision
Name 38 "sum"
Name 40 "uniform_medium"
Name 42 "uniform_high"
Name 48 "uniform_low"
Name 53 "arg1"
Name 55 "arg2"
Name 57 "d"
Name 59 "lowfin"
Name 61 "mediumfin"
Name 65 "global_highp"
Name 69 "local_highp"
Name 73 "mediumfout"
Name 104 "ub2"
Name 105 "param"
Name 114 "S"
MemberName 114(S) 0 "a"
MemberName 114(S) 1 "b"
Name 116 "s"
Decorate 12(foo(vf3;) RelaxedPrecision
Decorate 11(mv3) RelaxedPrecision
Decorate 38(sum) RelaxedPrecision
Decorate 40(uniform_medium) RelaxedPrecision
Decorate 41 RelaxedPrecision
Decorate 46 RelaxedPrecision
Decorate 48(uniform_low) RelaxedPrecision
Decorate 49 RelaxedPrecision
Decorate 50 RelaxedPrecision
Decorate 51 RelaxedPrecision
Decorate 53(arg1) RelaxedPrecision
Decorate 55(arg2) RelaxedPrecision
Decorate 57(d) RelaxedPrecision
Decorate 59(lowfin) RelaxedPrecision
Decorate 60 RelaxedPrecision
Decorate 61(mediumfin) RelaxedPrecision
Decorate 62 RelaxedPrecision
Decorate 63 RelaxedPrecision
Decorate 73(mediumfout) RelaxedPrecision
Decorate 74 RelaxedPrecision
Decorate 75 RelaxedPrecision
Decorate 76 RelaxedPrecision
Decorate 77 RelaxedPrecision
Decorate 78 RelaxedPrecision
Decorate 79 RelaxedPrecision
Decorate 83 RelaxedPrecision
Decorate 85 RelaxedPrecision
Decorate 87 RelaxedPrecision
Decorate 88 RelaxedPrecision
Decorate 90 RelaxedPrecision
Decorate 91 RelaxedPrecision
Decorate 94 RelaxedPrecision
Decorate 95 RelaxedPrecision
Decorate 96 RelaxedPrecision
Decorate 97 RelaxedPrecision
Decorate 98 RelaxedPrecision
Decorate 99 RelaxedPrecision
Decorate 100 RelaxedPrecision
Decorate 101 RelaxedPrecision
Decorate 102 RelaxedPrecision
Decorate 110 RelaxedPrecision
Decorate 112 RelaxedPrecision
Decorate 113 RelaxedPrecision
MemberDecorate 114(S) 1 RelaxedPrecision
Decorate 120 RelaxedPrecision
Decorate 124 RelaxedPrecision
Decorate 125 RelaxedPrecision
Decorate 126 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -56,105 +101,120 @@ Linked fragment stage:
21: TypeVector 6(float) 4
22: TypePointer Input 21(fvec4)
23(highfin): 22(ptr) Variable Input
28: 14(bool) ConstantFalse
29: 14(bool) ConstantTrue
30: 15(bvec2) ConstantComposite 28 29
34: TypeInt 32 1
35: TypePointer Function 34(int)
37: TypePointer UniformConstant 34(int)
38(uniform_medium): 37(ptr) Variable UniformConstant
40(uniform_high): 37(ptr) Variable UniformConstant
46(uniform_low): 37(ptr) Variable UniformConstant
50: TypePointer Function 6(float)
52: 6(float) Constant 1078774989
54: 6(float) Constant 1232730691
56: TypePointer Input 6(float)
57(lowfin): 56(ptr) Variable Input
59(mediumfin): 56(ptr) Variable Input
62: TypePointer Private 6(float)
63(global_highp): 62(ptr) Variable Private
66: TypePointer Function 21(fvec4)
70: TypePointer Output 21(fvec4)
71(mediumfout): 70(ptr) Variable Output
80: 34(int) Constant 4
82: TypeVector 34(int) 2
90: TypeInt 32 0
91: 90(int) Constant 0
101: TypePointer UniformConstant 15(bvec2)
102(ub2): 101(ptr) Variable UniformConstant
109: 6(float) Constant 1065353216
29: 14(bool) ConstantFalse
30: 14(bool) ConstantTrue
31: 15(bvec2) ConstantComposite 29 30
36: TypeInt 32 1
37: TypePointer Function 36(int)
39: TypePointer Private 36(int)
40(uniform_medium): 39(ptr) Variable Private
42(uniform_high): 39(ptr) Variable Private
48(uniform_low): 39(ptr) Variable Private
52: TypePointer Function 6(float)
54: 6(float) Constant 1078774989
56: 6(float) Constant 1232730691
58: TypePointer Input 6(float)
59(lowfin): 58(ptr) Variable Input
61(mediumfin): 58(ptr) Variable Input
64: TypePointer Private 6(float)
65(global_highp): 64(ptr) Variable Private
68: TypePointer Function 21(fvec4)
72: TypePointer Output 21(fvec4)
73(mediumfout): 72(ptr) Variable Output
82: 36(int) Constant 4
84: TypeVector 36(int) 2
92: TypeInt 32 0
93: 92(int) Constant 0
103: TypePointer Private 15(bvec2)
104(ub2): 103(ptr) Variable Private
111: 6(float) Constant 1065353216
114(S): TypeStruct 6(float) 6(float)
115: TypePointer Input 114(S)
116(s): 115(ptr) Variable Input
117: 36(int) Constant 0
122: 36(int) Constant 1
4(main): 2 Function None 3
5: Label
36(sum): 35(ptr) Variable Function
51(arg1): 50(ptr) Variable Function
53(arg2): 50(ptr) Variable Function
55(d): 50(ptr) Variable Function
67(local_highp): 66(ptr) Variable Function
103(param): 16(ptr) Variable Function
39: 34(int) Load 38(uniform_medium)
41: 34(int) Load 40(uniform_high)
42: 34(int) IAdd 39 41
Store 36(sum) 42
43: 34(int) Load 40(uniform_high)
44: 34(int) Load 36(sum)
45: 34(int) IAdd 44 43
Store 36(sum) 45
47: 34(int) Load 46(uniform_low)
48: 34(int) Load 36(sum)
49: 34(int) IAdd 48 47
Store 36(sum) 49
Store 51(arg1) 52
Store 53(arg2) 54
58: 6(float) Load 57(lowfin)
60: 6(float) Load 59(mediumfin)
61: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 58 60
Store 55(d) 61
64: 21(fvec4) Load 23(highfin)
65: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 64
Store 63(global_highp) 65
68: 6(float) Load 63(global_highp)
69: 21(fvec4) CompositeConstruct 68 68 68 68
Store 67(local_highp) 69
72: 6(float) Load 55(d)
73: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 72
74: 21(fvec4) CompositeConstruct 73 73 73 73
75: 6(float) Load 53(arg2)
38(sum): 37(ptr) Variable Function
53(arg1): 52(ptr) Variable Function
55(arg2): 52(ptr) Variable Function
57(d): 52(ptr) Variable Function
69(local_highp): 68(ptr) Variable Function
105(param): 16(ptr) Variable Function
41: 36(int) Load 40(uniform_medium)
43: 36(int) Load 42(uniform_high)
44: 36(int) IAdd 41 43
Store 38(sum) 44
45: 36(int) Load 42(uniform_high)
46: 36(int) Load 38(sum)
47: 36(int) IAdd 46 45
Store 38(sum) 47
49: 36(int) Load 48(uniform_low)
50: 36(int) Load 38(sum)
51: 36(int) IAdd 50 49
Store 38(sum) 51
Store 53(arg1) 54
Store 55(arg2) 56
60: 6(float) Load 59(lowfin)
62: 6(float) Load 61(mediumfin)
63: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 60 62
Store 57(d) 63
66: 21(fvec4) Load 23(highfin)
67: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 66
Store 65(global_highp) 67
70: 6(float) Load 65(global_highp)
71: 21(fvec4) CompositeConstruct 70 70 70 70
Store 69(local_highp) 71
74: 6(float) Load 57(d)
75: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74
76: 21(fvec4) CompositeConstruct 75 75 75 75
77: 21(fvec4) FAdd 74 76
78: 21(fvec4) Load 67(local_highp)
79: 21(fvec4) FAdd 77 78
Store 71(mediumfout) 79
81: 34(int) Load 46(uniform_low)
83: 82(ivec2) CompositeConstruct 81 81
84: 34(int) Load 40(uniform_high)
85: 82(ivec2) CompositeConstruct 84 84
86: 82(ivec2) IMul 83 85
87: 34(int) Load 40(uniform_high)
88: 82(ivec2) CompositeConstruct 87 87
89: 82(ivec2) IAdd 86 88
92: 34(int) CompositeExtract 89 0
93: 34(int) IAdd 80 92
94: 34(int) Load 36(sum)
95: 34(int) IAdd 94 93
Store 36(sum) 95
96: 34(int) Load 36(sum)
97: 6(float) ConvertSToF 96
98: 21(fvec4) CompositeConstruct 97 97 97 97
99: 21(fvec4) Load 71(mediumfout)
100: 21(fvec4) FAdd 99 98
Store 71(mediumfout) 100
104: 15(bvec2) Load 102(ub2)
Store 103(param) 104
105: 14(bool) FunctionCall 19(boolfun(vb2;) 103(param)
SelectionMerge 107 None
BranchConditional 105 106 107
106: Label
108: 21(fvec4) Load 71(mediumfout)
110: 21(fvec4) CompositeConstruct 109 109 109 109
111: 21(fvec4) FAdd 108 110
Store 71(mediumfout) 111
Branch 107
107: Label
77: 6(float) Load 55(arg2)
78: 21(fvec4) CompositeConstruct 77 77 77 77
79: 21(fvec4) FAdd 76 78
80: 21(fvec4) Load 69(local_highp)
81: 21(fvec4) FAdd 79 80
Store 73(mediumfout) 81
83: 36(int) Load 48(uniform_low)
85: 84(ivec2) CompositeConstruct 83 83
86: 36(int) Load 42(uniform_high)
87: 84(ivec2) CompositeConstruct 86 86
88: 84(ivec2) IMul 85 87
89: 36(int) Load 42(uniform_high)
90: 84(ivec2) CompositeConstruct 89 89
91: 84(ivec2) IAdd 88 90
94: 36(int) CompositeExtract 91 0
95: 36(int) IAdd 82 94
96: 36(int) Load 38(sum)
97: 36(int) IAdd 96 95
Store 38(sum) 97
98: 36(int) Load 38(sum)
99: 6(float) ConvertSToF 98
100: 21(fvec4) CompositeConstruct 99 99 99 99
101: 21(fvec4) Load 73(mediumfout)
102: 21(fvec4) FAdd 101 100
Store 73(mediumfout) 102
106: 15(bvec2) Load 104(ub2)
Store 105(param) 106
107: 14(bool) FunctionCall 19(boolfun(vb2;) 105(param)
SelectionMerge 109 None
BranchConditional 107 108 109
108: Label
110: 21(fvec4) Load 73(mediumfout)
112: 21(fvec4) CompositeConstruct 111 111 111 111
113: 21(fvec4) FAdd 110 112
Store 73(mediumfout) 113
Branch 109
109: Label
118: 58(ptr) AccessChain 116(s) 117
119: 6(float) Load 118
120: 21(fvec4) Load 73(mediumfout)
121: 21(fvec4) VectorTimesScalar 120 119
Store 73(mediumfout) 121
123: 58(ptr) AccessChain 116(s) 122
124: 6(float) Load 123
125: 21(fvec4) Load 73(mediumfout)
126: 21(fvec4) VectorTimesScalar 125 124
Store 73(mediumfout) 126
Return
FunctionEnd
12(foo(vf3;): 9(fvec2) Function None 10
@ -167,8 +227,8 @@ Linked fragment stage:
19(boolfun(vb2;): 14(bool) Function None 17
18(bv2): 16(ptr) FunctionParameter
20: Label
27: 15(bvec2) Load 18(bv2)
31: 15(bvec2) LogicalEqual 27 30
32: 14(bool) All 31
ReturnValue 32
28: 15(bvec2) Load 18(bv2)
32: 15(bvec2) LogicalEqual 28 31
33: 14(bool) All 32
ReturnValue 33
FunctionEnd

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