Updated glslang.

This commit is contained in:
Бранимир Караџић 2019-11-04 20:03:31 -08:00
parent db5dbddf99
commit 15a4bcda82
678 changed files with 3060 additions and 2077 deletions

View File

@ -60,8 +60,10 @@ source_set("glslang_sources") {
sources = [
"OGLCompilersDLL/InitializeDll.cpp",
"OGLCompilersDLL/InitializeDll.h",
"SPIRV/GLSL.ext.AMD.h",
"SPIRV/GLSL.ext.EXT.h",
"SPIRV/GLSL.ext.KHR.h",
"SPIRV/GLSL.ext.NV.h",
"SPIRV/GLSL.std.450.h",
"SPIRV/GlslangToSpv.cpp",
"SPIRV/GlslangToSpv.h",

View File

@ -41,6 +41,7 @@ CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_G
option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
option(ENABLE_PCH "Enables Precompiled header" ON)
option(ENABLE_CTEST "Enables testing" ON)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE)
@ -67,8 +68,10 @@ macro(glslang_pch SRCS PCHCPP)
endmacro(glslang_pch)
project(glslang)
# make testing optional
include(CTest)
if(ENABLE_CTEST)
include(CTest)
endif()
if(ENABLE_HLSL)
add_definitions(-DENABLE_HLSL)
@ -183,7 +186,9 @@ add_subdirectory(SPIRV)
if(ENABLE_HLSL)
add_subdirectory(hlsl)
endif(ENABLE_HLSL)
add_subdirectory(gtests)
if(ENABLE_CTEST)
add_subdirectory(gtests)
endif()
if(BUILD_TESTING)
# glslang-testsuite runs a bash script on Windows.

9
3rdparty/glslang/SPIRV/GlslangToSpv.cpp vendored Normal file → Executable file
View File

@ -1630,11 +1630,11 @@ void TGlslangToSpvTraverser::finishSpv()
for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it)
entryPoint->addIdOperand(*it);
#ifndef GLSLANG_WEB
// Add capabilities, extensions, remove unneeded decorations, etc.,
// Add capabilities, extensions, remove unneeded decorations, etc.,
// based on the resulting SPIR-V.
// Note: WebGPU code generation must have the opportunity to aggressively
// prune unreachable merge blocks and continue targets.
builder.postProcess();
#endif
}
// Write the SPV into 'out'.
@ -8197,7 +8197,8 @@ int GetSpirvGeneratorVersion()
// return 5; // make OpArrayLength result type be an int with signedness of 0
// return 6; // revert version 5 change, which makes a different (new) kind of incorrect code,
// versions 4 and 6 each generate OpArrayLength as it has long been done
return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent
// return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent
return 8; // switch to new dead block eliminator; use OpUnreachable
}
// Write SPIR-V out to a binary file

View File

@ -61,17 +61,22 @@ namespace {
// Use by calling visit() on the root block.
class ReadableOrderTraverser {
public:
explicit ReadableOrderTraverser(std::function<void(Block*)> callback) : callback_(callback) {}
ReadableOrderTraverser(std::function<void(Block*, spv::ReachReason, 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
// being delayed. Invokes callback(block, why, header), then descends into its
// successors. Delays merge-block and continue-block processing until all
// the branches have been completed.
void visit(Block* block)
// the branches have been completed. If |block| is an unreachable merge block or
// an unreachable continue target, then |header| is the corresponding header block.
void visit(Block* block, spv::ReachReason why, Block* header)
{
assert(block);
if (why == spv::ReachViaControlFlow) {
reachableViaControlFlow_.insert(block);
}
if (visited_.count(block) || delayed_.count(block))
return;
callback_(block);
callback_(block, why, header);
visited_.insert(block);
Block* mergeBlock = nullptr;
Block* continueBlock = nullptr;
@ -87,27 +92,40 @@ public:
delayed_.insert(continueBlock);
}
}
const auto successors = block->getSuccessors();
for (auto it = successors.cbegin(); it != successors.cend(); ++it)
visit(*it);
if (why == spv::ReachViaControlFlow) {
const auto& successors = block->getSuccessors();
for (auto it = successors.cbegin(); it != successors.cend(); ++it)
visit(*it, why, nullptr);
}
if (continueBlock) {
const spv::ReachReason continueWhy =
(reachableViaControlFlow_.count(continueBlock) > 0)
? spv::ReachViaControlFlow
: spv::ReachDeadContinue;
delayed_.erase(continueBlock);
visit(continueBlock);
visit(continueBlock, continueWhy, block);
}
if (mergeBlock) {
const spv::ReachReason mergeWhy =
(reachableViaControlFlow_.count(mergeBlock) > 0)
? spv::ReachViaControlFlow
: spv::ReachDeadMerge;
delayed_.erase(mergeBlock);
visit(mergeBlock);
visit(mergeBlock, mergeWhy, block);
}
}
private:
std::function<void(Block*)> callback_;
std::function<void(Block*, spv::ReachReason, Block*)> callback_;
// Whether a block has already been visited or is being delayed.
std::unordered_set<Block *> visited_, delayed_;
// The set of blocks that actually are reached via control flow.
std::unordered_set<Block *> reachableViaControlFlow_;
};
}
void spv::inReadableOrder(Block* root, std::function<void(Block*)> callback)
void spv::inReadableOrder(Block* root, std::function<void(Block*, spv::ReachReason, Block*)> callback)
{
ReadableOrderTraverser(callback).visit(root);
ReadableOrderTraverser(callback).visit(root, spv::ReachViaControlFlow, nullptr);
}

