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 *.so
*.exe *.exe
tags tags
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp.h
build/ build/
Test/localResults/ Test/localResults/
Test/multiThread.out 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 In MSVC, after running CMake, you may need to use the Configuration Manager to
check the INSTALL project. 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 Programmatic Interfaces
----------------------- -----------------------

View file

@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 2.8)
set(SOURCES set(SOURCES
GlslangToSpv.cpp GlslangToSpv.cpp
InReadableOrder.cpp
SpvBuilder.cpp SpvBuilder.cpp
SPVRemapper.cpp SPVRemapper.cpp
doc.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 ** Permission is hereby granted, free of charge, to any person obtaining a copy
** of this software and/or associated documentation files (the "Materials"), ** of this software and/or associated documentation files (the "Materials"),
@ -27,8 +27,8 @@
#ifndef GLSLstd450_H #ifndef GLSLstd450_H
#define GLSLstd450_H #define GLSLstd450_H
const int GLSLstd450Version = 99; static const int GLSLstd450Version = 100;
const int GLSLstd450Revision = 3; static const int GLSLstd450Revision = 1;
enum GLSLstd450 { enum GLSLstd450 {
GLSLstd450Bad = 0, // Don't use GLSLstd450Bad = 0, // Don't use
@ -83,7 +83,7 @@ enum GLSLstd450 {
GLSLstd450UClamp = 44, GLSLstd450UClamp = 44,
GLSLstd450SClamp = 45, GLSLstd450SClamp = 45,
GLSLstd450FMix = 46, GLSLstd450FMix = 46,
GLSLstd450IMix = 47, GLSLstd450IMix = 47, // Reserved
GLSLstd450Step = 48, GLSLstd450Step = 48,
GLSLstd450SmoothStep = 49, GLSLstd450SmoothStep = 49,
@ -121,6 +121,10 @@ enum GLSLstd450 {
GLSLstd450InterpolateAtSample = 77, GLSLstd450InterpolateAtSample = 77,
GLSLstd450InterpolateAtOffset = 78, GLSLstd450InterpolateAtOffset = 78,
GLSLstd450NMin = 79,
GLSLstd450NMax = 80,
GLSLstd450NClamp = 81,
GLSLstd450Count 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) { switch (opCode) {
case spv::OpBranchConditional: case spv::OpBranchConditional:
case spv::OpSwitch: return true; case spv::OpBranch:
default: return false; case spv::OpSwitch:
}
}
bool spirvbin_t::isFlowCtrlClose(spv::Op opCode) const
{
switch (opCode) {
case spv::OpLoopMerge: 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; default: return false;
} }
} }
@ -440,7 +437,7 @@ namespace spv {
} }
// Store IDs from instruction in our map // 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)) { switch (spv::InstructionDesc[opCode].operands.getClass(op)) {
case spv::OperandId: case spv::OperandId:
idFn(asId(word++)); idFn(asId(word++));
@ -468,19 +465,36 @@ namespace spv {
} }
return nextInst; return nextInst;
case spv::OperandLiteralString: case spv::OperandLiteralString: {
// word += literalStringWords(literalString(word)); // for clarity 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; 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::OperandLiteralNumber:
case spv::OperandSource: case spv::OperandSource:
case spv::OperandExecutionModel: case spv::OperandExecutionModel:
case spv::OperandAddressing: case spv::OperandAddressing:
case spv::OperandMemory: case spv::OperandMemory:
case spv::OperandExecutionMode:
case spv::OperandStorage: case spv::OperandStorage:
case spv::OperandDimensionality: 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::OperandDecoration:
case spv::OperandBuiltIn: case spv::OperandBuiltIn:
case spv::OperandSelect: case spv::OperandSelect:
@ -492,10 +506,12 @@ namespace spv {
case spv::OperandGroupOperation: case spv::OperandGroupOperation:
case spv::OperandKernelEnqueueFlags: case spv::OperandKernelEnqueueFlags:
case spv::OperandKernelProfilingInfo: case spv::OperandKernelProfilingInfo:
case spv::OperandCapability:
++word; ++word;
break; break;
default: default:
assert(0 && "Unhandled Operand Class");
break; break;
} }
} }
@ -558,7 +574,7 @@ namespace spv {
// Window size for context-sensitive canonicalization values // Window size for context-sensitive canonicalization values
// Emperical best size from a single data set. TODO: Would be a good tunable. // 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 // to capture the flavor of nearby code, to hopefully match to similar
// code in other modules. // code in other modules.
static const unsigned windowSize = 2; static const unsigned windowSize = 2;
@ -713,49 +729,71 @@ namespace spv {
strip(); // strip out data we decided to eliminate strip(); // strip out data we decided to eliminate
} }
// remove bodies of uncalled functions // optimize loads and stores
void spirvbin_t::optLoadStore() void spirvbin_t::optLoadStore()
{ {
idset_t fnLocalVars; idset_t fnLocalVars; // candidates for removal (only locals)
// Map of load result IDs to what they load idmap_t idMap; // Map of load result IDs to what they load
idmap_t idMap; 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 // Find all the function local pointers stored at most once, and not via access chains
process( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
const int wordCount = asWordCount(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 // 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)); fnLocalVars.insert(asId(start+2));
return true;
}
// Ignore process vars referenced via access chain // Ignore process vars referenced via access chain
if ((opCode == spv::OpAccessChain || opCode == spv::OpInBoundsAccessChain) && fnLocalVars.count(asId(start+3)) > 0) { if ((opCode == spv::OpAccessChain || opCode == spv::OpInBoundsAccessChain) && fnLocalVars.count(asId(start+3)) > 0) {
fnLocalVars.erase(asId(start+3)); fnLocalVars.erase(asId(start+3));
idMap.erase(asId(start+3)); idMap.erase(asId(start+3));
return true;
} }
if (opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0) { if (opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0) {
// Avoid loads before stores (TODO: why? Crashes driver, but seems like it shouldn't). const spv::Id varId = asId(start+3);
if (idMap.find(asId(start+3)) == idMap.end()) {
fnLocalVars.erase(asId(start+3)); // Avoid loads before stores
idMap.erase(asId(start+3)); if (idMap.find(varId) == idMap.end()) {
fnLocalVars.erase(varId);
idMap.erase(varId);
} }
// don't do for volatile references // don't do for volatile references
if (wordCount > 4 && (spv[start+4] & spv::MemoryAccessVolatileMask)) { if (wordCount > 4 && (spv[start+4] & spv::MemoryAccessVolatileMask)) {
fnLocalVars.erase(asId(start+3)); fnLocalVars.erase(varId);
idMap.erase(asId(start+3)); 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 (opCode == spv::OpStore && fnLocalVars.count(asId(start+1)) > 0) {
if (idMap.find(asId(start+1)) == idMap.end()) { const spv::Id varId = asId(start+1);
idMap[asId(start+1)] = asId(start+2);
if (idMap.find(varId) == idMap.end()) {
idMap[varId] = asId(start+2);
} else { } else {
// Remove if it has more than one store to the same pointer // Remove if it has more than one store to the same pointer
fnLocalVars.erase(asId(start+1)); fnLocalVars.erase(varId);
idMap.erase(asId(start+1)); idMap.erase(varId);
} }
// don't do for volatile references // don't do for volatile references
@ -763,11 +801,29 @@ namespace spv {
fnLocalVars.erase(asId(start+3)); fnLocalVars.erase(asId(start+3));
idMap.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( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
@ -777,12 +833,27 @@ namespace spv {
}, },
op_fn_nop); 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 // Remove the load/store/variables for the ones we've discovered
process( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
if ((opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0) || if ((opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0) ||
(opCode == spv::OpStore && fnLocalVars.count(asId(start+1)) > 0) || (opCode == spv::OpStore && fnLocalVars.count(asId(start+1)) > 0) ||
(opCode == spv::OpVariable && fnLocalVars.count(asId(start+2)) > 0)) { (opCode == spv::OpVariable && fnLocalVars.count(asId(start+2)) > 0)) {
stripInst(start); stripInst(start);
return true; return true;
} }
@ -790,7 +861,9 @@ namespace spv {
return false; 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 strip(); // strip out data we decided to eliminate

View file

@ -131,6 +131,7 @@ private:
// Local to global, or global to local ID map // Local to global, or global to local ID map
typedef std::unordered_map<spv::Id, spv::Id> idmap_t; typedef std::unordered_map<spv::Id, spv::Id> idmap_t;
typedef std::unordered_set<spv::Id> idset_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); void remap(std::uint32_t opts = DO_EVERYTHING);
@ -164,8 +165,7 @@ private:
bool isConstOp(spv::Op opCode) const; bool isConstOp(spv::Op opCode) const;
bool isTypeOp(spv::Op opCode) const; bool isTypeOp(spv::Op opCode) const;
bool isStripOp(spv::Op opCode) const; bool isStripOp(spv::Op opCode) const;
bool isFlowCtrlOpen(spv::Op opCode) const; bool isFlowCtrl(spv::Op opCode) const;
bool isFlowCtrlClose(spv::Op opCode) const;
range_t literalRange(spv::Op opCode) const; range_t literalRange(spv::Op opCode) const;
range_t typeRange(spv::Op opCode) const; range_t typeRange(spv::Op opCode) const;
range_t constRange(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. // All rights reserved.
// //
@ -53,6 +54,8 @@
#include <algorithm> #include <algorithm>
#include <map> #include <map>
#include <memory>
#include <set>
#include <stack> #include <stack>
namespace spv { namespace spv {
@ -77,7 +80,7 @@ public:
memoryModel = mem; 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. // To get a new <id> for anything needing a new one.
Id getUniqueId() { return ++uniqueId; } Id getUniqueId() { return ++uniqueId; }
// To get a set of new <id>s, e.g., for a set of function parameters // 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 makeIntType(int width) { return makeIntegerType(width, true); }
Id makeUintType(int width) { return makeIntegerType(width, false); } Id makeUintType(int width) { return makeIntegerType(width, false); }
Id makeFloatType(int width); 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 makeStructResultType(Id type0, Id type1);
Id makeVectorType(Id component, int size); Id makeVectorType(Id component, int size);
Id makeMatrixType(Id component, int cols, int rows); Id makeMatrixType(Id component, int cols, int rows);
Id makeArrayType(Id element, unsigned size, 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 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, Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled,
ImageFormat format); ImageFormat format);
Id makeSamplerType(); Id makeSamplerType();
@ -121,6 +124,11 @@ public:
Id getContainedTypeId(Id typeId) const; Id getContainedTypeId(Id typeId) const;
Id getContainedTypeId(Id typeId, int) const; Id getContainedTypeId(Id typeId, int) const;
StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); } StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
ImageFormat getImageTypeFormat(Id typeId) const
{
return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6);
}
bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); } bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); } bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); } bool isVector(Id resultId) const { return isVectorType(getTypeId(resultId)); }
@ -201,7 +209,7 @@ public:
Id makeDoubleConstant(double d, bool specConstant = false); Id makeDoubleConstant(double d, bool specConstant = false);
// Turn the array of constants into a proper spv constant of the requested type. // 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. // Methods for adding information outside the CFG.
Instruction* addEntryPoint(ExecutionModel, Function*, const char* name); Instruction* addEntryPoint(ExecutionModel, Function*, const char* name);
@ -216,13 +224,16 @@ public:
// At the end of what block do the next create*() instructions go? // At the end of what block do the next create*() instructions go?
void setBuildPoint(Block* bp) { buildPoint = bp; } void setBuildPoint(Block* bp) { buildPoint = bp; }
Block* getBuildPoint() const { return buildPoint; } 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(); Function* makeMain();
// Make a shader-style function, and create its entry block if entry is non-zero. // Make a shader-style function, and create its entry block if entry is non-zero.
// Return the function, pass back the entry. // Return the function, pass back the entry.
Function* makeFunctionEntry(Id returnType, const char* name, std::vector<Id>& paramTypes, // The returned pointer is only valid for the lifetime of this builder.
Block** entry = 0); 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 // 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. // 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. // Create a global or function local or IO variable.
Id createVariable(StorageClass, Id type, const char* name = 0); 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); Id createUndefined(Id type);
// Store into an Id and return the l-value // 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 // Take an rvalue (source) and a set of channels to extract from it to
// make a new rvalue, which is returned. // 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 // 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. // source components into the lvalue where the 'channels' say to put them.
@ -282,13 +294,15 @@ public:
// (No true lvalue or stores are used.) // (No true lvalue or stores are used.)
Id createLvalueSwizzle(Id typeId, Id target, Id source, std::vector<unsigned>& channels); Id createLvalueSwizzle(Id typeId, Id target, Id source, std::vector<unsigned>& channels);
// If the value passed in is an instruction and the precision is not NoPrecision, // If both the id and precision are valid, the id
// it gets tagged with the requested precision. // gets tagged with the requested precision.
void setPrecision(Id /* value */, Decoration precision) // The passed in id is always the returned id, to simplify use patterns.
Id setPrecision(Id id, Decoration precision)
{ {
if (precision != NoPrecision) { if (precision != NoPrecision && id != NoResult)
; // TODO addDecoration(id, precision);
}
return id;
} }
// Can smear a scalar to a vector for the following forms: // Can smear a scalar to a vector for the following forms:
@ -312,8 +326,7 @@ public:
Id smearScalar(Decoration precision, Id scalarVal, Id vectorType); Id smearScalar(Decoration precision, Id scalarVal, Id vectorType);
// Create a call to a built-in function. // Create a call to a built-in function.
Id createBuiltinCall(Decoration precision, Id resultType, Id builtins, int entryPoint, Id createBuiltinCall(Id resultType, Id builtins, int entryPoint, std::vector<Id>& args);
std::vector<Id>& args);
// List of parameters used to create a texture operation // List of parameters used to create a texture operation
struct TextureParameters { struct TextureParameters {
@ -328,11 +341,13 @@ public:
Id gradY; Id gradY;
Id sample; Id sample;
Id comp; Id comp;
Id texelOut;
Id lodClamp;
}; };
// Select the correct texture operation based on all inputs, and emit the correct instruction // 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, Id createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj,
const TextureParameters&); bool gather, bool noImplicit, const TextureParameters&);
// Emit the OpTextureQuery* instruction that was passed in. // Emit the OpTextureQuery* instruction that was passed in.
// Figure out the right return value and type, and return it. // 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 createBitFieldExtractCall(Decoration precision, Id, Id, Id, bool isSigned);
Id createBitFieldInsertCall(Decoration precision, Id, Id, Id, Id); Id createBitFieldInsertCall(Decoration precision, Id, Id, Id, Id);
// Reduction comparision for composites: For equal and not-equal resulting in a scalar. // Reduction comparison for composites: For equal and not-equal resulting in a scalar.
Id createCompositeCompare(Decoration precision, Id, Id, Id createCompositeCompare(Decoration precision, Id, Id,
bool /* true if for equal, false if for not-equal */); bool /* true if for equal, false if for not-equal */);
@ -403,28 +418,24 @@ public:
// Finish off the innermost switch. // Finish off the innermost switch.
void endSwitch(std::vector<Block*>& segmentBB); void endSwitch(std::vector<Block*>& segmentBB);
// Start the beginning of a new loop, and prepare the builder to struct LoopBlocks {
// generate code for the loop test. Block &head, &body, &merge, &continue_target;
// The loopTestFirst parameter is true when the loop test executes before };
// the body. (It is false for do-while loops.)
void makeNewLoop(bool loopTestFirst);
// Add the branch for the loop test, based on the given condition. // Start a new loop and prepare the builder to generate code for it. Until
// The true branch goes to the first block in the loop body, and // closeLoop() is called for this loop, createLoopContinue() and
// the false branch goes to the loop's merge block. The builder insertion // createLoopExit() will target its corresponding blocks.
// point will be placed at the start of the body. LoopBlocks& makeNewLoop();
void createLoopTestBranch(Id condition);
// Generate an unconditional branch to the loop body. The builder insertion // Create a new block in the function containing the build point. Memory is
// point will be placed at the start of the body. Use this when there is // owned by the function object.
// no loop test. Block& makeNewBlock();
void createBranchToBody();
// Add a branch to the test of the current (innermost) loop. // Add a branch to the continue_target of the current (innermost) loop.
// The way we generate code, that's also the loop header.
void createLoopContinue(); 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(); void createLoopExit();
// Close the innermost loop that you're in // Close the innermost loop that you're in
@ -515,13 +526,21 @@ public:
void accessChainStore(Id rvalue); void accessChainStore(Id rvalue);
// use accessChain and swizzle to load an r-value // 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 // get the direct pointer for an l-value
Id accessChainGetLValue(); 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 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: protected:
Id makeIntConstant(Id typeId, unsigned value, bool specConstant); Id makeIntConstant(Id typeId, unsigned value, bool specConstant);
Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value) const; Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value) const;
@ -531,21 +550,16 @@ protected:
void transferAccessChainSwizzle(bool dynamic); void transferAccessChainSwizzle(bool dynamic);
void simplifyAccessChainSwizzle(); void simplifyAccessChainSwizzle();
void createAndSetNoPredecessorBlock(const char*); void createAndSetNoPredecessorBlock(const char*);
void createBranch(Block* block);
void createSelectionMerge(Block* mergeBlock, unsigned int control); void createSelectionMerge(Block* mergeBlock, unsigned int control);
void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control); void dumpInstructions(std::vector<unsigned int>&,
void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock); const std::vector<std::unique_ptr<Instruction> >&) const;
void dumpInstructions(std::vector<unsigned int>&, const std::vector<Instruction*>&) const;
struct Loop; // Defined below.
void createBranchToLoopHeaderFromInside(const Loop& loop);
SourceLanguage source; SourceLanguage source;
int sourceVersion; int sourceVersion;
std::vector<const char*> extensions; std::vector<const char*> extensions;
AddressingModel addressModel; AddressingModel addressModel;
MemoryModel memoryModel; MemoryModel memoryModel;
std::vector<spv::Capability> capabilities; std::set<spv::Capability> capabilities;
int builderNumber; int builderNumber;
Module module; Module module;
Block* buildPoint; Block* buildPoint;
@ -554,14 +568,15 @@ protected:
AccessChain accessChain; AccessChain accessChain;
// special blocks of instructions for output // special blocks of instructions for output
std::vector<Instruction*> imports; std::vector<std::unique_ptr<Instruction> > imports;
std::vector<Instruction*> entryPoints; std::vector<std::unique_ptr<Instruction> > entryPoints;
std::vector<Instruction*> executionModes; std::vector<std::unique_ptr<Instruction> > executionModes;
std::vector<Instruction*> names; std::vector<std::unique_ptr<Instruction> > names;
std::vector<Instruction*> lines; std::vector<std::unique_ptr<Instruction> > lines;
std::vector<Instruction*> decorations; std::vector<std::unique_ptr<Instruction> > decorations;
std::vector<Instruction*> constantsTypesGlobals; std::vector<std::unique_ptr<Instruction> > constantsTypesGlobals;
std::vector<Instruction*> externals; std::vector<std::unique_ptr<Instruction> > externals;
std::vector<std::unique_ptr<Function> > functions;
// not output, internally used for quick & dirty canonical (unique) creation // not output, internally used for quick & dirty canonical (unique) creation
std::vector<Instruction*> groupedConstants[OpConstant]; // all types appear before OpConstant std::vector<Instruction*> groupedConstants[OpConstant]; // all types appear before OpConstant
@ -570,47 +585,8 @@ protected:
// stack of switches // stack of switches
std::stack<Block*> switchMerges; 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. // Our loop stack.
std::stack<Loop> loops; std::stack<LoopBlocks> loops;
}; // end Builder class }; // end Builder class
// Use for non-fatal notes about what's not complete // 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 { 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; out << std::endl << "Disassembly failed: " << message << std::endl;
exit(1); exit(1);
@ -473,6 +473,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
else else
out << OperandClassParams[operandClass].getName(stream[word++]); out << OperandClassParams[operandClass].getName(stream[word++]);
--numOperands; --numOperands;
break; break;
} }
} }
@ -480,7 +481,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
return; return;
} }
void GLSLstd450GetDebugNames(const char** names) static void GLSLstd450GetDebugNames(const char** names)
{ {
for (int i = 0; i < GLSLstd450Count; ++i) for (int i = 0; i < GLSLstd450Count; ++i)
names[i] = "Unknown"; names[i] = "Unknown";
@ -531,7 +532,6 @@ void GLSLstd450GetDebugNames(const char** names)
names[GLSLstd450SClamp] = "SClamp"; names[GLSLstd450SClamp] = "SClamp";
names[GLSLstd450UClamp] = "UClamp"; names[GLSLstd450UClamp] = "UClamp";
names[GLSLstd450FMix] = "FMix"; names[GLSLstd450FMix] = "FMix";
names[GLSLstd450IMix] = "IMix";
names[GLSLstd450Step] = "Step"; names[GLSLstd450Step] = "Step";
names[GLSLstd450SmoothStep] = "SmoothStep"; names[GLSLstd450SmoothStep] = "SmoothStep";
names[GLSLstd450Fma] = "Fma"; names[GLSLstd450Fma] = "Fma";
@ -568,6 +568,7 @@ void GLSLstd450GetDebugNames(const char** names)
void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream) void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
{ {
SpirvStream SpirvStream(out, stream); SpirvStream SpirvStream(out, stream);
spv::Parameterize();
GLSLstd450GetDebugNames(GlslStd450DebugNames); GLSLstd450GetDebugNames(GlslStd450DebugNames);
SpirvStream.validate(); SpirvStream.validate();
SpirvStream.processInstructions(); 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) const char* CapabilityString(int info)
{ {
@ -775,6 +775,7 @@ const char* CapabilityString(int info)
case 54: return "GeometryStreams"; case 54: return "GeometryStreams";
case 55: return "StorageImageReadWithoutFormat"; case 55: return "StorageImageReadWithoutFormat";
case 56: return "StorageImageWriteWithoutFormat"; case 56: return "StorageImageWriteWithoutFormat";
case 57: return "MultiViewport";
case CapabilityCeiling: case CapabilityCeiling:
default: return "Bad"; default: return "Bad";
@ -1104,6 +1105,7 @@ const char* OpcodeString(int op)
case 317: return "OpNoLine"; case 317: return "OpNoLine";
case 318: return "OpAtomicFlagTestAndSet"; case 318: return "OpAtomicFlagTestAndSet";
case 319: return "OpAtomicFlagClear"; case 319: return "OpAtomicFlagClear";
case 320: return "OpImageSparseRead";
case OpcodeCeiling: case OpcodeCeiling:
default: default:
@ -1311,7 +1313,6 @@ void Parameterize()
CapabilityParams[CapabilityTessellation].caps.push_back(CapabilityShader); CapabilityParams[CapabilityTessellation].caps.push_back(CapabilityShader);
CapabilityParams[CapabilityVector16].caps.push_back(CapabilityKernel); CapabilityParams[CapabilityVector16].caps.push_back(CapabilityKernel);
CapabilityParams[CapabilityFloat16Buffer].caps.push_back(CapabilityKernel); CapabilityParams[CapabilityFloat16Buffer].caps.push_back(CapabilityKernel);
CapabilityParams[CapabilityFloat16].caps.push_back(CapabilityFloat16Buffer);
CapabilityParams[CapabilityInt64Atomics].caps.push_back(CapabilityInt64); CapabilityParams[CapabilityInt64Atomics].caps.push_back(CapabilityInt64);
CapabilityParams[CapabilityImageBasic].caps.push_back(CapabilityKernel); CapabilityParams[CapabilityImageBasic].caps.push_back(CapabilityKernel);
CapabilityParams[CapabilityImageReadWrite].caps.push_back(CapabilityImageBasic); CapabilityParams[CapabilityImageReadWrite].caps.push_back(CapabilityImageBasic);
@ -1353,6 +1354,7 @@ void Parameterize()
CapabilityParams[CapabilityGeometryStreams].caps.push_back(CapabilityGeometry); CapabilityParams[CapabilityGeometryStreams].caps.push_back(CapabilityGeometry);
CapabilityParams[CapabilityStorageImageReadWithoutFormat].caps.push_back(CapabilityShader); CapabilityParams[CapabilityStorageImageReadWithoutFormat].caps.push_back(CapabilityShader);
CapabilityParams[CapabilityStorageImageWriteWithoutFormat].caps.push_back(CapabilityShader); CapabilityParams[CapabilityStorageImageWriteWithoutFormat].caps.push_back(CapabilityShader);
CapabilityParams[CapabilityMultiViewport].caps.push_back(CapabilityGeometry);
AddressingParams[AddressingModelPhysical32].caps.push_back(CapabilityAddresses); AddressingParams[AddressingModelPhysical32].caps.push_back(CapabilityAddresses);
AddressingParams[AddressingModelPhysical64].caps.push_back(CapabilityAddresses); AddressingParams[AddressingModelPhysical64].caps.push_back(CapabilityAddresses);
@ -1362,7 +1364,7 @@ void Parameterize()
MemoryParams[MemoryModelOpenCL].caps.push_back(CapabilityKernel); MemoryParams[MemoryModelOpenCL].caps.push_back(CapabilityKernel);
MemorySemanticsParams[MemorySemanticsUniformMemoryShift].caps.push_back(CapabilityShader); 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[ExecutionModelVertex].caps.push_back(CapabilityShader);
ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapabilityTessellation); ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapabilityTessellation);
@ -1528,7 +1530,7 @@ void Parameterize()
DecorationParams[DecorationFlat].caps.push_back(CapabilityShader); DecorationParams[DecorationFlat].caps.push_back(CapabilityShader);
DecorationParams[DecorationPatch].caps.push_back(CapabilityTessellation); DecorationParams[DecorationPatch].caps.push_back(CapabilityTessellation);
DecorationParams[DecorationCentroid].caps.push_back(CapabilityShader); 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[DecorationInvariant].caps.push_back(CapabilityShader);
DecorationParams[DecorationConstant].caps.push_back(CapabilityKernel); DecorationParams[DecorationConstant].caps.push_back(CapabilityKernel);
DecorationParams[DecorationUniform].caps.push_back(CapabilityShader); DecorationParams[DecorationUniform].caps.push_back(CapabilityShader);
@ -1537,14 +1539,14 @@ void Parameterize()
DecorationParams[DecorationStream].caps.push_back(CapabilityGeometryStreams); DecorationParams[DecorationStream].caps.push_back(CapabilityGeometryStreams);
DecorationParams[DecorationLocation].caps.push_back(CapabilityShader); DecorationParams[DecorationLocation].caps.push_back(CapabilityShader);
DecorationParams[DecorationComponent].caps.push_back(CapabilityShader); DecorationParams[DecorationComponent].caps.push_back(CapabilityShader);
DecorationParams[DecorationOffset].caps.push_back(CapabilityShader);
DecorationParams[DecorationIndex].caps.push_back(CapabilityShader); DecorationParams[DecorationIndex].caps.push_back(CapabilityShader);
DecorationParams[DecorationBinding].caps.push_back(CapabilityShader); DecorationParams[DecorationBinding].caps.push_back(CapabilityShader);
DecorationParams[DecorationDescriptorSet].caps.push_back(CapabilityShader); DecorationParams[DecorationDescriptorSet].caps.push_back(CapabilityShader);
DecorationParams[DecorationXfbBuffer].caps.push_back(CapabilityTransformFeedback); DecorationParams[DecorationXfbBuffer].caps.push_back(CapabilityTransformFeedback);
DecorationParams[DecorationXfbStride].caps.push_back(CapabilityTransformFeedback); DecorationParams[DecorationXfbStride].caps.push_back(CapabilityTransformFeedback);
DecorationParams[DecorationArrayStride].caps.push_back(CapabilityShader); DecorationParams[DecorationArrayStride].caps.push_back(CapabilityShader);
DecorationParams[DecorationMatrixStride].caps.push_back(CapabilityShader); DecorationParams[DecorationMatrixStride].caps.push_back(CapabilityMatrix);
DecorationParams[DecorationBuiltIn].caps.push_back(CapabilityShader);
DecorationParams[DecorationFuncParamAttr].caps.push_back(CapabilityKernel); DecorationParams[DecorationFuncParamAttr].caps.push_back(CapabilityKernel);
DecorationParams[DecorationFPRoundingMode].caps.push_back(CapabilityKernel); DecorationParams[DecorationFPRoundingMode].caps.push_back(CapabilityKernel);
DecorationParams[DecorationFPFastMathMode].caps.push_back(CapabilityKernel); DecorationParams[DecorationFPFastMathMode].caps.push_back(CapabilityKernel);
@ -1556,8 +1558,8 @@ void Parameterize()
BuiltInParams[BuiltInPosition].caps.push_back(CapabilityShader); BuiltInParams[BuiltInPosition].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInPointSize].caps.push_back(CapabilityShader); BuiltInParams[BuiltInPointSize].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInClipDistance].caps.push_back(CapabilityShader); BuiltInParams[BuiltInClipDistance].caps.push_back(CapabilityClipDistance);
BuiltInParams[BuiltInCullDistance].caps.push_back(CapabilityShader); BuiltInParams[BuiltInCullDistance].caps.push_back(CapabilityCullDistance);
BuiltInParams[BuiltInVertexId].caps.push_back(CapabilityShader); BuiltInParams[BuiltInVertexId].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInVertexId].desc = "Vertex ID, which takes on values 0, 1, 2, . . . ."; 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(CapabilityGeometry);
BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityTessellation); BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityTessellation);
BuiltInParams[BuiltInLayer].caps.push_back(CapabilityGeometry); 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[BuiltInTessLevelOuter].caps.push_back(CapabilityTessellation);
BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapabilityTessellation); BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapabilityTessellation);
BuiltInParams[BuiltInTessCoord].caps.push_back(CapabilityTessellation); BuiltInParams[BuiltInTessCoord].caps.push_back(CapabilityTessellation);
@ -1584,9 +1586,9 @@ void Parameterize()
BuiltInParams[BuiltInFragCoord].caps.push_back(CapabilityShader); BuiltInParams[BuiltInFragCoord].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInPointCoord].caps.push_back(CapabilityShader); BuiltInParams[BuiltInPointCoord].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInFrontFacing].caps.push_back(CapabilityShader); BuiltInParams[BuiltInFrontFacing].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInSampleId].caps.push_back(CapabilityShader); BuiltInParams[BuiltInSampleId].caps.push_back(CapabilitySampleRateShading);
BuiltInParams[BuiltInSamplePosition].caps.push_back(CapabilityShader); BuiltInParams[BuiltInSamplePosition].caps.push_back(CapabilitySampleRateShading);
BuiltInParams[BuiltInSampleMask].caps.push_back(CapabilityShader); BuiltInParams[BuiltInSampleMask].caps.push_back(CapabilitySampleRateShading);
BuiltInParams[BuiltInFragDepth].caps.push_back(CapabilityShader); BuiltInParams[BuiltInFragDepth].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapabilityShader); BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapabilityShader);
BuiltInParams[BuiltInWorkDim].caps.push_back(CapabilityKernel); BuiltInParams[BuiltInWorkDim].caps.push_back(CapabilityKernel);
@ -1962,6 +1964,12 @@ void Parameterize()
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true); InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true);
InstructionDesc[OpImageSparseDrefGather].capabilities.push_back(CapabilitySparseResidency); 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].operands.push(OperandId, "'Resident Code'");
InstructionDesc[OpImageSparseTexelsResident].capabilities.push_back(CapabilitySparseResidency); 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* ImageFormatString(int);
const char* ImageChannelOrderString(int); const char* ImageChannelOrderString(int);
const char* ImageChannelTypeString(int); const char* ImageChannelTypeString(int);
const char* ImageChannelDataTypeString(int type);
const char* ImageOperandsString(int format);
const char* ImageOperands(int); const char* ImageOperands(int);
const char* FPFastMathString(int); const char* FPFastMathString(int);
const char* FPRoundingModeString(int); const char* FPRoundingModeString(int);
@ -81,6 +83,7 @@ const char* KernelEnqueueFlagsString(int);
const char* KernelProfilingInfoString(int); const char* KernelProfilingInfoString(int);
const char* CapabilityString(int); const char* CapabilityString(int);
const char* OpcodeString(int); const char* OpcodeString(int);
const char* ScopeString(int mem);
// For grouping opcodes into subsections // For grouping opcodes into subsections
enum OpcodeClass { enum OpcodeClass {
@ -243,7 +246,7 @@ protected:
int resultPresent : 1; int resultPresent : 1;
}; };
const int OpcodeCeiling = 320; const int OpcodeCeiling = 321;
// The set of objects that hold all the instruction/operand // The set of objects that hold all the instruction/operand
// parameterization information. // 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 // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and/or associated documentation files (the "Materials"), // 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 // "Mask" in their name, and a parallel enum that has the shift
// amount (1 << x) for each corresponding enumerant. // amount (1 << x) for each corresponding enumerant.
#ifndef spirv_H #ifndef spirv_HPP
#define spirv_H #define spirv_HPP
namespace spv { namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 10000 #define SPV_VERSION 0x10000
#define SPV_REVISION 2 #define SPV_REVISION 3
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000; 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 OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
@ -563,6 +563,7 @@ enum Capability {
CapabilityGeometryStreams = 54, CapabilityGeometryStreams = 54,
CapabilityStorageImageReadWithoutFormat = 55, CapabilityStorageImageReadWithoutFormat = 55,
CapabilityStorageImageWriteWithoutFormat = 56, CapabilityStorageImageWriteWithoutFormat = 56,
CapabilityMultiViewport = 57,
}; };
enum Op { enum Op {
@ -859,6 +860,7 @@ enum Op {
OpNoLine = 317, OpNoLine = 317,
OpAtomicFlagTestAndSet = 318, OpAtomicFlagTestAndSet = 318,
OpAtomicFlagClear = 319, OpAtomicFlagClear = 319,
OpImageSparseRead = 320,
}; };
// Overload operator| for mask bit combining // Overload operator| for mask bit combining
@ -874,5 +876,4 @@ inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfil
} // end namespace spv } // end namespace spv
#endif // #ifndef spirv_H #endif // #ifndef spirv_HPP