View File

@ -683,14 +683,12 @@ public:
// based on the type of the base and the chain of dereferences.
Id accessChainGetInferredType();
// Add capabilities, extensions, remove unneeded decorations, etc.,
// Add capabilities, extensions, remove unneeded decorations, etc.,
// based on the resulting SPIR-V.
void postProcess();
// Hook to visit each instruction in a block in a function
void postProcess(Instruction&);
// Hook to visit each instruction in a reachable block in a function.
void postProcessReachable(const Instruction&);
// Hook to visit each non-32-bit sized float/int operation in a block.
void postProcessType(const Instruction&, spv::Id typeId);

View File

@ -39,6 +39,7 @@
#include <cassert>
#include <cstdlib>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
@ -319,16 +320,14 @@ void Builder::postProcess(Instruction& inst)
}
}
// Called for each instruction in a reachable block.
void Builder::postProcessReachable(const Instruction&)
{
// did have code here, but questionable to do so without deleting the instructions
}
// comment in header
void Builder::postProcess()
{
// reachableBlocks is the set of blockss reached via control flow, or which are
// unreachable continue targert or unreachable merge.
std::unordered_set<const Block*> reachableBlocks;
std::unordered_map<Block*, Block*> headerForUnreachableContinue;
std::unordered_set<Block*> unreachableMerges;
std::unordered_set<Id> unreachableDefinitions;
// Collect IDs defined in unreachable blocks. For each function, label the
// reachable blocks first. Then for each unreachable block, collect the
@ -336,16 +335,41 @@ void Builder::postProcess()
for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) {
Function* f = *fi;
Block* entry = f->getEntryBlock();
inReadableOrder(entry, [&reachableBlocks](const Block* b) { reachableBlocks.insert(b); });
inReadableOrder(entry,
[&reachableBlocks, &unreachableMerges, &headerForUnreachableContinue]
(Block* b, ReachReason why, Block* header) {
reachableBlocks.insert(b);
if (why == ReachDeadContinue) headerForUnreachableContinue[b] = header;
if (why == ReachDeadMerge) unreachableMerges.insert(b);
});
for (auto bi = f->getBlocks().cbegin(); bi != f->getBlocks().cend(); bi++) {
Block* b = *bi;
if (reachableBlocks.count(b) == 0) {
for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ii++)
if (unreachableMerges.count(b) != 0 || headerForUnreachableContinue.count(b) != 0) {
auto ii = b->getInstructions().cbegin();
++ii; // Keep potential decorations on the label.
for (; ii != b->getInstructions().cend(); ++ii)
unreachableDefinitions.insert(ii->get()->getResultId());
} else if (reachableBlocks.count(b) == 0) {
// The normal case for unreachable code. All definitions are considered dead.
for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ++ii)
unreachableDefinitions.insert(ii->get()->getResultId());
}
}
}
// Modify unreachable merge blocks and unreachable continue targets.
// Delete their contents.
for (auto mergeIter = unreachableMerges.begin(); mergeIter != unreachableMerges.end(); ++mergeIter) {
(*mergeIter)->rewriteAsCanonicalUnreachableMerge();
}
for (auto continueIter = headerForUnreachableContinue.begin();
continueIter != headerForUnreachableContinue.end();
++continueIter) {
Block* continue_target = continueIter->first;
Block* header = continueIter->second;
continue_target->rewriteAsCanonicalUnreachableContinue(header);
}
// Remove unneeded decorations, for unreachable instructions
decorations.erase(std::remove_if(decorations.begin(), decorations.end(),
[&unreachableDefinitions](std::unique_ptr<Instruction>& I) -> bool {
@ -374,13 +398,6 @@ void Builder::postProcess()
}
}
// process all reachable instructions...
for (auto bi = reachableBlocks.cbegin(); bi != reachableBlocks.cend(); ++bi) {
const Block* block = *bi;
const auto function = [this](const std::unique_ptr<Instruction>& inst) { postProcessReachable(*inst.get()); };
std::for_each(block->getInstructions().begin(), block->getInstructions().end(), function);
}
// process all block-contained instructions
for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) {
Function* f = *fi;

View File

@ -226,6 +226,36 @@ public:
return nullptr;
}
// Change this block into a canonical dead merge block. Delete instructions
// as necessary. A canonical dead merge block has only an OpLabel and an
// OpUnreachable.
void rewriteAsCanonicalUnreachableMerge() {
assert(localVariables.empty());
// Delete all instructions except for the label.
assert(instructions.size() > 0);
instructions.resize(1);
successors.clear();
Instruction* unreachable = new Instruction(OpUnreachable);
addInstruction(std::unique_ptr<Instruction>(unreachable));
}
// Change this block into a canonical dead continue target branching to the
// given header ID. Delete instructions as necessary. A canonical dead continue
// target has only an OpLabel and an unconditional branch back to the corresponding
// header.
void rewriteAsCanonicalUnreachableContinue(Block* header) {
assert(localVariables.empty());
// Delete all instructions except for the label.
assert(instructions.size() > 0);
instructions.resize(1);
successors.clear();
// Add OpBranch back to the header.
assert(header != nullptr);
Instruction* branch = new Instruction(OpBranch);
branch->addIdOperand(header->getId());
addInstruction(std::move(std::unique_ptr<Instruction>(branch)));
successors.push_back(header);
}
bool isTerminated() const
{
switch (instructions.back()->getOpCode()) {
@ -235,6 +265,7 @@ public:
case OpKill:
case OpReturn:
case OpReturnValue:
case OpUnreachable:
return true;
default:
return false;
@ -268,10 +299,24 @@ protected:
bool unreachable;
};
// The different reasons for reaching a block in the inReadableOrder traversal.
enum ReachReason {
// Reachable from the entry block via transfers of control, i.e. branches.
ReachViaControlFlow = 0,
// A continue target that is not reachable via control flow.
ReachDeadContinue,
// A merge block that is not reachable via control flow.
ReachDeadMerge
};
// 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);
// order. The callback arguments are:
// - the block,
// - the reason we reached the block,
// - if the reason was that block is an unreachable continue or unreachable merge block
// then the last parameter is the corresponding header block.
void inReadableOrder(Block* root, std::function<void(Block*, ReachReason, Block* header)> callback);
//
// SPIR-V IR Function.
@ -321,7 +366,7 @@ public:
parameterInstructions[p]->dump(out);
// Blocks
inReadableOrder(blocks[0], [&out](const Block* b) { b->dump(out); });
inReadableOrder(blocks[0], [&out](const Block* b, ReachReason, Block*) { b->dump(out); });
Instruction end(0, 0, OpFunctionEnd);
end.dump(out);
}