View file

@ -52,12 +52,16 @@
#include "spirv.hpp" #include "spirv.hpp"
#include <vector> #include <algorithm>
#include <cassert>
#include <functional>
#include <iostream> #include <iostream>
#include <assert.h> #include <memory>
#include <vector>
namespace spv { namespace spv {
class Block;
class Function; class Function;
class Module; class Module;
@ -66,7 +70,17 @@ const Id NoType = 0;
const unsigned int BadValue = 0xFFFFFFFF; const unsigned int BadValue = 0xFFFFFFFF;
const Decoration NoPrecision = (Decoration)BadValue; const Decoration NoPrecision = (Decoration)BadValue;
const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)0x3FF; const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsAcquireMask |
MemorySemanticsReleaseMask |
MemorySemanticsAcquireReleaseMask |
MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsUniformMemoryMask |
MemorySemanticsSubgroupMemoryMask |
MemorySemanticsWorkgroupMemoryMask |
MemorySemanticsCrossWorkgroupMemoryMask |
MemorySemanticsAtomicCounterMemoryMask |
MemorySemanticsImageMemoryMask);
// //
// SPIR-V IR instruction. // SPIR-V IR instruction.
@ -74,8 +88,8 @@ const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)0x3FF;
class Instruction { class Instruction {
public: public:
Instruction(Id resultId, Id typeId, Op opCode) : resultId(resultId), typeId(typeId), 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) { } explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { }
virtual ~Instruction() {} virtual ~Instruction() {}
void addIdOperand(Id id) { operands.push_back(id); } void addIdOperand(Id id) { operands.push_back(id); }
void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); } void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); }
@ -106,6 +120,8 @@ public:
addImmediateOperand(word); addImmediateOperand(word);
} }
} }
void setBlock(Block* b) { block = b; }
Block* getBlock() const { return block; }
Op getOpCode() const { return opCode; } Op getOpCode() const { return opCode; }
int getNumOperands() const { return (int)operands.size(); } int getNumOperands() const { return (int)operands.size(); }
Id getResultId() const { return resultId; } Id getResultId() const { return resultId; }
@ -144,6 +160,7 @@ protected:
Op opCode; Op opCode;
std::vector<Id> operands; std::vector<Id> operands;
std::string originalString; // could be optimized away; convenience for getting string operand std::string originalString; // could be optimized away; convenience for getting string operand
Block* block;
}; };
// //
@ -155,18 +172,31 @@ public:
Block(Id id, Function& parent); Block(Id id, Function& parent);
virtual ~Block() virtual ~Block()
{ {
// TODO: free instructions
} }
Id getId() { return instructions.front()->getResultId(); } Id getId() { return instructions.front()->getResultId(); }
Function& getParent() const { return parent; } Function& getParent() const { return parent; }
void addInstruction(Instruction* inst); void addInstruction(std::unique_ptr<Instruction> inst);
void addPredecessor(Block* pred) { predecessors.push_back(pred); } void addPredecessor(Block* pred) { predecessors.push_back(pred); pred->successors.push_back(this);}
void addLocalVariable(Instruction* inst) { localVariables.push_back(inst); } void addLocalVariable(std::unique_ptr<Instruction> inst) { localVariables.push_back(std::move(inst)); }
int getNumPredecessors() const { return (int)predecessors.size(); } const std::vector<Block*>& getPredecessors() const { return predecessors; }
const std::vector<Block*>& getSuccessors() const { return successors; }
void setUnreachable() { unreachable = true; } void setUnreachable() { unreachable = true; }
bool isUnreachable() const { return unreachable; } 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 bool isTerminated() const
{ {
@ -185,12 +215,6 @@ public:
void dump(std::vector<unsigned int>& out) const 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); instructions[0]->dump(out);
for (int i = 0; i < (int)localVariables.size(); ++i) for (int i = 0; i < (int)localVariables.size(); ++i)
localVariables[i]->dump(out); localVariables[i]->dump(out);
@ -205,9 +229,9 @@ protected:
// To enforce keeping parent and ownership in sync: // To enforce keeping parent and ownership in sync:
friend Function; friend Function;
std::vector<Instruction*> instructions; std::vector<std::unique_ptr<Instruction> > instructions;
std::vector<Block*> predecessors; std::vector<Block*> predecessors, successors;
std::vector<Instruction*> localVariables; std::vector<std::unique_ptr<Instruction> > localVariables;
Function& parent; Function& parent;
// track whether this block is known to be uncreachable (not necessarily // track whether this block is known to be uncreachable (not necessarily
@ -216,6 +240,11 @@ protected:
bool unreachable; 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. // SPIR-V IR Function.
// //
@ -235,12 +264,18 @@ public:
Id getParamId(int p) { return parameterInstructions[p]->getResultId(); } Id getParamId(int p) { return parameterInstructions[p]->getResultId(); }
void addBlock(Block* block) { blocks.push_back(block); } 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; } Module& getParent() const { return parent; }
Block* getEntryBlock() const { return blocks.front(); } Block* getEntryBlock() const { return blocks.front(); }
Block* getLastBlock() const { return blocks.back(); } Block* getLastBlock() const { return blocks.back(); }
void addLocalVariable(Instruction* inst); void addLocalVariable(std::unique_ptr<Instruction> inst);
Id getReturnType() const { return functionInstruction.getTypeId(); } Id getReturnType() const { return functionInstruction.getTypeId(); }
void dump(std::vector<unsigned int>& out) const void dump(std::vector<unsigned int>& out) const
{ {
@ -252,8 +287,7 @@ public:
parameterInstructions[p]->dump(out); parameterInstructions[p]->dump(out);
// Blocks // Blocks
for (int b = 0; b < (int)blocks.size(); ++b) inReadableOrder(blocks[0], [&out](const Block* b) { b->dump(out); });
blocks[b]->dump(out);
Instruction end(0, 0, OpFunctionEnd); Instruction end(0, 0, OpFunctionEnd);
end.dump(out); 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); Instruction* raw_instruction = inst.get();
parent.mapInstruction(inst); blocks[0]->addLocalVariable(std::move(inst));
parent.mapInstruction(raw_instruction);
} }
__inline Block::Block(Id id, Function& parent) : parent(parent), unreachable(false) __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); Instruction* raw_instruction = inst.get();
if (inst->getResultId()) instructions.push_back(std::move(inst));
parent.getParent().mapInstruction(inst); raw_instruction->setBlock(this);
if (raw_instruction->getResultId())
parent.getParent().mapInstruction(raw_instruction);
} }
}; // end spv namespace }; // end spv namespace

View file

@ -435,6 +435,8 @@ void ProcessConfigFile()
} }
if (configStrings) if (configStrings)
FreeFileData(configStrings); FreeFileData(configStrings);
else
delete[] config;
} }
// thread-safe list of shaders to asynchronously grab and compile // 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 // For linking mode: Will independently parse each compilation unit, but then put them
// in the same program and link them together. // 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. // 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 // keep track of what to free
std::list<glslang::TShader*> shaders; std::list<glslang::TShader*> shaders;
@ -677,22 +689,14 @@ void CompileAndLinkShaders()
// //
glslang::TProgram& program = *new glslang::TProgram; glslang::TProgram& program = *new glslang::TProgram;
glslang::TWorkItem* workItem; for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
while (Worklist.remove(workItem)) { const auto &compUnit = *it;
EShLanguage stage = FindLanguage(workItem->name); glslang::TShader* shader = new glslang::TShader(compUnit.stage);
glslang::TShader* shader = new glslang::TShader(stage); shader->setStrings(compUnit.text, 1);
shaders.push_back(shader); shaders.push_back(shader);
char** shaderStrings = ReadFileData(workItem->name.c_str());
if (! shaderStrings) {
usage();
delete &program;
return;
}
const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100; const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100;
shader->setStrings(shaderStrings, 1);
if (Options & EOptionOutputPreprocessed) { if (Options & EOptionOutputPreprocessed) {
std::string str; std::string str;
if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false,
@ -703,7 +707,6 @@ void CompileAndLinkShaders()
} }
StderrIfNonEmpty(shader->getInfoLog()); StderrIfNonEmpty(shader->getInfoLog());
StderrIfNonEmpty(shader->getInfoDebugLog()); StderrIfNonEmpty(shader->getInfoDebugLog());
FreeFileData(shaderStrings);
continue; continue;
} }
if (! shader->parse(&Resources, defaultVersion, false, messages)) if (! shader->parse(&Resources, defaultVersion, false, messages))
@ -711,13 +714,12 @@ void CompileAndLinkShaders()
program.addShader(shader); program.addShader(shader);
if (! (Options & EOptionSuppressInfolog)) { if (! (Options & EOptionSuppressInfolog) &&
PutsIfNonEmpty(workItem->name.c_str()); ! (Options & EOptionMemoryLeakMode)) {
PutsIfNonEmpty(compUnit.fileName.c_str());
PutsIfNonEmpty(shader->getInfoLog()); PutsIfNonEmpty(shader->getInfoLog());
PutsIfNonEmpty(shader->getInfoDebugLog()); PutsIfNonEmpty(shader->getInfoDebugLog());
} }
FreeFileData(shaderStrings);
} }
// //
@ -727,7 +729,8 @@ void CompileAndLinkShaders()
if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages)) if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
LinkFailed = true; LinkFailed = true;
if (! (Options & EOptionSuppressInfolog)) { if (! (Options & EOptionSuppressInfolog) &&
! (Options & EOptionMemoryLeakMode)) {
PutsIfNonEmpty(program.getInfoLog()); PutsIfNonEmpty(program.getInfoLog());
PutsIfNonEmpty(program.getInfoDebugLog()); PutsIfNonEmpty(program.getInfoDebugLog());
} }
@ -745,10 +748,14 @@ void CompileAndLinkShaders()
if (program.getIntermediate((EShLanguage)stage)) { if (program.getIntermediate((EShLanguage)stage)) {
std::vector<unsigned int> spirv; std::vector<unsigned int> spirv;
glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv); glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv);
glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
if (Options & EOptionHumanReadableSpv) { // Dump the spv to a file or stdout, etc., but only if not doing
spv::Parameterize(); // memory/perf testing, as it's not internal to programmatic use.
spv::Disassemble(std::cout, spirv); 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[]) int C_DECL main(int argc, char* argv[])
{ {
ProcessArguments(argc, argv); ProcessArguments(argc, argv);
@ -803,8 +863,13 @@ int C_DECL main(int argc, char* argv[])
if (Options & EOptionLinkProgram || if (Options & EOptionLinkProgram ||
Options & EOptionOutputPreprocessed) { Options & EOptionOutputPreprocessed) {
glslang::InitializeProcess(); glslang::InitializeProcess();
CompileAndLinkShaders(); CompileAndLinkShaderFiles();
glslang::FinalizeProcess(); glslang::FinalizeProcess();
for (int w = 0; w < NumWorkItems; ++w) {
if (Work[w]) {
delete Work[w];
}
}
} else { } else {
ShInitialize(); ShInitialize();
@ -837,6 +902,8 @@ int C_DECL main(int argc, char* argv[])
ShFinalize(); ShFinalize();
} }
delete[] Work;
if (CompileFailed) if (CompileFailed)
return EFailCompile; return EFailCompile;
if (LinkFailed) if (LinkFailed)

View file

@ -120,7 +120,8 @@ namespace {
if (fp.fail()) if (fp.fail())
errHandler(std::string("error opening file for write: ") + outFile); 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)); fp.write((char *)&word, sizeof(word));
if (fp.fail()) if (fp.fail())
errHandler(std::string("error writing file: ") + outFile); errHandler(std::string("error writing file: ") + outFile);
@ -157,7 +158,8 @@ namespace {
void execute(const std::vector<std::string>& inputFile, const std::string& outputDir, void execute(const std::vector<std::string>& inputFile, const std::string& outputDir,
int opts, int verbosity) 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; std::vector<SpvWord> spv;
read(spv, filename, verbosity); read(spv, filename, verbosity);
spv::spirvbin_t(verbosity).remap(spv, opts); 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 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 // version 130 features
uniform int c; uniform int c;

View file

@ -60,7 +60,7 @@ patch out vec4 patchOut; // ERROR
void foo24() void foo24()
{ {
dvec3 df, di; dvec3 df, di;
df = modf(outp.xyz, di); df = modf(dvec3(outp.xyz), di);
} }
in float in1; in float in1;
@ -185,3 +185,13 @@ void qlod()
} }
struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member 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(samp1D, pf); // ERROR, only in fragment
lod = textureQueryLod(samp2Ds, pf2); // 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 float uf;
uniform int ui; uniform int ui;
#ifdef TEST_POST_110
uniform uvec4 uuv4; uniform uvec4 uuv4;
uniform unsigned int uui; uniform uint uui;
#endif
void main() void main()
{ {
@ -19,9 +19,9 @@ void main()
bool b; bool b;
bvec4 bv4; bvec4 bv4;
int i; int i;
#ifdef TEST_POST_110
uint u; uint u;
#endif
// floating point // floating point
v = radians(uv4); v = radians(uv4);
@ -51,37 +51,37 @@ void main()
v += sign(v); v += sign(v);
v += floor(v); v += floor(v);
#ifdef TEST_POST_110
v += trunc(v); v += trunc(v);
v += round(v); v += round(v);
v += roundEven(v); v += roundEven(v);
#endif
v += ceil(v); v += ceil(v);
v += fract(v); v += fract(v);
v += mod(v, v); v += mod(v, v);
v += mod(v, v.x); v += mod(v, v.x);
#ifdef TEST_POST_110
v += modf(v, v); v += modf(v, v);
#endif
v += min(v, uv4); v += min(v, uv4);
v += max(v, uv4); v += max(v, uv4);
v += clamp(v, uv4, uv4); v += clamp(v, uv4, uv4);
v += mix(v,v,v); v += mix(v,v,v);
#ifdef TEST_POST_110
v += mix(v,v,ub); v += mix(v,v,bv4);
v += intBitsToFloat(v); v += intBitsToFloat(ivec4(i));
v += uintBitsToFloat(v); v += uintBitsToFloat(uv4);
v += fma(v); v += fma(v,v,v);
v += frexp(v); v += frexp(v);
v += ldexp(v); v += ldexp(v);
v += unpackUnorm2x16(v); v += unpackUnorm2x16(v);
v += unpackUnorm4x8(v); v += unpackUnorm4x8(v);
v += unpackSnorm4x8(v); v += unpackSnorm4x8(v);
#endif
v += step(v,v); v += step(v,v);
v += smoothstep(v,v,v); v += smoothstep(v,v,v);
@ -96,7 +96,7 @@ void main()
v += fwidth(v); v += fwidth(v);
//noise*(v); //noise*(v);
#ifdef TEST_POST_110
// signed integer // signed integer
i += abs(ui); i += abs(ui);
i += sign(i); i += sign(i);
@ -118,15 +118,15 @@ void main()
u += floatsBitToInt(v); u += floatsBitToInt(v);
u += packUnorm2x16(v); u += packUnorm2x16(v);
u += packUnorm4x8(v); u += packUnorm4x8(v);
u += packSnorm4x8(v); i += uui & i; // ERRORs, no int/uint conversions before 400
u += floatBitsToUInt(v); i += uui ^ i;
#endif i += i | uui;
// bool // bool
#ifdef TEST_POST_110
b = isnan(uf); b = isnan(uf);
b = isinf(v); b = isinf(v.y);
#endif
b = any(lessThan(v, uv4)); b = any(lessThan(v, uv4));
b = (b && any(lessThanEqual(v, uv4))); b = (b && any(lessThanEqual(v, uv4)));
b = (b && any(greaterThan(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:111: 'overloadE' : no matching overloaded function found
ERROR: 0:117: 'overloadF' : 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:121: 'gl_TexCoord array size' : must be less than gl_MaxTextureCoords (32)
ERROR: 0:157: 'switch' : Reserved word. ERROR: 0:165: 'switch' : Reserved word.
ERROR: 0:163: 'default' : Reserved word. ERROR: 0:171: 'default' : Reserved word.
ERROR: 0:157: 'switch statements' : not supported for this version or the enabled extensions ERROR: 0:165: '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:176: '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:176: '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:176: '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:176: 'bitwise inclusive or' : not supported for this version or the enabled extensions
ERROR: 0:171: 'modf' : no matching overloaded function found ERROR: 0:179: 'modf' : no matching overloaded function found
ERROR: 0:171: '=' : cannot convert from 'const float' to 'temp 3-component vector of float' ERROR: 0:179: '=' : cannot convert from 'const float' to 'temp 3-component vector of float'
ERROR: 0:172: 'trunc' : no matching overloaded function found ERROR: 0:180: 'trunc' : no matching overloaded function found
ERROR: 0:173: 'round' : no matching overloaded function found ERROR: 0:181: 'round' : no matching overloaded function found
ERROR: 0:173: '=' : cannot convert from 'const float' to 'temp 2-component vector of float' ERROR: 0:181: '=' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:174: 'roundEven' : no matching overloaded function found ERROR: 0:182: 'roundEven' : no matching overloaded function found
ERROR: 0:174: '=' : cannot convert from 'const float' to 'temp 2-component vector of float' ERROR: 0:182: '=' : cannot convert from 'const float' to 'temp 2-component vector of float'
ERROR: 0:175: 'isnan' : no matching overloaded function found ERROR: 0:183: 'isnan' : no matching overloaded function found
ERROR: 0:175: '=' : cannot convert from 'const float' to 'temp 2-component vector of bool' ERROR: 0:183: '=' : cannot convert from 'const float' to 'temp 2-component vector of bool'
ERROR: 0:176: 'isinf' : no matching overloaded function found ERROR: 0:184: 'isinf' : no matching overloaded function found
ERROR: 0:176: '=' : cannot convert from 'const float' to 'temp 4-component vector of bool' ERROR: 0:184: '=' : cannot convert from 'const float' to 'temp 4-component vector of bool'
ERROR: 0:178: 'sinh' : no matching overloaded function found ERROR: 0:186: 'sinh' : no matching overloaded function found
ERROR: 0:179: 'cosh' : no matching overloaded function found ERROR: 0:187: 'cosh' : no matching overloaded function found
ERROR: 0:179: 'tanh' : no matching overloaded function found ERROR: 0:187: 'tanh' : no matching overloaded function found
ERROR: 0:180: 'c4D' : undeclared identifier ERROR: 0:188: 'c4D' : undeclared identifier
ERROR: 0:180: 'asinh' : no matching overloaded function found ERROR: 0:188: 'asinh' : no matching overloaded function found
ERROR: 0:180: 'acosh' : no matching overloaded function found ERROR: 0:188: 'acosh' : no matching overloaded function found
ERROR: 0:181: 'atanh' : no matching overloaded function found ERROR: 0:189: 'atanh' : no matching overloaded function found
ERROR: 0:183: 'gl_VertexID' : undeclared identifier ERROR: 0:191: 'gl_VertexID' : undeclared identifier
ERROR: 0:183: '=' : cannot convert from 'temp float' to 'temp int' ERROR: 0:191: '=' : cannot convert from 'temp float' to 'temp int'
ERROR: 0:184: 'gl_ClipDistance' : undeclared identifier ERROR: 0:192: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:184: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:192: '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:192: '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:198: 'token pasting (##)' : not supported for this version or the enabled extensions
ERROR: 0:190: '##' : token pasting not implemented (internal error) ERROR: 0:198: '##' : token pasting not implemented (internal error)
ERROR: 0:190: '' : syntax error ERROR: 0:198: '' : syntax error
ERROR: 79 compilation errors. No code generated. 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 Compare Less Than (global 4-component vector of bool)
0:139 'v4' (temp 4-component vector of float) 0:139 'v4' (temp 4-component vector of float)
0:139 'attv4' (in 4-component vector of float) 0:139 'attv4' (in 4-component vector of float)
0:154 Function Definition: foo213( (global void) 0:142 Function Definition: noise( (global void)
0:154 Function Parameters: 0:142 Function Parameters:
0:156 Sequence 0:144 Sequence
0:156 Sequence 0:144 Sequence
0:156 move second child to first child (temp float) 0:144 move second child to first child (temp float)
0:156 'f' (temp float) 0:144 'f1' (temp float)
0:156 Constant: 0:144 noise (global float)
0:156 3.000000 0:144 Constant:
0:157 switch 0:144 1.000000
0:157 condition 0:145 Sequence
0:157 'c' (uniform int) 0:145 move second child to first child (temp 2-component vector of float)
0:157 body 0:145 'f2' (temp 2-component vector of float)
0:157 Sequence 0:145 noise (global 2-component vector of float)
0:158 case: with expression 0:145 Constant:
0:158 Constant: 0:145 1.000000
0:158 1 (const int) 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:? Sequence
0:159 move second child to first child (temp float) 0:167 move second child to first child (temp float)
0:159 'f' (temp float) 0:167 'f' (temp float)
0:159 sine (global float) 0:167 sine (global float)
0:159 'f' (temp float) 0:167 'f' (temp float)
0:160 Branch: Break 0:168 Branch: Break
0:161 case: with expression 0:169 case: with expression
0:161 Constant: 0:169 Constant:
0:161 2 (const int) 0:169 2 (const int)
0:? Sequence 0:? Sequence
0:162 move second child to first child (temp float) 0:170 move second child to first child (temp float)
0:162 'f' (temp float) 0:170 'f' (temp float)
0:162 component-wise multiply (temp float) 0:170 component-wise multiply (temp float)
0:162 'f' (temp float) 0:170 'f' (temp float)
0:162 'f' (temp float) 0:170 'f' (temp float)
0:163 default: 0:171 default:
0:? Sequence 0:? Sequence
0:164 move second child to first child (temp float) 0:172 move second child to first child (temp float)
0:164 'f' (temp float) 0:172 'f' (temp float)
0:164 Constant: 0:172 Constant:
0:164 3.000000 0:172 3.000000
0:168 inclusive-or (temp int) 0:176 inclusive-or (temp int)
0:168 left-shift (temp int) 0:176 left-shift (temp int)
0:168 'i' (temp int) 0:176 'i' (temp int)
0:168 Constant: 0:176 Constant:
0:168 3 (const int) 0:176 3 (const int)
0:168 Constant: 0:176 Constant:
0:168 69 (const int) 0:176 69 (const int)
0:172 Sequence 0:180 Sequence
0:172 move second child to first child (temp float) 0:180 move second child to first child (temp float)
0:172 't' (temp float) 0:180 't' (temp float)
0:172 Constant: 0:180 Constant:
0:172 0.000000 0:180 0.000000
0:178 Constant: 0:186 Constant:
0:178 0.000000 0:186 0.000000
0:180 Constant: 0:188 Constant:
0:180 0.000000 0:188 0.000000
0:181 Constant: 0:189 Constant:
0:181 0.000000 0:189 0.000000
0:184 move second child to first child (temp float) 0:192 move second child to first child (temp float)
0:184 Constant: 0:192 Constant:
0:184 0.000000 0:192 0.000000
0:184 Constant: 0:192 Constant:
0:184 0.300000 0:192 0.300000
0:? Linker Objects 0:? Linker Objects
0:? 'i' (in 4-component vector of float) 0:? 'i' (in 4-component vector of float)
0:? 'o' (smooth out 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 Compare Less Than (global 4-component vector of bool)
0:139 'v4' (temp 4-component vector of float) 0:139 'v4' (temp 4-component vector of float)
0:139 'attv4' (in 4-component vector of float) 0:139 'attv4' (in 4-component vector of float)
0:154 Function Definition: foo213( (global void) 0:142 Function Definition: noise( (global void)
0:154 Function Parameters: 0:142 Function Parameters:
0:156 Sequence 0:144 Sequence
0:156 Sequence 0:144 Sequence
0:156 move second child to first child (temp float) 0:144 move second child to first child (temp float)
0:156 'f' (temp float) 0:144 'f1' (temp float)
0:156 Constant: 0:144 noise (global float)
0:156 3.000000 0:144 Constant:
0:157 switch 0:144 1.000000
0:157 condition 0:145 Sequence
0:157 'c' (uniform int) 0:145 move second child to first child (temp 2-component vector of float)
0:157 body 0:145 'f2' (temp 2-component vector of float)
0:157 Sequence 0:145 noise (global 2-component vector of float)
0:158 case: with expression 0:145 Constant:
0:158 Constant: 0:145 1.000000
0:158 1 (const int) 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:? Sequence
0:159 move second child to first child (temp float) 0:167 move second child to first child (temp float)
0:159 'f' (temp float) 0:167 'f' (temp float)
0:159 sine (global float) 0:167 sine (global float)
0:159 'f' (temp float) 0:167 'f' (temp float)
0:160 Branch: Break 0:168 Branch: Break
0:161 case: with expression 0:169 case: with expression
0:161 Constant: 0:169 Constant:
0:161 2 (const int) 0:169 2 (const int)
0:? Sequence 0:? Sequence
0:162 move second child to first child (temp float) 0:170 move second child to first child (temp float)
0:162 'f' (temp float) 0:170 'f' (temp float)
0:162 component-wise multiply (temp float) 0:170 component-wise multiply (temp float)
0:162 'f' (temp float) 0:170 'f' (temp float)
0:162 'f' (temp float) 0:170 'f' (temp float)
0:163 default: 0:171 default:
0:? Sequence 0:? Sequence
0:164 move second child to first child (temp float) 0:172 move second child to first child (temp float)
0:164 'f' (temp float) 0:172 'f' (temp float)
0:164 Constant: 0:172 Constant:
0:164 3.000000 0:172 3.000000
0:168 inclusive-or (temp int) 0:176 inclusive-or (temp int)
0:168 left-shift (temp int) 0:176 left-shift (temp int)
0:168 'i' (temp int) 0:176 'i' (temp int)
0:168 Constant: 0:176 Constant:
0:168 3 (const int) 0:176 3 (const int)
0:168 Constant: 0:176 Constant:
0:168 69 (const int) 0:176 69 (const int)
0:172 Sequence 0:180 Sequence
0:172 move second child to first child (temp float) 0:180 move second child to first child (temp float)
0:172 't' (temp float) 0:180 't' (temp float)
0:172 Constant: 0:180 Constant:
0:172 0.000000 0:180 0.000000
0:178 Constant: 0:186 Constant:
0:178 0.000000 0:186 0.000000
0:180 Constant: 0:188 Constant:
0:180 0.000000 0:188 0.000000
0:181 Constant: 0:189 Constant:
0:181 0.000000 0:189 0.000000
0:184 move second child to first child (temp float) 0:192 move second child to first child (temp float)
0:184 Constant: 0:192 Constant:
0:184 0.000000 0:192 0.000000
0:184 Constant: 0:192 Constant:
0:184 0.300000 0:192 0.300000
0:? Linker Objects 0:? Linker Objects
0:? 'i' (in 4-component vector of float) 0:? 'i' (in 4-component vector of float)
0:? 'o' (smooth out 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: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: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: '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: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'
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:? Sequence
0:63 move second child to first child (temp 3-component vector of double) 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 'df' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double) 0:63 modf (global 3-component vector of double)
0:63 Comma (global 3-component vector of float) 0:63 Convert float to double (temp 3-component vector of double)
0:63 move second child to first child (temp 3-component vector of float) 0:63 vector swizzle (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float) 0:63 'outp' (out 4-component vector of float)
0:63 modf (global 3-component vector of float) 0:63 Sequence
0:63 vector swizzle (temp 3-component vector of float) 0:63 Constant:
0:63 'outp' (out 4-component vector of float) 0:63 0 (const int)
0:63 Sequence 0:63 Constant:
0:63 Constant: 0:63 1 (const int)
0:63 0 (const int) 0:63 Constant:
0:63 Constant: 0:63 2 (const int)
0:63 1 (const int) 0:63 'di' (temp 3-component vector of double)
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:71 Function Definition: foodc1( (global void) 0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters: 0:71 Function Parameters:
0:73 Sequence 0:73 Sequence
@ -707,26 +699,18 @@ ERROR: node is still EOpNull!
0:? Sequence 0:? Sequence
0:63 move second child to first child (temp 3-component vector of double) 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 'df' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double) 0:63 modf (global 3-component vector of double)
0:63 Comma (global 3-component vector of float) 0:63 Convert float to double (temp 3-component vector of double)
0:63 move second child to first child (temp 3-component vector of float) 0:63 vector swizzle (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float) 0:63 'outp' (out 4-component vector of float)
0:63 modf (global 3-component vector of float) 0:63 Sequence
0:63 vector swizzle (temp 3-component vector of float) 0:63 Constant:
0:63 'outp' (out 4-component vector of float) 0:63 0 (const int)
0:63 Sequence 0:63 Constant:
0:63 Constant: 0:63 1 (const int)
0:63 0 (const int) 0:63 Constant:
0:63 Constant: 0:63 2 (const int)
0:63 1 (const int) 0:63 'di' (temp 3-component vector of double)
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:71 Function Definition: foodc1( (global void) 0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters: 0:71 Function Parameters:
0:73 Sequence 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:13: 'uniform' : too many storage qualifiers
ERROR: 0:18: '=' : global const initializers must be constant 'const int' ERROR: 0:18: '=' : global const initializers must be constant 'const int'
ERROR: 0:20: 'const' : no qualifiers allowed for function return 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:27: '' : array size must be a constant integer expression
ERROR: 0:38: 'j' : undeclared identifier ERROR: 0:38: 'j' : undeclared identifier
ERROR: 0:38: '=' : cannot convert from 'temp float' to 'temp int' 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:85: '' : vertex input cannot be further qualified
ERROR: 0:86: 'patch' : not supported in this stage: vertex ERROR: 0:86: 'patch' : not supported in this stage: vertex
ERROR: 0:100: '=' : global const initializers must be constant 'const int' 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: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: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 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:157: 'assign' : cannot convert from 'const float' to 'temp int'
ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found
ERROR: 0:158: 'assign' : cannot convert from 'const float' to 'temp int' 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 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: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: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: '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: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'
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 430.vert
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. 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: '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: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 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 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 Shader version: 130
0:? Sequence ERROR: node is still EOpNull!
0:15 Function Definition: main( (global void) 0:15 Function Definition: main( (global void)
0:15 Function Parameters: 0:15 Function Parameters:
0:? Sequence 0:? Sequence
@ -107,6 +135,18 @@ Shader version: 130
0:52 'v' (temp 4-component vector of float) 0:52 'v' (temp 4-component vector of float)
0:52 Floor (global 4-component vector of float) 0:52 Floor (global 4-component vector of float)
0:52 'v' (temp 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 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float) 0:60 'v' (temp 4-component vector of float)
0:60 Ceiling (global 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 'v' (temp 4-component vector of float)
0:63 Constant: 0:63 Constant:
0:63 0 (const int) 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 add second child into first child (temp 4-component vector of float)
0:69 'v' (temp 4-component vector of float) 0:69 'v' (temp 4-component vector of float)
0:69 min (global 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: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 add second child into first child (temp 4-component vector of float)
0:86 'v' (temp 4-component vector of float) 0:86 'v' (temp 4-component vector of float)
0:86 step (global 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 'v' (temp 4-component vector of float)
0:96 fwidth (global 4-component vector of float) 0:96 fwidth (global 4-component vector of float)
0:96 'v' (temp 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 move second child to first child (temp bool)
0:130 'b' (temp bool) 0:130 'b' (temp bool)
0:130 any (global bool) 0:130 any (global bool)
@ -431,13 +583,15 @@ Shader version: 130
0:? 'ub42' (uniform 4-component vector of bool) 0:? 'ub42' (uniform 4-component vector of bool)
0:? 'uf' (uniform float) 0:? 'uf' (uniform float)
0:? 'ui' (uniform int) 0:? 'ui' (uniform int)
0:? 'uuv4' (uniform 4-component vector of uint)
0:? 'uui' (uniform uint)
Linked fragment stage: Linked fragment stage:
Shader version: 130 Shader version: 130
0:? Sequence ERROR: node is still EOpNull!
0:15 Function Definition: main( (global void) 0:15 Function Definition: main( (global void)
0:15 Function Parameters: 0:15 Function Parameters:
0:? Sequence 0:? Sequence
@ -544,6 +698,18 @@ Shader version: 130
0:52 'v' (temp 4-component vector of float) 0:52 'v' (temp 4-component vector of float)
0:52 Floor (global 4-component vector of float) 0:52 Floor (global 4-component vector of float)
0:52 'v' (temp 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 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float) 0:60 'v' (temp 4-component vector of float)
0:60 Ceiling (global 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 'v' (temp 4-component vector of float)
0:63 Constant: 0:63 Constant:
0:63 0 (const int) 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 add second child into first child (temp 4-component vector of float)
0:69 'v' (temp 4-component vector of float) 0:69 'v' (temp 4-component vector of float)
0:69 min (global 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: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 add second child into first child (temp 4-component vector of float)
0:86 'v' (temp 4-component vector of float) 0:86 'v' (temp 4-component vector of float)
0:86 step (global 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 'v' (temp 4-component vector of float)
0:96 fwidth (global 4-component vector of float) 0:96 fwidth (global 4-component vector of float)
0:96 'v' (temp 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 move second child to first child (temp bool)
0:130 'b' (temp bool) 0:130 'b' (temp bool)
0:130 any (global bool) 0:130 any (global bool)
@ -868,4 +1146,6 @@ Shader version: 130
0:? 'ub42' (uniform 4-component vector of bool) 0:? 'ub42' (uniform 4-component vector of bool)
0:? 'uf' (uniform float) 0:? 'uf' (uniform float)
0:? 'ui' (uniform int) 0:? 'ui' (uniform int)
0:? 'uuv4' (uniform 4-component vector of uint)
0:? 'uui' (uniform uint)

View file

@ -1,14 +1,11 @@
constErrors.frag constErrors.frag
ERROR: 0:14: 'non-constant initializer' : not supported for this version or the enabled extensions 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: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: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: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: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: 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 Shader version: 330

View file

@ -270,6 +270,14 @@ ERROR: node is still EOpNull!
0:128 76.000000 0:128 76.000000
0:128 59.000000 0:128 59.000000
0:128 88.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:? Linker Objects
0:? 'a' (const int) 0:? 'a' (const int)
0:? 1 (const int) 0:? 1 (const int)
@ -356,6 +364,16 @@ ERROR: node is still EOpNull!
0:? 13.000000 0:? 13.000000
0:? 14.000000 0:? 14.000000
0:? 15.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: Linked fragment stage:
@ -622,6 +640,14 @@ ERROR: node is still EOpNull!
0:128 76.000000 0:128 76.000000
0:128 59.000000 0:128 59.000000
0:128 88.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:? Linker Objects
0:? 'a' (const int) 0:? 'a' (const int)
0:? 1 (const int) 0:? 1 (const int)
@ -708,4 +734,14 @@ ERROR: node is still EOpNull!
0:? 13.000000 0:? 13.000000
0:? 14.000000 0:? 14.000000
0:? 15.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 nameless: offset -1, type ffffffff, size 496, index -1
named: offset -1, type ffffffff, size 304, index -1 named: offset -1, type ffffffff, size 304, index -1
c_nameless: offset -1, type ffffffff, size 112, 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[0]: offset -1, type ffffffff, size 4, index -1
abl[1]: 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 abl[2]: offset -1, type ffffffff, size 4, index -1

View file

@ -1,6 +1,6 @@
specExamples.vert specExamples.vert
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. 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: '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: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) ERROR: 0:33: 'lines' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -33,19 +33,29 @@ Linked compute stage:
MemberName 48(outs) 1 "va" MemberName 48(outs) 1 "va"
Name 50 "outnames" Name 50 "outnames"
Name 53 "gl_LocalInvocationID" 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 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 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 48(outs) BufferBlock
Decorate 50(outnames) DescriptorSet 0
Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 66 BuiltIn WorkgroupSize Decorate 66 BuiltIn WorkgroupSize
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
7: 6(int) Constant 1 7: 6(int) Constant 1
8: 6(int) Constant 1023 8: 6(int) Constant 4062
9: 6(int) Constant 0 9: 6(int) Constant 0
10: TypeFloat 32 10: TypeFloat 32
11: TypeVector 10(float) 3 11: TypeVector 10(float) 3

View file

@ -8,6 +8,7 @@ Linked geometry stage:
// Id's are bound by 32 // Id's are bound by 32
Capability Geometry Capability Geometry
Capability ClipDistance
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 13 20 EntryPoint Geometry 4 "main" 13 20
@ -29,8 +30,6 @@ Linked geometry stage:
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 11(gl_PerVertex) 1 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 1 BuiltIn ClipDistance
Decorate 11(gl_PerVertex) Block 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) 0 BuiltIn Position
MemberDecorate 16(gl_PerVertex) 1 BuiltIn ClipDistance MemberDecorate 16(gl_PerVertex) 1 BuiltIn ClipDistance
Decorate 16(gl_PerVertex) Block 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 // Id's are bound by 93
Capability Tessellation Capability Tessellation
Capability TessellationPointSize
Capability ClipDistance
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 23 40 43 46 52 66 73 79 83 84 87 88 91 92 EntryPoint TessellationControl 4 "main" 23 40 43 46 52 66 73 79 83 84 87 88 91 92
@ -71,7 +73,7 @@ Linked tessellation control stage:
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
7: 6(int) Constant 1 7: 6(int) Constant 1
8: 6(int) Constant 1023 8: 6(int) Constant 4062
9: 6(int) Constant 0 9: 6(int) Constant 0
10: TypeInt 32 1 10: TypeInt 32 1
11: TypePointer Function 10(int) 11: TypePointer Function 10(int)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,13 +7,13 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 380 // Id's are bound by 215
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 16 41 90 376 EntryPoint Fragment 4 "main" 16 41 101 213
ExecutionMode 4 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 450 Source GLSL 450
Name 4 "main" Name 4 "main"
Name 8 "s1" Name 8 "s1"
@ -23,41 +23,47 @@ Linked fragment stage:
Name 16 "u" Name 16 "u"
Name 37 "b" Name 37 "b"
Name 41 "w" Name 41 "w"
Name 55 "s2" Name 55 "s1"
MemberName 55(s2) 0 "i" MemberName 55(s1) 0 "i"
MemberName 55(s2) 1 "f" MemberName 55(s1) 1 "f"
MemberName 55(s2) 2 "s1_1" Name 56 "s2"
Name 57 "foo2a" MemberName 56(s2) 0 "i"
Name 59 "foo2b" MemberName 56(s2) 1 "f"
Name 82 "v" MemberName 56(s2) 2 "s1_1"
Name 86 "samp2D" Name 57 "ub1"
Name 90 "coord" MemberName 57(ub1) 0 "foo2a"
Name 341 "s1" Name 59 "uName1"
MemberName 341(s1) 0 "i" Name 64 "s1"
MemberName 341(s1) 1 "f" MemberName 64(s1) 0 "i"
Name 342 "s2" MemberName 64(s1) 1 "f"
MemberName 342(s2) 0 "i" Name 65 "s2"
MemberName 342(s2) 1 "f" MemberName 65(s2) 0 "i"
MemberName 342(s2) 2 "s1_1" MemberName 65(s2) 1 "f"
Name 343 "bn" MemberName 65(s2) 2 "s1_1"
MemberName 343(bn) 0 "foo2a" Name 66 "ub2"
Name 345 "bi" MemberName 66(ub2) 0 "foo2b"
Name 347 "s1" Name 68 "uName2"
MemberName 347(s1) 0 "i" Name 93 "v"
MemberName 347(s1) 1 "f" Name 97 "samp2D"
Name 348 "s2" Name 101 "coord"
MemberName 348(s2) 0 "i" Name 213 "color"
MemberName 348(s2) 1 "f" MemberDecorate 55(s1) 0 Offset 0
MemberName 348(s2) 2 "s1_1" MemberDecorate 55(s1) 1 Offset 4
Name 376 "color" MemberDecorate 56(s2) 0 Offset 0
Name 379 "foo1" MemberDecorate 56(s2) 1 Offset 4
MemberDecorate 341(s1) 0 Offset 0 MemberDecorate 56(s2) 2 Offset 16
MemberDecorate 341(s1) 1 Offset 4 MemberDecorate 57(ub1) 0 Offset 0
MemberDecorate 342(s2) 0 Offset 0 Decorate 57(ub1) Block
MemberDecorate 342(s2) 1 Offset 4 Decorate 59(uName1) DescriptorSet 0
MemberDecorate 342(s2) 2 Offset 16 MemberDecorate 64(s1) 0 Offset 0
MemberDecorate 343(bn) 0 Offset 0 MemberDecorate 64(s1) 1 Offset 4
Decorate 343(bn) Block 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 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -81,46 +87,43 @@ Linked fragment stage:
39: 7(float) Constant 1099431936 39: 7(float) Constant 1099431936
40: 8(s1) ConstantComposite 38 39 40: 8(s1) ConstantComposite 38 39
41(w): 15(ptr) Variable Input 41(w): 15(ptr) Variable Input
55(s2): TypeStruct 6(int) 7(float) 8(s1) 55(s1): TypeStruct 6(int) 7(float)
56: TypePointer UniformConstant 55(s2) 56(s2): TypeStruct 6(int) 7(float) 55(s1)
57(foo2a): 56(ptr) Variable UniformConstant 57(ub1): TypeStruct 56(s2)
59(foo2b): 56(ptr) Variable UniformConstant 58: TypePointer Uniform 57(ub1)
61: TypeBool 59(uName1): 58(ptr) Variable Uniform
81: TypePointer Function 14(fvec4) 60: 6(int) Constant 0
83: TypeImage 7(float) 2D sampled format:Unknown 61: TypePointer Uniform 56(s2)
84: TypeSampledImage 83 64(s1): TypeStruct 6(int) 7(float)
85: TypePointer UniformConstant 84 65(s2): TypeStruct 6(int) 7(float) 64(s1)
86(samp2D): 85(ptr) Variable UniformConstant 66(ub2): TypeStruct 65(s2)
88: TypeVector 7(float) 2 67: TypePointer Uniform 66(ub2)
89: TypePointer Input 88(fvec2) 68(uName2): 67(ptr) Variable Uniform
90(coord): 89(ptr) Variable Input 69: TypePointer Uniform 65(s2)
95: 7(float) Constant 1073741824 72: TypeBool
101: TypeVector 61(bool) 4 92: TypePointer Function 14(fvec4)
106: 7(float) Constant 1077936128 94: TypeImage 7(float) 2D sampled format:Unknown
115: 7(float) Constant 1082130432 95: TypeSampledImage 94
121: TypeVector 61(bool) 2 96: TypePointer UniformConstant 95
126: 7(float) Constant 1084227584 97(samp2D): 96(ptr) Variable UniformConstant
232: 7(float) Constant 1086324736 99: TypeVector 7(float) 2
338: 7(float) Constant 1088421888 100: TypePointer Input 99(fvec2)
341(s1): TypeStruct 6(int) 7(float) 101(coord): 100(ptr) Variable Input
342(s2): TypeStruct 6(int) 7(float) 341(s1) 106: 7(float) Constant 1073741824
343(bn): TypeStruct 342(s2) 112: TypeVector 72(bool) 4
344: TypePointer Uniform 343(bn) 117: 7(float) Constant 1077936128
345(bi): 344(ptr) Variable Uniform 126: 7(float) Constant 1082130432
346: 6(int) Constant 0 132: TypeVector 72(bool) 2
347(s1): TypeStruct 6(int) 7(float) 137: 7(float) Constant 1084227584
348(s2): TypeStruct 6(int) 7(float) 347(s1) 173: 7(float) Constant 1086324736
349: TypePointer Uniform 342(s2) 209: 7(float) Constant 1088421888
372: 7(float) Constant 1090519040 212: TypePointer Output 14(fvec4)
375: TypePointer Output 14(fvec4) 213(color): 212(ptr) Variable Output
376(color): 375(ptr) Variable Output
378: TypePointer UniformConstant 8(s1)
379(foo1): 378(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
13(a): 12(ptr) Variable Function 13(a): 12(ptr) Variable Function
37(b): 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 19: 18(ptr) AccessChain 16(u) 17
20: 7(float) Load 19 20: 7(float) Load 19
21: 6(int) ConvertFToS 20 21: 6(int) ConvertFToS 20
@ -149,325 +152,159 @@ Linked fragment stage:
53: 8(s1) CompositeConstruct 50 52 53: 8(s1) CompositeConstruct 50 52
54: 11 CompositeConstruct 40 47 53 54: 11 CompositeConstruct 40 47 53
Store 37(b) 54 Store 37(b) 54
58: 55(s2) Load 57(foo2a) 62: 61(ptr) AccessChain 59(uName1) 60
60: 55(s2) Load 59(foo2b) 63: 56(s2) Load 62
62: 6(int) CompositeExtract 58 0 70: 69(ptr) AccessChain 68(uName2) 60
63: 6(int) CompositeExtract 60 0 71: 65(s2) Load 70
64: 61(bool) IEqual 62 63 73: 6(int) CompositeExtract 63 0
65: 7(float) CompositeExtract 58 1 74: 6(int) CompositeExtract 71 0
66: 7(float) CompositeExtract 60 1 75: 72(bool) IEqual 73 74
67: 61(bool) FOrdEqual 65 66 76: 7(float) CompositeExtract 63 1
68: 61(bool) LogicalAnd 64 67 77: 7(float) CompositeExtract 71 1
69: 8(s1) CompositeExtract 58 2 78: 72(bool) FOrdEqual 76 77
70: 8(s1) CompositeExtract 60 2 79: 72(bool) LogicalAnd 75 78
71: 6(int) CompositeExtract 69 0 80: 55(s1) CompositeExtract 63 2
72: 6(int) CompositeExtract 70 0 81: 64(s1) CompositeExtract 71 2
73: 61(bool) IEqual 71 72 82: 6(int) CompositeExtract 80 0
74: 7(float) CompositeExtract 69 1 83: 6(int) CompositeExtract 81 0
75: 7(float) CompositeExtract 70 1 84: 72(bool) IEqual 82 83
76: 61(bool) FOrdEqual 74 75 85: 7(float) CompositeExtract 80 1
77: 61(bool) LogicalAnd 73 76 86: 7(float) CompositeExtract 81 1
78: 61(bool) LogicalAnd 68 77 87: 72(bool) FOrdEqual 85 86
SelectionMerge 80 None 88: 72(bool) LogicalAnd 84 87
BranchConditional 78 79 93 89: 72(bool) LogicalAnd 79 88
79: Label SelectionMerge 91 None
87: 84 Load 86(samp2D) BranchConditional 89 90 104
91: 88(fvec2) Load 90(coord) 90: Label
92: 14(fvec4) ImageSampleImplicitLod 87 91 98: 95 Load 97(samp2D)
Store 82(v) 92 102: 99(fvec2) Load 101(coord)
Branch 80 103: 14(fvec4) ImageSampleImplicitLod 98 102
93: Label Store 93(v) 103
94: 84 Load 86(samp2D) Branch 91
96: 88(fvec2) Load 90(coord)
97: 88(fvec2) VectorTimesScalar 96 95
98: 14(fvec4) ImageSampleImplicitLod 94 97
Store 82(v) 98
Branch 80
80: Label
99: 14(fvec4) Load 16(u)
100: 14(fvec4) Load 82(v)
102: 101(bvec4) FOrdEqual 99 100
103: 61(bool) All 102
SelectionMerge 105 None
BranchConditional 103 104 105
104: Label 104: Label
107: 14(fvec4) Load 82(v) 105: 95 Load 97(samp2D)
108: 14(fvec4) VectorTimesScalar 107 106 107: 99(fvec2) Load 101(coord)
Store 82(v) 108 108: 99(fvec2) VectorTimesScalar 107 106
Branch 105 109: 14(fvec4) ImageSampleImplicitLod 105 108
105: Label Store 93(v) 109
109: 14(fvec4) Load 16(u) Branch 91
110: 14(fvec4) Load 82(v) 91: Label
111: 101(bvec4) FOrdNotEqual 109 110 110: 14(fvec4) Load 16(u)
112: 61(bool) Any 111 111: 14(fvec4) Load 93(v)
SelectionMerge 114 None 113: 112(bvec4) FOrdEqual 110 111
BranchConditional 112 113 114 114: 72(bool) All 113
113: Label SelectionMerge 116 None
116: 14(fvec4) Load 82(v) BranchConditional 114 115 116
117: 14(fvec4) VectorTimesScalar 116 115 115: Label
Store 82(v) 117 118: 14(fvec4) Load 93(v)
Branch 114 119: 14(fvec4) VectorTimesScalar 118 117
114: Label Store 93(v) 119
118: 88(fvec2) Load 90(coord) Branch 116
119: 14(fvec4) Load 82(v) 116: Label
120: 88(fvec2) VectorShuffle 119 119 1 3 120: 14(fvec4) Load 16(u)
122: 121(bvec2) FOrdEqual 118 120 121: 14(fvec4) Load 93(v)
123: 61(bool) All 122 122: 112(bvec4) FOrdNotEqual 120 121
123: 72(bool) Any 122
SelectionMerge 125 None SelectionMerge 125 None
BranchConditional 123 124 125 BranchConditional 123 124 125
124: Label 124: Label
127: 14(fvec4) Load 82(v) 127: 14(fvec4) Load 93(v)
128: 14(fvec4) VectorTimesScalar 127 126 128: 14(fvec4) VectorTimesScalar 127 126
Store 82(v) 128 Store 93(v) 128
Branch 125 Branch 125
125: Label 125: Label
129: 11 Load 13(a) 129: 99(fvec2) Load 101(coord)
130: 11 Load 37(b) 130: 14(fvec4) Load 93(v)
131: 8(s1) CompositeExtract 129 0 131: 99(fvec2) VectorShuffle 130 130 1 3
132: 8(s1) CompositeExtract 130 0 133: 132(bvec2) FOrdEqual 129 131
133: 6(int) CompositeExtract 131 0 134: 72(bool) All 133
134: 6(int) CompositeExtract 132 0 SelectionMerge 136 None
135: 61(bool) IEqual 133 134 BranchConditional 134 135 136
136: 7(float) CompositeExtract 131 1 135: Label
137: 7(float) CompositeExtract 132 1 138: 14(fvec4) Load 93(v)
138: 61(bool) FOrdEqual 136 137 139: 14(fvec4) VectorTimesScalar 138 137
139: 61(bool) LogicalAnd 135 138 Store 93(v) 139
140: 8(s1) CompositeExtract 129 1 Branch 136
141: 8(s1) CompositeExtract 130 1 136: Label
142: 6(int) CompositeExtract 140 0 140: 11 Load 13(a)
143: 6(int) CompositeExtract 141 0 141: 11 Load 37(b)
144: 61(bool) IEqual 142 143 142: 8(s1) CompositeExtract 140 0
145: 7(float) CompositeExtract 140 1 143: 8(s1) CompositeExtract 141 0
146: 7(float) CompositeExtract 141 1 144: 6(int) CompositeExtract 142 0
147: 61(bool) FOrdEqual 145 146 145: 6(int) CompositeExtract 143 0
148: 61(bool) LogicalAnd 144 147 146: 72(bool) IEqual 144 145
149: 61(bool) LogicalAnd 139 148 147: 7(float) CompositeExtract 142 1
150: 8(s1) CompositeExtract 129 2 148: 7(float) CompositeExtract 143 1
151: 8(s1) CompositeExtract 130 2 149: 72(bool) FOrdEqual 147 148
152: 6(int) CompositeExtract 150 0 150: 72(bool) LogicalAnd 146 149
151: 8(s1) CompositeExtract 140 1
152: 8(s1) CompositeExtract 141 1
153: 6(int) CompositeExtract 151 0 153: 6(int) CompositeExtract 151 0
154: 61(bool) IEqual 152 153 154: 6(int) CompositeExtract 152 0
155: 7(float) CompositeExtract 150 1 155: 72(bool) IEqual 153 154
156: 7(float) CompositeExtract 151 1 156: 7(float) CompositeExtract 151 1
157: 61(bool) FOrdEqual 155 156 157: 7(float) CompositeExtract 152 1
158: 61(bool) LogicalAnd 154 157 158: 72(bool) FOrdEqual 156 157
159: 61(bool) LogicalAnd 149 158 159: 72(bool) LogicalAnd 155 158
160: 8(s1) CompositeExtract 129 3 160: 72(bool) LogicalAnd 150 159
161: 8(s1) CompositeExtract 130 3 161: 8(s1) CompositeExtract 140 2
162: 6(int) CompositeExtract 160 0 162: 8(s1) CompositeExtract 141 2
163: 6(int) CompositeExtract 161 0 163: 6(int) CompositeExtract 161 0
164: 61(bool) IEqual 162 163 164: 6(int) CompositeExtract 162 0
165: 7(float) CompositeExtract 160 1 165: 72(bool) IEqual 163 164
166: 7(float) CompositeExtract 161 1 166: 7(float) CompositeExtract 161 1
167: 61(bool) FOrdEqual 165 166 167: 7(float) CompositeExtract 162 1
168: 61(bool) LogicalAnd 164 167 168: 72(bool) FOrdEqual 166 167
169: 61(bool) LogicalAnd 159 168 169: 72(bool) LogicalAnd 165 168
170: 8(s1) CompositeExtract 129 4 170: 72(bool) LogicalAnd 160 169
171: 8(s1) CompositeExtract 130 4 SelectionMerge 172 None
172: 6(int) CompositeExtract 170 0 BranchConditional 170 171 172
173: 6(int) CompositeExtract 171 0 171: Label
174: 61(bool) IEqual 172 173 174: 14(fvec4) Load 93(v)
175: 7(float) CompositeExtract 170 1 175: 14(fvec4) VectorTimesScalar 174 173
176: 7(float) CompositeExtract 171 1 Store 93(v) 175
177: 61(bool) FOrdEqual 175 176 Branch 172
178: 61(bool) LogicalAnd 174 177 172: Label
179: 61(bool) LogicalAnd 169 178 176: 11 Load 13(a)
180: 8(s1) CompositeExtract 129 5 177: 11 Load 37(b)
181: 8(s1) CompositeExtract 130 5 178: 8(s1) CompositeExtract 176 0
182: 6(int) CompositeExtract 180 0 179: 8(s1) CompositeExtract 177 0
183: 6(int) CompositeExtract 181 0 180: 6(int) CompositeExtract 178 0
184: 61(bool) IEqual 182 183 181: 6(int) CompositeExtract 179 0
185: 7(float) CompositeExtract 180 1 182: 72(bool) INotEqual 180 181
186: 7(float) CompositeExtract 181 1 183: 7(float) CompositeExtract 178 1
187: 61(bool) FOrdEqual 185 186 184: 7(float) CompositeExtract 179 1
188: 61(bool) LogicalAnd 184 187 185: 72(bool) FOrdNotEqual 183 184
189: 61(bool) LogicalAnd 179 188 186: 72(bool) LogicalOr 182 185
190: 8(s1) CompositeExtract 129 6 187: 8(s1) CompositeExtract 176 1
191: 8(s1) CompositeExtract 130 6 188: 8(s1) CompositeExtract 177 1
192: 6(int) CompositeExtract 190 0 189: 6(int) CompositeExtract 187 0
193: 6(int) CompositeExtract 191 0 190: 6(int) CompositeExtract 188 0
194: 61(bool) IEqual 192 193 191: 72(bool) INotEqual 189 190
195: 7(float) CompositeExtract 190 1 192: 7(float) CompositeExtract 187 1
196: 7(float) CompositeExtract 191 1 193: 7(float) CompositeExtract 188 1
197: 61(bool) FOrdEqual 195 196 194: 72(bool) FOrdNotEqual 192 193
198: 61(bool) LogicalAnd 194 197 195: 72(bool) LogicalOr 191 194
199: 61(bool) LogicalAnd 189 198 196: 72(bool) LogicalOr 186 195
200: 8(s1) CompositeExtract 129 7 197: 8(s1) CompositeExtract 176 2
201: 8(s1) CompositeExtract 130 7 198: 8(s1) CompositeExtract 177 2
202: 6(int) CompositeExtract 200 0 199: 6(int) CompositeExtract 197 0
203: 6(int) CompositeExtract 201 0 200: 6(int) CompositeExtract 198 0
204: 61(bool) IEqual 202 203 201: 72(bool) INotEqual 199 200
205: 7(float) CompositeExtract 200 1 202: 7(float) CompositeExtract 197 1
206: 7(float) CompositeExtract 201 1 203: 7(float) CompositeExtract 198 1
207: 61(bool) FOrdEqual 205 206 204: 72(bool) FOrdNotEqual 202 203
208: 61(bool) LogicalAnd 204 207 205: 72(bool) LogicalOr 201 204
209: 61(bool) LogicalAnd 199 208 206: 72(bool) LogicalOr 196 205
210: 8(s1) CompositeExtract 129 8 SelectionMerge 208 None
211: 8(s1) CompositeExtract 130 8 BranchConditional 206 207 208
212: 6(int) CompositeExtract 210 0 207: Label
213: 6(int) CompositeExtract 211 0 210: 14(fvec4) Load 93(v)
214: 61(bool) IEqual 212 213 211: 14(fvec4) VectorTimesScalar 210 209
215: 7(float) CompositeExtract 210 1 Store 93(v) 211
216: 7(float) CompositeExtract 211 1 Branch 208
217: 61(bool) FOrdEqual 215 216 208: Label
218: 61(bool) LogicalAnd 214 217 214: 14(fvec4) Load 93(v)
219: 61(bool) LogicalAnd 209 218 Store 213(color) 214
220: 8(s1) CompositeExtract 129 9
221: 8(s1) CompositeExtract 130 9
222: 6(int) CompositeExtract 220 0
223: 6(int) CompositeExtract 221 0
224: 61(bool) IEqual 222 223
225: 7(float) CompositeExtract 220 1
226: 7(float) CompositeExtract 221 1
227: 61(bool) FOrdEqual 225 226
228: 61(bool) LogicalAnd 224 227
229: 61(bool) LogicalAnd 219 228
SelectionMerge 231 None
BranchConditional 229 230 231
230: Label
233: 14(fvec4) Load 82(v)
234: 14(fvec4) VectorTimesScalar 233 232
Store 82(v) 234
Branch 231
231: Label
235: 11 Load 13(a)
236: 11 Load 37(b)
237: 8(s1) CompositeExtract 235 0
238: 8(s1) CompositeExtract 236 0
239: 6(int) CompositeExtract 237 0
240: 6(int) CompositeExtract 238 0
241: 61(bool) INotEqual 239 240
242: 7(float) CompositeExtract 237 1
243: 7(float) CompositeExtract 238 1
244: 61(bool) FOrdNotEqual 242 243
245: 61(bool) LogicalOr 241 244
246: 8(s1) CompositeExtract 235 1
247: 8(s1) CompositeExtract 236 1
248: 6(int) CompositeExtract 246 0
249: 6(int) CompositeExtract 247 0
250: 61(bool) INotEqual 248 249
251: 7(float) CompositeExtract 246 1
252: 7(float) CompositeExtract 247 1
253: 61(bool) FOrdNotEqual 251 252
254: 61(bool) LogicalOr 250 253
255: 61(bool) LogicalOr 245 254
256: 8(s1) CompositeExtract 235 2
257: 8(s1) CompositeExtract 236 2
258: 6(int) CompositeExtract 256 0
259: 6(int) CompositeExtract 257 0
260: 61(bool) INotEqual 258 259
261: 7(float) CompositeExtract 256 1
262: 7(float) CompositeExtract 257 1
263: 61(bool) FOrdNotEqual 261 262
264: 61(bool) LogicalOr 260 263
265: 61(bool) LogicalOr 255 264
266: 8(s1) CompositeExtract 235 3
267: 8(s1) CompositeExtract 236 3
268: 6(int) CompositeExtract 266 0
269: 6(int) CompositeExtract 267 0
270: 61(bool) INotEqual 268 269
271: 7(float) CompositeExtract 266 1
272: 7(float) CompositeExtract 267 1
273: 61(bool) FOrdNotEqual 271 272
274: 61(bool) LogicalOr 270 273
275: 61(bool) LogicalOr 265 274
276: 8(s1) CompositeExtract 235 4
277: 8(s1) CompositeExtract 236 4
278: 6(int) CompositeExtract 276 0
279: 6(int) CompositeExtract 277 0
280: 61(bool) INotEqual 278 279
281: 7(float) CompositeExtract 276 1
282: 7(float) CompositeExtract 277 1
283: 61(bool) FOrdNotEqual 281 282
284: 61(bool) LogicalOr 280 283
285: 61(bool) LogicalOr 275 284
286: 8(s1) CompositeExtract 235 5
287: 8(s1) CompositeExtract 236 5
288: 6(int) CompositeExtract 286 0
289: 6(int) CompositeExtract 287 0
290: 61(bool) INotEqual 288 289
291: 7(float) CompositeExtract 286 1
292: 7(float) CompositeExtract 287 1
293: 61(bool) FOrdNotEqual 291 292
294: 61(bool) LogicalOr 290 293
295: 61(bool) LogicalOr 285 294
296: 8(s1) CompositeExtract 235 6
297: 8(s1) CompositeExtract 236 6
298: 6(int) CompositeExtract 296 0
299: 6(int) CompositeExtract 297 0
300: 61(bool) INotEqual 298 299
301: 7(float) CompositeExtract 296 1
302: 7(float) CompositeExtract 297 1
303: 61(bool) FOrdNotEqual 301 302
304: 61(bool) LogicalOr 300 303
305: 61(bool) LogicalOr 295 304
306: 8(s1) CompositeExtract 235 7
307: 8(s1) CompositeExtract 236 7
308: 6(int) CompositeExtract 306 0
309: 6(int) CompositeExtract 307 0
310: 61(bool) INotEqual 308 309
311: 7(float) CompositeExtract 306 1
312: 7(float) CompositeExtract 307 1
313: 61(bool) FOrdNotEqual 311 312
314: 61(bool) LogicalOr 310 313
315: 61(bool) LogicalOr 305 314
316: 8(s1) CompositeExtract 235 8
317: 8(s1) CompositeExtract 236 8
318: 6(int) CompositeExtract 316 0
319: 6(int) CompositeExtract 317 0
320: 61(bool) INotEqual 318 319
321: 7(float) CompositeExtract 316 1
322: 7(float) CompositeExtract 317 1
323: 61(bool) FOrdNotEqual 321 322
324: 61(bool) LogicalOr 320 323
325: 61(bool) LogicalOr 315 324
326: 8(s1) CompositeExtract 235 9
327: 8(s1) CompositeExtract 236 9
328: 6(int) CompositeExtract 326 0
329: 6(int) CompositeExtract 327 0
330: 61(bool) INotEqual 328 329
331: 7(float) CompositeExtract 326 1
332: 7(float) CompositeExtract 327 1
333: 61(bool) FOrdNotEqual 331 332
334: 61(bool) LogicalOr 330 333
335: 61(bool) LogicalOr 325 334
SelectionMerge 337 None
BranchConditional 335 336 337
336: Label
339: 14(fvec4) Load 82(v)
340: 14(fvec4) VectorTimesScalar 339 338
Store 82(v) 340
Branch 337
337: Label
350: 349(ptr) AccessChain 345(bi) 346
351: 342(s2) Load 350
352: 55(s2) Load 57(foo2a)
353: 6(int) CompositeExtract 351 0
354: 6(int) CompositeExtract 352 0
355: 61(bool) INotEqual 353 354
356: 7(float) CompositeExtract 351 1
357: 7(float) CompositeExtract 352 1
358: 61(bool) FOrdNotEqual 356 357
359: 61(bool) LogicalOr 355 358
360: 341(s1) CompositeExtract 351 2
361: 8(s1) CompositeExtract 352 2
362: 6(int) CompositeExtract 360 0
363: 6(int) CompositeExtract 361 0
364: 61(bool) INotEqual 362 363
365: 7(float) CompositeExtract 360 1
366: 7(float) CompositeExtract 361 1
367: 61(bool) FOrdNotEqual 365 366
368: 61(bool) LogicalOr 364 367
369: 61(bool) LogicalOr 359 368
SelectionMerge 371 None
BranchConditional 369 370 371
370: Label
373: 14(fvec4) Load 82(v)
374: 14(fvec4) VectorTimesScalar 373 372
Store 82(v) 374
Branch 371
371: Label
377: 14(fvec4) Load 82(v)
Store 376(color) 377
Return Return
FunctionEnd 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" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21 59 EntryPoint Fragment 4 "main" 21 59
ExecutionMode 4 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 110 Source GLSL 140
Name 4 "main" Name 4 "main"
Name 9 "white" Name 9 "white"
Name 12 "black" Name 12 "black"
@ -110,23 +110,4 @@ Linked fragment stage:
Branch 49 Branch 49
49: Label 49: Label
Kill 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 FunctionEnd

View file

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

View file

@ -1,132 +1,205 @@
spv.atomic.comp spv.atomic.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 310
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: Linked compute stage:
TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class? Shader version: 310
// Module Version 10000 Requested GL_ARB_gl_spirv
// Generated by (magic number): 80001 local_size = (1, 1, 1)
// Id's are bound by 74 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 Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 154 EntryPoint Fragment 4 "main" 14 26 37 48 89 98 107 116 122 130 139 148 154
ExecutionMode 4 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 450 Source GLSL 450
Name 4 "main" Name 4 "main"
Name 9 "idata" Name 9 "idata"
@ -32,6 +32,14 @@ Linked fragment stage:
Name 139 "u3" Name 139 "u3"
Name 148 "u4" Name 148 "u4"
Name 154 "fragColor" 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 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -40,22 +48,22 @@ Linked fragment stage:
10: 6(int) Constant 0 10: 6(int) Constant 0
11: 7(ivec4) ConstantComposite 10 10 10 10 11: 7(ivec4) ConstantComposite 10 10 10 10
12: TypeFloat 32 12: TypeFloat 32
13: TypePointer UniformConstant 12(float) 13: TypePointer Input 12(float)
14(f1): 13(ptr) Variable UniformConstant 14(f1): 13(ptr) Variable Input
17: TypeInt 32 0 17: TypeInt 32 0
18: 17(int) Constant 0 18: 17(int) Constant 0
19: TypePointer Function 6(int) 19: TypePointer Function 6(int)
24: TypeVector 12(float) 2 24: TypeVector 12(float) 2
25: TypePointer UniformConstant 24(fvec2) 25: TypePointer Input 24(fvec2)
26(f2): 25(ptr) Variable UniformConstant 26(f2): 25(ptr) Variable Input
28: TypeVector 6(int) 2 28: TypeVector 6(int) 2
35: TypeVector 12(float) 3 35: TypeVector 12(float) 3
36: TypePointer UniformConstant 35(fvec3) 36: TypePointer Input 35(fvec3)
37(f3): 36(ptr) Variable UniformConstant 37(f3): 36(ptr) Variable Input
39: TypeVector 6(int) 3 39: TypeVector 6(int) 3
46: TypeVector 12(float) 4 46: TypeVector 12(float) 4
47: TypePointer UniformConstant 46(fvec4) 47: TypePointer Input 46(fvec4)
48(f4): 47(ptr) Variable UniformConstant 48(f4): 47(ptr) Variable Input
53: TypeVector 17(int) 4 53: TypeVector 17(int) 4
54: TypePointer Function 53(ivec4) 54: TypePointer Function 53(ivec4)
56: 53(ivec4) ConstantComposite 18 18 18 18 56: 53(ivec4) ConstantComposite 18 18 18 18
@ -65,23 +73,23 @@ Linked fragment stage:
84: TypePointer Function 46(fvec4) 84: TypePointer Function 46(fvec4)
86: 12(float) Constant 0 86: 12(float) Constant 0
87: 46(fvec4) ConstantComposite 86 86 86 86 87: 46(fvec4) ConstantComposite 86 86 86 86
88: TypePointer UniformConstant 6(int) 88: TypePointer Input 6(int)
89(i1): 88(ptr) Variable UniformConstant 89(i1): 88(ptr) Variable Input
92: TypePointer Function 12(float) 92: TypePointer Function 12(float)
97: TypePointer UniformConstant 28(ivec2) 97: TypePointer Input 28(ivec2)
98(i2): 97(ptr) Variable UniformConstant 98(i2): 97(ptr) Variable Input
106: TypePointer UniformConstant 39(ivec3) 106: TypePointer Input 39(ivec3)
107(i3): 106(ptr) Variable UniformConstant 107(i3): 106(ptr) Variable Input
115: TypePointer UniformConstant 7(ivec4) 115: TypePointer Input 7(ivec4)
116(i4): 115(ptr) Variable UniformConstant 116(i4): 115(ptr) Variable Input
121: TypePointer UniformConstant 17(int) 121: TypePointer Input 17(int)
122(u1): 121(ptr) Variable UniformConstant 122(u1): 121(ptr) Variable Input
129: TypePointer UniformConstant 65(ivec2) 129: TypePointer Input 65(ivec2)
130(u2): 129(ptr) Variable UniformConstant 130(u2): 129(ptr) Variable Input
138: TypePointer UniformConstant 73(ivec3) 138: TypePointer Input 73(ivec3)
139(u3): 138(ptr) Variable UniformConstant 139(u3): 138(ptr) Variable Input
147: TypePointer UniformConstant 53(ivec4) 147: TypePointer Input 53(ivec4)
148(u4): 147(ptr) Variable UniformConstant 148(u4): 147(ptr) Variable Input
153: TypePointer Output 46(fvec4) 153: TypePointer Output 46(fvec4)
154(fragColor): 153(ptr) Variable Output 154(fragColor): 153(ptr) Variable Output
159: TypeBool 159: TypeBool

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -5,24 +5,24 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 41 // Id's are bound by 39
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 18 37 EntryPoint Fragment 4 "main" 11 14 17 19 25 30 35
ExecutionMode 4 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 120 Source GLSL 140
Name 4 "main" Name 4 "main"
Name 9 "color" Name 9 "color"
Name 11 "BaseColor" Name 11 "BaseColor"
Name 13 "color2" Name 13 "color2"
Name 15 "otherColor" Name 14 "otherColor"
Name 18 "c" Name 17 "c"
Name 21 "d" Name 19 "d"
Name 27 "bigColor" Name 25 "bigColor"
Name 32 "smallColor" Name 30 "smallColor"
Name 37 "gl_FragColor" Name 35 "gl_FragColor"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -30,46 +30,44 @@ Linked fragment stage:
8: TypePointer Function 7(fvec4) 8: TypePointer Function 7(fvec4)
10: TypePointer Input 7(fvec4) 10: TypePointer Input 7(fvec4)
11(BaseColor): 10(ptr) Variable Input 11(BaseColor): 10(ptr) Variable Input
14: TypePointer UniformConstant 7(fvec4) 14(otherColor): 10(ptr) Variable Input
15(otherColor): 14(ptr) Variable UniformConstant 16: TypePointer Input 6(float)
17: TypePointer Input 6(float) 17(c): 16(ptr) Variable Input
18(c): 17(ptr) Variable Input 19(d): 16(ptr) Variable Input
20: TypePointer UniformConstant 6(float) 21: TypeBool
21(d): 20(ptr) Variable UniformConstant 25(bigColor): 10(ptr) Variable Input
23: TypeBool 30(smallColor): 10(ptr) Variable Input
27(bigColor): 14(ptr) Variable UniformConstant 34: TypePointer Output 7(fvec4)
32(smallColor): 14(ptr) Variable UniformConstant 35(gl_FragColor): 34(ptr) Variable Output
36: TypePointer Output 7(fvec4)
37(gl_FragColor): 36(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(color): 8(ptr) Variable Function 9(color): 8(ptr) Variable Function
13(color2): 8(ptr) Variable Function 13(color2): 8(ptr) Variable Function
12: 7(fvec4) Load 11(BaseColor) 12: 7(fvec4) Load 11(BaseColor)
Store 9(color) 12 Store 9(color) 12
16: 7(fvec4) Load 15(otherColor) 15: 7(fvec4) Load 14(otherColor)
Store 13(color2) 16 Store 13(color2) 15
19: 6(float) Load 18(c) 18: 6(float) Load 17(c)
22: 6(float) Load 21(d) 20: 6(float) Load 19(d)
24: 23(bool) FOrdGreaterThan 19 22 22: 21(bool) FOrdGreaterThan 18 20
SelectionMerge 26 None SelectionMerge 24 None
BranchConditional 24 25 31 BranchConditional 22 23 29
25: Label 23: Label
28: 7(fvec4) Load 27(bigColor) 26: 7(fvec4) Load 25(bigColor)
29: 7(fvec4) Load 9(color) 27: 7(fvec4) Load 9(color)
30: 7(fvec4) FAdd 29 28 28: 7(fvec4) FAdd 27 26
Store 9(color) 30 Store 9(color) 28
Branch 26 Branch 24
31: Label 29: Label
33: 7(fvec4) Load 32(smallColor) 31: 7(fvec4) Load 30(smallColor)
34: 7(fvec4) Load 9(color) 32: 7(fvec4) Load 9(color)
35: 7(fvec4) FAdd 34 33 33: 7(fvec4) FAdd 32 31
Store 9(color) 35 Store 9(color) 33
Branch 26 Branch 24
26: Label 24: Label
38: 7(fvec4) Load 9(color) 36: 7(fvec4) Load 9(color)
39: 7(fvec4) Load 13(color2) 37: 7(fvec4) Load 13(color2)
40: 7(fvec4) FMul 38 39 38: 7(fvec4) FMul 36 37
Store 37(gl_FragColor) 40 Store 35(gl_FragColor) 38
Return Return
FunctionEnd 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 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: Linked vertex stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 48 // Id's are bound by 45
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 46 47 EntryPoint Vertex 4 "main"
Source ESSL 300 Source ESSL 310
Name 4 "main" Name 4 "main"
Name 8 "i" Name 8 "i"
Name 17 "A" Name 19 "A"
Name 25 "B" Name 27 "B"
Name 29 "C" Name 29 "C"
Name 36 "D" Name 36 "D"
Name 38 "E" Name 38 "E"
Name 39 "F" Name 39 "F"
Name 43 "G" 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 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
7: TypePointer Function 6(int) 7: TypePointer Function 6(int)
9: 6(int) Constant 0 9: 6(int) Constant 0
14: 6(int) Constant 10 16: 6(int) Constant 10
15: TypeBool 17: TypeBool
18: 6(int) Constant 1 20: 6(int) Constant 1
20: 6(int) Constant 2 22: 6(int) Constant 2
31: 6(int) Constant 3 31: 6(int) Constant 3
40: 6(int) Constant 12 40: 6(int) Constant 12
44: 6(int) Constant 99 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 4(main): 2 Function None 3
5: Label 5: Label
8(i): 7(ptr) Variable Function 8(i): 7(ptr) Variable Function
17(A): 7(ptr) Variable Function 19(A): 7(ptr) Variable Function
25(B): 7(ptr) Variable Function 27(B): 7(ptr) Variable Function
29(C): 7(ptr) Variable Function 29(C): 7(ptr) Variable Function
36(D): 7(ptr) Variable Function 36(D): 7(ptr) Variable Function
38(E): 7(ptr) Variable Function 38(E): 7(ptr) Variable Function
@ -53,45 +48,40 @@ Linked vertex stage:
Store 8(i) 9 Store 8(i) 9
Branch 10 Branch 10
10: Label 10: Label
13: 6(int) Load 8(i) LoopMerge 12 13 None
16: 15(bool) SLessThan 13 14 Branch 14
LoopMerge 11 10 None 14: Label
BranchConditional 16 12 11 15: 6(int) Load 8(i)
12: Label 18: 17(bool) SLessThan 15 16
Store 17(A) 18 BranchConditional 18 11 12
19: 6(int) Load 8(i) 11: Label
21: 6(int) SMod 19 20 Store 19(A) 20
22: 15(bool) IEqual 21 9 21: 6(int) Load 8(i)
SelectionMerge 24 None 23: 6(int) SMod 21 22
BranchConditional 22 23 24 24: 17(bool) IEqual 23 9
23: Label SelectionMerge 26 None
Store 25(B) 18 BranchConditional 24 25 26
26: 6(int) Load 8(i) 25: Label
27: 6(int) IAdd 26 18 Store 27(B) 20
Store 8(i) 27 Branch 13
Branch 10 26: Label
28: Label
Store 29(C) 18
Branch 24
24: Label
30: 6(int) Load 8(i) 30: 6(int) Load 8(i)
32: 6(int) SMod 30 31 32: 6(int) SMod 30 31
33: 15(bool) IEqual 32 9 33: 17(bool) IEqual 32 9
SelectionMerge 35 None SelectionMerge 35 None
BranchConditional 33 34 35 BranchConditional 33 34 35
34: Label 34: Label
Store 36(D) 18 Store 36(D) 20
Branch 11 Branch 12
37: Label
Store 38(E) 18
Branch 35
35: Label 35: Label
Store 39(F) 40 Store 39(F) 40
Branch 13
13: Label
41: 6(int) Load 8(i) 41: 6(int) Load 8(i)
42: 6(int) IAdd 41 18 42: 6(int) IAdd 41 20
Store 8(i) 42 Store 8(i) 42
Branch 10 Branch 10
11: Label 12: Label
Store 43(G) 44 Store 43(G) 44
Return Return
FunctionEnd 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 spv.for-simple.vert
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Linked vertex stage: Linked vertex stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 25 // Id's are bound by 24
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 23 24 EntryPoint Vertex 4 "main"
Source ESSL 300 Source ESSL 310
Name 4 "main" Name 4 "main"
Name 8 "i" Name 8 "i"
Name 17 "j" Name 19 "j"
Name 23 "gl_VertexID"
Name 24 "gl_InstanceID"
Decorate 23(gl_VertexID) BuiltIn VertexId
Decorate 24(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
7: TypePointer Function 6(int) 7: TypePointer Function 6(int)
9: 6(int) Constant 0 9: 6(int) Constant 0
14: 6(int) Constant 10 16: 6(int) Constant 10
15: TypeBool 17: TypeBool
18: 6(int) Constant 12 20: 6(int) Constant 12
20: 6(int) Constant 1 22: 6(int) Constant 1
22: TypePointer Input 6(int)
23(gl_VertexID): 22(ptr) Variable Input
24(gl_InstanceID): 22(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(i): 7(ptr) Variable Function 8(i): 7(ptr) Variable Function
17(j): 7(ptr) Variable Function 19(j): 7(ptr) Variable Function
Store 8(i) 9 Store 8(i) 9
Branch 10 Branch 10
10: Label 10: Label
13: 6(int) Load 8(i) LoopMerge 12 13 None
16: 15(bool) SLessThan 13 14 Branch 14
LoopMerge 11 10 None 14: Label
BranchConditional 16 12 11 15: 6(int) Load 8(i)
12: Label 18: 17(bool) SLessThan 15 16
Store 17(j) 18 BranchConditional 18 11 12
19: 6(int) Load 8(i) 11: Label
21: 6(int) IAdd 19 20 Store 19(j) 20
Store 8(i) 21 Branch 13
13: Label
21: 6(int) Load 8(i)
23: 6(int) IAdd 21 22
Store 8(i) 23
Branch 10 Branch 10
11: Label 12: Label
Return Return
FunctionEnd FunctionEnd

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,12 +7,12 @@ Linked vertex stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 70 // Id's are bound by 67
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 63 66 68 69 EntryPoint Vertex 4 "main" 63 66
Source GLSL 450 Source GLSL 450
Name 4 "main" Name 4 "main"
Name 14 "S" Name 14 "S"
@ -92,8 +92,6 @@ Linked vertex stage:
MemberName 64(S) 1 "b" MemberName 64(S) 1 "b"
MemberName 64(S) 2 "c" MemberName 64(S) 2 "c"
Name 66 "soutinv" Name 66 "soutinv"
Name 68 "gl_VertexID"
Name 69 "gl_InstanceID"
Decorate 13 ArrayStride 32 Decorate 13 ArrayStride 32
MemberDecorate 14(S) 0 Offset 0 MemberDecorate 14(S) 0 Offset 0
MemberDecorate 14(S) 1 ColMajor MemberDecorate 14(S) 1 ColMajor
@ -175,8 +173,6 @@ Linked vertex stage:
MemberDecorate 64(S) 1 Invariant MemberDecorate 64(S) 1 Invariant
MemberDecorate 64(S) 2 Invariant MemberDecorate 64(S) 2 Invariant
Decorate 66(soutinv) Invariant Decorate 66(soutinv) Invariant
Decorate 68(gl_VertexID) BuiltIn VertexId
Decorate 69(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -240,9 +236,6 @@ Linked vertex stage:
64(S): TypeStruct 8(ivec3) 13 7(int) 64(S): TypeStruct 8(ivec3) 13 7(int)
65: TypePointer Output 64(S) 65: TypePointer Output 64(S)
66(soutinv): 65(ptr) Variable Output 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 4(main): 2 Function None 3
5: Label 5: Label
Return Return

View file

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

View file

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

File diff suppressed because it is too large Load diff

View file

@ -1,70 +1,40 @@
spv.loopsArtificial.frag spv.loopsArtificial.frag
WARNING: 0:14: varying deprecated in version 130; may be removed in future release
Linked fragment stage: Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 191 // Id's are bound by 158
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 144 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 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 130 Source GLSL 140
Name 4 "main" Name 4 "main"
Name 9 "color" Name 9 "color"
Name 11 "BaseColor" Name 11 "BaseColor"
Name 17 "bigColor4"
Name 27 "d4" Name 27 "d4"
Name 32 "bigColor4" Name 80 "d13"
Name 84 "d13" Name 140 "gl_FragColor"
Name 144 "gl_FragColor" Name 142 "bigColor"
Name 146 "bigColor" Name 143 "bigColor1_1"
Name 147 "bigColor1_1" Name 144 "bigColor1_2"
Name 148 "bigColor1_2" Name 145 "bigColor1_3"
Name 149 "bigColor1_3" Name 146 "bigColor2"
Name 150 "bigColor2" Name 147 "bigColor3"
Name 151 "bigColor3" Name 148 "bigColor5"
Name 152 "bigColor5" Name 149 "bigColor6"
Name 153 "bigColor6" Name 150 "bigColor7"
Name 154 "bigColor7" Name 151 "bigColor8"
Name 155 "bigColor8" Name 152 "d"
Name 156 "d" Name 153 "d2"
Name 157 "d2" Name 154 "d3"
Name 158 "d3" Name 157 "Count"
Name 159 "d5" Decorate 157(Count) Flat
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"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -72,69 +42,37 @@ Linked fragment stage:
8: TypePointer Function 7(fvec4) 8: TypePointer Function 7(fvec4)
10: TypePointer Input 7(fvec4) 10: TypePointer Input 7(fvec4)
11(BaseColor): 10(ptr) Variable Input 11(BaseColor): 10(ptr) Variable Input
17: TypeBool 17(bigColor4): 10(ptr) Variable Input
18: 17(bool) ConstantTrue
21: TypeInt 32 0 21: TypeInt 32 0
22: 21(int) Constant 2 22: 21(int) Constant 0
23: TypePointer Function 6(float) 23: TypePointer Function 6(float)
26: TypePointer UniformConstant 6(float) 26: TypePointer Input 6(float)
27(d4): 26(ptr) Variable UniformConstant 27(d4): 26(ptr) Variable Input
31: TypePointer UniformConstant 7(fvec4) 29: TypeBool
32(bigColor4): 31(ptr) Variable UniformConstant 33: 6(float) Constant 1073741824
36: 21(int) Constant 0 34: 21(int) Constant 2
43: 6(float) Constant 1073741824 47: 6(float) Constant 1065353216
56: 6(float) Constant 1065353216 50: 21(int) Constant 1
58: 17(bool) ConstantFalse 77: 21(int) Constant 3
60: 21(int) Constant 1 80(d13): 26(ptr) Variable Input
81: 21(int) Constant 3 139: TypePointer Output 7(fvec4)
84(d13): 26(ptr) Variable UniformConstant 140(gl_FragColor): 139(ptr) Variable Output
143: TypePointer Output 7(fvec4) 142(bigColor): 10(ptr) Variable Input
144(gl_FragColor): 143(ptr) Variable Output 143(bigColor1_1): 10(ptr) Variable Input
146(bigColor): 31(ptr) Variable UniformConstant 144(bigColor1_2): 10(ptr) Variable Input
147(bigColor1_1): 31(ptr) Variable UniformConstant 145(bigColor1_3): 10(ptr) Variable Input
148(bigColor1_2): 31(ptr) Variable UniformConstant 146(bigColor2): 10(ptr) Variable Input
149(bigColor1_3): 31(ptr) Variable UniformConstant 147(bigColor3): 10(ptr) Variable Input
150(bigColor2): 31(ptr) Variable UniformConstant 148(bigColor5): 10(ptr) Variable Input
151(bigColor3): 31(ptr) Variable UniformConstant 149(bigColor6): 10(ptr) Variable Input
152(bigColor5): 31(ptr) Variable UniformConstant 150(bigColor7): 10(ptr) Variable Input
153(bigColor6): 31(ptr) Variable UniformConstant 151(bigColor8): 10(ptr) Variable Input
154(bigColor7): 31(ptr) Variable UniformConstant 152(d): 26(ptr) Variable Input
155(bigColor8): 31(ptr) Variable UniformConstant 153(d2): 26(ptr) Variable Input
156(d): 26(ptr) Variable UniformConstant 154(d3): 26(ptr) Variable Input
157(d2): 26(ptr) Variable UniformConstant 155: TypeInt 32 1
158(d3): 26(ptr) Variable UniformConstant 156: TypePointer Input 155(int)
159(d5): 26(ptr) Variable UniformConstant 157(Count): 156(ptr) Variable Input
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
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(color): 8(ptr) Variable Function 9(color): 8(ptr) Variable Function
@ -142,167 +80,164 @@ Linked fragment stage:
Store 9(color) 12 Store 9(color) 12
Branch 13 Branch 13
13: Label 13: Label
16: 17(bool) Phi 18 5 58 52 58 66 LoopMerge 15 16 None
LoopMerge 14 13 None Branch 14
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
14: Label 14: Label
Branch 78 18: 7(fvec4) Load 17(bigColor4)
78: Label 19: 7(fvec4) Load 9(color)
82: 23(ptr) AccessChain 9(color) 81 20: 7(fvec4) FAdd 19 18
83: 6(float) Load 82 Store 9(color) 20
85: 6(float) Load 84(d13) 24: 23(ptr) AccessChain 9(color) 22
86: 17(bool) FOrdLessThan 83 85 25: 6(float) Load 24
LoopMerge 79 78 None 28: 6(float) Load 27(d4)
BranchConditional 86 80 79 30: 29(bool) FOrdLessThan 25 28
80: Label SelectionMerge 32 None
87: 23(ptr) AccessChain 9(color) 22 BranchConditional 30 31 32
88: 6(float) Load 87 31: Label
89: 6(float) Load 84(d13) 35: 23(ptr) AccessChain 9(color) 34
90: 17(bool) FOrdLessThan 88 89 36: 6(float) Load 35
SelectionMerge 92 None 37: 6(float) FAdd 36 33
BranchConditional 90 91 96 38: 23(ptr) AccessChain 9(color) 34
91: Label 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) 93: 7(fvec4) Load 9(color)
94: 7(fvec4) CompositeConstruct 56 56 56 56 94: 7(fvec4) CompositeConstruct 47 47 47 47
95: 7(fvec4) FAdd 93 94 95: 7(fvec4) FSub 93 94
Store 9(color) 95 Store 9(color) 95
Branch 92 Branch 88
96: Label 88: Label
97: 7(fvec4) Load 9(color) 96: 7(fvec4) Load 17(bigColor4)
98: 7(fvec4) CompositeConstruct 56 56 56 56 97: 7(fvec4) Load 9(color)
99: 7(fvec4) FSub 97 98 98: 7(fvec4) FAdd 97 96
Store 9(color) 99 Store 9(color) 98
Branch 92 99: 23(ptr) AccessChain 9(color) 22
92: Label 100: 6(float) Load 99
100: 7(fvec4) Load 32(bigColor4) 101: 6(float) Load 27(d4)
101: 7(fvec4) Load 9(color) 102: 29(bool) FOrdLessThan 100 101
102: 7(fvec4) FAdd 101 100 SelectionMerge 104 None
Store 9(color) 102 BranchConditional 102 103 104
103: 23(ptr) AccessChain 9(color) 36 103: Label
104: 6(float) Load 103 105: 23(ptr) AccessChain 9(color) 34
105: 6(float) Load 27(d4) 106: 6(float) Load 105
106: 17(bool) FOrdLessThan 104 105 107: 6(float) FAdd 106 33
SelectionMerge 108 None 108: 23(ptr) AccessChain 9(color) 34
BranchConditional 106 107 108 Store 108 107
107: Label 109: 23(ptr) AccessChain 9(color) 34
109: 23(ptr) AccessChain 9(color) 22
110: 6(float) Load 109 110: 6(float) Load 109
111: 6(float) FAdd 110 43 111: 6(float) Load 27(d4)
112: 23(ptr) AccessChain 9(color) 22 112: 29(bool) FOrdLessThan 110 111
Store 112 111 SelectionMerge 114 None
113: 23(ptr) AccessChain 9(color) 22 BranchConditional 112 113 114
114: 6(float) Load 113 113: Label
115: 6(float) Load 27(d4) 115: 23(ptr) AccessChain 9(color) 22
116: 17(bool) FOrdLessThan 114 115 116: 6(float) Load 115
SelectionMerge 118 None 117: 6(float) FAdd 116 47
BranchConditional 116 117 118 Store 115 117
117: Label Branch 75
119: 23(ptr) AccessChain 9(color) 36 114: Label
120: 6(float) Load 119 Branch 104
121: 6(float) FAdd 120 56 104: Label
Store 119 121 119: 23(ptr) AccessChain 9(color) 50
Branch 78 120: 6(float) Load 119
118: Label 121: 6(float) Load 27(d4)
Branch 108 122: 29(bool) FOrdLessThan 120 121
108: Label SelectionMerge 124 None
123: 23(ptr) AccessChain 9(color) 60 BranchConditional 122 123 130
124: 6(float) Load 123 123: Label
125: 6(float) Load 27(d4) 125: 6(float) Load 27(d4)
126: 17(bool) FOrdLessThan 124 125 126: 23(ptr) AccessChain 9(color) 50
SelectionMerge 128 None 127: 6(float) Load 126
BranchConditional 126 127 134 128: 6(float) FAdd 127 125
127: Label 129: 23(ptr) AccessChain 9(color) 50
129: 6(float) Load 27(d4) Store 129 128
130: 23(ptr) AccessChain 9(color) 60 Branch 124
131: 6(float) Load 130 130: Label
132: 6(float) FAdd 131 129 131: 6(float) Load 27(d4)
133: 23(ptr) AccessChain 9(color) 60 132: 23(ptr) AccessChain 9(color) 22
Store 133 132 133: 6(float) Load 132
Branch 128 134: 6(float) FAdd 133 131
134: Label 135: 23(ptr) AccessChain 9(color) 22
135: 6(float) Load 27(d4) Store 135 134
136: 23(ptr) AccessChain 9(color) 36 Branch 124
137: 6(float) Load 136 124: Label
138: 6(float) FAdd 137 135 Branch 75
139: 23(ptr) AccessChain 9(color) 36 75: Label
Store 139 138 Branch 72
Branch 128 74: Label
128: Label 136: 7(fvec4) Load 9(color)
Branch 78 137: 7(fvec4) CompositeConstruct 47 47 47 47
79: Label 138: 7(fvec4) FAdd 136 137
140: 7(fvec4) Load 9(color) Store 9(color) 138
141: 7(fvec4) CompositeConstruct 56 56 56 56 141: 7(fvec4) Load 9(color)
142: 7(fvec4) FAdd 140 141 Store 140(gl_FragColor) 141
Store 9(color) 142
145: 7(fvec4) Load 9(color)
Store 144(gl_FragColor) 145
Return Return
FunctionEnd FunctionEnd

View file

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

View file

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

View file

@ -5,13 +5,13 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 213 // Id's are bound by 221
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 16 37 38 65 87 139 150 173 210 211 212 EntryPoint Fragment 4 "main" 12 16 37 38 65 87 147 158 181 218 219 220
ExecutionMode 4 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 150 Source GLSL 150
Name 4 "main" Name 4 "main"
Name 10 "m34" Name 10 "m34"
@ -22,15 +22,15 @@ Linked fragment stage:
Name 63 "m44" Name 63 "m44"
Name 65 "un34" Name 65 "un34"
Name 87 "um43" Name 87 "um43"
Name 139 "um4" Name 147 "um4"
Name 148 "inv" Name 156 "inv"
Name 150 "um2" Name 158 "um2"
Name 171 "inv3" Name 179 "inv3"
Name 173 "um3" Name 181 "um3"
Name 182 "inv4" Name 190 "inv4"
Name 210 "colorTransform" Name 218 "colorTransform"
Name 211 "m" Name 219 "m"
Name 212 "n" Name 220 "n"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -62,35 +62,35 @@ Linked fragment stage:
85: TypeMatrix 14(fvec3) 4 85: TypeMatrix 14(fvec3) 4
86: TypePointer Input 85 86: TypePointer Input 85
87(um43): 86(ptr) Variable Input 87(um43): 86(ptr) Variable Input
138: TypePointer Input 61 146: TypePointer Input 61
139(um4): 138(ptr) Variable Input 147(um4): 146(ptr) Variable Input
145: TypeVector 6(float) 2 153: TypeVector 6(float) 2
146: TypeMatrix 145(fvec2) 2 154: TypeMatrix 153(fvec2) 2
147: TypePointer Function 146 155: TypePointer Function 154
149: TypePointer Input 146 157: TypePointer Input 154
150(um2): 149(ptr) Variable Input 158(um2): 157(ptr) Variable Input
153: TypeInt 32 1 161: TypeInt 32 1
154: 153(int) Constant 0 162: 161(int) Constant 0
155: TypePointer Function 6(float) 163: TypePointer Function 6(float)
158: 153(int) Constant 1 166: 161(int) Constant 1
161: 54(int) Constant 1 169: 54(int) Constant 1
169: TypeMatrix 14(fvec3) 3 177: TypeMatrix 14(fvec3) 3
170: TypePointer Function 169 178: TypePointer Function 177
172: TypePointer Input 169 180: TypePointer Input 177
173(um3): 172(ptr) Variable Input 181(um3): 180(ptr) Variable Input
176: 153(int) Constant 2 184: 161(int) Constant 2
202: 54(int) Constant 3 210: 54(int) Constant 3
203: TypePointer Output 6(float) 211: TypePointer Output 6(float)
210(colorTransform): 172(ptr) Variable Input 218(colorTransform): 180(ptr) Variable Input
211(m): 138(ptr) Variable Input 219(m): 146(ptr) Variable Input
212(n): 138(ptr) Variable Input 220(n): 146(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(m34): 9(ptr) Variable Function 10(m34): 9(ptr) Variable Function
63(m44): 62(ptr) Variable Function 63(m44): 62(ptr) Variable Function
148(inv): 147(ptr) Variable Function 156(inv): 155(ptr) Variable Function
171(inv3): 170(ptr) Variable Function 179(inv3): 178(ptr) Variable Function
182(inv4): 62(ptr) Variable Function 190(inv4): 62(ptr) Variable Function
13: 7(fvec4) Load 12(v) 13: 7(fvec4) Load 12(v)
17: 14(fvec3) Load 16(u) 17: 14(fvec3) Load 16(u)
18: 8 OuterProduct 13 17 18: 8 OuterProduct 13 17
@ -166,100 +166,108 @@ Linked fragment stage:
103: 61 CompositeConstruct 93 96 99 102 103: 61 CompositeConstruct 93 96 99 102
Store 63(m44) 103 Store 63(m44) 103
104: 61 Load 63(m44) 104: 61 Load 63(m44)
105: 61 FNegate 104 105: 7(fvec4) CompositeExtract 104 0
106: 7(fvec4) Load 12(v) 106: 7(fvec4) FNegate 105
107: 7(fvec4) MatrixTimesVector 105 106 107: 7(fvec4) CompositeExtract 104 1
108: 7(fvec4) Load 37(FragColor) 108: 7(fvec4) FNegate 107
109: 7(fvec4) FAdd 108 107 109: 7(fvec4) CompositeExtract 104 2
Store 37(FragColor) 109 110: 7(fvec4) FNegate 109
110: 61 Load 63(m44) 111: 7(fvec4) CompositeExtract 104 3
111: 61 Load 63(m44) 112: 7(fvec4) FNegate 111
112: 7(fvec4) CompositeExtract 110 0 113: 61 CompositeConstruct 106 108 110 112
113: 7(fvec4) CompositeExtract 111 0 114: 7(fvec4) Load 12(v)
114: 7(fvec4) FMul 112 113 115: 7(fvec4) MatrixTimesVector 113 114
115: 7(fvec4) CompositeExtract 110 1 116: 7(fvec4) Load 37(FragColor)
116: 7(fvec4) CompositeExtract 111 1 117: 7(fvec4) FAdd 116 115
117: 7(fvec4) FMul 115 116 Store 37(FragColor) 117
118: 7(fvec4) CompositeExtract 110 2 118: 61 Load 63(m44)
119: 7(fvec4) CompositeExtract 111 2 119: 61 Load 63(m44)
120: 7(fvec4) FMul 118 119 120: 7(fvec4) CompositeExtract 118 0
121: 7(fvec4) CompositeExtract 110 3 121: 7(fvec4) CompositeExtract 119 0
122: 7(fvec4) CompositeExtract 111 3 122: 7(fvec4) FMul 120 121
123: 7(fvec4) FMul 121 122 123: 7(fvec4) CompositeExtract 118 1
124: 61 CompositeConstruct 114 117 120 123 124: 7(fvec4) CompositeExtract 119 1
125: 7(fvec4) Load 37(FragColor) 125: 7(fvec4) FMul 123 124
126: 7(fvec4) VectorTimesMatrix 125 124 126: 7(fvec4) CompositeExtract 118 2
Store 37(FragColor) 126 127: 7(fvec4) CompositeExtract 119 2
127: 85 Load 87(um43) 128: 7(fvec4) FMul 126 127
128: 8 Transpose 127 129: 7(fvec4) CompositeExtract 118 3
Store 10(m34) 128 130: 7(fvec4) CompositeExtract 119 3
129: 7(fvec4) Load 37(FragColor) 131: 7(fvec4) FMul 129 130
130: 8 Load 10(m34) 132: 61 CompositeConstruct 122 125 128 131
131: 14(fvec3) VectorTimesMatrix 129 130 133: 7(fvec4) Load 37(FragColor)
132: 6(float) CompositeExtract 131 0 134: 7(fvec4) VectorTimesMatrix 133 132
133: 6(float) CompositeExtract 131 1 Store 37(FragColor) 134
134: 6(float) CompositeExtract 131 2 135: 85 Load 87(um43)
135: 7(fvec4) CompositeConstruct 132 133 134 40 136: 8 Transpose 135
136: 7(fvec4) Load 37(FragColor) Store 10(m34) 136
137: 7(fvec4) FMul 136 135 137: 7(fvec4) Load 37(FragColor)
Store 37(FragColor) 137 138: 8 Load 10(m34)
140: 61 Load 139(um4) 139: 14(fvec3) VectorTimesMatrix 137 138
141: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 140 140: 6(float) CompositeExtract 139 0
142: 7(fvec4) CompositeConstruct 141 141 141 141 141: 6(float) CompositeExtract 139 1
143: 7(fvec4) Load 37(FragColor) 142: 6(float) CompositeExtract 139 2
144: 7(fvec4) FMul 143 142 143: 7(fvec4) CompositeConstruct 140 141 142 40
Store 37(FragColor) 144 144: 7(fvec4) Load 37(FragColor)
151: 146 Load 150(um2) 145: 7(fvec4) FMul 144 143
152: 146 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 151 Store 37(FragColor) 145
Store 148(inv) 152 148: 61 Load 147(um4)
156: 155(ptr) AccessChain 148(inv) 154 55 149: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 148
157: 6(float) Load 156 150: 7(fvec4) CompositeConstruct 149 149 149 149
159: 155(ptr) AccessChain 148(inv) 158 55 151: 7(fvec4) Load 37(FragColor)
160: 6(float) Load 159 152: 7(fvec4) FMul 151 150
162: 155(ptr) AccessChain 148(inv) 154 161 Store 37(FragColor) 152
163: 6(float) Load 162 159: 154 Load 158(um2)
164: 155(ptr) AccessChain 148(inv) 158 161 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 165: 6(float) Load 164
166: 7(fvec4) CompositeConstruct 157 160 163 165 167: 163(ptr) AccessChain 156(inv) 166 55
167: 7(fvec4) Load 37(FragColor) 168: 6(float) Load 167
168: 7(fvec4) FMul 167 166 170: 163(ptr) AccessChain 156(inv) 162 169
Store 37(FragColor) 168 171: 6(float) Load 170
174: 169 Load 173(um3) 172: 163(ptr) AccessChain 156(inv) 166 169
175: 169 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 174 173: 6(float) Load 172
Store 171(inv3) 175 174: 7(fvec4) CompositeConstruct 165 168 171 173
177: 155(ptr) AccessChain 171(inv3) 176 161 175: 7(fvec4) Load 37(FragColor)
178: 6(float) Load 177 176: 7(fvec4) FMul 175 174
179: 7(fvec4) CompositeConstruct 178 178 178 178 Store 37(FragColor) 176
180: 7(fvec4) Load 37(FragColor) 182: 177 Load 181(um3)
181: 7(fvec4) FMul 180 179 183: 177 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 182
Store 37(FragColor) 181 Store 179(inv3) 183
183: 61 Load 139(um4) 185: 163(ptr) AccessChain 179(inv3) 184 169
184: 61 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 183 186: 6(float) Load 185
Store 182(inv4) 184 187: 7(fvec4) CompositeConstruct 186 186 186 186
185: 61 Load 182(inv4)
186: 7(fvec4) Load 37(FragColor)
187: 7(fvec4) VectorTimesMatrix 186 185
Store 37(FragColor) 187
188: 7(fvec4) Load 37(FragColor) 188: 7(fvec4) Load 37(FragColor)
189: 8 Load 65(un34) 189: 7(fvec4) FMul 188 187
190: 8 Load 65(un34) Store 37(FragColor) 189
191: 7(fvec4) CompositeExtract 189 0 191: 61 Load 147(um4)
192: 7(fvec4) CompositeExtract 190 0 192: 61 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 191
193: 7(fvec4) FMul 191 192 Store 190(inv4) 192
194: 7(fvec4) CompositeExtract 189 1 193: 61 Load 190(inv4)
195: 7(fvec4) CompositeExtract 190 1 194: 7(fvec4) Load 37(FragColor)
196: 7(fvec4) FMul 194 195 195: 7(fvec4) VectorTimesMatrix 194 193
197: 7(fvec4) CompositeExtract 189 2 Store 37(FragColor) 195
198: 7(fvec4) CompositeExtract 190 2 196: 7(fvec4) Load 37(FragColor)
199: 7(fvec4) FMul 197 198 197: 8 Load 65(un34)
200: 8 CompositeConstruct 193 196 199 198: 8 Load 65(un34)
201: 14(fvec3) VectorTimesMatrix 188 200 199: 7(fvec4) CompositeExtract 197 0
204: 203(ptr) AccessChain 37(FragColor) 202 200: 7(fvec4) CompositeExtract 198 0
205: 6(float) Load 204 201: 7(fvec4) FMul 199 200
206: 6(float) CompositeExtract 201 0 202: 7(fvec4) CompositeExtract 197 1
207: 6(float) CompositeExtract 201 1 203: 7(fvec4) CompositeExtract 198 1
208: 6(float) CompositeExtract 201 2 204: 7(fvec4) FMul 202 203
209: 7(fvec4) CompositeConstruct 206 207 208 205 205: 7(fvec4) CompositeExtract 197 2
Store 37(FragColor) 209 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 Return
FunctionEnd 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 // Id's are bound by 278
Capability Shader Capability Shader
Capability SampledRect
Capability SampledCubeArray
Capability ImageQuery
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 26 29 55 81 84 91 247 277 EntryPoint Fragment 4 "main" 17 26 29 55 81 84 91 247 277
ExecutionMode 4 OriginLowerLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 430 Source GLSL 430
Name 4 "main" Name 4 "main"
Name 9 "v" Name 9 "v"
@ -46,9 +49,27 @@ Linked fragment stage:
Name 271 "usCube" Name 271 "usCube"
Name 275 "us2DArray" Name 275 "us2DArray"
Name 277 "ic4D" 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 81(ic3D) Flat
Decorate 84(ic1D) Flat Decorate 84(ic1D) Flat
Decorate 91(ic2D) Flat Decorate 91(ic2D) Flat
Decorate 100(sr) DescriptorSet 0
Decorate 125(sCube) DescriptorSet 0
Decorate 136(s2DArrayShadow) DescriptorSet 0
Decorate 168(is2D) DescriptorSet 0
Decorate 203(is3D) DescriptorSet 0
Decorate 215(isCube) DescriptorSet 0
Decorate 227(is2DArray) DescriptorSet 0
Decorate 241(sCubeShadow) DescriptorSet 0
Decorate 259(is2Dms) DescriptorSet 0
Decorate 263(us2D) DescriptorSet 0
Decorate 267(us3D) DescriptorSet 0
Decorate 271(usCube) DescriptorSet 0
Decorate 275(us2DArray) DescriptorSet 0
Decorate 277(ic4D) Flat Decorate 277(ic4D) Flat
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2

View file

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

View file

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

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