View File

@ -988,7 +988,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
// Set base bindings
shader->setShiftBinding(res, baseBinding[res][compUnit.stage]);
// Set bindings for particular resource sets
// TODO: use a range based for loop here, when available in all environments.
for (auto i = baseBindingForSet[res][compUnit.stage].begin();

View File

@ -1,6 +1,6 @@
hlsl.aliasOpaque.frag
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 87
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.flattenOpaque.frag
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 185
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.flattenOpaqueInit.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 134
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.flattenOpaqueInitMix.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 97
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.flattenSubset.frag
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 66
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.flattenSubset2.frag
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.partialFlattenLocal.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 158
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.partialFlattenMixed.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 36
Capability Shader

View File

@ -1,6 +1,6 @@
compoundsuffix.frag.hlsl
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader

View File

@ -2,7 +2,7 @@ glsl.entryPointRename.vert
ERROR: Source entry point must be "main"
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader

View File

@ -1,6 +1,6 @@
glsl.entryPointRename.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader

View File

@ -1,6 +1,6 @@
glspv.esversion.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 10
Capability Shader

View File

@ -2,7 +2,7 @@ glspv.version.frag
ERROR: #version: compilation for SPIR-V does not support the compatibility profile
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 6
Capability Shader

View File

@ -71,7 +71,7 @@ output primitive = line_strip
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 36
Capability Geometry

View File

@ -38,7 +38,7 @@ Shader version: 500
0:? '@entryPointOutput' ( out float PointSize)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 16
Capability Shader

View File

@ -143,7 +143,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 64
Capability Shader

View File

@ -160,7 +160,7 @@ gl_FragCoord origin is upper left
0:? 'm' ( global 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 57
Capability Shader

View File

@ -345,7 +345,7 @@ gl_FragCoord origin is upper left
0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 143
Capability Shader

View File

@ -290,7 +290,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 126
Capability Shader

View File

@ -163,7 +163,7 @@ gl_FragCoord origin is upper left
0:? 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f})
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 72
Capability Shader

View File

@ -134,7 +134,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 57
Capability Shader

View File

@ -132,7 +132,7 @@ gl_FragCoord origin is upper left
0:? 'a5' (layout( location=4) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 58
Capability Shader

View File

@ -82,7 +82,7 @@ local_size = (4, 6, 8)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 39
Capability Shader

View File

@ -50,7 +50,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader

View File

@ -95,7 +95,7 @@ gl_FragCoord origin is upper left
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 51
Capability Shader

View File

@ -56,7 +56,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 28
Capability Shader

View File

@ -64,7 +64,7 @@ local_size = (1, 1, 1)
0:? 'gti' ( in 3-component vector of int LocalInvocationID)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 38
Capability Shader

View File

@ -188,7 +188,7 @@ output primitive = line_strip
0:? 'OutputStream.something' (layout( location=1) out int)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 68
Capability Geometry

View File

@ -204,7 +204,7 @@ Shader version: 500
0:? '@entryPointOutput' ( out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 99
Capability Shader

View File

@ -147,7 +147,7 @@ gl_FragCoord origin is upper left
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 73
Capability Shader

View File

@ -358,7 +358,7 @@ using depth_any
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 148
Capability Shader

View File

@ -358,7 +358,7 @@ using depth_any
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 148
Capability Shader

View File

@ -70,7 +70,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 34
Capability Shader

View File

@ -250,7 +250,7 @@ Shader version: 500
0:? 'input.Norm' (layout( location=1) in 3-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 93
Capability Shader

View File

@ -146,7 +146,7 @@ Shader version: 500
0:? '@entryPointOutput' ( out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 58
Capability Shader

View File

@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 30
Capability Shader

View File

@ -98,7 +98,7 @@ gl_FragCoord origin is upper left
0:? 'cull' ( in 1-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader

View File

@ -550,7 +550,7 @@ output primitive = line_strip
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 118
Capability Geometry

View File

@ -108,7 +108,7 @@ Shader version: 500
0:? 'cull' ( out 1-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 46
Capability Shader

View File

@ -290,7 +290,7 @@ gl_FragCoord origin is upper left
0:? 'cull' ( in 4-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 84
Capability Shader

View File

@ -724,7 +724,7 @@ output primitive = line_strip
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 128
Capability Geometry

View File

@ -420,7 +420,7 @@ Shader version: 500
0:? 'cull' ( out 4-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 89
Capability Shader

View File

@ -98,7 +98,7 @@ gl_FragCoord origin is upper left
0:? 'cull' ( in 2-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader

View File

@ -630,7 +630,7 @@ output primitive = line_strip
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 127
Capability Geometry

View File

@ -136,7 +136,7 @@ Shader version: 500
0:? 'cull' ( out 2-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 51
Capability Shader

View File

@ -174,7 +174,7 @@ gl_FragCoord origin is upper left
0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 57
Capability Shader

View File

@ -612,7 +612,7 @@ output primitive = line_strip
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 130
Capability Geometry

View File

@ -270,7 +270,7 @@ Shader version: 500
0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 72
Capability Shader

View File

@ -232,7 +232,7 @@ gl_FragCoord origin is upper left
0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 62
Capability Shader

View File

@ -318,7 +318,7 @@ Shader version: 500
0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 73
Capability Shader

View File

@ -282,7 +282,7 @@ gl_FragCoord origin is upper left
0:? 'v.clip1' ( in 8-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 79
Capability Shader

View File

@ -428,7 +428,7 @@ Shader version: 500
0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 86
Capability Shader

View File

@ -270,7 +270,7 @@ gl_FragCoord origin is upper left
0:? 'v.clip1' ( in 8-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 78
Capability Shader

View File

@ -384,7 +384,7 @@ Shader version: 500
0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 81
Capability Shader

View File

@ -186,7 +186,7 @@ gl_FragCoord origin is upper left
0:? 'v.clip1' ( in 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 65
Capability Shader

View File

@ -240,7 +240,7 @@ Shader version: 500
0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 62
Capability Shader

View File

@ -144,7 +144,7 @@ gl_FragCoord origin is upper left
0:? 'clip0' ( in 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 68
Capability Shader

View File

@ -194,7 +194,7 @@ Shader version: 500
0:? 'clip0' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 67
Capability Shader

View File

@ -356,7 +356,7 @@ triangle order = cw
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 127
Capability Tessellation

View File

@ -262,7 +262,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 96
Capability Shader

View File

@ -522,7 +522,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 206
Capability Shader

View File

@ -133,7 +133,7 @@ gl_FragCoord origin is upper left
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 66
Capability Shader
@ -240,6 +240,5 @@ Validation failed
60: 7(fvec4) CompositeConstruct 59 59 59 59
ReturnValue 60
30: Label
62: 7(fvec4) Undef
ReturnValue 62
Unreachable
FunctionEnd

View File

@ -268,7 +268,7 @@ Shader version: 500
0:? '@entryPointOutput' ( out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 89
Capability Shader

View File

@ -104,7 +104,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader

View File

@ -545,7 +545,7 @@ gl_FragCoord origin is upper left
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 98
Capability Shader

View File

@ -119,7 +119,7 @@ gl_FragCoord origin is upper left
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 52
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.dashI.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.deadFunctionMissingBody.vert
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 18
Capability Shader

View File

@ -50,7 +50,7 @@ using depth_greater
0:? 'depth' ( out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader

View File

@ -42,7 +42,7 @@ using depth_less
0:? '@entryPointOutput' ( out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 16
Capability Shader

View File

@ -108,7 +108,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 50
Capability Shader

View File

@ -2,68 +2,95 @@ hlsl.doLoop.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' ( in float)
0:1 Function Definition: f0( ( temp void)
0:1 Function Parameters:
0:? Sequence
0:3 Loop with condition not tested first: Unroll
0:3 Loop Condition
0:3 Constant:
0:3 false (const bool)
0:3 No loop body
0:4 Loop with condition not tested first: Unroll
0:4 Loop Condition
0:4 Constant:
0:4 false (const bool)
0:4 No loop body
0:5 Loop with condition not tested first
0:5 Loop Condition
0:5 Compare Greater Than ( temp bool)
0:5 'input' ( in float)
0:5 Constant:
0:5 2.000000
0:5 Loop Body
0:? Sequence
0:5 Branch: Return with expression
0:5 Construct vec4 ( temp 4-component vector of float)
0:5 'input' ( in float)
0:6 Loop with condition not tested first
0:2 Loop with condition not tested first: Unroll
0:2 Loop Condition
0:2 Constant:
0:2 false (const bool)
0:2 No loop body
0:5 Function Definition: f1( ( temp void)
0:5 Function Parameters:
0:? Sequence
0:6 Loop with condition not tested first: Unroll
0:6 Loop Condition
0:6 Compare Less Than ( temp bool)
0:6 'input' ( in float)
0:6 Constant:
0:6 10.000000
0:6 Loop Body
0:6 Pre-Increment ( temp float)
0:6 'input' ( in float)
0:7 Loop with condition not tested first
0:7 Loop Condition
0:7 Compare Less Than ( temp bool)
0:7 Pre-Increment ( temp float)
0:7 'input' ( in float)
0:7 Constant:
0:7 10.000000
0:7 Loop Body
0:7 Loop with condition tested first
0:7 Loop Condition
0:7 Compare Less Than ( temp bool)
0:7 Pre-Increment ( temp float)
0:7 'input' ( in float)
0:7 Constant:
0:7 10.000000
0:7 No loop body
0:8 Branch: Return with expression
0:8 Construct vec4 ( temp 4-component vector of float)
0:8 'input' ( in float)
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
0:6 Constant:
0:6 false (const bool)
0:6 No loop body
0:9 Function Definition: f2(f1; ( temp float)
0:9 Function Parameters:
0:9 'input' ( in float)
0:? Sequence
0:2 move second child to first child ( temp float)
0:10 Loop with condition not tested first
0:10 Loop Condition
0:10 Compare Greater Than ( temp bool)
0:10 'input' ( in float)
0:10 Constant:
0:10 2.000000
0:10 Loop Body
0:? Sequence
0:10 Branch: Return with expression
0:10 Construct float ( temp float)
0:10 Construct vec4 ( temp 4-component vector of float)
0:10 'input' ( in float)
0:13 Function Definition: f3(f1; ( temp void)
0:13 Function Parameters:
0:13 'input' ( in float)
0:? Sequence
0:14 Loop with condition not tested first
0:14 Loop Condition
0:14 Compare Less Than ( temp bool)
0:14 'input' ( in float)
0:14 Constant:
0:14 10.000000
0:14 Loop Body
0:14 Pre-Increment ( temp float)
0:14 'input' ( in float)
0:17 Function Definition: f4(f1; ( temp void)
0:17 Function Parameters:
0:17 'input' ( in float)
0:? Sequence
0:18 Loop with condition not tested first
0:18 Loop Condition
0:18 Compare Less Than ( temp bool)
0:18 Pre-Increment ( temp float)
0:18 'input' ( in float)
0:18 Constant:
0:18 10.000000
0:18 Loop Body
0:18 Loop with condition tested first
0:18 Loop Condition
0:18 Compare Less Than ( temp bool)
0:18 Pre-Increment ( temp float)
0:18 'input' ( in float)
0:18 Constant:
0:18 10.000000
0:18 No loop body
0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:22 Function Parameters:
0:22 'input' ( in float)
0:? Sequence
0:23 Function Call: f0( ( temp void)
0:24 Function Call: f1( ( temp void)
0:25 Function Call: f2(f1; ( temp float)
0:25 'input' ( in float)
0:26 Function Call: f3(f1; ( temp void)
0:26 'input' ( in float)
0:27 Function Call: f4(f1; ( temp void)
0:27 'input' ( in float)
0:28 Branch: Return with expression
0:28 Construct vec4 ( temp 4-component vector of float)
0:28 'input' ( in float)
0:22 Function Definition: PixelShaderFunction( ( temp void)
0:22 Function Parameters:
0:? Sequence
0:22 move second child to first child ( temp float)
0:? 'input' ( temp float)
0:? 'input' (layout( location=0) in float)
0:2 move second child to first child ( temp 4-component vector of float)
0:22 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:? 'input' ( temp float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@ -76,196 +103,272 @@ Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:2 Function Parameters:
0:2 'input' ( in float)
0:1 Function Definition: f0( ( temp void)
0:1 Function Parameters:
0:? Sequence
0:3 Loop with condition not tested first: Unroll
0:3 Loop Condition
0:3 Constant:
0:3 false (const bool)
0:3 No loop body
0:4 Loop with condition not tested first: Unroll
0:4 Loop Condition
0:4 Constant:
0:4 false (const bool)
0:4 No loop body
0:5 Loop with condition not tested first
0:5 Loop Condition
0:5 Compare Greater Than ( temp bool)
0:5 'input' ( in float)
0:5 Constant:
0:5 2.000000
0:5 Loop Body
0:? Sequence
0:5 Branch: Return with expression
0:5 Construct vec4 ( temp 4-component vector of float)
0:5 'input' ( in float)
0:6 Loop with condition not tested first
0:2 Loop with condition not tested first: Unroll
0:2 Loop Condition
0:2 Constant:
0:2 false (const bool)
0:2 No loop body
0:5 Function Definition: f1( ( temp void)
0:5 Function Parameters:
0:? Sequence
0:6 Loop with condition not tested first: Unroll
0:6 Loop Condition
0:6 Compare Less Than ( temp bool)
0:6 'input' ( in float)
0:6 Constant:
0:6 10.000000
0:6 Loop Body
0:6 Pre-Increment ( temp float)
0:6 'input' ( in float)
0:7 Loop with condition not tested first
0:7 Loop Condition
0:7 Compare Less Than ( temp bool)
0:7 Pre-Increment ( temp float)
0:7 'input' ( in float)
0:7 Constant:
0:7 10.000000
0:7 Loop Body
0:7 Loop with condition tested first
0:7 Loop Condition
0:7 Compare Less Than ( temp bool)
0:7 Pre-Increment ( temp float)
0:7 'input' ( in float)
0:7 Constant:
0:7 10.000000
0:7 No loop body
0:8 Branch: Return with expression
0:8 Construct vec4 ( temp 4-component vector of float)
0:8 'input' ( in float)
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
0:6 Constant:
0:6 false (const bool)
0:6 No loop body
0:9 Function Definition: f2(f1; ( temp float)
0:9 Function Parameters:
0:9 'input' ( in float)
0:? Sequence
0:2 move second child to first child ( temp float)
0:10 Loop with condition not tested first
0:10 Loop Condition
0:10 Compare Greater Than ( temp bool)
0:10 'input' ( in float)
0:10 Constant:
0:10 2.000000
0:10 Loop Body
0:? Sequence
0:10 Branch: Return with expression
0:10 Construct float ( temp float)
0:10 Construct vec4 ( temp 4-component vector of float)
0:10 'input' ( in float)
0:13 Function Definition: f3(f1; ( temp void)
0:13 Function Parameters:
0:13 'input' ( in float)
0:? Sequence
0:14 Loop with condition not tested first
0:14 Loop Condition
0:14 Compare Less Than ( temp bool)
0:14 'input' ( in float)
0:14 Constant:
0:14 10.000000
0:14 Loop Body
0:14 Pre-Increment ( temp float)
0:14 'input' ( in float)
0:17 Function Definition: f4(f1; ( temp void)
0:17 Function Parameters:
0:17 'input' ( in float)
0:? Sequence
0:18 Loop with condition not tested first
0:18 Loop Condition
0:18 Compare Less Than ( temp bool)
0:18 Pre-Increment ( temp float)
0:18 'input' ( in float)
0:18 Constant:
0:18 10.000000
0:18 Loop Body
0:18 Loop with condition tested first
0:18 Loop Condition
0:18 Compare Less Than ( temp bool)
0:18 Pre-Increment ( temp float)
0:18 'input' ( in float)
0:18 Constant:
0:18 10.000000
0:18 No loop body
0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:22 Function Parameters:
0:22 'input' ( in float)
0:? Sequence
0:23 Function Call: f0( ( temp void)
0:24 Function Call: f1( ( temp void)
0:25 Function Call: f2(f1; ( temp float)
0:25 'input' ( in float)
0:26 Function Call: f3(f1; ( temp void)
0:26 'input' ( in float)
0:27 Function Call: f4(f1; ( temp void)
0:27 'input' ( in float)
0:28 Branch: Return with expression
0:28 Construct vec4 ( temp 4-component vector of float)
0:28 'input' ( in float)
0:22 Function Definition: PixelShaderFunction( ( temp void)
0:22 Function Parameters:
0:? Sequence
0:22 move second child to first child ( temp float)
0:? 'input' ( temp float)
0:? 'input' (layout( location=0) in float)
0:2 move second child to first child ( temp 4-component vector of float)
0:22 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:? 'input' ( temp float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in float)
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 71
// Generated by (magic number): 80008
// Id's are bound by 99
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 64 67
EntryPoint Fragment 4 "PixelShaderFunction" 92 95
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(f1;"
Name 10 "input"
Name 62 "input"
Name 64 "input"
Name 67 "@entryPointOutput"
Name 68 "param"
Decorate 64(input) Location 0
Decorate 67(@entryPointOutput) Location 0
Name 6 "f0("
Name 8 "f1("
Name 14 "f2(f1;"
Name 13 "input"
Name 18 "f3(f1;"
Name 17 "input"
Name 21 "f4(f1;"
Name 20 "input"
Name 26 "@PixelShaderFunction(f1;"
Name 25 "input"
Name 77 "param"
Name 80 "param"
Name 83 "param"
Name 90 "input"
Name 92 "input"
Name 95 "@entryPointOutput"
Name 96 "param"
Decorate 92(input) Location 0
Decorate 95(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
8: TypeVector 6(float) 4
9: TypeFunction 8(fvec4) 7(ptr)
17: TypeBool
18: 17(bool) ConstantFalse
31: 6(float) Constant 1073741824
38: 6(float) Constant 1065353216
41: 6(float) Constant 1092616192
63: TypePointer Input 6(float)
64(input): 63(ptr) Variable Input
66: TypePointer Output 8(fvec4)
67(@entryPointOutput): 66(ptr) Variable Output
10: TypeFloat 32
11: TypePointer Function 10(float)
12: TypeFunction 10(float) 11(ptr)
16: TypeFunction 2 11(ptr)
23: TypeVector 10(float) 4
24: TypeFunction 23(fvec4) 11(ptr)
32: TypeBool
33: 32(bool) ConstantFalse
47: 10(float) Constant 1073741824
55: 10(float) Constant 1065353216
58: 10(float) Constant 1092616192
91: TypePointer Input 10(float)
92(input): 91(ptr) Variable Input
94: TypePointer Output 23(fvec4)
95(@entryPointOutput): 94(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
62(input): 7(ptr) Variable Function
68(param): 7(ptr) Variable Function
65: 6(float) Load 64(input)
Store 62(input) 65
69: 6(float) Load 62(input)
Store 68(param) 69
70: 8(fvec4) FunctionCall 11(@PixelShaderFunction(f1;) 68(param)
Store 67(@entryPointOutput) 70
90(input): 11(ptr) Variable Function
96(param): 11(ptr) Variable Function
93: 10(float) Load 92(input)
Store 90(input) 93
97: 10(float) Load 90(input)
Store 96(param) 97
98: 23(fvec4) FunctionCall 26(@PixelShaderFunction(f1;) 96(param)
Store 95(@entryPointOutput) 98
Return
FunctionEnd
11(@PixelShaderFunction(f1;): 8(fvec4) Function None 9
10(input): 7(ptr) FunctionParameter
12: Label
Branch 13
13: Label
LoopMerge 15 16 Unroll
Branch 14
14: Label
Branch 16
16: Label
BranchConditional 18 13 15
15: Label
Branch 19
19: Label
LoopMerge 21 22 Unroll
Branch 20
20: Label
Branch 22
22: Label
BranchConditional 18 19 21
21: Label
Branch 23
23: Label
LoopMerge 25 26 None
Branch 24
24: Label
27: 6(float) Load 10(input)
28: 8(fvec4) CompositeConstruct 27 27 27 27
ReturnValue 28
26: Label
30: 6(float) Load 10(input)
32: 17(bool) FOrdGreaterThan 30 31
BranchConditional 32 23 25
25: Label
Branch 33
33: Label
LoopMerge 35 36 None
6(f0(): 2 Function None 3
7: Label
Branch 28
28: Label
LoopMerge 30 31 Unroll
Branch 29
29: Label
Branch 31
31: Label
BranchConditional 33 28 30
30: Label
Return
FunctionEnd
8(f1(): 2 Function None 3
9: Label
Branch 34
34: Label
37: 6(float) Load 10(input)
39: 6(float) FAdd 37 38
Store 10(input) 39
Branch 36
36: Label
40: 6(float) Load 10(input)
42: 17(bool) FOrdLessThan 40 41
BranchConditional 42 33 35
LoopMerge 36 37 Unroll
Branch 35
35: Label
Branch 43
43: Label
LoopMerge 45 46 None
Branch 44
44: Label
Branch 47
47: Label
LoopMerge 49 50 None
Branch 37
37: Label
BranchConditional 33 34 36
36: Label
Return
FunctionEnd
14(f2(f1;): 10(float) Function None 12
13(input): 11(ptr) FunctionParameter
15: Label
Branch 38
38: Label
LoopMerge 40 41 None
Branch 39
39: Label
42: 10(float) Load 13(input)
43: 23(fvec4) CompositeConstruct 42 42 42 42
44: 10(float) CompositeExtract 43 0
ReturnValue 44
41: Label
Branch 38
40: Label
Unreachable
FunctionEnd
18(f3(f1;): 2 Function None 16
17(input): 11(ptr) FunctionParameter
19: Label
Branch 50
50: Label
LoopMerge 52 53 None
Branch 51
51: Label
52: 6(float) Load 10(input)
53: 6(float) FAdd 52 38
Store 10(input) 53
54: 17(bool) FOrdLessThan 53 41
BranchConditional 54 48 49
48: Label
Branch 50
50: Label
Branch 47
49: Label
Branch 46
46: Label
55: 6(float) Load 10(input)
56: 6(float) FAdd 55 38
Store 10(input) 56
57: 17(bool) FOrdLessThan 56 41
BranchConditional 57 43 45
45: Label
58: 6(float) Load 10(input)
59: 8(fvec4) CompositeConstruct 58 58 58 58
ReturnValue 59
54: 10(float) Load 17(input)
56: 10(float) FAdd 54 55
Store 17(input) 56
Branch 53
53: Label
57: 10(float) Load 17(input)
59: 32(bool) FOrdLessThan 57 58
BranchConditional 59 50 52
52: Label
Return
FunctionEnd
21(f4(f1;): 2 Function None 16
20(input): 11(ptr) FunctionParameter
22: Label
Branch 60
60: Label
LoopMerge 62 63 None
Branch 61
61: Label
Branch 64
64: Label
LoopMerge 66 67 None
Branch 68
68: Label
69: 10(float) Load 20(input)
70: 10(float) FAdd 69 55
Store 20(input) 70
71: 32(bool) FOrdLessThan 70 58
BranchConditional 71 65 66
65: Label
Branch 67
67: Label
Branch 64
66: Label
Branch 63
63: Label
72: 10(float) Load 20(input)
73: 10(float) FAdd 72 55
Store 20(input) 73
74: 32(bool) FOrdLessThan 73 58
BranchConditional 74 60 62
62: Label
Return
FunctionEnd
26(@PixelShaderFunction(f1;): 23(fvec4) Function None 24
25(input): 11(ptr) FunctionParameter
27: Label
77(param): 11(ptr) Variable Function
80(param): 11(ptr) Variable Function
83(param): 11(ptr) Variable Function
75: 2 FunctionCall 6(f0()
76: 2 FunctionCall 8(f1()
78: 10(float) Load 25(input)
Store 77(param) 78
79: 10(float) FunctionCall 14(f2(f1;) 77(param)
81: 10(float) Load 25(input)
Store 80(param) 81
82: 2 FunctionCall 18(f3(f1;) 80(param)
84: 10(float) Load 25(input)
Store 83(param) 84
85: 2 FunctionCall 21(f4(f1;) 83(param)
86: 10(float) Load 25(input)
87: 23(fvec4) CompositeConstruct 86 86 86 86
ReturnValue 87
FunctionEnd

View File

@ -286,7 +286,7 @@ triangle order = none
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 103
Capability Tessellation

View File

@ -284,7 +284,7 @@ triangle order = none
0:? 'pcf_data.foo' (layout( location=2) patch in float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 98
Capability Tessellation

View File

@ -264,7 +264,7 @@ triangle order = none
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 100
Capability Tessellation

View File

@ -108,7 +108,7 @@ using early_fragment_tests
0:? 'input.Position' ( in 4-component vector of float FragCoord)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 50
Capability Shader

View File

@ -60,7 +60,7 @@ Shader version: 500
0:? 'vertexIndex' (layout( location=0) in uint)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader

View File

@ -51,7 +51,7 @@ gl_FragCoord origin is upper left
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader

View File

@ -49,7 +49,7 @@ Shader version: 500
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader

View File

@ -166,7 +166,7 @@ gl_FragCoord origin is upper left
0:? 'i.i2' (layout( location=1) flat in 2-component vector of int)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 74
Capability Shader

View File

@ -244,7 +244,7 @@ gl_FragCoord origin is upper left
0:? 'out3.i' (layout( location=5) out 2-component vector of int)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 89
Capability Shader

View File

@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 32
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.explicitDescriptorSet.frag
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader

View File

@ -1,6 +1,6 @@
hlsl.explicitDescriptorSet.frag
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader

View File

@ -118,7 +118,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 49
Capability Shader

View File

@ -295,7 +295,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 122
Capability Shader

View File

@ -165,7 +165,7 @@ Shader version: 500
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 82
Capability Shader

View File

@ -107,7 +107,7 @@ Shader version: 500
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 59
Capability Shader

View File

@ -115,7 +115,7 @@ gl_FragCoord origin is upper left
0:? 'vpos' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 54
Capability Shader

View File

@ -149,7 +149,7 @@ gl_FragCoord origin is upper left
0:? 'vpos' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 56
Capability Shader

View File

@ -65,7 +65,7 @@ gl_FragCoord origin is upper left
0:? 'scalar' ( global float)
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader

View File

@ -42,7 +42,7 @@ gl_FragCoord origin is upper left
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80008
// Id's are bound by 26
Capability Shader

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