Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Johannes van Waveren 2016-07-12 07:03:23 -05:00
commit e07c703867
130 changed files with 18048 additions and 8523 deletions

View File

@ -23,7 +23,7 @@ There are two components:
How to add a feature protected by a version/extension/stage/profile: See the
comment in `glslang/MachineIndependent/Versions.cpp`.
Things left to do: See `Todo.txt`
Tasks waiting to be done are documented as GitHub issues.
Execution of Standalone Wrapper
-------------------------------
@ -177,15 +177,11 @@ For more information, please check `gtests/` directory's
For the `runtests` script, it will generate current results in the
`localResults/` directory and `diff` them against the `baseResults/`.
The integration tests to run via the `runtests` script is registered
via various `Test/test-*` text files and `Test/testlist`.
When you want to update the tracked test results, they need to be
copied from `localResults/` to `baseResults/`. This can be done by
the `bump` shell script.
The list of files tested comes from `testlist`, and lists input shaders
in this directory, which must all be public for this to work. However,
you can add your own private list of tests, not tracked here, by using
You can add your own private list of tests, not tracked publicly, by using
`localtestlist` to list non-tracked tests. This is automatically read
by `runtests` and included in the `diff` and `bump` process.

View File

@ -117,6 +117,10 @@ protected:
spv::Id getSampledType(const glslang::TSampler&);
spv::Id convertGlslangToSpvType(const glslang::TType& type);
spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&);
spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct,
glslang::TLayoutPacking, const glslang::TQualifier&);
void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking,
const glslang::TQualifier&, spv::Id);
spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim);
spv::Id accessChainLoad(const glslang::TType& type);
void accessChainStore(const glslang::TType& type, spv::Id rvalue);
@ -414,19 +418,19 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
{
switch (builtIn) {
case glslang::EbvPointSize:
// Defer adding the capability until the built-in is actually used.
if (!memberDeclaration) {
switch (glslangIntermediate->getStage()) {
case EShLangGeometry:
builder.addCapability(spv::CapabilityGeometryPointSize);
break;
case EShLangTessControl:
case EShLangTessEvaluation:
builder.addCapability(spv::CapabilityTessellationPointSize);
break;
default:
break;
}
// Defer adding the capability until the built-in is actually used.
if (! memberDeclaration) {
switch (glslangIntermediate->getStage()) {
case EShLangGeometry:
builder.addCapability(spv::CapabilityGeometryPointSize);
break;
case EShLangTessControl:
case EShLangTessEvaluation:
builder.addCapability(spv::CapabilityTessellationPointSize);
break;
default:
break;
}
}
return spv::BuiltInPointSize;
@ -438,12 +442,12 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
//
case glslang::EbvClipDistance:
if (!memberDeclaration)
builder.addCapability(spv::CapabilityClipDistance);
builder.addCapability(spv::CapabilityClipDistance);
return spv::BuiltInClipDistance;
case glslang::EbvCullDistance:
if (!memberDeclaration)
builder.addCapability(spv::CapabilityCullDistance);
builder.addCapability(spv::CapabilityCullDistance);
return spv::BuiltInCullDistance;
case glslang::EbvViewportIndex:
@ -462,6 +466,10 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
builder.addCapability(spv::CapabilitySampleRateShading);
return spv::BuiltInSampleMask;
case glslang::EbvLayer:
builder.addCapability(spv::CapabilityGeometry);
return spv::BuiltInLayer;
case glslang::EbvPosition: return spv::BuiltInPosition;
case glslang::EbvVertexId: return spv::BuiltInVertexId;
case glslang::EbvInstanceId: return spv::BuiltInInstanceId;
@ -475,7 +483,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
return (spv::BuiltIn)spv::BadValue;
case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId;
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
case glslang::EbvLayer: return spv::BuiltInLayer;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter;
case glslang::EbvTessCoord: return spv::BuiltInTessCoord;
@ -1791,6 +1798,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
// Do full recursive conversion of an arbitrary glslang type to a SPIR-V Id.
// explicitLayout can be kept the same throughout the hierarchical recursive walk.
// Mutually recursive with convertGlslangStructToSpvType().
spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier)
{
spv::Id spvType = spv::NoResult;
@ -1829,7 +1837,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
spvType = builder.makeUintType(64);
break;
case glslang::EbtAtomicUint:
logger->tbdFunctionality("Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?");
builder.addCapability(spv::CapabilityAtomicStorage);
spvType = builder.makeUintType(32);
break;
case glslang::EbtSampler:
@ -1853,144 +1861,19 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
case glslang::EbtBlock:
{
// If we've seen this struct type, return it
const glslang::TTypeList* glslangStruct = type.getStruct();
std::vector<spv::Id> structFields;
const glslang::TTypeList* glslangMembers = type.getStruct();
// Try to share structs for different layouts, but not yet for other
// kinds of qualification (primarily not yet including interpolant qualification).
if (! HasNonLayoutQualifiers(qualifier))
spvType = structMap[explicitLayout][qualifier.layoutMatrix][glslangStruct];
spvType = structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers];
if (spvType != spv::NoResult)
break;
// else, we haven't seen it...
// Create a vector of struct types for SPIR-V to consume
int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks
if (type.getBasicType() == glslang::EbtBlock)
memberRemapper[glslangStruct].resize(glslangStruct->size());
int locationOffset = 0; // for use across struct members, when they are called recursively
for (int i = 0; i < (int)glslangStruct->size(); i++) {
glslang::TType& glslangType = *(*glslangStruct)[i].type;
if (glslangType.hiddenMember()) {
++memberDelta;
if (type.getBasicType() == glslang::EbtBlock)
memberRemapper[glslangStruct][i] = -1;
} else {
if (type.getBasicType() == glslang::EbtBlock)
memberRemapper[glslangStruct][i] = i - memberDelta;
// modify just this child's view of the qualifier
glslang::TQualifier subQualifier = glslangType.getQualifier();
InheritQualifiers(subQualifier, qualifier);
// manually inherit location; it's more complex
if (! subQualifier.hasLocation() && qualifier.hasLocation())
subQualifier.layoutLocation = qualifier.layoutLocation + locationOffset;
if (qualifier.hasLocation())
locationOffset += glslangIntermediate->computeTypeLocationSize(glslangType);
// recurse
structFields.push_back(convertGlslangToSpvType(glslangType, explicitLayout, subQualifier));
}
}
// Make the SPIR-V type
spvType = builder.makeStructType(structFields, type.getTypeName().c_str());
if (! HasNonLayoutQualifiers(qualifier))
structMap[explicitLayout][qualifier.layoutMatrix][glslangStruct] = spvType;
// Name and decorate the non-hidden members
int offset = -1;
locationOffset = 0; // for use within the members of this struct, right now
for (int i = 0; i < (int)glslangStruct->size(); i++) {
glslang::TType& glslangType = *(*glslangStruct)[i].type;
int member = i;
if (type.getBasicType() == glslang::EbtBlock)
member = memberRemapper[glslangStruct][i];
// modify just this child's view of the qualifier
glslang::TQualifier subQualifier = glslangType.getQualifier();
InheritQualifiers(subQualifier, qualifier);
// using -1 above to indicate a hidden member
if (member >= 0) {
builder.addMemberName(spvType, member, glslangType.getFieldName().c_str());
addMemberDecoration(spvType, member, TranslateLayoutDecoration(glslangType, subQualifier.layoutMatrix));
addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType));
// Add interpolation and auxiliary storage decorations only to top-level members of Input and Output storage classes
if (type.getQualifier().storage == glslang::EvqVaryingIn || type.getQualifier().storage == glslang::EvqVaryingOut) {
if (type.getBasicType() == glslang::EbtBlock) {
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier));
addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier));
}
}
addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier));
if (qualifier.storage == glslang::EvqBuffer) {
std::vector<spv::Decoration> memory;
TranslateMemoryDecoration(subQualifier, memory);
for (unsigned int i = 0; i < memory.size(); ++i)
addMemberDecoration(spvType, member, memory[i]);
}
// compute location decoration; tricky based on whether inheritance is at play
// TODO: This algorithm (and it's cousin above doing almost the same thing) should
// probably move to the linker stage of the front end proper, and just have the
// answer sitting already distributed throughout the individual member locations.
int location = -1; // will only decorate if present or inherited
if (subQualifier.hasLocation()) { // no inheritance, or override of inheritance
// struct members should not have explicit locations
assert(type.getBasicType() != glslang::EbtStruct);
location = subQualifier.layoutLocation;
} else if (type.getBasicType() != glslang::EbtBlock) {
// If it is a not a Block, (...) Its members are assigned consecutive locations (...)
// The members, and their nested types, must not themselves have Location decorations.
}
else if (qualifier.hasLocation()) // inheritance
location = qualifier.layoutLocation + locationOffset;
if (qualifier.hasLocation()) // track for upcoming inheritance
locationOffset += glslangIntermediate->computeTypeLocationSize(glslangType);
if (location >= 0)
builder.addMemberDecoration(spvType, member, spv::DecorationLocation, location);
// component, XFB, others
if (glslangType.getQualifier().hasComponent())
builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent);
if (glslangType.getQualifier().hasXfbOffset())
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangType.getQualifier().layoutXfbOffset);
else if (explicitLayout != glslang::ElpNone) {
// figure out what to do with offset, which is accumulating
int nextOffset;
updateMemberOffset(type, glslangType, offset, nextOffset, explicitLayout, subQualifier.layoutMatrix);
if (offset >= 0)
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, offset);
offset = nextOffset;
}
if (glslangType.isMatrix() && explicitLayout != glslang::ElpNone)
builder.addMemberDecoration(spvType, member, spv::DecorationMatrixStride, getMatrixStride(glslangType, explicitLayout, subQualifier.layoutMatrix));
// built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangType.getQualifier().builtIn, true);
if (builtIn != spv::BadValue)
addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn);
}
}
// Decorate the structure
addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix));
addDecoration(spvType, TranslateBlockDecoration(type));
if (type.getQualifier().hasStream() && glslangIntermediate->isMultiStream()) {
builder.addCapability(spv::CapabilityGeometryStreams);
builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
}
if (glslangIntermediate->getXfbMode()) {
builder.addCapability(spv::CapabilityTransformFeedback);
if (type.getQualifier().hasXfbStride())
builder.addDecoration(spvType, spv::DecorationXfbStride, type.getQualifier().layoutXfbStride);
if (type.getQualifier().hasXfbBuffer())
builder.addDecoration(spvType, spv::DecorationXfbBuffer, type.getQualifier().layoutXfbBuffer);
}
memberRemapper[glslangMembers].resize(glslangMembers->size());
spvType = convertGlslangStructToSpvType(type, glslangMembers, explicitLayout, qualifier);
}
break;
default:
@ -2053,6 +1936,161 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
return spvType;
}
// Do full recursive conversion of a glslang structure (or block) type to a SPIR-V Id.
// explicitLayout can be kept the same throughout the hierarchical recursive walk.
// Mutually recursive with convertGlslangToSpvType().
spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TType& type,
const glslang::TTypeList* glslangMembers,
glslang::TLayoutPacking explicitLayout,
const glslang::TQualifier& qualifier)
{
// Create a vector of struct types for SPIR-V to consume
std::vector<spv::Id> spvMembers;
int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks
int locationOffset = 0; // for use across struct members, when they are called recursively
for (int i = 0; i < (int)glslangMembers->size(); i++) {
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
if (glslangMember.hiddenMember()) {
++memberDelta;
if (type.getBasicType() == glslang::EbtBlock)
memberRemapper[glslangMembers][i] = -1;
} else {
if (type.getBasicType() == glslang::EbtBlock)
memberRemapper[glslangMembers][i] = i - memberDelta;
// modify just this child's view of the qualifier
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
InheritQualifiers(memberQualifier, qualifier);
// manually inherit location; it's more complex
if (! memberQualifier.hasLocation() && qualifier.hasLocation())
memberQualifier.layoutLocation = qualifier.layoutLocation + locationOffset;
if (qualifier.hasLocation())
locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
// recurse
spvMembers.push_back(convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier));
}
}
// Make the SPIR-V type
spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str());
if (! HasNonLayoutQualifiers(qualifier))
structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType;
// Decorate it
decorateStructType(type, glslangMembers, explicitLayout, qualifier, spvType);
return spvType;
}
void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
const glslang::TTypeList* glslangMembers,
glslang::TLayoutPacking explicitLayout,
const glslang::TQualifier& qualifier,
spv::Id spvType)
{
// Name and decorate the non-hidden members
int offset = -1;
int locationOffset = 0; // for use within the members of this struct
for (int i = 0; i < (int)glslangMembers->size(); i++) {
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
int member = i;
if (type.getBasicType() == glslang::EbtBlock)
member = memberRemapper[glslangMembers][i];
// modify just this child's view of the qualifier
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
InheritQualifiers(memberQualifier, qualifier);
// using -1 above to indicate a hidden member
if (member >= 0) {
builder.addMemberName(spvType, member, glslangMember.getFieldName().c_str());
addMemberDecoration(spvType, member, TranslateLayoutDecoration(glslangMember, memberQualifier.layoutMatrix));
addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangMember));
// Add interpolation and auxiliary storage decorations only to top-level members of Input and Output storage classes
if (type.getQualifier().storage == glslang::EvqVaryingIn || type.getQualifier().storage == glslang::EvqVaryingOut) {
if (type.getBasicType() == glslang::EbtBlock) {
addMemberDecoration(spvType, member, TranslateInterpolationDecoration(memberQualifier));
addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(memberQualifier));
}
}
addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier));
if (qualifier.storage == glslang::EvqBuffer) {
std::vector<spv::Decoration> memory;
TranslateMemoryDecoration(memberQualifier, memory);
for (unsigned int i = 0; i < memory.size(); ++i)
addMemberDecoration(spvType, member, memory[i]);
}
// Compute location decoration; tricky based on whether inheritance is at play and
// what kind of container we have, etc.
// TODO: This algorithm (and it's cousin above doing almost the same thing) should
// probably move to the linker stage of the front end proper, and just have the
// answer sitting already distributed throughout the individual member locations.
int location = -1; // will only decorate if present or inherited
// Ignore member locations if the container is an array, as that's
// ill-specified and decisions have been made to not allow this anyway.
// The object itself must have a location, and that comes out from decorating the object,
// not the type (this code decorates types).
if (! type.isArray()) {
if (memberQualifier.hasLocation()) { // no inheritance, or override of inheritance
// struct members should not have explicit locations
assert(type.getBasicType() != glslang::EbtStruct);
location = memberQualifier.layoutLocation;
} else if (type.getBasicType() != glslang::EbtBlock) {
// If it is a not a Block, (...) Its members are assigned consecutive locations (...)
// The members, and their nested types, must not themselves have Location decorations.
} else if (qualifier.hasLocation()) // inheritance
location = qualifier.layoutLocation + locationOffset;
}
if (location >= 0)
builder.addMemberDecoration(spvType, member, spv::DecorationLocation, location);
if (qualifier.hasLocation()) // track for upcoming inheritance
locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
// component, XFB, others
if (glslangMember.getQualifier().hasComponent())
builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangMember.getQualifier().layoutComponent);
if (glslangMember.getQualifier().hasXfbOffset())
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangMember.getQualifier().layoutXfbOffset);
else if (explicitLayout != glslang::ElpNone) {
// figure out what to do with offset, which is accumulating
int nextOffset;
updateMemberOffset(type, glslangMember, offset, nextOffset, explicitLayout, memberQualifier.layoutMatrix);
if (offset >= 0)
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, offset);
offset = nextOffset;
}
if (glslangMember.isMatrix() && explicitLayout != glslang::ElpNone)
builder.addMemberDecoration(spvType, member, spv::DecorationMatrixStride, getMatrixStride(glslangMember, explicitLayout, memberQualifier.layoutMatrix));
// built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangMember.getQualifier().builtIn, true);
if (builtIn != spv::BadValue)
addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn);
}
}
// Decorate the structure
addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix));
addDecoration(spvType, TranslateBlockDecoration(type));
if (type.getQualifier().hasStream() && glslangIntermediate->isMultiStream()) {
builder.addCapability(spv::CapabilityGeometryStreams);
builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
}
if (glslangIntermediate->getXfbMode()) {
builder.addCapability(spv::CapabilityTransformFeedback);
if (type.getQualifier().hasXfbStride())
builder.addDecoration(spvType, spv::DecorationXfbStride, type.getQualifier().layoutXfbStride);
if (type.getQualifier().hasXfbBuffer())
builder.addDecoration(spvType, spv::DecorationXfbBuffer, type.getQualifier().layoutXfbBuffer);
}
}
// Turn the expression forming the array size into an id.
// This is not quite trivial, because of specialization constants.
// Sometimes, a raw constant is turned into an Id, and sometimes
@ -4026,7 +4064,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
id = createSpvVariable(symbol);
symbolValues[symbol->getId()] = id;
if (! symbol->getType().isStruct()) {
if (symbol->getBasicType() != glslang::EbtBlock) {
addDecoration(id, TranslatePrecisionDecoration(symbol->getType()));
addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier()));
addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier()));
@ -4045,6 +4083,9 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
if (symbol->getQualifier().hasXfbOffset())
builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutXfbOffset);
}
// atomic counters use this:
if (symbol->getQualifier().hasOffset())
builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutOffset);
}
if (symbol->getQualifier().hasLocation())

View File

@ -2045,8 +2045,15 @@ Block& Builder::makeNewBlock()
Builder::LoopBlocks& Builder::makeNewLoop()
{
// Older MSVC versions don't allow inlining of blocks below.
LoopBlocks blocks = {makeNewBlock(), makeNewBlock(), makeNewBlock(), makeNewBlock()};
// This verbosity is needed to simultaneously get the same behavior
// everywhere (id's in the same order), have a syntax that works
// across lots of versions of C++, have no warnings from pedantic
// compilation modes, and leave the rest of the code alone.
Block& head = makeNewBlock();
Block& body = makeNewBlock();
Block& merge = makeNewBlock();
Block& continue_target = makeNewBlock();
LoopBlocks blocks(head, body, merge, continue_target);
loops.push(blocks);
return loops.top();
}

View File

@ -397,7 +397,12 @@ public:
void endSwitch(std::vector<Block*>& segmentBB);
struct LoopBlocks {
LoopBlocks(Block& head, Block& body, Block& merge, Block& continue_target) :
head(head), body(body), merge(merge), continue_target(continue_target) { }
Block &head, &body, &merge, &continue_target;
private:
LoopBlocks();
LoopBlocks& operator=(const LoopBlocks&);
};
// Start a new loop and prepare the builder to generate code for it. Until

View File

@ -238,7 +238,8 @@ std::string GetDefaultTBuiltInResourceString()
return ostream.str();
}
void DecodeResourceLimits(TBuiltInResource* resources, char* config) {
void DecodeResourceLimits(TBuiltInResource* resources, char* config)
{
const char* delims = " \t\n\r";
const char* token = strtok(config, delims);
while (token) {

View File

@ -58,25 +58,26 @@ extern "C" {
// Command-line options
enum TOptions {
EOptionNone = 0x0000,
EOptionIntermediate = 0x0001,
EOptionSuppressInfolog = 0x0002,
EOptionMemoryLeakMode = 0x0004,
EOptionRelaxedErrors = 0x0008,
EOptionGiveWarnings = 0x0010,
EOptionLinkProgram = 0x0020,
EOptionMultiThreaded = 0x0040,
EOptionDumpConfig = 0x0080,
EOptionDumpReflection = 0x0100,
EOptionSuppressWarnings = 0x0200,
EOptionDumpVersions = 0x0400,
EOptionSpv = 0x0800,
EOptionHumanReadableSpv = 0x1000,
EOptionVulkanRules = 0x2000,
EOptionDefaultDesktop = 0x4000,
EOptionOutputPreprocessed = 0x8000,
EOptionOutputHexadecimal = 0x10000,
EOptionReadHlsl = 0x20000,
EOptionNone = 0,
EOptionIntermediate = (1 << 0),
EOptionSuppressInfolog = (1 << 1),
EOptionMemoryLeakMode = (1 << 2),
EOptionRelaxedErrors = (1 << 3),
EOptionGiveWarnings = (1 << 4),
EOptionLinkProgram = (1 << 5),
EOptionMultiThreaded = (1 << 6),
EOptionDumpConfig = (1 << 7),
EOptionDumpReflection = (1 << 8),
EOptionSuppressWarnings = (1 << 9),
EOptionDumpVersions = (1 << 10),
EOptionSpv = (1 << 11),
EOptionHumanReadableSpv = (1 << 12),
EOptionVulkanRules = (1 << 13),
EOptionDefaultDesktop = (1 << 14),
EOptionOutputPreprocessed = (1 << 15),
EOptionOutputHexadecimal = (1 << 16),
EOptionReadHlsl = (1 << 17),
EOptionCascadingErrors = (1 << 18),
};
//
@ -223,7 +224,13 @@ void ProcessArguments(int argc, char* argv[])
switch (argv[0][1]) {
case 'H':
Options |= EOptionHumanReadableSpv;
// fall through to -V
if ((Options & EOptionSpv) == 0) {
// default to Vulkan
Options |= EOptionSpv;
Options |= EOptionVulkanRules;
Options |= EOptionLinkProgram;
}
break;
case 'V':
Options |= EOptionSpv;
Options |= EOptionVulkanRules;
@ -232,6 +239,8 @@ void ProcessArguments(int argc, char* argv[])
case 'G':
Options |= EOptionSpv;
Options |= EOptionLinkProgram;
// undo a -H default to Vulkan
Options &= ~EOptionVulkanRules;
break;
case 'E':
Options |= EOptionOutputPreprocessed;
@ -239,6 +248,9 @@ void ProcessArguments(int argc, char* argv[])
case 'c':
Options |= EOptionDumpConfig;
break;
case 'C':
Options |= EOptionCascadingErrors;
break;
case 'd':
Options |= EOptionDefaultDesktop;
break;
@ -339,6 +351,8 @@ void SetMessageOptions(EShMessages& messages)
messages = (EShMessages)(messages | EShMsgOnlyPreprocessor);
if (Options & EOptionReadHlsl)
messages = (EShMessages)(messages | EShMsgReadHlsl);
if (Options & EOptionCascadingErrors)
messages = (EShMessages)(messages | EShMsgCascadingErrors);
}
//
@ -764,6 +778,7 @@ void usage()
" errors will appear on stderr.\n"
" -c configuration dump;\n"
" creates the default configuration file (redirect to a .conf file)\n"
" -C cascading errors; risks crashes from accumulation of error recoveries\n"
" -d default to desktop (#version 110) when there is no shader #version\n"
" (default is ES version 100)\n"
" -D input is HLSL\n"

View File

@ -44,7 +44,7 @@ ERROR: 0:107: 'overloadE' : no matching overloaded function found
ERROR: 0:108: 'overloadE' : no matching overloaded function found
ERROR: 0:111: 'overloadE' : no matching overloaded function found
ERROR: 0:117: 'overloadF' : no matching overloaded function found
ERROR: 0:121: 'gl_TexCoord array size' : must be less than gl_MaxTextureCoords (32)
ERROR: 0:121: 'gl_TexCoord array size' : must be less than or equal to gl_MaxTextureCoords (32)
ERROR: 0:165: 'switch' : Reserved word.
ERROR: 0:171: 'default' : Reserved word.
ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions

View File

@ -161,9 +161,9 @@ ERROR: node is still EOpNull!
0:62 packSnorm2x16 (global highp uint)
0:62 'v2a' (global mediump 2-component vector of float)
0:63 Sequence
0:63 move second child to first child (temp highp 2-component vector of float)
0:63 move second child to first child (temp mediump 2-component vector of float)
0:63 'v20' (temp mediump 2-component vector of float)
0:63 unpackSnorm2x16 (global highp 2-component vector of float)
0:63 unpackSnorm2x16 (global mediump 2-component vector of float)
0:63 'uy' (global mediump uint)
0:64 Sequence
0:64 move second child to first child (temp highp uint)
@ -368,9 +368,9 @@ ERROR: node is still EOpNull!
0:62 packSnorm2x16 (global highp uint)
0:62 'v2a' (global mediump 2-component vector of float)
0:63 Sequence
0:63 move second child to first child (temp highp 2-component vector of float)
0:63 move second child to first child (temp mediump 2-component vector of float)
0:63 'v20' (temp mediump 2-component vector of float)
0:63 unpackSnorm2x16 (global highp 2-component vector of float)
0:63 unpackSnorm2x16 (global mediump 2-component vector of float)
0:63 'uy' (global mediump uint)
0:64 Sequence
0:64 move second child to first child (temp highp uint)

View File

@ -179,27 +179,27 @@ ERROR: node is still EOpNull!
0:31 'u4' (temp highp 4-component vector of uint)
0:32 move second child to first child (temp highp int)
0:32 'i1' (temp highp int)
0:32 bitCount (global lowp int)
0:32 bitCount (global highp int)
0:32 'i1' (temp highp int)
0:33 move second child to first child (temp highp 3-component vector of int)
0:33 'i3' (temp highp 3-component vector of int)
0:33 bitCount (global lowp 3-component vector of int)
0:33 bitCount (global highp 3-component vector of int)
0:33 'u3' (temp highp 3-component vector of uint)
0:34 move second child to first child (temp highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:34 findLSB (global lowp 2-component vector of int)
0:34 findLSB (global highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:35 move second child to first child (temp highp 4-component vector of int)
0:35 'i4' (temp highp 4-component vector of int)
0:35 findLSB (global lowp 4-component vector of int)
0:35 findLSB (global highp 4-component vector of int)
0:35 'u4' (temp highp 4-component vector of uint)
0:36 move second child to first child (temp highp int)
0:36 'i1' (temp highp int)
0:36 findMSB (global lowp int)
0:36 findMSB (global highp int)
0:36 'i1' (temp highp int)
0:37 move second child to first child (temp highp 2-component vector of int)
0:37 'i2' (temp highp 2-component vector of int)
0:37 findMSB (global lowp 2-component vector of int)
0:37 findMSB (global highp 2-component vector of int)
0:37 'u2' (temp highp 2-component vector of uint)
0:40 move second child to first child (temp highp 3-component vector of float)
0:40 'v3' (temp highp 3-component vector of float)
@ -219,13 +219,13 @@ ERROR: node is still EOpNull!
0:46 'u1' (temp highp uint)
0:46 PackSnorm4x8 (global highp uint)
0:46 'v4' (temp mediump 4-component vector of float)
0:47 move second child to first child (temp mediump 4-component vector of float)
0:47 move second child to first child (temp highp 4-component vector of float)
0:47 'v4' (temp mediump 4-component vector of float)
0:47 UnpackUnorm4x8 (global mediump 4-component vector of float)
0:47 UnpackUnorm4x8 (global highp 4-component vector of float)
0:47 'u1' (temp highp uint)
0:48 move second child to first child (temp mediump 4-component vector of float)
0:48 move second child to first child (temp highp 4-component vector of float)
0:48 'v4' (temp mediump 4-component vector of float)
0:48 UnpackSnorm4x8 (global mediump 4-component vector of float)
0:48 UnpackSnorm4x8 (global highp 4-component vector of float)
0:48 'u1' (temp highp uint)
0:60 Function Definition: foo( (global void)
0:60 Function Parameters:
@ -1110,27 +1110,27 @@ ERROR: node is still EOpNull!
0:31 'u4' (temp highp 4-component vector of uint)
0:32 move second child to first child (temp highp int)
0:32 'i1' (temp highp int)
0:32 bitCount (global lowp int)
0:32 bitCount (global highp int)
0:32 'i1' (temp highp int)
0:33 move second child to first child (temp highp 3-component vector of int)
0:33 'i3' (temp highp 3-component vector of int)
0:33 bitCount (global lowp 3-component vector of int)
0:33 bitCount (global highp 3-component vector of int)
0:33 'u3' (temp highp 3-component vector of uint)
0:34 move second child to first child (temp highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:34 findLSB (global lowp 2-component vector of int)
0:34 findLSB (global highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:35 move second child to first child (temp highp 4-component vector of int)
0:35 'i4' (temp highp 4-component vector of int)
0:35 findLSB (global lowp 4-component vector of int)
0:35 findLSB (global highp 4-component vector of int)
0:35 'u4' (temp highp 4-component vector of uint)
0:36 move second child to first child (temp highp int)
0:36 'i1' (temp highp int)
0:36 findMSB (global lowp int)
0:36 findMSB (global highp int)
0:36 'i1' (temp highp int)
0:37 move second child to first child (temp highp 2-component vector of int)
0:37 'i2' (temp highp 2-component vector of int)
0:37 findMSB (global lowp 2-component vector of int)
0:37 findMSB (global highp 2-component vector of int)
0:37 'u2' (temp highp 2-component vector of uint)
0:40 move second child to first child (temp highp 3-component vector of float)
0:40 'v3' (temp highp 3-component vector of float)
@ -1150,13 +1150,13 @@ ERROR: node is still EOpNull!
0:46 'u1' (temp highp uint)
0:46 PackSnorm4x8 (global highp uint)
0:46 'v4' (temp mediump 4-component vector of float)
0:47 move second child to first child (temp mediump 4-component vector of float)
0:47 move second child to first child (temp highp 4-component vector of float)
0:47 'v4' (temp mediump 4-component vector of float)
0:47 UnpackUnorm4x8 (global mediump 4-component vector of float)
0:47 UnpackUnorm4x8 (global highp 4-component vector of float)
0:47 'u1' (temp highp uint)
0:48 move second child to first child (temp mediump 4-component vector of float)
0:48 move second child to first child (temp highp 4-component vector of float)
0:48 'v4' (temp mediump 4-component vector of float)
0:48 UnpackSnorm4x8 (global mediump 4-component vector of float)
0:48 UnpackSnorm4x8 (global highp 4-component vector of float)
0:48 'u1' (temp highp uint)
0:60 Function Definition: foo( (global void)
0:60 Function Parameters:

View File

@ -14,7 +14,7 @@ ERROR: 0:28: '' : cannot use invariant qualifier on a function parameter
ERROR: 0:30: '' : cannot use layout qualifiers on a function parameter
ERROR: 0:31: '' : cannot use auxiliary or interpolation qualifiers on a function parameter
ERROR: 0:42: 'location' : overlapping use of location 53
ERROR: 0:47: 'gl_ClipDistance array size' : must be less than gl_MaxClipDistances (8)
ERROR: 0:47: 'gl_ClipDistance array size' : must be less than or equal to gl_MaxClipDistances (8)
ERROR: 0:51: 'start' : undeclared identifier
ERROR: 0:51: '' : constant expression required
ERROR: 0:51: 'layout-id value' : scalar integer expression required

View File

@ -64,7 +64,7 @@ ERROR: node is still EOpNull!
0:47 3.000000
0:49 move second child to first child (temp 4-component vector of float)
0:49 gl_Position: direct index for structure (invariant gl_Position 4-component vector of float Position)
0:49 'anon@0' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
0:49 'anon@0' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, ...})
0:49 Constant:
0:49 0 (const uint)
0:49 Construct vec4 (temp 4-component vector of float)

View File

@ -374,6 +374,18 @@ ERROR: node is still EOpNull!
0:? 1 (const int)
0:? 9.000000
0:? false (const bool)
0:? 'cval1' (const bool)
0:? true (const bool)
0:? 'cval2' (const bool)
0:? false (const bool)
0:? 'cval3' (const bool)
0:? false (const bool)
0:? 'cval4' (const bool)
0:? true (const bool)
0:? 'cval5' (const bool)
0:? false (const bool)
0:? 'cval6' (const bool)
0:? true (const bool)
Linked fragment stage:
@ -744,4 +756,16 @@ ERROR: node is still EOpNull!
0:? 1 (const int)
0:? 9.000000
0:? false (const bool)
0:? 'cval1' (const bool)
0:? true (const bool)
0:? 'cval2' (const bool)
0:? false (const bool)
0:? 'cval3' (const bool)
0:? false (const bool)
0:? 'cval4' (const bool)
0:? true (const bool)
0:? 'cval5' (const bool)
0:? false (const bool)
0:? 'cval6' (const bool)
0:? true (const bool)

View File

@ -1,8 +1,12 @@
functionSemantics.frag
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:74: 'return' : cannot convert return value to function return type
WARNING: 0:74: 'return' : type conversion on return values was not explicitly allowed until version 420
ERROR: 1 compilation errors. No code generated.
Shader version: 400
0:? Sequence
ERROR: node is still EOpNull!
0:5 Function Definition: foo(i1;i1;i1;i1;i1;i1; (global int)
0:5 Function Parameters:
0:5 'a' (in int)
@ -195,6 +199,11 @@ Shader version: 400
0:69 Construct ivec2 (temp 2-component vector of int)
0:69 Convert float to int (temp int)
0:69 'F' (temp float)
0:72 Function Definition: badConv( (global 4-component vector of float)
0:72 Function Parameters:
0:74 Sequence
0:74 Branch: Return with expression
0:74 'u' (uniform float)
0:? Linker Objects
0:? 'u' (uniform float)
@ -203,7 +212,7 @@ Linked fragment stage:
Shader version: 400
0:? Sequence
ERROR: node is still EOpNull!
0:5 Function Definition: foo(i1;i1;i1;i1;i1;i1; (global int)
0:5 Function Parameters:
0:5 'a' (in int)
@ -396,6 +405,11 @@ Shader version: 400
0:69 Construct ivec2 (temp 2-component vector of int)
0:69 Convert float to int (temp int)
0:69 'F' (temp float)
0:72 Function Definition: badConv( (global 4-component vector of float)
0:72 Function Parameters:
0:74 Sequence
0:74 Branch: Return with expression
0:74 'u' (uniform float)
0:? Linker Objects
0:? 'u' (uniform float)

View File

@ -0,0 +1,11 @@
glspv.esversion.vert
ERROR: #version: ES shaders for OpenGL SPIR-V are not supported
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 1 compilation errors. No code generated.
Linked vertex stage:
SPIR-V is not generated for failed compile or link

13
Test/baseResults/glspv.frag.out Executable file
View File

@ -0,0 +1,13 @@
glspv.frag
ERROR: 0:4: '#error' : GL_SPIRV is set ( correct , not an error )
ERROR: 0:6: '#error' : GL_SPIR is 100
ERROR: 0:14: 'input_attachment_index' : only allowed when using GLSL for Vulkan
ERROR: 0:14: '' : syntax error
ERROR: 4 compilation errors. No code generated.
Linked fragment stage:
SPIR-V is not generated for failed compile or link

View File

@ -0,0 +1,24 @@
glspv.version.frag
ERROR: #version: compilation for SPIR-V does not support the compatibility profile
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 6
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Source GLSL 330
Name 4 "main"
2: TypeVoid
3: TypeFunction 2
4(main): 2 Function None 3
5: Label
Return
FunctionEnd

View File

@ -0,0 +1,10 @@
glspv.version.vert
ERROR: #version: Desktop shaders for OpenGL SPIR-V require version 330 or higher
ERROR: 1 compilation errors. No code generated.
Linked vertex stage:
SPIR-V is not generated for failed compile or link

18
Test/baseResults/glspv.vert.out Executable file
View File

@ -0,0 +1,18 @@
glspv.vert
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'push_constant' : only allowed when using GLSL for Vulkan
ERROR: 0:6: 'descriptor set' : only allowed when using GLSL for Vulkan
ERROR: 0:8: 'shared' : not allowed when generating SPIR-V
ERROR: 0:9: 'packed' : not allowed when generating SPIR-V
ERROR: 0:13: 'gl_VertexIndex' : undeclared identifier
ERROR: 0:14: 'gl_InstanceIndex' : undeclared identifier
ERROR: 0:17: 'gl_DepthRangeParameters' : undeclared identifier
ERROR: 0:20: '' : syntax error
ERROR: 8 compilation errors. No code generated.
Linked vertex stage:
SPIR-V is not generated for failed compile or link

View File

@ -2,7 +2,7 @@ hlsl.array.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float)
0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
0:8 Function Parameters:
0:8 'i' (in int)
0:8 'input' (in 3-element array of 4-component vector of float)
@ -12,11 +12,11 @@ gl_FragCoord origin is upper left
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 'a' (global 4-element array of 4-component vector of float)
0:10 Constant:
0:10 1 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 'a' (global 4-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
@ -38,14 +38,14 @@ gl_FragCoord origin is upper left
0:10 indirect index (temp 4-component vector of float)
0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
0:10 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:10 'i' (in int)
0:10 Constant:
0:10 0 (const int)
0:10 'i' (in int)
0:? Linker Objects
0:? 'a' (temp 4-element array of 4-component vector of float)
0:? 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:? 'a' (global 4-element array of 4-component vector of float)
0:? 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
Linked fragment stage:
@ -54,7 +54,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float)
0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
0:8 Function Parameters:
0:8 'i' (in int)
0:8 'input' (in 3-element array of 4-component vector of float)
@ -64,11 +64,11 @@ gl_FragCoord origin is upper left
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 'a' (global 4-element array of 4-component vector of float)
0:10 Constant:
0:10 1 (const int)
0:10 indirect index (temp 4-component vector of float)
0:10 'a' (temp 4-element array of 4-component vector of float)
0:10 'a' (global 4-element array of 4-component vector of float)
0:10 'i' (in int)
0:10 add (temp 4-component vector of float)
0:10 direct index (temp 4-component vector of float)
@ -90,18 +90,18 @@ gl_FragCoord origin is upper left
0:10 indirect index (temp 4-component vector of float)
0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
0:10 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:10 'i' (in int)
0:10 Constant:
0:10 0 (const int)
0:10 'i' (in int)
0:? Linker Objects
0:? 'a' (temp 4-element array of 4-component vector of float)
0:? 's' (temp 11-element array of structure{temp 7-element array of 4-component vector of float m})
0:? 'a' (global 4-element array of 4-component vector of float)
0:? 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 63
// Id's are bound by 64
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -114,9 +114,9 @@ gl_FragCoord origin is upper left
Name 19 "i"
Name 27 "input"
Name 40 "b"
Name 50 ""
MemberName 50 0 "m"
Name 54 "s"
Name 51 ""
MemberName 51 0 "m"
Name 55 "s"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -124,10 +124,11 @@ gl_FragCoord origin is upper left
8: TypeInt 32 0
9: 8(int) Constant 4
10: TypeArray 7(fvec4) 9
11: TypePointer Function 10
11: TypePointer Private 10
12(a): 11(ptr) Variable Private
13: TypeInt 32 1
14: 13(int) Constant 1
15: TypePointer Function 7(fvec4)
15: TypePointer Private 7(fvec4)
18: TypePointer Input 13(int)
19(i): 18(ptr) Variable Input
24: 8(int) Constant 3
@ -140,18 +141,18 @@ gl_FragCoord origin is upper left
38: TypeArray 7(fvec4) 37
39: TypePointer Function 38
41: 13(int) Constant 5
48: 8(int) Constant 7
49: TypeArray 7(fvec4) 48
50: TypeStruct 49
51: 8(int) Constant 11
52: TypeArray 50(struct) 51
53: TypePointer Function 52
56: 13(int) Constant 0
42: TypePointer Function 7(fvec4)
49: 8(int) Constant 7
50: TypeArray 7(fvec4) 49
51: TypeStruct 50
52: 8(int) Constant 11
53: TypeArray 51(struct) 52
54: TypePointer Private 53
55(s): 54(ptr) Variable Private
57: 13(int) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
12(a): 11(ptr) Variable Function
40(b): 39(ptr) Variable Function
54(s): 53(ptr) Variable Function
16: 15(ptr) AccessChain 12(a) 14
17: 7(fvec4) Load 16
20: 13(int) Load 19(i)
@ -165,17 +166,17 @@ gl_FragCoord origin is upper left
34: 7(fvec4) Load 33
35: 7(fvec4) FAdd 31 34
36: 7(fvec4) FAdd 23 35
42: 15(ptr) AccessChain 40(b) 41
43: 7(fvec4) Load 42
44: 13(int) Load 19(i)
45: 15(ptr) AccessChain 40(b) 44
46: 7(fvec4) Load 45
47: 7(fvec4) FAdd 43 46
55: 13(int) Load 19(i)
57: 13(int) Load 19(i)
58: 15(ptr) AccessChain 54(s) 55 56 57
59: 7(fvec4) Load 58
60: 7(fvec4) FAdd 47 59
61: 7(fvec4) FAdd 36 60
ReturnValue 61
43: 42(ptr) AccessChain 40(b) 41
44: 7(fvec4) Load 43
45: 13(int) Load 19(i)
46: 42(ptr) AccessChain 40(b) 45
47: 7(fvec4) Load 46
48: 7(fvec4) FAdd 44 47
56: 13(int) Load 19(i)
58: 13(int) Load 19(i)
59: 15(ptr) AccessChain 55(s) 56 57 58
60: 7(fvec4) Load 59
61: 7(fvec4) FAdd 48 60
62: 7(fvec4) FAdd 36 61
ReturnValue 62
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.assoc.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:8 Function Parameters:
0:8 'a1' (in 4-component vector of float)
0:8 'a2' (in 4-component vector of float)
@ -38,7 +38,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:8 Function Parameters:
0:8 'a1' (in 4-component vector of float)
0:8 'a2' (in 4-component vector of float)

View File

@ -2,7 +2,7 @@ hlsl.attribute.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -20,7 +20,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence

View File

@ -2,7 +2,7 @@ hlsl.cast.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -28,7 +28,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence

View File

@ -0,0 +1,151 @@
hlsl.discard.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: foo(f1; (global void)
0:2 Function Parameters:
0:2 'f' (in float)
0:? Sequence
0:3 Test condition and select (temp void)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 'f' (in float)
0:3 Constant:
0:3 1.000000
0:3 true case
0:4 Branch: Kill
0:15 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:8 Function Parameters:
0:8 'input' (in 4-component vector of float)
0:? Sequence
0:9 Function Call: foo(f1; (global void)
0:9 direct index (temp float)
0:9 'input' (in 4-component vector of float)
0:9 Constant:
0:9 2 (const int)
0:10 Test condition and select (temp void)
0:10 Condition
0:10 direct index (temp float)
0:10 'input' (in 4-component vector of float)
0:10 Constant:
0:10 0 (const int)
0:10 true case
0:11 Branch: Kill
0:12 Sequence
0:12 move second child to first child (temp float)
0:12 'f' (temp float)
0:12 direct index (temp float)
0:12 'input' (in 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:13 Branch: Kill
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: foo(f1; (global void)
0:2 Function Parameters:
0:2 'f' (in float)
0:? Sequence
0:3 Test condition and select (temp void)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 'f' (in float)
0:3 Constant:
0:3 1.000000
0:3 true case
0:4 Branch: Kill
0:15 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:8 Function Parameters:
0:8 'input' (in 4-component vector of float)
0:? Sequence
0:9 Function Call: foo(f1; (global void)
0:9 direct index (temp float)
0:9 'input' (in 4-component vector of float)
0:9 Constant:
0:9 2 (const int)
0:10 Test condition and select (temp void)
0:10 Condition
0:10 direct index (temp float)
0:10 'input' (in 4-component vector of float)
0:10 Constant:
0:10 0 (const int)
0:10 true case
0:11 Branch: Kill
0:12 Sequence
0:12 move second child to first child (temp float)
0:12 'f' (temp float)
0:12 direct index (temp float)
0:12 'input' (in 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:13 Branch: Kill
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 39
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 21
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 10 "foo(f1;"
Name 9 "f"
Name 21 "input"
Name 22 "param"
Name 35 "f"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
8: TypeFunction 2 7(ptr)
13: 6(float) Constant 1065353216
14: TypeBool
19: TypeVector 6(float) 4
20: TypePointer Input 19(fvec4)
21(input): 20(ptr) Variable Input
23: TypeInt 32 0
24: 23(int) Constant 2
25: TypePointer Input 6(float)
29: 23(int) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
22(param): 7(ptr) Variable Function
35(f): 7(ptr) Variable Function
26: 25(ptr) AccessChain 21(input) 24
27: 6(float) Load 26
Store 22(param) 27
28: 2 FunctionCall 10(foo(f1;) 22(param)
30: 25(ptr) AccessChain 21(input) 29
31: 6(float) Load 30
SelectionMerge 33 None
BranchConditional 31 32 33
32: Label
Kill
33: Label
36: 25(ptr) AccessChain 21(input) 29
37: 6(float) Load 36
Store 35(f) 37
Kill
FunctionEnd
10(foo(f1;): 2 Function None 8
9(f): 7(ptr) FunctionParameter
11: Label
12: 6(float) Load 9(f)
15: 14(bool) FOrdLessThan 12 13
SelectionMerge 17 None
BranchConditional 15 16 17
16: Label
Kill
17: Label
Return
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.doLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:7 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -33,7 +33,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:7 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence

View File

@ -2,15 +2,17 @@ hlsl.float1.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (temp 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:2 move second child to first child (temp float)
0:2 'scalar' (temp float)
0:2 Constant:
0:2 2.000000
0:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (global 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:2 Sequence
0:2 move second child to first child (temp float)
0:2 'scalar' (global float)
0:2 Constant:
0:2 2.000000
0:8 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:5 Function Parameters:
0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (in float)
@ -18,14 +20,14 @@ gl_FragCoord origin is upper left
0:6 Branch: Return with expression
0:6 add (temp 1-component vector of float)
0:6 vector-scale (temp 1-component vector of float)
0:6 'f1' (temp 1-component vector of float)
0:6 'scalar' (temp float)
0:6 'f1' (global 1-component vector of float)
0:6 'scalar' (global float)
0:6 vector-scale (temp 1-component vector of float)
0:6 'inFloat1' (in 1-component vector of float)
0:6 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'scalar' (temp float)
0:? 'f1' (global 1-component vector of float)
0:? 'scalar' (global float)
Linked fragment stage:
@ -34,15 +36,17 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (temp 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:2 move second child to first child (temp float)
0:2 'scalar' (temp float)
0:2 Constant:
0:2 2.000000
0:8 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (global 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:2 Sequence
0:2 move second child to first child (temp float)
0:2 'scalar' (global float)
0:2 Constant:
0:2 2.000000
0:8 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:5 Function Parameters:
0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (in float)
@ -50,18 +54,18 @@ gl_FragCoord origin is upper left
0:6 Branch: Return with expression
0:6 add (temp 1-component vector of float)
0:6 vector-scale (temp 1-component vector of float)
0:6 'f1' (temp 1-component vector of float)
0:6 'scalar' (temp float)
0:6 'f1' (global 1-component vector of float)
0:6 'scalar' (global float)
0:6 vector-scale (temp 1-component vector of float)
0:6 'inFloat1' (in 1-component vector of float)
0:6 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'scalar' (temp float)
0:? 'f1' (global 1-component vector of float)
0:? 'scalar' (global float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 24
// Id's are bound by 27
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -73,28 +77,33 @@ gl_FragCoord origin is upper left
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"
Name 10 "inScalar"
Name 13 "f1"
Name 15 "scalar"
Name 14 "f1"
Name 16 "scalar"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
8: TypeFunction 6(float) 7(ptr) 7(ptr)
13: TypePointer Private 6(float)
14(f1): 13(ptr) Variable Private
15: 6(float) Constant 1065353216
16(scalar): 13(ptr) Variable Private
17: 6(float) Constant 1073741824
4(PixelShaderFunction): 2 Function None 3
5: Label
Store 14(f1) 15
Store 16(scalar) 17
FunctionEnd
11(ShaderFunction(vf1;f1;): 6(float) Function None 8
9(inFloat1): 7(ptr) FunctionParameter
10(inScalar): 7(ptr) FunctionParameter
12: Label
13(f1): 7(ptr) Variable Function
15(scalar): 7(ptr) Variable Function
14: 6(float) Load 13(f1)
16: 6(float) Load 15(scalar)
17: 6(float) IMul 14 16
18: 6(float) Load 9(inFloat1)
19: 6(float) Load 10(inScalar)
18: 6(float) Load 14(f1)
19: 6(float) Load 16(scalar)
20: 6(float) IMul 18 19
21: 6(float) FAdd 17 20
ReturnValue 21
21: 6(float) Load 9(inFloat1)
22: 6(float) Load 10(inScalar)
23: 6(float) IMul 21 22
24: 6(float) FAdd 20 23
ReturnValue 24
FunctionEnd

View File

@ -2,27 +2,28 @@ hlsl.float4.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:12 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (global 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:12 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:9 Function Parameters:
0:9 'input' (in 4-component vector of float)
0:? Sequence
0:10 Branch: Return with expression
0:10 component-wise multiply (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:10 'AmbientColor' (temp 4-component vector of float)
0:10 'AmbientColor' (global 4-component vector of float)
0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'ff1' (temp bool Face)
0:? 'ff2' (temp 4-component vector of float)
0:? 'ff3' (temp 4-component vector of float)
0:? 'ff4' (temp 4-component vector of float FragCoord)
0:? 'AmbientColor' (global 4-component vector of float)
0:? 'ff1' (global bool Face)
0:? 'ff2' (global 4-component vector of float)
0:? 'ff3' (global 4-component vector of float)
0:? 'ff4' (global 4-component vector of float FragCoord)
Linked fragment stage:
@ -31,31 +32,32 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:12 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (global 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:12 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:9 Function Parameters:
0:9 'input' (in 4-component vector of float)
0:? Sequence
0:10 Branch: Return with expression
0:10 component-wise multiply (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:10 'AmbientColor' (temp 4-component vector of float)
0:10 'AmbientColor' (global 4-component vector of float)
0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'ff1' (temp bool Face)
0:? 'ff2' (temp 4-component vector of float)
0:? 'ff3' (temp 4-component vector of float)
0:? 'ff4' (temp 4-component vector of float FragCoord)
0:? 'AmbientColor' (global 4-component vector of float)
0:? 'ff1' (global bool Face)
0:? 'ff2' (global 4-component vector of float)
0:? 'ff3' (global 4-component vector of float)
0:? 'ff4' (global 4-component vector of float FragCoord)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 25
// Id's are bound by 30
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -67,33 +69,39 @@ gl_FragCoord origin is upper left
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
Name 14 "AmbientColor"
Name 21 "ff1"
Name 22 "ff2"
Name 23 "ff3"
Name 24 "ff4"
Decorate 21(ff1) BuiltIn FrontFacing
Decorate 24(ff4) BuiltIn FragCoord
Name 26 "ff1"
Name 27 "ff2"
Name 28 "ff3"
Name 29 "ff4"
Decorate 26(ff1) BuiltIn FrontFacing
Decorate 29(ff4) BuiltIn FragCoord
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
19: TypeBool
20: TypePointer Function 19(bool)
13: TypePointer Private 7(fvec4)
14(AmbientColor): 13(ptr) Variable Private
15: 6(float) Constant 1065353216
16: 6(float) Constant 1056964608
17: 6(float) Constant 0
18: 7(fvec4) ConstantComposite 15 16 17 15
24: TypeBool
25: TypePointer Private 24(bool)
26(ff1): 25(ptr) Variable Private
27(ff2): 13(ptr) Variable Private
28(ff3): 13(ptr) Variable Private
29(ff4): 13(ptr) Variable Private
4(PixelShaderFunction): 2 Function None 3
5: Label
Store 14(AmbientColor) 18
FunctionEnd
11(ShaderFunction(vf4;): 7(fvec4) Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
14(AmbientColor): 8(ptr) Variable Function
21(ff1): 20(ptr) Variable Function
22(ff2): 8(ptr) Variable Function
23(ff3): 8(ptr) Variable Function
24(ff4): 8(ptr) Variable Function
13: 7(fvec4) Load 10(input)
15: 7(fvec4) Load 14(AmbientColor)
16: 7(fvec4) FMul 13 15
ReturnValue 16
19: 7(fvec4) Load 10(input)
20: 7(fvec4) Load 14(AmbientColor)
21: 7(fvec4) FMul 19 20
ReturnValue 21
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.forLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -52,6 +52,61 @@ gl_FragCoord origin is upper left
0:7 'input' (in 4-component vector of float)
0:7 Constant:
0:7 2.000000
0:? Sequence
0:8 Loop with condition tested first
0:8 No loop condition
0:8 Loop Body
0:8 Test condition and select (temp void)
0:8 Condition
0:8 Compare Greater Than (temp bool)
0:8 direct index (temp float)
0:8 'input' (in 4-component vector of float)
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 2.000000
0:8 true case
0:8 Branch: Break
0:? Sequence
0:9 Loop with condition tested first
0:9 No loop condition
0:9 Loop Body
0:9 Test condition and select (temp void)
0:9 Condition
0:9 Compare Greater Than (temp bool)
0:9 direct index (temp float)
0:9 'input' (in 4-component vector of float)
0:9 Constant:
0:9 0 (const int)
0:9 Constant:
0:9 2.000000
0:9 true case
0:9 Branch: Continue
0:11 Sequence
0:11 move second child to first child (temp int)
0:11 'ii' (temp int)
0:11 Constant:
0:11 -1 (const int)
0:11 Loop with condition tested first
0:11 Loop Condition
0:11 Compare Less Than (temp bool)
0:11 'ii' (temp int)
0:11 Constant:
0:11 3 (const int)
0:11 Loop Body
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Compare Equal (temp bool)
0:11 'ii' (temp int)
0:11 Constant:
0:11 2 (const int)
0:11 true case
0:11 Branch: Continue
0:11 Loop Terminal Expression
0:11 Pre-Increment (temp int)
0:11 'ii' (temp int)
0:12 Pre-Decrement (temp float)
0:12 'ii' (temp float)
0:? Linker Objects
@ -61,7 +116,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -111,11 +166,66 @@ gl_FragCoord origin is upper left
0:7 'input' (in 4-component vector of float)
0:7 Constant:
0:7 2.000000
0:? Sequence
0:8 Loop with condition tested first
0:8 No loop condition
0:8 Loop Body
0:8 Test condition and select (temp void)
0:8 Condition
0:8 Compare Greater Than (temp bool)
0:8 direct index (temp float)
0:8 'input' (in 4-component vector of float)
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 2.000000
0:8 true case
0:8 Branch: Break
0:? Sequence
0:9 Loop with condition tested first
0:9 No loop condition
0:9 Loop Body
0:9 Test condition and select (temp void)
0:9 Condition
0:9 Compare Greater Than (temp bool)
0:9 direct index (temp float)
0:9 'input' (in 4-component vector of float)
0:9 Constant:
0:9 0 (const int)
0:9 Constant:
0:9 2.000000
0:9 true case
0:9 Branch: Continue
0:11 Sequence
0:11 move second child to first child (temp int)
0:11 'ii' (temp int)
0:11 Constant:
0:11 -1 (const int)
0:11 Loop with condition tested first
0:11 Loop Condition
0:11 Compare Less Than (temp bool)
0:11 'ii' (temp int)
0:11 Constant:
0:11 3 (const int)
0:11 Loop Body
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Compare Equal (temp bool)
0:11 'ii' (temp int)
0:11 Constant:
0:11 2 (const int)
0:11 true case
0:11 Branch: Continue
0:11 Loop Terminal Expression
0:11 Pre-Increment (temp int)
0:11 'ii' (temp int)
0:12 Pre-Decrement (temp float)
0:12 'ii' (temp float)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 64
// Id's are bound by 112
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -125,6 +235,8 @@ gl_FragCoord origin is upper left
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 13 "input"
Name 89 "ii"
Name 109 "ii"
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
@ -135,8 +247,20 @@ gl_FragCoord origin is upper left
29: TypeBool
30: TypeVector 29(bool) 4
60: 10(float) Constant 1073741824
68: TypeInt 32 0
69: 68(int) Constant 0
70: TypePointer Input 10(float)
87: TypeInt 32 1
88: TypePointer Function 87(int)
90: 87(int) Constant 4294967295
97: 87(int) Constant 3
100: 87(int) Constant 2
106: 87(int) Constant 1
108: TypePointer Function 10(float)
4(PixelShaderFunction): 2 Function None 3
5: Label
89(ii): 88(ptr) Variable Function
109(ii): 108(ptr) Variable Function
Branch 6
6: Label
LoopMerge 8 9 None
@ -216,5 +340,66 @@ gl_FragCoord origin is upper left
Store 13(input) 63
Branch 48
50: Label
Branch 64
64: Label
LoopMerge 66 67 None
Branch 65
65: Label
71: 70(ptr) AccessChain 13(input) 69
72: 10(float) Load 71
73: 29(bool) FOrdGreaterThan 72 60
SelectionMerge 75 None
BranchConditional 73 74 75
74: Label
Branch 66
75: Label
Branch 67
67: Label
Branch 64
66: Label
Branch 77
77: Label
LoopMerge 79 80 None
Branch 78
78: Label
81: 70(ptr) AccessChain 13(input) 69
82: 10(float) Load 81
83: 29(bool) FOrdGreaterThan 82 60
SelectionMerge 85 None
BranchConditional 83 84 85
84: Label
Branch 80
85: Label
Branch 80
80: Label
Branch 77
79: Label
Store 89(ii) 90
Branch 91
91: Label
LoopMerge 93 94 None
Branch 95
95: Label
96: 87(int) Load 89(ii)
98: 29(bool) SLessThan 96 97
BranchConditional 98 92 93
92: Label
99: 87(int) Load 89(ii)
101: 29(bool) IEqual 99 100
SelectionMerge 103 None
BranchConditional 101 102 103
102: Label
Branch 94
103: Label
Branch 94
94: Label
105: 87(int) Load 89(ii)
107: 87(int) IAdd 105 106
Store 89(ii) 107
Branch 91
93: Label
110: 10(float) Load 109(ii)
111: 10(float) FSub 110 15
Store 109(ii) 111
Return
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.if.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:34 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -61,6 +61,19 @@ gl_FragCoord origin is upper left
0:26 Branch: Return with expression
0:26 Negate value (temp 4-component vector of float)
0:26 'input' (in 4-component vector of float)
0:30 Test condition and select (temp void)
0:30 Condition
0:30 move second child to first child (temp float)
0:30 'ii' (temp float)
0:30 direct index (temp float)
0:30 'input' (in 4-component vector of float)
0:30 Constant:
0:30 2 (const int)
0:30 true case
0:31 Pre-Increment (temp float)
0:31 'ii' (temp float)
0:32 Pre-Increment (temp int)
0:32 'ii' (temp int)
0:? Linker Objects
@ -70,7 +83,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:34 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -129,11 +142,24 @@ gl_FragCoord origin is upper left
0:26 Branch: Return with expression
0:26 Negate value (temp 4-component vector of float)
0:26 'input' (in 4-component vector of float)
0:30 Test condition and select (temp void)
0:30 Condition
0:30 move second child to first child (temp float)
0:30 'ii' (temp float)
0:30 direct index (temp float)
0:30 'input' (in 4-component vector of float)
0:30 Constant:
0:30 2 (const int)
0:30 true case
0:31 Pre-Increment (temp float)
0:31 'ii' (temp float)
0:32 Pre-Increment (temp int)
0:32 'ii' (temp int)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 64
// Id's are bound by 82
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -143,6 +169,8 @@ gl_FragCoord origin is upper left
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "input"
Name 65 "ii"
Name 78 "ii"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -151,8 +179,18 @@ gl_FragCoord origin is upper left
9(input): 8(ptr) Variable Input
12: TypeBool
13: TypeVector 12(bool) 4
64: TypePointer Function 6(float)
66: TypeInt 32 0
67: 66(int) Constant 2
68: TypePointer Input 6(float)
74: 6(float) Constant 1065353216
76: TypeInt 32 1
77: TypePointer Function 76(int)
80: 76(int) Constant 1
4(PixelShaderFunction): 2 Function None 3
5: Label
65(ii): 64(ptr) Variable Function
78(ii): 77(ptr) Variable Function
10: 7(fvec4) Load 9(input)
11: 7(fvec4) Load 9(input)
14: 13(bvec4) FOrdEqual 10 11
@ -219,5 +257,19 @@ gl_FragCoord origin is upper left
62: 7(fvec4) FNegate 61
ReturnValue 62
57: Label
69: 68(ptr) AccessChain 9(input) 67
70: 6(float) Load 69
Store 65(ii) 70
SelectionMerge 72 None
BranchConditional 70 71 72
71: Label
73: 6(float) Load 65(ii)
75: 6(float) FAdd 73 74
Store 65(ii) 75
Branch 72
72: Label
79: 76(int) Load 78(ii)
81: 76(int) IAdd 79 80
Store 78(ii) 81
Return
FunctionEnd

View File

@ -0,0 +1,369 @@
hlsl.init.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'a1' (global 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:1 move second child to first child (temp 4-component vector of float)
0:1 'b1' (global 4-component vector of float)
0:? Constant:
0:? 2.000000
0:? 2.500000
0:? 2.100000
0:? 2.200000
0:2 Sequence
0:2 move second child to first child (temp 4-component vector of float)
0:2 'a1i' (global 4-component vector of float)
0:2 Constant:
0:2 1.000000
0:2 0.500000
0:2 0.000000
0:2 1.000000
0:2 move second child to first child (temp 4-component vector of float)
0:2 'b1i' (global 4-component vector of float)
0:2 Constant:
0:2 2.000000
0:2 2.500000
0:2 2.100000
0:2 2.200000
0:3 Sequence
0:3 move second child to first child (temp float)
0:3 'a2' (global float)
0:3 Constant:
0:3 0.200000
0:4 Sequence
0:4 move second child to first child (temp float)
0:4 'b3' (global float)
0:4 Constant:
0:4 0.300000
0:5 Sequence
0:5 move second child to first child (temp float)
0:5 'b4' (global float)
0:5 Constant:
0:5 0.400000
0:6 Sequence
0:6 move second child to first child (temp float)
0:6 'a5' (global float)
0:6 Constant:
0:6 0.500000
0:6 move second child to first child (temp float)
0:6 'c5' (global float)
0:6 Constant:
0:6 1.500000
0:25 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:9 Function Parameters:
0:9 'input' (in 4-component vector of float)
0:? Sequence
0:10 Sequence
0:10 move second child to first child (temp 4-component vector of float)
0:10 'a2' (temp 4-component vector of float)
0:? Constant:
0:? 0.200000
0:? 0.300000
0:? 0.400000
0:? 0.500000
0:20 Sequence
0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 's2i' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 Constant:
0:20 9 (const int)
0:20 'a5' (global float)
0:20 Construct structure (temp structure{temp float f, temp int i})
0:20 Comma (temp float)
0:20 'a3' (global float)
0:20 'a4' (global float)
0:20 Constant:
0:20 12 (const int)
0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 's2' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:? Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 Constant:
0:20 9 (const int)
0:20 'a5' (global float)
0:? Construct structure (temp structure{temp float f, temp int i})
0:20 Comma (temp float)
0:20 'a3' (global float)
0:20 'a4' (global float)
0:20 Constant:
0:20 12 (const int)
0:21 Sequence
0:21 move second child to first child (temp float)
0:21 'a8' (temp float)
0:21 Comma (temp float)
0:21 'a2' (temp 4-component vector of float)
0:21 'b2' (global float)
0:21 move second child to first child (temp float)
0:21 'a9' (temp float)
0:21 'a5' (global float)
0:23 Branch: Return with expression
0:23 component-wise multiply (temp 4-component vector of float)
0:23 'input' (in 4-component vector of float)
0:23 'a1' (global 4-component vector of float)
0:? Linker Objects
0:? 'a1' (global 4-component vector of float)
0:? 'b1' (global 4-component vector of float)
0:? 'a1i' (global 4-component vector of float)
0:? 'b1i' (global 4-component vector of float)
0:? 'a2' (global float)
0:? 'b2' (global float)
0:? 'a3' (global float)
0:? 'b3' (global float)
0:? 'a4' (global float)
0:? 'b4' (global float)
0:? 'c4' (global float)
0:? 'a5' (global float)
0:? 'b5' (global float)
0:? 'c5' (global float)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'a1' (global 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:1 move second child to first child (temp 4-component vector of float)
0:1 'b1' (global 4-component vector of float)
0:? Constant:
0:? 2.000000
0:? 2.500000
0:? 2.100000
0:? 2.200000
0:2 Sequence
0:2 move second child to first child (temp 4-component vector of float)
0:2 'a1i' (global 4-component vector of float)
0:2 Constant:
0:2 1.000000
0:2 0.500000
0:2 0.000000
0:2 1.000000
0:2 move second child to first child (temp 4-component vector of float)
0:2 'b1i' (global 4-component vector of float)
0:2 Constant:
0:2 2.000000
0:2 2.500000
0:2 2.100000
0:2 2.200000
0:3 Sequence
0:3 move second child to first child (temp float)
0:3 'a2' (global float)
0:3 Constant:
0:3 0.200000
0:4 Sequence
0:4 move second child to first child (temp float)
0:4 'b3' (global float)
0:4 Constant:
0:4 0.300000
0:5 Sequence
0:5 move second child to first child (temp float)
0:5 'b4' (global float)
0:5 Constant:
0:5 0.400000
0:6 Sequence
0:6 move second child to first child (temp float)
0:6 'a5' (global float)
0:6 Constant:
0:6 0.500000
0:6 move second child to first child (temp float)
0:6 'c5' (global float)
0:6 Constant:
0:6 1.500000
0:25 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:9 Function Parameters:
0:9 'input' (in 4-component vector of float)
0:? Sequence
0:10 Sequence
0:10 move second child to first child (temp 4-component vector of float)
0:10 'a2' (temp 4-component vector of float)
0:? Constant:
0:? 0.200000
0:? 0.300000
0:? 0.400000
0:? 0.500000
0:20 Sequence
0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 's2i' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 Constant:
0:20 9 (const int)
0:20 'a5' (global float)
0:20 Construct structure (temp structure{temp float f, temp int i})
0:20 Comma (temp float)
0:20 'a3' (global float)
0:20 'a4' (global float)
0:20 Constant:
0:20 12 (const int)
0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 's2' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:? Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1})
0:20 Constant:
0:20 9 (const int)
0:20 'a5' (global float)
0:? Construct structure (temp structure{temp float f, temp int i})
0:20 Comma (temp float)
0:20 'a3' (global float)
0:20 'a4' (global float)
0:20 Constant:
0:20 12 (const int)
0:21 Sequence
0:21 move second child to first child (temp float)
0:21 'a8' (temp float)
0:21 Comma (temp float)
0:21 'a2' (temp 4-component vector of float)
0:21 'b2' (global float)
0:21 move second child to first child (temp float)
0:21 'a9' (temp float)
0:21 'a5' (global float)
0:23 Branch: Return with expression
0:23 component-wise multiply (temp 4-component vector of float)
0:23 'input' (in 4-component vector of float)
0:23 'a1' (global 4-component vector of float)
0:? Linker Objects
0:? 'a1' (global 4-component vector of float)
0:? 'b1' (global 4-component vector of float)
0:? 'a1i' (global 4-component vector of float)
0:? 'b1i' (global 4-component vector of float)
0:? 'a2' (global float)
0:? 'b2' (global float)
0:? 'a3' (global float)
0:? 'b3' (global float)
0:? 'a4' (global float)
0:? 'b4' (global float)
0:? 'c4' (global float)
0:? 'a5' (global float)
0:? 'b5' (global float)
0:? 'c5' (global float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 67
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "ShaderFunction" 60
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "ShaderFunction"
Name 9 "a1"
Name 14 "b1"
Name 20 "a1i"
Name 21 "b1i"
Name 23 "a2"
Name 25 "b3"
Name 27 "b4"
Name 29 "a5"
Name 30 "c5"
Name 33 "a2"
Name 36 "S1"
MemberName 36(S1) 0 "f"
MemberName 36(S1) 1 "i"
Name 37 "S2"
MemberName 37(S2) 0 "j"
MemberName 37(S2) 1 "g"
MemberName 37(S2) 2 "s1"
Name 39 "s2i"
Name 42 "a3"
Name 43 "a4"
Name 48 "s2"
Name 54 "a8"
Name 55 "b2"
Name 57 "a9"
Name 60 "input"
Name 65 "c4"
Name 66 "b5"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Private 7(fvec4)
9(a1): 8(ptr) Variable Private
10: 6(float) Constant 1065353216
11: 6(float) Constant 1056964608
12: 6(float) Constant 0
13: 7(fvec4) ConstantComposite 10 11 12 10
14(b1): 8(ptr) Variable Private
15: 6(float) Constant 1073741824
16: 6(float) Constant 1075838976
17: 6(float) Constant 1074161254
18: 6(float) Constant 1074580685
19: 7(fvec4) ConstantComposite 15 16 17 18
20(a1i): 8(ptr) Variable Private
21(b1i): 8(ptr) Variable Private
22: TypePointer Private 6(float)
23(a2): 22(ptr) Variable Private
24: 6(float) Constant 1045220557
25(b3): 22(ptr) Variable Private
26: 6(float) Constant 1050253722
27(b4): 22(ptr) Variable Private
28: 6(float) Constant 1053609165
29(a5): 22(ptr) Variable Private
30(c5): 22(ptr) Variable Private
31: 6(float) Constant 1069547520
32: TypePointer Function 7(fvec4)
34: 7(fvec4) ConstantComposite 24 26 28 11
35: TypeInt 32 1
36(S1): TypeStruct 6(float) 35(int)
37(S2): TypeStruct 35(int) 6(float) 36(S1)
38: TypePointer Function 37(S2)
40: 35(int) Constant 9
42(a3): 22(ptr) Variable Private
43(a4): 22(ptr) Variable Private
45: 35(int) Constant 12
53: TypePointer Function 6(float)
55(b2): 22(ptr) Variable Private
59: TypePointer Input 7(fvec4)
60(input): 59(ptr) Variable Input
65(c4): 22(ptr) Variable Private
66(b5): 22(ptr) Variable Private
4(ShaderFunction): 2 Function None 3
5: Label
33(a2): 32(ptr) Variable Function
39(s2i): 38(ptr) Variable Function
48(s2): 38(ptr) Variable Function
54(a8): 53(ptr) Variable Function
57(a9): 53(ptr) Variable Function
Store 9(a1) 13
Store 14(b1) 19
Store 20(a1i) 13
Store 21(b1i) 19
Store 23(a2) 24
Store 25(b3) 26
Store 27(b4) 28
Store 29(a5) 11
Store 30(c5) 31
Store 33(a2) 34
41: 6(float) Load 29(a5)
44: 6(float) Load 43(a4)
46: 36(S1) CompositeConstruct 44 45
47: 37(S2) CompositeConstruct 40 41 46
Store 39(s2i) 47
49: 6(float) Load 29(a5)
50: 6(float) Load 43(a4)
51: 36(S1) CompositeConstruct 50 45
52: 37(S2) CompositeConstruct 40 49 51
Store 48(s2) 52
56: 6(float) Load 55(b2)
Store 54(a8) 56
58: 6(float) Load 29(a5)
Store 57(a9) 58
61: 7(fvec4) Load 60(input)
62: 7(fvec4) Load 9(a1)
63: 7(fvec4) FMul 61 62
ReturnValue 63
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.intrinsics.barriers.comp
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: ComputeShaderFunction( (temp float)
0:14 Function Definition: ComputeShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
@ -23,7 +23,7 @@ Linked compute stage:
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: ComputeShaderFunction( (temp float)
0:14 Function Definition: ComputeShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,121 @@
hlsl.intrinsics.double.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
0:5 Function Parameters:
0:5 'inDV1a' (in double)
0:5 'inDV1b' (in double)
0:5 'inDV1c' (in double)
0:5 'inDV2' (in 2-component vector of double)
0:5 'inDV3' (in 3-component vector of double)
0:5 'inDV4' (in 4-component vector of double)
0:5 'inU1a' (in uint)
0:5 'inU1b' (in uint)
0:? Sequence
0:6 Sequence
0:6 move second child to first child (temp double)
0:6 'r00' (temp double)
0:6 fma (global double)
0:6 'inDV1a' (in double)
0:6 'inDV1b' (in double)
0:6 'inDV1c' (in double)
0:7 Sequence
0:7 move second child to first child (temp double)
0:7 'r01' (temp double)
0:7 uint64BitsToDouble (temp double)
0:7 Construct uvec2 (temp 2-component vector of uint)
0:7 'inU1a' (in uint)
0:7 'inU1b' (in uint)
0:9 Branch: Return with expression
0:9 Constant:
0:9 0.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
0:5 Function Parameters:
0:5 'inDV1a' (in double)
0:5 'inDV1b' (in double)
0:5 'inDV1c' (in double)
0:5 'inDV2' (in 2-component vector of double)
0:5 'inDV3' (in 3-component vector of double)
0:5 'inDV4' (in 4-component vector of double)
0:5 'inU1a' (in uint)
0:5 'inU1b' (in uint)
0:? Sequence
0:6 Sequence
0:6 move second child to first child (temp double)
0:6 'r00' (temp double)
0:6 fma (global double)
0:6 'inDV1a' (in double)
0:6 'inDV1b' (in double)
0:6 'inDV1c' (in double)
0:7 Sequence
0:7 move second child to first child (temp double)
0:7 'r01' (temp double)
0:7 uint64BitsToDouble (temp double)
0:7 Construct uvec2 (temp 2-component vector of uint)
0:7 'inU1a' (in uint)
0:7 'inU1b' (in uint)
0:9 Branch: Return with expression
0:9 Constant:
0:9 0.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 30
Capability Shader
Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 10 12 14 20 22
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "r00"
Name 10 "inDV1a"
Name 12 "inDV1b"
Name 14 "inDV1c"
Name 17 "r01"
Name 20 "inU1a"
Name 22 "inU1b"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 64
7: TypePointer Function 6(float)
9: TypePointer Input 6(float)
10(inDV1a): 9(ptr) Variable Input
12(inDV1b): 9(ptr) Variable Input
14(inDV1c): 9(ptr) Variable Input
18: TypeInt 32 0
19: TypePointer Input 18(int)
20(inU1a): 19(ptr) Variable Input
22(inU1b): 19(ptr) Variable Input
24: TypeVector 18(int) 2
27: TypeFloat 32
28: 27(float) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
8(r00): 7(ptr) Variable Function
17(r01): 7(ptr) Variable Function
11: 6(float) Load 10(inDV1a)
13: 6(float) Load 12(inDV1b)
15: 6(float) Load 14(inDV1c)
16: 6(float) ExtInst 1(GLSL.std.450) 50(Fma) 11 13 15
Store 8(r00) 16
21: 18(int) Load 20(inU1a)
23: 18(int) Load 22(inU1b)
25: 24(ivec2) CompositeConstruct 21 23
26: 6(float) Bitcast 25
Store 17(r01) 26
ReturnValue 28
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.intrinsics.evalfns.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
0:3 Function Parameters:
0:3 'inF1' (in float)
0:3 'inF2' (in 2-component vector of float)
@ -52,7 +52,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
0:3 Function Parameters:
0:3 'inF1' (in float)
0:3 'inF2' (in 2-component vector of float)

View File

@ -9,7 +9,7 @@ ERROR: 4 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
0:8 Function Definition: PixelShaderFunctionS(f1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
@ -19,14 +19,14 @@ ERROR: node is still EOpNull!
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
0:14 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
0:21 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
@ -37,7 +37,7 @@ ERROR: node is still EOpNull!
0:? Constant:
0:? 1.000000
0:? 2.000000
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
0:28 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
@ -49,7 +49,7 @@ ERROR: node is still EOpNull!
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:35 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:? Sequence
@ -71,7 +71,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
0:8 Function Definition: PixelShaderFunctionS(f1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
@ -81,14 +81,14 @@ ERROR: node is still EOpNull!
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
0:14 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
0:21 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
@ -99,7 +99,7 @@ ERROR: node is still EOpNull!
0:? Constant:
0:? 1.000000
0:? 2.000000
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
0:28 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
@ -111,7 +111,7 @@ ERROR: node is still EOpNull!
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:35 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:? Sequence

File diff suppressed because it is too large Load Diff

View File

@ -2,38 +2,39 @@ hlsl.intrinsics.lit.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
0:2 Function Parameters:
0:2 'n_dot_l' (in float)
0:2 'n_dot_h' (in float)
0:2 'm' (in float)
0:? Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 1.000000
0:3 1.000000
0:? Linker Objects
@ -43,38 +44,39 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
0:2 Function Parameters:
0:2 'n_dot_l' (in float)
0:2 'n_dot_h' (in float)
0:2 'm' (in float)
0:? Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 1.000000
0:3 1.000000
0:? Linker Objects
// Module Version 10000

View File

@ -18,7 +18,6 @@ ERROR: 0:22: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:23: 'f16tof32' : no matching overloaded function found
ERROR: 0:24: 'firstbithigh' : no matching overloaded function found
ERROR: 0:25: 'firstbitlow' : no matching overloaded function found
ERROR: 0:26: 'fma' : no matching overloaded function found
ERROR: 0:27: 'fwidth' : no matching overloaded function found
ERROR: 0:28: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:29: 'InterlockedAdd' : no matching overloaded function found
@ -61,7 +60,6 @@ ERROR: 0:83: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:84: 'f16tof32' : no matching overloaded function found
ERROR: 0:85: 'firstbithigh' : no matching overloaded function found
ERROR: 0:86: 'firstbitlow' : no matching overloaded function found
ERROR: 0:87: 'fma' : no matching overloaded function found
ERROR: 0:88: 'fwidth' : no matching overloaded function found
ERROR: 0:89: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:90: 'InterlockedAdd' : no matching overloaded function found
@ -96,7 +94,6 @@ ERROR: 0:128: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:129: 'f16tof32' : no matching overloaded function found
ERROR: 0:130: 'firstbithigh' : no matching overloaded function found
ERROR: 0:131: 'firstbitlow' : no matching overloaded function found
ERROR: 0:132: 'fma' : no matching overloaded function found
ERROR: 0:133: 'fwidth' : no matching overloaded function found
ERROR: 0:134: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:135: 'InterlockedAdd' : no matching overloaded function found
@ -131,7 +128,6 @@ ERROR: 0:173: 'EvaluateAttributeSnapped' : no matching overloaded function found
ERROR: 0:174: 'f16tof32' : no matching overloaded function found
ERROR: 0:175: 'firstbithigh' : no matching overloaded function found
ERROR: 0:176: 'firstbitlow' : no matching overloaded function found
ERROR: 0:177: 'fma' : no matching overloaded function found
ERROR: 0:178: 'fwidth' : no matching overloaded function found
ERROR: 0:179: 'InterlockedAdd' : no matching overloaded function found
ERROR: 0:180: 'InterlockedAdd' : no matching overloaded function found
@ -150,13 +146,13 @@ ERROR: 0:192: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:193: 'noise' : no matching overloaded function found
ERROR: 0:194: 'reversebits' : no matching overloaded function found
ERROR: 0:195: 'transpose' : no matching overloaded function found
ERROR: 151 compilation errors. No code generated.
ERROR: 147 compilation errors. No code generated.
Shader version: 450
local_size = (1, 1, 1)
ERROR: node is still EOpNull!
0:56 Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
0:56 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
@ -201,8 +197,6 @@ ERROR: node is still EOpNull!
0:24 0.000000
0:25 Constant:
0:25 0.000000
0:26 Constant:
0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
@ -252,7 +246,7 @@ ERROR: node is still EOpNull!
0:53 Branch: Return with expression
0:53 Constant:
0:53 0.000000
0:65 Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:65 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:57 Function Parameters:
0:57 'inF0' (in 1-component vector of float)
0:57 'inF1' (in 1-component vector of float)
@ -264,7 +258,7 @@ ERROR: node is still EOpNull!
0:62 Branch: Return with expression
0:62 Constant:
0:62 0.000000
0:112 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:112 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:66 Function Parameters:
0:66 'inF0' (in 2-component vector of float)
0:66 'inF1' (in 2-component vector of float)
@ -307,8 +301,6 @@ ERROR: node is still EOpNull!
0:85 0.000000
0:86 Constant:
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
@ -349,7 +341,7 @@ ERROR: node is still EOpNull!
0:? Constant:
0:? 1.000000
0:? 2.000000
0:157 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:157 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:113 Function Parameters:
0:113 'inF0' (in 3-component vector of float)
0:113 'inF1' (in 3-component vector of float)
@ -388,8 +380,6 @@ ERROR: node is still EOpNull!
0:130 0.000000
0:131 Constant:
0:131 0.000000
0:132 Constant:
0:132 0.000000
0:133 Constant:
0:133 0.000000
0:134 Constant:
@ -431,7 +421,7 @@ ERROR: node is still EOpNull!
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:158 Function Parameters:
0:158 'inF0' (in 4-component vector of float)
0:158 'inF1' (in 4-component vector of float)
@ -470,8 +460,6 @@ ERROR: node is still EOpNull!
0:175 0.000000
0:176 Constant:
0:176 0.000000
0:177 Constant:
0:177 0.000000
0:178 Constant:
0:178 0.000000
0:179 Constant:
@ -523,7 +511,7 @@ Linked compute stage:
Shader version: 450
local_size = (1, 1, 1)
ERROR: node is still EOpNull!
0:56 Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
0:56 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
@ -568,8 +556,6 @@ ERROR: node is still EOpNull!
0:24 0.000000
0:25 Constant:
0:25 0.000000
0:26 Constant:
0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
@ -619,7 +605,7 @@ ERROR: node is still EOpNull!
0:53 Branch: Return with expression
0:53 Constant:
0:53 0.000000
0:65 Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:65 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:57 Function Parameters:
0:57 'inF0' (in 1-component vector of float)
0:57 'inF1' (in 1-component vector of float)
@ -631,7 +617,7 @@ ERROR: node is still EOpNull!
0:62 Branch: Return with expression
0:62 Constant:
0:62 0.000000
0:112 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:112 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:66 Function Parameters:
0:66 'inF0' (in 2-component vector of float)
0:66 'inF1' (in 2-component vector of float)
@ -674,8 +660,6 @@ ERROR: node is still EOpNull!
0:85 0.000000
0:86 Constant:
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
@ -716,7 +700,7 @@ ERROR: node is still EOpNull!
0:? Constant:
0:? 1.000000
0:? 2.000000
0:157 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:157 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:113 Function Parameters:
0:113 'inF0' (in 3-component vector of float)
0:113 'inF1' (in 3-component vector of float)
@ -755,8 +739,6 @@ ERROR: node is still EOpNull!
0:130 0.000000
0:131 Constant:
0:131 0.000000
0:132 Constant:
0:132 0.000000
0:133 Constant:
0:133 0.000000
0:134 Constant:
@ -798,7 +780,7 @@ ERROR: node is still EOpNull!
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:158 Function Parameters:
0:158 'inF0' (in 4-component vector of float)
0:158 'inF1' (in 4-component vector of float)
@ -837,8 +819,6 @@ ERROR: node is still EOpNull!
0:175 0.000000
0:176 Constant:
0:176 0.000000
0:177 Constant:
0:177 0.000000
0:178 Constant:
0:178 0.000000
0:179 Constant:

View File

@ -8,7 +8,6 @@ ERROR: 0:10: 'determinant' : no matching overloaded function found
ERROR: 0:12: 'f16tof32' : no matching overloaded function found
ERROR: 0:13: 'firstbithigh' : no matching overloaded function found
ERROR: 0:14: 'firstbitlow' : no matching overloaded function found
ERROR: 0:15: 'fma' : no matching overloaded function found
ERROR: 0:23: 'length' : no matching overloaded function found
ERROR: 0:24: 'msad4' : no matching overloaded function found
ERROR: 0:25: 'normalize' : no matching overloaded function found
@ -27,7 +26,6 @@ ERROR: 0:51: 'determinant' : no matching overloaded function found
ERROR: 0:52: 'f16tof32' : no matching overloaded function found
ERROR: 0:53: 'firstbithigh' : no matching overloaded function found
ERROR: 0:54: 'firstbitlow' : no matching overloaded function found
ERROR: 0:55: 'fma' : no matching overloaded function found
ERROR: 0:56: 'reversebits' : no matching overloaded function found
ERROR: 0:57: 'transpose' : no matching overloaded function found
ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found
@ -37,7 +35,6 @@ ERROR: 0:67: 'determinant' : no matching overloaded function found
ERROR: 0:68: 'f16tof32' : no matching overloaded function found
ERROR: 0:69: 'firstbithigh' : no matching overloaded function found
ERROR: 0:70: 'firstbitlow' : no matching overloaded function found
ERROR: 0:71: 'fma' : no matching overloaded function found
ERROR: 0:72: 'reversebits' : no matching overloaded function found
ERROR: 0:73: 'transpose' : no matching overloaded function found
ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found
@ -47,58 +44,54 @@ ERROR: 0:84: 'determinant' : no matching overloaded function found
ERROR: 0:85: 'f16tof32' : no matching overloaded function found
ERROR: 0:86: 'firstbithigh' : no matching overloaded function found
ERROR: 0:87: 'firstbitlow' : no matching overloaded function found
ERROR: 0:88: 'fma' : no matching overloaded function found
ERROR: 0:89: 'reversebits' : no matching overloaded function found
ERROR: 0:90: 'transpose' : no matching overloaded function found
ERROR: 0:118: 'countbits' : no matching overloaded function found
ERROR: 0:118: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:118: 'cross' : no matching overloaded function found
ERROR: 0:118: 'f16tof32' : no matching overloaded function found
ERROR: 0:118: 'firstbithigh' : no matching overloaded function found
ERROR: 0:118: 'firstbitlow' : no matching overloaded function found
ERROR: 0:118: 'fma' : no matching overloaded function found
ERROR: 0:118: 'reversebits' : no matching overloaded function found
ERROR: 0:118: 'length' : no matching overloaded function found
ERROR: 0:118: 'noise' : no matching overloaded function found
ERROR: 0:118: 'normalize' : no matching overloaded function found
ERROR: 0:118: 'reflect' : no matching overloaded function found
ERROR: 0:118: 'refract' : no matching overloaded function found
ERROR: 0:118: 'reversebits' : no matching overloaded function found
ERROR: 0:126: 'countbits' : no matching overloaded function found
ERROR: 0:126: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:126: 'cross' : no matching overloaded function found
ERROR: 0:126: 'f16tof32' : no matching overloaded function found
ERROR: 0:126: 'firstbithigh' : no matching overloaded function found
ERROR: 0:126: 'firstbitlow' : no matching overloaded function found
ERROR: 0:126: 'fma' : no matching overloaded function found
ERROR: 0:126: 'reversebits' : no matching overloaded function found
ERROR: 0:126: 'length' : no matching overloaded function found
ERROR: 0:126: 'noise' : no matching overloaded function found
ERROR: 0:126: 'normalize' : no matching overloaded function found
ERROR: 0:126: 'reflect' : no matching overloaded function found
ERROR: 0:126: 'refract' : no matching overloaded function found
ERROR: 0:126: 'reversebits' : no matching overloaded function found
ERROR: 0:134: 'countbits' : no matching overloaded function found
ERROR: 0:134: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:134: 'cross' : no matching overloaded function found
ERROR: 0:134: 'f16tof32' : no matching overloaded function found
ERROR: 0:134: 'firstbithigh' : no matching overloaded function found
ERROR: 0:134: 'firstbitlow' : no matching overloaded function found
ERROR: 0:134: 'fma' : no matching overloaded function found
ERROR: 0:134: 'reversebits' : no matching overloaded function found
ERROR: 0:134: 'length' : no matching overloaded function found
ERROR: 0:134: 'noise' : no matching overloaded function found
ERROR: 0:134: 'normalize' : no matching overloaded function found
ERROR: 0:134: 'reflect' : no matching overloaded function found
ERROR: 0:134: 'refract' : no matching overloaded function found
ERROR: 0:134: 'reversebits' : no matching overloaded function found
ERROR: 93 compilation errors. No code generated.
ERROR: 0:117: 'countbits' : no matching overloaded function found
ERROR: 0:117: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:117: 'cross' : no matching overloaded function found
ERROR: 0:117: 'f16tof32' : no matching overloaded function found
ERROR: 0:117: 'firstbithigh' : no matching overloaded function found
ERROR: 0:117: 'firstbitlow' : no matching overloaded function found
ERROR: 0:117: 'reversebits' : no matching overloaded function found
ERROR: 0:117: 'length' : no matching overloaded function found
ERROR: 0:117: 'noise' : no matching overloaded function found
ERROR: 0:117: 'normalize' : no matching overloaded function found
ERROR: 0:117: 'reflect' : no matching overloaded function found
ERROR: 0:117: 'refract' : no matching overloaded function found
ERROR: 0:117: 'reversebits' : no matching overloaded function found
ERROR: 0:125: 'countbits' : no matching overloaded function found
ERROR: 0:125: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:125: 'cross' : no matching overloaded function found
ERROR: 0:125: 'f16tof32' : no matching overloaded function found
ERROR: 0:125: 'firstbithigh' : no matching overloaded function found
ERROR: 0:125: 'firstbitlow' : no matching overloaded function found
ERROR: 0:125: 'reversebits' : no matching overloaded function found
ERROR: 0:125: 'length' : no matching overloaded function found
ERROR: 0:125: 'noise' : no matching overloaded function found
ERROR: 0:125: 'normalize' : no matching overloaded function found
ERROR: 0:125: 'reflect' : no matching overloaded function found
ERROR: 0:125: 'refract' : no matching overloaded function found
ERROR: 0:125: 'reversebits' : no matching overloaded function found
ERROR: 0:133: 'countbits' : no matching overloaded function found
ERROR: 0:133: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:133: 'cross' : no matching overloaded function found
ERROR: 0:133: 'f16tof32' : no matching overloaded function found
ERROR: 0:133: 'firstbithigh' : no matching overloaded function found
ERROR: 0:133: 'firstbitlow' : no matching overloaded function found
ERROR: 0:133: 'reversebits' : no matching overloaded function found
ERROR: 0:133: 'length' : no matching overloaded function found
ERROR: 0:133: 'noise' : no matching overloaded function found
ERROR: 0:133: 'normalize' : no matching overloaded function found
ERROR: 0:133: 'reflect' : no matching overloaded function found
ERROR: 0:133: 'refract' : no matching overloaded function found
ERROR: 0:133: 'reversebits' : no matching overloaded function found
ERROR: 86 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:35 Function Definition: PixelShaderFunction(f1;f1;f1;i1; (temp float)
0:35 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
@ -123,8 +116,6 @@ ERROR: node is still EOpNull!
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:23 Constant:
0:23 0.000000
0:24 Constant:
@ -144,7 +135,7 @@ ERROR: node is still EOpNull!
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
0:44 Function Definition: PixelShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:44 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:36 Function Parameters:
0:36 'inF0' (in 1-component vector of float)
0:36 'inF1' (in 1-component vector of float)
@ -156,7 +147,7 @@ ERROR: node is still EOpNull!
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
0:62 Function Definition: PixelShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:62 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 2-component vector of float)
0:45 'inF1' (in 2-component vector of float)
@ -181,8 +172,6 @@ ERROR: node is still EOpNull!
0:53 0.000000
0:54 Constant:
0:54 0.000000
0:55 Constant:
0:55 0.000000
0:56 Constant:
0:56 0.000000
0:57 Constant:
@ -191,7 +180,7 @@ ERROR: node is still EOpNull!
0:? Constant:
0:? 1.000000
0:? 2.000000
0:79 Function Definition: PixelShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:79 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:63 Function Parameters:
0:63 'inF0' (in 3-component vector of float)
0:63 'inF1' (in 3-component vector of float)
@ -212,8 +201,6 @@ ERROR: node is still EOpNull!
0:69 0.000000
0:70 Constant:
0:70 0.000000
0:71 Constant:
0:71 0.000000
0:72 Constant:
0:72 0.000000
0:73 Constant:
@ -223,7 +210,7 @@ ERROR: node is still EOpNull!
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:115 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:114 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:80 Function Parameters:
0:80 'inF0' (in 4-component vector of float)
0:80 'inF1' (in 4-component vector of float)
@ -244,8 +231,6 @@ ERROR: node is still EOpNull!
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
0:89 0.000000
0:90 Constant:
@ -256,81 +241,77 @@ ERROR: node is still EOpNull!
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:123 Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
0:116 Function Parameters:
0:116 'inF0' (in 2X2 matrix of float)
0:116 'inF1' (in 2X2 matrix of float)
0:116 'inF2' (in 2X2 matrix of float)
0:122 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:115 Function Parameters:
0:115 'inF0' (in 2X2 matrix of float)
0:115 'inF1' (in 2X2 matrix of float)
0:115 'inF2' (in 2X2 matrix of float)
0:? Sequence
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:120 Branch: Return with expression
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:119 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:131 Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
0:124 Function Parameters:
0:124 'inF0' (in 3X3 matrix of float)
0:124 'inF1' (in 3X3 matrix of float)
0:124 'inF2' (in 3X3 matrix of float)
0:130 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:123 Function Parameters:
0:123 'inF0' (in 3X3 matrix of float)
0:123 'inF1' (in 3X3 matrix of float)
0:123 'inF2' (in 3X3 matrix of float)
0:? Sequence
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:128 Branch: Return with expression
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:127 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@ -341,41 +322,39 @@ ERROR: node is still EOpNull!
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:138 Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
0:132 Function Parameters:
0:132 'inF0' (in 4X4 matrix of float)
0:132 'inF1' (in 4X4 matrix of float)
0:132 'inF2' (in 4X4 matrix of float)
0:137 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:131 Function Parameters:
0:131 'inF0' (in 4X4 matrix of float)
0:131 'inF1' (in 4X4 matrix of float)
0:131 'inF2' (in 4X4 matrix of float)
0:? Sequence
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:136 Branch: Return with expression
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:135 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@ -402,7 +381,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:35 Function Definition: PixelShaderFunction(f1;f1;f1;i1; (temp float)
0:35 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
@ -427,8 +406,6 @@ ERROR: node is still EOpNull!
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:23 Constant:
0:23 0.000000
0:24 Constant:
@ -448,7 +425,7 @@ ERROR: node is still EOpNull!
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
0:44 Function Definition: PixelShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
0:44 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:36 Function Parameters:
0:36 'inF0' (in 1-component vector of float)
0:36 'inF1' (in 1-component vector of float)
@ -460,7 +437,7 @@ ERROR: node is still EOpNull!
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
0:62 Function Definition: PixelShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
0:62 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 2-component vector of float)
0:45 'inF1' (in 2-component vector of float)
@ -485,8 +462,6 @@ ERROR: node is still EOpNull!
0:53 0.000000
0:54 Constant:
0:54 0.000000
0:55 Constant:
0:55 0.000000
0:56 Constant:
0:56 0.000000
0:57 Constant:
@ -495,7 +470,7 @@ ERROR: node is still EOpNull!
0:? Constant:
0:? 1.000000
0:? 2.000000
0:79 Function Definition: PixelShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
0:79 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:63 Function Parameters:
0:63 'inF0' (in 3-component vector of float)
0:63 'inF1' (in 3-component vector of float)
@ -516,8 +491,6 @@ ERROR: node is still EOpNull!
0:69 0.000000
0:70 Constant:
0:70 0.000000
0:71 Constant:
0:71 0.000000
0:72 Constant:
0:72 0.000000
0:73 Constant:
@ -527,7 +500,7 @@ ERROR: node is still EOpNull!
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:115 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
0:114 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:80 Function Parameters:
0:80 'inF0' (in 4-component vector of float)
0:80 'inF1' (in 4-component vector of float)
@ -548,8 +521,6 @@ ERROR: node is still EOpNull!
0:86 0.000000
0:87 Constant:
0:87 0.000000
0:88 Constant:
0:88 0.000000
0:89 Constant:
0:89 0.000000
0:90 Constant:
@ -560,81 +531,77 @@ ERROR: node is still EOpNull!
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:123 Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
0:116 Function Parameters:
0:116 'inF0' (in 2X2 matrix of float)
0:116 'inF1' (in 2X2 matrix of float)
0:116 'inF2' (in 2X2 matrix of float)
0:122 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:115 Function Parameters:
0:115 'inF0' (in 2X2 matrix of float)
0:115 'inF1' (in 2X2 matrix of float)
0:115 'inF2' (in 2X2 matrix of float)
0:? Sequence
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:118 Constant:
0:118 0.000000
0:120 Branch: Return with expression
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:117 Constant:
0:117 0.000000
0:119 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:131 Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
0:124 Function Parameters:
0:124 'inF0' (in 3X3 matrix of float)
0:124 'inF1' (in 3X3 matrix of float)
0:124 'inF2' (in 3X3 matrix of float)
0:130 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:123 Function Parameters:
0:123 'inF0' (in 3X3 matrix of float)
0:123 'inF1' (in 3X3 matrix of float)
0:123 'inF2' (in 3X3 matrix of float)
0:? Sequence
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:126 Constant:
0:126 0.000000
0:128 Branch: Return with expression
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:125 Constant:
0:125 0.000000
0:127 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@ -645,41 +612,39 @@ ERROR: node is still EOpNull!
0:? 3.000000
0:? 3.000000
0:? 3.000000
0:138 Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
0:132 Function Parameters:
0:132 'inF0' (in 4X4 matrix of float)
0:132 'inF1' (in 4X4 matrix of float)
0:132 'inF2' (in 4X4 matrix of float)
0:137 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:131 Function Parameters:
0:131 'inF0' (in 4X4 matrix of float)
0:131 'inF1' (in 4X4 matrix of float)
0:131 'inF2' (in 4X4 matrix of float)
0:? Sequence
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:134 Constant:
0:134 0.000000
0:136 Branch: Return with expression
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:133 Constant:
0:133 0.000000
0:135 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,21 +2,22 @@ hlsl.matType.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (temp 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (global 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:11 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'fmat11' (temp 1X1 matrix of float)
0:? 'fmat41' (temp 1X4 matrix of float)
0:? 'fmat12' (temp 2X1 matrix of float)
0:? 'dmat23' (temp 3X2 matrix of double)
0:? 'int44' (temp 4X4 matrix of int)
0:? 'f1' (global 1-component vector of float)
0:? 'fmat11' (global 1X1 matrix of float)
0:? 'fmat41' (global 1X4 matrix of float)
0:? 'fmat12' (global 2X1 matrix of float)
0:? 'dmat23' (global 3X2 matrix of double)
0:? 'int44' (global 4X4 matrix of int)
Linked fragment stage:
@ -25,25 +26,26 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (temp 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:11 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 1-component vector of float)
0:1 'f1' (global 1-component vector of float)
0:1 Constant:
0:1 1.000000
0:11 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (in float)
0:? Linker Objects
0:? 'f1' (temp 1-component vector of float)
0:? 'fmat11' (temp 1X1 matrix of float)
0:? 'fmat41' (temp 1X4 matrix of float)
0:? 'fmat12' (temp 2X1 matrix of float)
0:? 'dmat23' (temp 3X2 matrix of double)
0:? 'int44' (temp 4X4 matrix of int)
0:? 'f1' (global 1-component vector of float)
0:? 'fmat11' (global 1X1 matrix of float)
0:? 'fmat41' (global 1X4 matrix of float)
0:? 'fmat12' (global 2X1 matrix of float)
0:? 'dmat23' (global 3X2 matrix of double)
0:? 'int44' (global 4X4 matrix of int)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 36
// Id's are bound by 38
Capability Shader
Capability Float64
@ -57,45 +59,48 @@ gl_FragCoord origin is upper left
Name 9 "inFloat1"
Name 10 "inScalar"
Name 14 "f1"
Name 18 "fmat11"
Name 22 "fmat41"
Name 25 "fmat12"
Name 30 "dmat23"
Name 35 "int44"
Name 20 "fmat11"
Name 24 "fmat41"
Name 27 "fmat12"
Name 32 "dmat23"
Name 37 "int44"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
8: TypeFunction 6(float) 7(ptr) 7(ptr)
15: TypeVector 6(float) 1
16: TypeMatrix 15(fvec) 1
17: TypePointer Function 16
19: TypeVector 6(float) 4
20: TypeMatrix 19(fvec4) 1
21: TypePointer Function 20
23: TypeMatrix 15(fvec) 2
24: TypePointer Function 23
26: TypeFloat 64
27: TypeVector 26(float) 2
28: TypeMatrix 27(fvec2) 3
29: TypePointer Function 28
31: TypeInt 32 1
32: TypeVector 31(int) 4
33: TypeMatrix 32(ivec4) 4
34: TypePointer Function 33
13: TypePointer Private 6(float)
14(f1): 13(ptr) Variable Private
15: 6(float) Constant 1065353216
17: TypeVector 6(float) 1
18: TypeMatrix 17(fvec) 1
19: TypePointer Private 18
20(fmat11): 19(ptr) Variable Private
21: TypeVector 6(float) 4
22: TypeMatrix 21(fvec4) 1
23: TypePointer Private 22
24(fmat41): 23(ptr) Variable Private
25: TypeMatrix 17(fvec) 2
26: TypePointer Private 25
27(fmat12): 26(ptr) Variable Private
28: TypeFloat 64
29: TypeVector 28(float) 2
30: TypeMatrix 29(fvec2) 3
31: TypePointer Private 30
32(dmat23): 31(ptr) Variable Private
33: TypeInt 32 1
34: TypeVector 33(int) 4
35: TypeMatrix 34(ivec4) 4
36: TypePointer Private 35
37(int44): 36(ptr) Variable Private
4(PixelShaderFunction): 2 Function None 3
5: Label
Store 14(f1) 15
FunctionEnd
11(ShaderFunction(vf1;f1;): 6(float) Function None 8
9(inFloat1): 7(ptr) FunctionParameter
10(inScalar): 7(ptr) FunctionParameter
12: Label
14(f1): 7(ptr) Variable Function
18(fmat11): 17(ptr) Variable Function
22(fmat41): 21(ptr) Variable Function
25(fmat12): 24(ptr) Variable Function
30(dmat23): 29(ptr) Variable Function
35(int44): 34(ptr) Variable Function
13: 6(float) Undef
ReturnValue 13
16: 6(float) Undef
ReturnValue 16
FunctionEnd

View File

@ -2,7 +2,7 @@ hlsl.max.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
0:5 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input1' (in 4-component vector of float)
0:2 'input2' (in 4-component vector of float)
@ -20,7 +20,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
0:5 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input1' (in 4-component vector of float)
0:2 'input2' (in 4-component vector of float)

View File

@ -2,7 +2,7 @@ hlsl.precedence.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:7 Function Parameters:
0:7 'a1' (in 4-component vector of float)
0:7 'a2' (in 4-component vector of float)
@ -26,7 +26,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:7 Function Parameters:
0:7 'a1' (in 4-component vector of float)
0:7 'a2' (in 4-component vector of float)

View File

@ -2,7 +2,7 @@ hlsl.precedence2.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
0:7 Function Parameters:
0:7 'a1' (in int)
0:7 'a2' (in int)
@ -34,7 +34,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
0:7 Function Parameters:
0:7 'a1' (in int)
0:7 'a2' (in int)

View File

@ -2,7 +2,7 @@ hlsl.scope.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:31 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:31 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -46,7 +46,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:31 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:31 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence

View File

@ -2,7 +2,7 @@ hlsl.sin.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -18,7 +18,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence

View File

@ -2,7 +2,7 @@ hlsl.struct.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:40 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:31 Function Parameters:
0:31 'input' (in 4-component vector of float)
0:? Sequence
@ -11,19 +11,19 @@ gl_FragCoord origin is upper left
0:36 's3' (temp structure{temp 3-component vector of bool b3})
0:37 move second child to first child (temp 4-component vector of float)
0:37 i: direct index for structure (temp 4-component vector of float)
0:37 's2' (temp structure{temp 4-component vector of float i})
0:37 's2' (global structure{temp 4-component vector of float i})
0:37 Constant:
0:37 0 (const int)
0:37 ff4: direct index for structure (temp 4-component vector of float FragCoord)
0:37 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37 Constant:
0:37 7 (const int)
0:39 Branch: Return with expression
0:39 'input' (in 4-component vector of float)
0:? Linker Objects
0:? 's1' (temp structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (temp structure{temp 4-component vector of float i})
0:? 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (global structure{temp 4-component vector of float i})
0:? 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
Linked fragment stage:
@ -32,7 +32,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:40 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:31 Function Parameters:
0:31 'input' (in 4-component vector of float)
0:? Sequence
@ -41,19 +41,19 @@ gl_FragCoord origin is upper left
0:36 's3' (temp structure{temp 3-component vector of bool b3})
0:37 move second child to first child (temp 4-component vector of float)
0:37 i: direct index for structure (temp 4-component vector of float)
0:37 's2' (temp structure{temp 4-component vector of float i})
0:37 's2' (global structure{temp 4-component vector of float i})
0:37 Constant:
0:37 0 (const int)
0:37 ff4: direct index for structure (temp 4-component vector of float FragCoord)
0:37 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37 Constant:
0:37 7 (const int)
0:39 Branch: Return with expression
0:39 'input' (in 4-component vector of float)
0:? Linker Objects
0:? 's1' (temp structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (temp structure{temp 4-component vector of float i})
0:? 's4' (temp structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (global structure{temp 4-component vector of float i})
0:? 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
// Module Version 10000
// Generated by (magic number): 80001
@ -100,24 +100,24 @@ gl_FragCoord origin is upper left
17: TypeFloat 32
18: TypeVector 17(float) 4
19: TypeStruct 18(fvec4)
20: TypePointer Function 19(struct)
20: TypePointer Private 19(struct)
21(s2): 20(ptr) Variable Private
22: TypeInt 32 1
23: 22(int) Constant 0
24: TypeVector 17(float) 2
25: TypeStruct 18(fvec4) 6(bool) 17(float) 24(fvec2) 6(bool) 6(bool) 6(bool) 18(fvec4)
26: TypePointer Function 25(struct)
26: TypePointer Private 25(struct)
27(s4): 26(ptr) Variable Private
28: 22(int) Constant 7
29: TypePointer Function 18(fvec4)
29: TypePointer Private 18(fvec4)
33: TypePointer Input 18(fvec4)
34(input): 33(ptr) Variable Input
37(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
38: TypePointer Function 37(myS)
38: TypePointer Private 37(myS)
39(s1): 38(ptr) Variable Private
4(PixelShaderFunction): 2 Function None 3
5: Label
10(s3): 9(ptr) Variable Function
21(s2): 20(ptr) Variable Function
27(s4): 26(ptr) Variable Function
39(s1): 38(ptr) Variable Function
11: 8(FS) Load 10(s3)
12: 8(FS) Load 10(s3)
13: 7(bvec3) CompositeExtract 11 0

View File

@ -0,0 +1,376 @@
hlsl.switch.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:56 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:2 'c' (in int)
0:2 'd' (in int)
0:? Sequence
0:3 'c' (in int)
0:7 switch
0:7 condition
0:7 'c' (in int)
0:7 body
0:7 Sequence
0:9 default:
0:7 Sequence
0:7 Branch: Break
0:12 switch
0:12 condition
0:12 'c' (in int)
0:12 body
0:12 Sequence
0:13 case: with expression
0:13 Constant:
0:13 1 (const int)
0:? Sequence
0:14 Pre-Increment (temp 4-component vector of float)
0:14 'input' (in 4-component vector of float)
0:15 Branch: Break
0:16 case: with expression
0:16 Constant:
0:16 2 (const int)
0:? Sequence
0:17 Pre-Decrement (temp 4-component vector of float)
0:17 'input' (in 4-component vector of float)
0:18 Branch: Break
0:21 switch
0:21 condition
0:21 'c' (in int)
0:21 body
0:21 Sequence
0:22 case: with expression
0:22 Constant:
0:22 1 (const int)
0:? Sequence
0:23 Pre-Increment (temp 4-component vector of float)
0:23 'input' (in 4-component vector of float)
0:24 Branch: Break
0:25 case: with expression
0:25 Constant:
0:25 2 (const int)
0:? Sequence
0:26 switch
0:26 condition
0:26 'd' (in int)
0:26 body
0:26 Sequence
0:27 case: with expression
0:27 Constant:
0:27 2 (const int)
0:? Sequence
0:28 add second child into first child (temp 4-component vector of float)
0:28 'input' (in 4-component vector of float)
0:28 Constant:
0:28 2.000000
0:29 Branch: Break
0:30 case: with expression
0:30 Constant:
0:30 3 (const int)
0:? Sequence
0:31 add second child into first child (temp 4-component vector of float)
0:31 'input' (in 4-component vector of float)
0:31 Constant:
0:31 3.000000
0:32 Branch: Break
0:34 Branch: Break
0:35 default:
0:? Sequence
0:36 add second child into first child (temp 4-component vector of float)
0:36 'input' (in 4-component vector of float)
0:36 Constant:
0:36 4.000000
0:39 switch
0:39 condition
0:39 'c' (in int)
0:39 body
0:39 Sequence
0:40 case: with expression
0:40 Constant:
0:40 1 (const int)
0:39 Sequence
0:39 Branch: Break
0:43 switch
0:43 condition
0:43 'c' (in int)
0:43 body
0:43 Sequence
0:44 case: with expression
0:44 Constant:
0:44 1 (const int)
0:45 case: with expression
0:45 Constant:
0:45 2 (const int)
0:46 case: with expression
0:46 Constant:
0:46 3 (const int)
0:? Sequence
0:47 Pre-Increment (temp 4-component vector of float)
0:47 'input' (in 4-component vector of float)
0:48 Branch: Break
0:49 case: with expression
0:49 Constant:
0:49 4 (const int)
0:50 case: with expression
0:50 Constant:
0:50 5 (const int)
0:? Sequence
0:51 Pre-Decrement (temp 4-component vector of float)
0:51 'input' (in 4-component vector of float)
0:54 Branch: Return with expression
0:54 'input' (in 4-component vector of float)
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:56 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:2 'c' (in int)
0:2 'd' (in int)
0:? Sequence
0:3 'c' (in int)
0:7 switch
0:7 condition
0:7 'c' (in int)
0:7 body
0:7 Sequence
0:9 default:
0:7 Sequence
0:7 Branch: Break
0:12 switch
0:12 condition
0:12 'c' (in int)
0:12 body
0:12 Sequence
0:13 case: with expression
0:13 Constant:
0:13 1 (const int)
0:? Sequence
0:14 Pre-Increment (temp 4-component vector of float)
0:14 'input' (in 4-component vector of float)
0:15 Branch: Break
0:16 case: with expression
0:16 Constant:
0:16 2 (const int)
0:? Sequence
0:17 Pre-Decrement (temp 4-component vector of float)
0:17 'input' (in 4-component vector of float)
0:18 Branch: Break
0:21 switch
0:21 condition
0:21 'c' (in int)
0:21 body
0:21 Sequence
0:22 case: with expression
0:22 Constant:
0:22 1 (const int)
0:? Sequence
0:23 Pre-Increment (temp 4-component vector of float)
0:23 'input' (in 4-component vector of float)
0:24 Branch: Break
0:25 case: with expression
0:25 Constant:
0:25 2 (const int)
0:? Sequence
0:26 switch
0:26 condition
0:26 'd' (in int)
0:26 body
0:26 Sequence
0:27 case: with expression
0:27 Constant:
0:27 2 (const int)
0:? Sequence
0:28 add second child into first child (temp 4-component vector of float)
0:28 'input' (in 4-component vector of float)
0:28 Constant:
0:28 2.000000
0:29 Branch: Break
0:30 case: with expression
0:30 Constant:
0:30 3 (const int)
0:? Sequence
0:31 add second child into first child (temp 4-component vector of float)
0:31 'input' (in 4-component vector of float)
0:31 Constant:
0:31 3.000000
0:32 Branch: Break
0:34 Branch: Break
0:35 default:
0:? Sequence
0:36 add second child into first child (temp 4-component vector of float)
0:36 'input' (in 4-component vector of float)
0:36 Constant:
0:36 4.000000
0:39 switch
0:39 condition
0:39 'c' (in int)
0:39 body
0:39 Sequence
0:40 case: with expression
0:40 Constant:
0:40 1 (const int)
0:39 Sequence
0:39 Branch: Break
0:43 switch
0:43 condition
0:43 'c' (in int)
0:43 body
0:43 Sequence
0:44 case: with expression
0:44 Constant:
0:44 1 (const int)
0:45 case: with expression
0:45 Constant:
0:45 2 (const int)
0:46 case: with expression
0:46 Constant:
0:46 3 (const int)
0:? Sequence
0:47 Pre-Increment (temp 4-component vector of float)
0:47 'input' (in 4-component vector of float)
0:48 Branch: Break
0:49 case: with expression
0:49 Constant:
0:49 4 (const int)
0:50 case: with expression
0:50 Constant:
0:50 5 (const int)
0:? Sequence
0:51 Pre-Decrement (temp 4-component vector of float)
0:51 'input' (in 4-component vector of float)
0:54 Branch: Return with expression
0:54 'input' (in 4-component vector of float)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 82
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 8 21 41
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "c"
Name 21 "input"
Name 41 "d"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Input 6(int)
8(c): 7(ptr) Variable Input
18: TypeFloat 32
19: TypeVector 18(float) 4
20: TypePointer Input 19(fvec4)
21(input): 20(ptr) Variable Input
23: 18(float) Constant 1065353216
41(d): 7(ptr) Variable Input
46: 18(float) Constant 1073741824
51: 18(float) Constant 1077936128
58: 18(float) Constant 1082130432
4(PixelShaderFunction): 2 Function None 3
5: Label
9: 6(int) Load 8(c)
SelectionMerge 11 None
Switch 9 10
10: Label
Branch 11
11: Label
14: 6(int) Load 8(c)
SelectionMerge 17 None
Switch 14 17
case 1: 15
case 2: 16
15: Label
22: 19(fvec4) Load 21(input)
24: 19(fvec4) CompositeConstruct 23 23 23 23
25: 19(fvec4) FAdd 22 24
Store 21(input) 25
Branch 17
16: Label
27: 19(fvec4) Load 21(input)
28: 19(fvec4) CompositeConstruct 23 23 23 23
29: 19(fvec4) FSub 27 28
Store 21(input) 29
Branch 17
17: Label
32: 6(int) Load 8(c)
SelectionMerge 36 None
Switch 32 35
case 1: 33
case 2: 34
35: Label
59: 19(fvec4) Load 21(input)
60: 19(fvec4) CompositeConstruct 58 58 58 58
61: 19(fvec4) FAdd 59 60
Store 21(input) 61
Branch 36
33: Label
37: 19(fvec4) Load 21(input)
38: 19(fvec4) CompositeConstruct 23 23 23 23
39: 19(fvec4) FAdd 37 38
Store 21(input) 39
Branch 36
34: Label
42: 6(int) Load 41(d)
SelectionMerge 45 None
Switch 42 45
case 2: 43
case 3: 44
43: Label
47: 19(fvec4) Load 21(input)
48: 19(fvec4) CompositeConstruct 46 46 46 46
49: 19(fvec4) FAdd 47 48
Store 21(input) 49
Branch 45
44: Label
52: 19(fvec4) Load 21(input)
53: 19(fvec4) CompositeConstruct 51 51 51 51
54: 19(fvec4) FAdd 52 53
Store 21(input) 54
Branch 45
45: Label
Branch 36
36: Label
63: 6(int) Load 8(c)
SelectionMerge 65 None
Switch 63 65
case 1: 64
64: Label
Branch 65
65: Label
68: 6(int) Load 8(c)
SelectionMerge 71 None
Switch 68 71
case 1: 69
case 2: 69
case 3: 69
case 4: 70
case 5: 70
69: Label
72: 19(fvec4) Load 21(input)
73: 19(fvec4) CompositeConstruct 23 23 23 23
74: 19(fvec4) FAdd 72 73
Store 21(input) 74
Branch 71
70: Label
76: 19(fvec4) Load 21(input)
77: 19(fvec4) CompositeConstruct 23 23 23 23
78: 19(fvec4) FSub 76 77
Store 21(input) 78
Branch 71
71: Label
80: 19(fvec4) Load 21(input)
ReturnValue 80
FunctionEnd

View File

@ -2,14 +2,15 @@ hlsl.swizzle.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (global 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:? Sequence
@ -28,11 +29,11 @@ gl_FragCoord origin is upper left
0:5 0 (const int)
0:5 Construct vec4 (temp 4-component vector of float)
0:5 direct index (temp float)
0:5 'AmbientColor' (temp 4-component vector of float)
0:5 'AmbientColor' (global 4-component vector of float)
0:5 Constant:
0:5 2 (const int)
0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'AmbientColor' (global 4-component vector of float)
Linked fragment stage:
@ -41,14 +42,15 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
0:1 Sequence
0:1 move second child to first child (temp 4-component vector of float)
0:1 'AmbientColor' (global 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.500000
0:? 0.000000
0:? 1.000000
0:7 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:? Sequence
@ -67,15 +69,15 @@ gl_FragCoord origin is upper left
0:5 0 (const int)
0:5 Construct vec4 (temp 4-component vector of float)
0:5 direct index (temp float)
0:5 'AmbientColor' (temp 4-component vector of float)
0:5 'AmbientColor' (global 4-component vector of float)
0:5 Constant:
0:5 2 (const int)
0:? Linker Objects
0:? 'AmbientColor' (temp 4-component vector of float)
0:? 'AmbientColor' (global 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 25
// Id's are bound by 30
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -86,28 +88,34 @@ gl_FragCoord origin is upper left
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
Name 15 "AmbientColor"
Name 14 "AmbientColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
16: TypeInt 32 0
17: 16(int) Constant 2
18: TypePointer Function 6(float)
13: TypePointer Private 7(fvec4)
14(AmbientColor): 13(ptr) Variable Private
15: 6(float) Constant 1065353216
16: 6(float) Constant 1056964608
17: 6(float) Constant 0
18: 7(fvec4) ConstantComposite 15 16 17 15
21: TypeInt 32 0
22: 21(int) Constant 2
23: TypePointer Private 6(float)
4(PixelShaderFunction): 2 Function None 3
5: Label
Store 14(AmbientColor) 18
FunctionEnd
11(ShaderFunction(vf4;): 7(fvec4) Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
15(AmbientColor): 8(ptr) Variable Function
13: 7(fvec4) Load 10(input)
14: 7(fvec4) VectorShuffle 13 13 3 3 1 0
19: 18(ptr) AccessChain 15(AmbientColor) 17
20: 6(float) Load 19
21: 7(fvec4) CompositeConstruct 20 20 20 20
22: 7(fvec4) FMul 14 21
ReturnValue 22
19: 7(fvec4) Load 10(input)
20: 7(fvec4) VectorShuffle 19 19 3 3 1 0
24: 23(ptr) AccessChain 14(AmbientColor) 22
25: 6(float) Load 24
26: 7(fvec4) CompositeConstruct 25 25 25 25
27: 7(fvec4) FMul 20 26
ReturnValue 27
FunctionEnd

View File

@ -0,0 +1,707 @@
hlsl.templatetypes.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: PixelShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 Sequence
0:4 move second child to first child (temp 4-component vector of float)
0:4 'r00' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:5 Sequence
0:5 move second child to first child (temp 4-component vector of float)
0:5 'r01' (temp 4-component vector of float)
0:? Constant:
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:7 Sequence
0:7 move second child to first child (temp 1-component vector of bool)
0:7 'r12' (temp 1-component vector of bool)
0:7 Constant:
0:7 false (const bool)
0:8 Sequence
0:8 move second child to first child (temp 1-component vector of int)
0:8 'r13' (temp 1-component vector of int)
0:8 Constant:
0:8 1 (const int)
0:9 Sequence
0:9 move second child to first child (temp 1-component vector of float)
0:9 'r14' (temp 1-component vector of float)
0:9 Constant:
0:9 1.000000
0:10 Sequence
0:10 move second child to first child (temp 1-component vector of double)
0:10 'r15' (temp 1-component vector of double)
0:10 Constant:
0:10 1.000000
0:11 Sequence
0:11 move second child to first child (temp 1-component vector of uint)
0:11 'r16' (temp 1-component vector of uint)
0:11 Constant:
0:11 1 (const uint)
0:13 Sequence
0:13 move second child to first child (temp 2-component vector of bool)
0:13 'r20' (temp 2-component vector of bool)
0:? Constant:
0:? false (const bool)
0:? true (const bool)
0:14 Sequence
0:14 move second child to first child (temp 2-component vector of int)
0:14 'r21' (temp 2-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:15 Sequence
0:15 move second child to first child (temp 2-component vector of float)
0:15 'r22' (temp 2-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:16 Sequence
0:16 move second child to first child (temp 2-component vector of double)
0:16 'r23' (temp 2-component vector of double)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:17 Sequence
0:17 move second child to first child (temp 2-component vector of uint)
0:17 'r24' (temp 2-component vector of uint)
0:? Constant:
0:? 1 (const uint)
0:? 2 (const uint)
0:19 Sequence
0:19 move second child to first child (temp 3-component vector of bool)
0:19 'r30' (temp 3-component vector of bool)
0:? Constant:
0:? false (const bool)
0:? true (const bool)
0:? true (const bool)
0:20 Sequence
0:20 move second child to first child (temp 3-component vector of int)
0:20 'r31' (temp 3-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
0:21 Sequence
0:21 move second child to first child (temp 3-component vector of float)
0:21 'r32' (temp 3-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:22 Sequence
0:22 move second child to first child (temp 3-component vector of double)
0:22 'r33' (temp 3-component vector of double)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:23 Sequence
0:23 move second child to first child (temp 3-component vector of uint)
0:23 'r34' (temp 3-component vector of uint)
0:? Constant:
0:? 1 (const uint)
0:? 2 (const uint)
0:? 3 (const uint)
0:25 Sequence
0:25 move second child to first child (temp 4-component vector of bool)
0:25 'r40' (temp 4-component vector of bool)
0:? Constant:
0:? false (const bool)
0:? true (const bool)
0:? true (const bool)
0:? false (const bool)
0:26 Sequence
0:26 move second child to first child (temp 4-component vector of int)
0:26 'r41' (temp 4-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
0:? 4 (const int)
0:27 Sequence
0:27 move second child to first child (temp 4-component vector of float)
0:27 'r42' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:28 Sequence
0:28 move second child to first child (temp 4-component vector of double)
0:28 'r43' (temp 4-component vector of double)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:29 Sequence
0:29 move second child to first child (temp 4-component vector of uint)
0:29 'r44' (temp 4-component vector of uint)
0:? Constant:
0:? 1 (const uint)
0:? 2 (const uint)
0:? 3 (const uint)
0:? 4 (const uint)
0:31 Sequence
0:31 move second child to first child (temp 4X4 matrix of float)
0:31 'r50' (temp 4X4 matrix of float)
0:? Constant:
0:? 0.000000
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:? 9.000000
0:? 10.000000
0:? 11.000000
0:? 12.000000
0:? 13.000000
0:? 14.000000
0:? 15.000000
0:32 Sequence
0:32 move second child to first child (temp 4X4 matrix of float)
0:32 'r51' (temp 4X4 matrix of float)
0:? Constant:
0:? 0.000000
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:? 9.000000
0:? 10.000000
0:? 11.000000
0:? 12.000000
0:? 13.000000
0:? 14.000000
0:? 15.000000
0:35 Sequence
0:35 move second child to first child (temp 3X2 matrix of float)
0:35 'r61' (temp 3X2 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:36 Sequence
0:36 move second child to first child (temp 2X3 matrix of float)
0:36 'r62' (temp 2X3 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:39 Sequence
0:39 move second child to first child (temp 2X4 matrix of float)
0:39 'r65' (temp 2X4 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:40 Sequence
0:40 move second child to first child (temp 3X4 matrix of float)
0:40 'r66' (temp 3X4 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:? 9.000000
0:? 10.000000
0:? 11.000000
0:? 12.000000
0:45 Branch: Return with expression
0:45 Constant:
0:45 0.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: PixelShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 Sequence
0:4 move second child to first child (temp 4-component vector of float)
0:4 'r00' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:5 Sequence
0:5 move second child to first child (temp 4-component vector of float)
0:5 'r01' (temp 4-component vector of float)
0:? Constant:
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:7 Sequence
0:7 move second child to first child (temp 1-component vector of bool)
0:7 'r12' (temp 1-component vector of bool)
0:7 Constant:
0:7 false (const bool)
0:8 Sequence
0:8 move second child to first child (temp 1-component vector of int)
0:8 'r13' (temp 1-component vector of int)
0:8 Constant:
0:8 1 (const int)
0:9 Sequence
0:9 move second child to first child (temp 1-component vector of float)
0:9 'r14' (temp 1-component vector of float)
0:9 Constant:
0:9 1.000000
0:10 Sequence
0:10 move second child to first child (temp 1-component vector of double)
0:10 'r15' (temp 1-component vector of double)
0:10 Constant:
0:10 1.000000
0:11 Sequence
0:11 move second child to first child (temp 1-component vector of uint)
0:11 'r16' (temp 1-component vector of uint)
0:11 Constant:
0:11 1 (const uint)
0:13 Sequence
0:13 move second child to first child (temp 2-component vector of bool)
0:13 'r20' (temp 2-component vector of bool)
0:? Constant:
0:? false (const bool)
0:? true (const bool)
0:14 Sequence
0:14 move second child to first child (temp 2-component vector of int)
0:14 'r21' (temp 2-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:15 Sequence
0:15 move second child to first child (temp 2-component vector of float)
0:15 'r22' (temp 2-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:16 Sequence
0:16 move second child to first child (temp 2-component vector of double)
0:16 'r23' (temp 2-component vector of double)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:17 Sequence
0:17 move second child to first child (temp 2-component vector of uint)
0:17 'r24' (temp 2-component vector of uint)
0:? Constant:
0:? 1 (const uint)
0:? 2 (const uint)
0:19 Sequence
0:19 move second child to first child (temp 3-component vector of bool)
0:19 'r30' (temp 3-component vector of bool)
0:? Constant:
0:? false (const bool)
0:? true (const bool)
0:? true (const bool)
0:20 Sequence
0:20 move second child to first child (temp 3-component vector of int)
0:20 'r31' (temp 3-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
0:21 Sequence
0:21 move second child to first child (temp 3-component vector of float)
0:21 'r32' (temp 3-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:22 Sequence
0:22 move second child to first child (temp 3-component vector of double)
0:22 'r33' (temp 3-component vector of double)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:23 Sequence
0:23 move second child to first child (temp 3-component vector of uint)
0:23 'r34' (temp 3-component vector of uint)
0:? Constant:
0:? 1 (const uint)
0:? 2 (const uint)
0:? 3 (const uint)
0:25 Sequence
0:25 move second child to first child (temp 4-component vector of bool)
0:25 'r40' (temp 4-component vector of bool)
0:? Constant:
0:? false (const bool)
0:? true (const bool)
0:? true (const bool)
0:? false (const bool)
0:26 Sequence
0:26 move second child to first child (temp 4-component vector of int)
0:26 'r41' (temp 4-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
0:? 4 (const int)
0:27 Sequence
0:27 move second child to first child (temp 4-component vector of float)
0:27 'r42' (temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:28 Sequence
0:28 move second child to first child (temp 4-component vector of double)
0:28 'r43' (temp 4-component vector of double)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:29 Sequence
0:29 move second child to first child (temp 4-component vector of uint)
0:29 'r44' (temp 4-component vector of uint)
0:? Constant:
0:? 1 (const uint)
0:? 2 (const uint)
0:? 3 (const uint)
0:? 4 (const uint)
0:31 Sequence
0:31 move second child to first child (temp 4X4 matrix of float)
0:31 'r50' (temp 4X4 matrix of float)
0:? Constant:
0:? 0.000000
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:? 9.000000
0:? 10.000000
0:? 11.000000
0:? 12.000000
0:? 13.000000
0:? 14.000000
0:? 15.000000
0:32 Sequence
0:32 move second child to first child (temp 4X4 matrix of float)
0:32 'r51' (temp 4X4 matrix of float)
0:? Constant:
0:? 0.000000
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:? 9.000000
0:? 10.000000
0:? 11.000000
0:? 12.000000
0:? 13.000000
0:? 14.000000
0:? 15.000000
0:35 Sequence
0:35 move second child to first child (temp 3X2 matrix of float)
0:35 'r61' (temp 3X2 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:36 Sequence
0:36 move second child to first child (temp 2X3 matrix of float)
0:36 'r62' (temp 2X3 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:39 Sequence
0:39 move second child to first child (temp 2X4 matrix of float)
0:39 'r65' (temp 2X4 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:40 Sequence
0:40 move second child to first child (temp 3X4 matrix of float)
0:40 'r66' (temp 3X4 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 8.000000
0:? 9.000000
0:? 10.000000
0:? 11.000000
0:? 12.000000
0:45 Branch: Return with expression
0:45 Constant:
0:45 0.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 145
Capability Shader
Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "r00"
Name 15 "r01"
Name 20 "r12"
Name 24 "r13"
Name 27 "r14"
Name 30 "r15"
Name 34 "r16"
Name 38 "r20"
Name 43 "r21"
Name 48 "r22"
Name 52 "r23"
Name 57 "r24"
Name 62 "r30"
Name 66 "r31"
Name 71 "r32"
Name 75 "r33"
Name 80 "r34"
Name 85 "r40"
Name 89 "r41"
Name 92 "r42"
Name 95 "r43"
Name 100 "r44"
Name 105 "r50"
Name 122 "r51"
Name 125 "r61"
Name 131 "r62"
Name 136 "r65"
Name 141 "r66"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: 6(float) Constant 1065353216
11: 6(float) Constant 1073741824
12: 6(float) Constant 1077936128
13: 6(float) Constant 1082130432
14: 7(fvec4) ConstantComposite 10 11 12 13
16: 6(float) Constant 1084227584
17: 7(fvec4) ConstantComposite 11 12 13 16
18: TypeBool
19: TypePointer Function 18(bool)
21: 18(bool) ConstantFalse
22: TypeInt 32 1
23: TypePointer Function 22(int)
25: 22(int) Constant 1
26: TypePointer Function 6(float)
28: TypeFloat 64
29: TypePointer Function 28(float)
31: 28(float) Constant 0 1072693248
32: TypeInt 32 0
33: TypePointer Function 32(int)
35: 32(int) Constant 1
36: TypeVector 18(bool) 2
37: TypePointer Function 36(bvec2)
39: 18(bool) ConstantTrue
40: 36(bvec2) ConstantComposite 21 39
41: TypeVector 22(int) 2
42: TypePointer Function 41(ivec2)
44: 22(int) Constant 2
45: 41(ivec2) ConstantComposite 25 44
46: TypeVector 6(float) 2
47: TypePointer Function 46(fvec2)
49: 46(fvec2) ConstantComposite 10 11
50: TypeVector 28(float) 2
51: TypePointer Function 50(fvec2)
53: 28(float) Constant 0 1073741824
54: 50(fvec2) ConstantComposite 31 53
55: TypeVector 32(int) 2
56: TypePointer Function 55(ivec2)
58: 32(int) Constant 2
59: 55(ivec2) ConstantComposite 35 58
60: TypeVector 18(bool) 3
61: TypePointer Function 60(bvec3)
63: 60(bvec3) ConstantComposite 21 39 39
64: TypeVector 22(int) 3
65: TypePointer Function 64(ivec3)
67: 22(int) Constant 3
68: 64(ivec3) ConstantComposite 25 44 67
69: TypeVector 6(float) 3
70: TypePointer Function 69(fvec3)
72: 69(fvec3) ConstantComposite 10 11 12
73: TypeVector 28(float) 3
74: TypePointer Function 73(fvec3)
76: 28(float) Constant 0 1074266112
77: 73(fvec3) ConstantComposite 31 53 76
78: TypeVector 32(int) 3
79: TypePointer Function 78(ivec3)
81: 32(int) Constant 3
82: 78(ivec3) ConstantComposite 35 58 81
83: TypeVector 18(bool) 4
84: TypePointer Function 83(bvec4)
86: 83(bvec4) ConstantComposite 21 39 39 21
87: TypeVector 22(int) 4
88: TypePointer Function 87(ivec4)
90: 22(int) Constant 4
91: 87(ivec4) ConstantComposite 25 44 67 90
93: TypeVector 28(float) 4
94: TypePointer Function 93(fvec4)
96: 28(float) Constant 0 1074790400
97: 93(fvec4) ConstantComposite 31 53 76 96
98: TypeVector 32(int) 4
99: TypePointer Function 98(ivec4)
101: 32(int) Constant 4
102: 98(ivec4) ConstantComposite 35 58 81 101
103: TypeMatrix 7(fvec4) 4
104: TypePointer Function 103
106: 6(float) Constant 0
107: 7(fvec4) ConstantComposite 106 10 11 12
108: 6(float) Constant 1086324736
109: 6(float) Constant 1088421888
110: 7(fvec4) ConstantComposite 13 16 108 109
111: 6(float) Constant 1090519040
112: 6(float) Constant 1091567616
113: 6(float) Constant 1092616192
114: 6(float) Constant 1093664768
115: 7(fvec4) ConstantComposite 111 112 113 114
116: 6(float) Constant 1094713344
117: 6(float) Constant 1095761920
118: 6(float) Constant 1096810496
119: 6(float) Constant 1097859072
120: 7(fvec4) ConstantComposite 116 117 118 119
121: 103 ConstantComposite 107 110 115 120
123: TypeMatrix 46(fvec2) 3
124: TypePointer Function 123
126: 46(fvec2) ConstantComposite 12 13
127: 46(fvec2) ConstantComposite 16 108
128: 123 ConstantComposite 49 126 127
129: TypeMatrix 69(fvec3) 2
130: TypePointer Function 129
132: 69(fvec3) ConstantComposite 13 16 108
133: 129 ConstantComposite 72 132
134: TypeMatrix 7(fvec4) 2
135: TypePointer Function 134
137: 7(fvec4) ConstantComposite 16 108 109 111
138: 134 ConstantComposite 14 137
139: TypeMatrix 7(fvec4) 3
140: TypePointer Function 139
142: 7(fvec4) ConstantComposite 112 113 114 116
143: 139 ConstantComposite 14 137 142
4(PixelShaderFunction): 2 Function None 3
5: Label
9(r00): 8(ptr) Variable Function
15(r01): 8(ptr) Variable Function
20(r12): 19(ptr) Variable Function
24(r13): 23(ptr) Variable Function
27(r14): 26(ptr) Variable Function
30(r15): 29(ptr) Variable Function
34(r16): 33(ptr) Variable Function
38(r20): 37(ptr) Variable Function
43(r21): 42(ptr) Variable Function
48(r22): 47(ptr) Variable Function
52(r23): 51(ptr) Variable Function
57(r24): 56(ptr) Variable Function
62(r30): 61(ptr) Variable Function
66(r31): 65(ptr) Variable Function
71(r32): 70(ptr) Variable Function
75(r33): 74(ptr) Variable Function
80(r34): 79(ptr) Variable Function
85(r40): 84(ptr) Variable Function
89(r41): 88(ptr) Variable Function
92(r42): 8(ptr) Variable Function
95(r43): 94(ptr) Variable Function
100(r44): 99(ptr) Variable Function
105(r50): 104(ptr) Variable Function
122(r51): 104(ptr) Variable Function
125(r61): 124(ptr) Variable Function
131(r62): 130(ptr) Variable Function
136(r65): 135(ptr) Variable Function
141(r66): 140(ptr) Variable Function
Store 9(r00) 14
Store 15(r01) 17
Store 20(r12) 21
Store 24(r13) 25
Store 27(r14) 10
Store 30(r15) 31
Store 34(r16) 35
Store 38(r20) 40
Store 43(r21) 45
Store 48(r22) 49
Store 52(r23) 54
Store 57(r24) 59
Store 62(r30) 63
Store 66(r31) 68
Store 71(r32) 72
Store 75(r33) 77
Store 80(r34) 82
Store 85(r40) 86
Store 89(r41) 91
Store 92(r42) 14
Store 95(r43) 97
Store 100(r44) 102
Store 105(r50) 121
Store 122(r51) 121
Store 125(r61) 128
Store 131(r62) 133
Store 136(r65) 138
Store 141(r66) 143
ReturnValue 106
FunctionEnd

View File

@ -0,0 +1,132 @@
hlsl.typedef.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:4 'ii' (in int)
0:? Sequence
0:6 Sequence
0:6 move second child to first child (temp 4-component vector of float)
0:6 'a1' (temp 4-component vector of float)
0:6 Constant:
0:6 1.000000
0:6 1.000000
0:6 1.000000
0:6 1.000000
0:7 Sequence
0:7 move second child to first child (temp int)
0:7 'i' (temp int)
0:7 Constant:
0:7 2 (const int)
0:9 Sequence
0:9 move second child to first child (temp int)
0:9 'j' (temp int)
0:9 'ii' (in int)
0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float)
0:10 component-wise multiply (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:10 'a1' (temp 4-component vector of float)
0:10 Construct vec4 (global 4-component vector of float)
0:10 Convert int to float (temp float)
0:10 add (temp int)
0:10 'i' (temp int)
0:10 'j' (temp int)
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:4 'ii' (in int)
0:? Sequence
0:6 Sequence
0:6 move second child to first child (temp 4-component vector of float)
0:6 'a1' (temp 4-component vector of float)
0:6 Constant:
0:6 1.000000
0:6 1.000000
0:6 1.000000
0:6 1.000000
0:7 Sequence
0:7 move second child to first child (temp int)
0:7 'i' (temp int)
0:7 Constant:
0:7 2 (const int)
0:9 Sequence
0:9 move second child to first child (temp int)
0:9 'j' (temp int)
0:9 'ii' (in int)
0:10 Branch: Return with expression
0:10 add (temp 4-component vector of float)
0:10 component-wise multiply (temp 4-component vector of float)
0:10 'input' (in 4-component vector of float)
0:10 'a1' (temp 4-component vector of float)
0:10 Construct vec4 (global 4-component vector of float)
0:10 Convert int to float (temp float)
0:10 add (temp int)
0:10 'i' (temp int)
0:10 'j' (temp int)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 34
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 14 "ShaderFunction(vf4;i1;"
Name 12 "input"
Name 13 "ii"
Name 16 "a1"
Name 19 "i"
Name 21 "j"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeInt 32 1
10: TypePointer Function 9(int)
11: TypeFunction 7(fvec4) 8(ptr) 10(ptr)
17: 6(float) Constant 1065353216
18: 7(fvec4) ConstantComposite 17 17 17 17
20: 9(int) Constant 2
4(PixelShaderFunction): 2 Function None 3
5: Label
FunctionEnd
14(ShaderFunction(vf4;i1;): 7(fvec4) Function None 11
12(input): 8(ptr) FunctionParameter
13(ii): 10(ptr) FunctionParameter
15: Label
16(a1): 8(ptr) Variable Function
19(i): 10(ptr) Variable Function
21(j): 10(ptr) Variable Function
Store 16(a1) 18
Store 19(i) 20
22: 9(int) Load 13(ii)
Store 21(j) 22
23: 7(fvec4) Load 12(input)
24: 7(fvec4) Load 16(a1)
25: 7(fvec4) FMul 23 24
26: 9(int) Load 19(i)
27: 9(int) Load 21(j)
28: 9(int) IAdd 26 27
29: 6(float) ConvertSToF 28
30: 7(fvec4) CompositeConstruct 29 29 29 29
31: 7(fvec4) FAdd 25 30
ReturnValue 31
FunctionEnd

View File

@ -2,16 +2,16 @@ hlsl.void.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo1( (temp void)
0:2 Function Definition: foo1( (global void)
0:1 Function Parameters:
0:4 Function Definition: foo2( (temp void)
0:4 Function Definition: foo2( (global void)
0:2 Function Parameters:
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:5 Function Parameters:
0:5 'input' (in 4-component vector of float)
0:? Sequence
0:6 Function Call: foo1( (temp void)
0:7 Function Call: foo2( (temp void)
0:6 Function Call: foo1( (global void)
0:7 Function Call: foo2( (global void)
0:? Linker Objects
@ -21,16 +21,16 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo1( (temp void)
0:2 Function Definition: foo1( (global void)
0:1 Function Parameters:
0:4 Function Definition: foo2( (temp void)
0:4 Function Definition: foo2( (global void)
0:2 Function Parameters:
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:5 Function Parameters:
0:5 'input' (in 4-component vector of float)
0:? Sequence
0:6 Function Call: foo1( (temp void)
0:7 Function Call: foo2( (temp void)
0:6 Function Call: foo1( (global void)
0:7 Function Call: foo2( (global void)
0:? Linker Objects
// Module Version 10000

View File

@ -2,7 +2,7 @@ hlsl.whileLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence
@ -39,7 +39,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:? Sequence

View File

@ -0,0 +1,23 @@
maxClipDistances.vert
Shader version: 130
0:? Sequence
0:5 Function Definition: main( (global void)
0:5 Function Parameters:
0:? Linker Objects
0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance)
0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance)
0:? 'gl_VertexID' (gl_VertexId int VertexId)
Linked vertex stage:
Shader version: 130
0:? Sequence
0:5 Function Definition: main( (global void)
0:5 Function Parameters:
0:? Linker Objects
0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance)
0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance)
0:? 'gl_VertexID' (gl_VertexId int VertexId)

View File

@ -297,8 +297,8 @@ ERROR: node is still EOpNull!
0:? 'b2' (layout(binding=2 ) uniform atomic_uint)
0:? 'c2' (layout(binding=3 ) uniform atomic_uint)
0:? 'd2' (layout(binding=2 ) uniform atomic_uint)
0:? 'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
0:? 'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
0:? 'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, ...})
0:? 'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, ...})
0:? 'ColorInv' (smooth out 3-component vector of float)
0:? 'Color4' (invariant centroid smooth out 3-component vector of float)
0:? 'position' (noContraction smooth out 4-component vector of float)

View File

@ -0,0 +1,54 @@
spv.430.frag
Warning, version 430 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 24
Capability Shader
Capability Geometry
Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 14 19
ExecutionMode 4 OriginUpperLeft
Source GLSL 430
Name 4 "main"
Name 9 "color"
Name 14 "gl_Layer"
Name 19 "gl_ViewportIndex"
Decorate 14(gl_Layer) Flat
Decorate 14(gl_Layer) BuiltIn Layer
Decorate 19(gl_ViewportIndex) Flat
Decorate 19(gl_ViewportIndex) BuiltIn ViewportIndex
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(color): 8(ptr) Variable Output
10: 6(float) Constant 1065353216
11: 7(fvec4) ConstantComposite 10 10 10 10
12: TypeInt 32 1
13: TypePointer Input 12(int)
14(gl_Layer): 13(ptr) Variable Input
19(gl_ViewportIndex): 13(ptr) Variable Input
4(main): 2 Function None 3
5: Label
Store 9(color) 11
15: 12(int) Load 14(gl_Layer)
16: 6(float) ConvertSToF 15
17: 7(fvec4) Load 9(color)
18: 7(fvec4) VectorTimesScalar 17 16
Store 9(color) 18
20: 12(int) Load 19(gl_ViewportIndex)
21: 6(float) ConvertSToF 20
22: 7(fvec4) Load 9(color)
23: 7(fvec4) VectorTimesScalar 22 21
Store 9(color) 23
Return
FunctionEnd

View File

@ -63,6 +63,7 @@ Linked vertex stage:
Decorate 55(sampb2) Binding 5
Decorate 56(sampb4) DescriptorSet 0
Decorate 56(sampb4) Binding 31
Decorate 62(var) Flat
Decorate 62(var) Location 0
MemberDecorate 63(MS) 0 Location 17
Decorate 63(MS) Block

View File

@ -0,0 +1,50 @@
spv.450.tesc
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Linked tessellation control stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 17
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 9 16
ExecutionMode 4 OutputVertices 4
Source GLSL 450
Name 4 "main"
Name 9 "patchOut"
Name 10 "S"
MemberName 10(S) 0 "sMem1"
MemberName 10(S) 1 "sMem2"
Name 11 "TheBlock"
MemberName 11(TheBlock) 0 "bMem1"
MemberName 11(TheBlock) 1 "bMem2"
MemberName 11(TheBlock) 2 "s"
Name 16 "tcBlock"
Decorate 9(patchOut) Patch
MemberDecorate 11(TheBlock) 0 Patch
MemberDecorate 11(TheBlock) 1 Patch
MemberDecorate 11(TheBlock) 2 Patch
Decorate 11(TheBlock) Block
Decorate 16(tcBlock) Location 12
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(patchOut): 8(ptr) Variable Output
10(S): TypeStruct 6(float) 6(float)
11(TheBlock): TypeStruct 6(float) 6(float) 10(S)
12: TypeInt 32 0
13: 12(int) Constant 2
14: TypeArray 11(TheBlock) 13
15: TypePointer Output 14
16(tcBlock): 15(ptr) Variable Output
4(main): 2 Function None 3
5: Label
Return
FunctionEnd

View File

@ -1,203 +1,133 @@
spv.atomic.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 310
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})
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Linked compute stage:
Shader version: 310
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})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 73
Capability Shader
Capability AtomicStorage
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 1 1 1
Source GLSL 450
Name 4 "main"
Name 10 "func(au1;"
Name 9 "c"
Name 12 "atoms("
Name 20 "counter"
Name 23 "val"
Name 27 "countArr"
Name 35 "origi"
Name 37 "atomi"
Name 40 "origu"
Name 42 "atomu"
Name 43 "value"
Name 60 "dataSSB"
MemberName 60(dataSSB) 0 "f"
MemberName 60(dataSSB) 1 "n_frames_rendered"
Name 62 "result"
Name 70 "arrX"
Name 71 "arrY"
Name 72 "arrZ"
Decorate 20(counter) Offset 0
Decorate 20(counter) Binding 0
Decorate 27(countArr) Offset 4
Decorate 27(countArr) Binding 0
MemberDecorate 60(dataSSB) 0 Restrict
MemberDecorate 60(dataSSB) 0 Offset 0
MemberDecorate 60(dataSSB) 1 Restrict
MemberDecorate 60(dataSSB) 1 Offset 16
Decorate 60(dataSSB) BufferBlock
Decorate 62(result) DescriptorSet 0
Decorate 62(result) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer AtomicCounter 6(int)
8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1
15: 6(int) Constant 0
19: 6(int) Constant 1024
20(counter): 7(ptr) Variable AtomicCounter
22: TypePointer Function 6(int)
24: 6(int) Constant 4
25: TypeArray 6(int) 24
26: TypePointer AtomicCounter 25
27(countArr): 26(ptr) Variable AtomicCounter
28: TypeInt 32 1
29: 28(int) Constant 2
34: TypePointer Function 28(int)
36: TypePointer Workgroup 28(int)
37(atomi): 36(ptr) Variable Workgroup
38: 28(int) Constant 3
41: TypePointer Workgroup 6(int)
42(atomu): 41(ptr) Variable Workgroup
43(value): 41(ptr) Variable Workgroup
46: 6(int) Constant 7
51: 28(int) Constant 7
55: 6(int) Constant 10
58: TypeFloat 32
59: TypeVector 28(int) 4
60(dataSSB): TypeStruct 58(float) 59(ivec4)
61: TypePointer Uniform 60(dataSSB)
62(result): 61(ptr) Variable Uniform
63: 28(int) Constant 1
64: 6(int) Constant 2
65: TypePointer Uniform 28(int)
68: TypeArray 28(int) 14
69: TypePointer Private 68
70(arrX): 69(ptr) Variable Private
71(arrY): 69(ptr) Variable Private
72(arrZ): 69(ptr) Variable Private
4(main): 2 Function None 3
5: Label
23(val): 22(ptr) Variable Function
MemoryBarrier 14 19
21: 6(int) FunctionCall 10(func(au1;) 20(counter)
30: 7(ptr) AccessChain 27(countArr) 29
31: 6(int) AtomicLoad 30 14 15
Store 23(val) 31
32: 6(int) AtomicIDecrement 20(counter) 14 15
33: 6(int) AtomicIIncrement 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): 22(ptr) Variable Function
39: 28(int) AtomicIAdd 37(atomi) 14 15 38
Store 35(origi) 39
44: 6(int) Load 43(value)
45: 6(int) AtomicAnd 42(atomu) 14 15 44
Store 40(origu) 45
47: 6(int) AtomicOr 42(atomu) 14 15 46
Store 40(origu) 47
48: 6(int) AtomicXor 42(atomu) 14 15 46
Store 40(origu) 48
49: 6(int) Load 43(value)
50: 6(int) AtomicUMin 42(atomu) 14 15 49
Store 40(origu) 50
52: 28(int) AtomicSMax 37(atomi) 14 15 51
Store 35(origi) 52
53: 28(int) Load 35(origi)
54: 28(int) AtomicExchange 37(atomi) 14 15 53
Store 35(origi) 54
56: 6(int) Load 43(value)
57: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 56 55
Store 40(origu) 57
66: 65(ptr) AccessChain 62(result) 63 64
67: 28(int) AtomicIAdd 66 14 15 63
Return
FunctionEnd

View File

@ -0,0 +1,30 @@
spv.glFragColor.frag
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 12
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9
ExecutionMode 4 OriginLowerLeft
Source GLSL 330
Name 4 "main"
Name 9 "gl_FragColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Output 7(fvec4)
9(gl_FragColor): 8(ptr) Variable Output
10: 6(float) Constant 1065353216
11: 7(fvec4) ConstantComposite 10 10 10 10
4(main): 2 Function None 3
5: Label
Store 9(gl_FragColor) 11
Return
FunctionEnd

View File

@ -44,14 +44,6 @@ Linked vertex stage:
Name 173 "u3"
Name 182 "i3"
Name 247 "v4"
Decorate 210 RelaxedPrecision
Decorate 216 RelaxedPrecision
Decorate 223 RelaxedPrecision
Decorate 230 RelaxedPrecision
Decorate 234 RelaxedPrecision
Decorate 240 RelaxedPrecision
Decorate 261 RelaxedPrecision
Decorate 265 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1

View File

@ -162,6 +162,7 @@ Linked vertex stage:
Decorate 58(bBt3) BufferBlock
Decorate 60(bBtn3) DescriptorSet 1
Decorate 60(bBtn3) Binding 0
Decorate 62(sout) Flat
MemberDecorate 63(S) 0 Invariant
MemberDecorate 63(S) 1 Invariant
MemberDecorate 63(S) 2 Invariant

View File

@ -44,8 +44,11 @@ Linked fragment stage:
Name 128 "samp2D"
Name 134 "foo"
Name 135 "foo2"
Decorate 15(foo3) Flat
Decorate 90(condition) Flat
Decorate 128(samp2D) DescriptorSet 0
Decorate 134(foo) Flat
Decorate 135(foo2) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1

View File

@ -0,0 +1,61 @@
spv.specConst.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 27
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 13 25 26
Source GLSL 450
Name 4 "main"
Name 11 "gl_PerVertex"
MemberName 11(gl_PerVertex) 0 "gl_Position"
MemberName 11(gl_PerVertex) 1 "gl_PointSize"
MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
Name 13 ""
Name 25 "gl_VertexID"
Name 26 "gl_InstanceID"
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 11(gl_PerVertex) Block
Decorate 18 SpecId 11
Decorate 25(gl_VertexID) BuiltIn VertexId
Decorate 26(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 1
10: TypeArray 6(float) 9
11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
12: TypePointer Output 11(gl_PerVertex)
13: 12(ptr) Variable Output
14: TypeInt 32 1
15: 14(int) Constant 0
16: 6(float) Constant 1065353216
17: 7(fvec4) ConstantComposite 16 16 16 16
18: 14(int) SpecConstant 8
22: TypePointer Output 7(fvec4)
24: TypePointer Input 14(int)
25(gl_VertexID): 24(ptr) Variable Input
26(gl_InstanceID): 24(ptr) Variable Input
4(main): 2 Function None 3
5: Label
19: 6(float) ConvertSToF 18
20: 7(fvec4) CompositeConstruct 19 19 19 19
21: 7(fvec4) FDiv 17 20
23: 22(ptr) AccessChain 13 15
Store 23 21
Return
FunctionEnd

View File

@ -39,6 +39,9 @@ Linked fragment stage:
Name 63 "coord"
Name 69 "constructed"
Decorate 10(Count) Flat
Decorate 20(foo3) Flat
Decorate 34(foo2) Flat
Decorate 36(foo) Flat
Decorate 59(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2

View File

@ -138,4 +138,11 @@ const cag a0[3] = cag[3](cag(3, 2.0, true), cag(1, 5.0, true), cag(1, 9.0, false
void foo4()
{
int a = int(a0[2].f);
}
}
const bool cval1 = all(bvec4(true, true, true, true));
const bool cval2 = all(bvec4(false, false, false, false));
const bool cval3 = all(bvec4(true, true, false, true));
const bool cval4 = any(bvec4(true, true, true, true));
const bool cval5 = any(bvec4(false, false, false, false));
const bool cval6 = any(bvec4(false, true, false, false));

View File

@ -68,3 +68,8 @@ void aggCall()
float F;
m(ivec2(F)); // test input conversion of single argument that's an aggregate; other function tests in 120.vert
}
vec4 badConv()
{
return u; // ERROR, can change scalar to vector
}

View File

@ -0,0 +1,5 @@
#version 310 es
void main()
{
}

14
Test/glspv.frag Normal file
View File

@ -0,0 +1,14 @@
#version 330
#ifdef GL_SPIRV
#error GL_SPIRV is set ( correct, not an error )
#if GL_SPIRV == 100
#error GL_SPIR is 100
#endif
#endif
void main()
{
}
layout(input_attachment_index = 1) uniform subpassInput sub; // ERROR, no inputs

5
Test/glspv.version.frag Normal file
View File

@ -0,0 +1,5 @@
#version 330 compatibility
void main()
{
}

5
Test/glspv.version.vert Normal file
View File

@ -0,0 +1,5 @@
#version 150
void main()
{
}

20
Test/glspv.vert Normal file
View File

@ -0,0 +1,20 @@
#version 450
layout(push_constant) uniform Material { int a; } mat; // ERROR, can't use push_constant
layout(set = 0, binding = 0, std140) uniform Bt1 { int a; } bt1;
layout(set = 1, binding = 0, std140) uniform Bt2 { int a; } bt2; // ERROR, set has to be 0
layout(shared) uniform Bt3 { int a; } bt3; // ERROR, no shared
layout(packed) uniform Bt4 { int a; } bt4; // ERROR, no shared
void main()
{
gl_VertexIndex; // ERROR, not preset
gl_InstanceIndex; // ERROR, not present
gl_VertexID;
gl_InstanceID;
gl_DepthRangeParameters; // ERROR, not present
}
uniform sampler s; // ERROR, no sampler

14
Test/hlsl.discard.frag Normal file
View File

@ -0,0 +1,14 @@
void foo(float f)
{
if (f < 1.0)
discard;
}
float4 PixelShaderFunction(float4 input) : COLOR0
{
foo(input.z);
if (input.x)
discard;
float f = input.x;
discard;
}

View File

@ -5,4 +5,9 @@ float4 PixelShaderFunction(float4 input) : COLOR0
[unroll] for (; input != input; ) {}
for (; input != input; ) { return -input; }
for (--input; input != input; input += 2) { return -input; }
for (;;) if (input.x > 2.0) break;
for (;;) if (input.x > 2.0) continue;
float ii;
for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue;
--ii;
}

View File

@ -25,4 +25,9 @@ float4 PixelShaderFunction(float4 input) : COLOR0
} else {
return -input;
}
int ii;
if (float ii = input.z)
++ii;
++ii;
}

24
Test/hlsl.init.frag Normal file
View File

@ -0,0 +1,24 @@
float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2);
float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2};
float a2 = 0.2, b2;
float a3, b3 = 0.3;
float a4, b4 = 0.4, c4;
float a5 = 0.5, b5, c5 = 1.5;
float4 ShaderFunction(float4 input) : COLOR0
{
float4 a2 = float4(0.2, 0.3, 0.4, 0.5);
struct S1 {
float f;
int i;
};
struct S2 {
int j;
float g;
S1 s1;
};
S2 s2i = { 9, a5, { (a3,a4), 12} }, s2 = S2(9, a5, S1((a3,a4), 12));
float a8 = (a2, b2), a9 = a5;
return input * a1;
}

View File

@ -13,7 +13,7 @@ gs uint4 gs_ua4;
gs uint4 gs_ub4;
gs uint4 gs_uc4;
float ComputeShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1)
{
uint out_u1;
@ -41,13 +41,13 @@ float ComputeShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint
return 0.0;
}
float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2)
float1 ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
float2 ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
{
uint2 out_u2;
@ -74,7 +74,7 @@ float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0,
return float2(1,2);
}
float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
float3 ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
{
uint3 out_u3;

View File

@ -0,0 +1,11 @@
float PixelShaderFunction(double inDV1a, double inDV1b, double inDV1c,
double2 inDV2, double3 inDV3, double4 inDV4,
uint inU1a, uint inU1b)
{
double r00 = fma(inDV1a, inDV1b, inDV1c);
double r01 = asdouble(inU1a, inU1b);
return 0.0;
}

View File

@ -1,24 +1,24 @@
float PixelShaderFunction(float inF0)
float PixelShaderFunctionS(float inF0)
{
f32tof16(inF0);
return 0.0;
}
float1 PixelShaderFunction(float1 inF0)
float1 PixelShaderFunction1(float1 inF0)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 PixelShaderFunction(float2 inF0)
float2 PixelShaderFunction2(float2 inF0)
{
f32tof16(inF0);
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0)
float3 PixelShaderFunction3(float3 inF0)
{
f32tof16(inF0);

View File

@ -13,237 +13,243 @@ gs uint4 gs_ua4;
gs uint4 gs_ub4;
gs uint4 gs_uc4;
float PixelShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1)
{
uint out_u1;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
bool r000 = all(inF0);
float r001 = abs(inF0);
float r002 = acos(inF0);
bool r003 = any(inF0);
float r004 = asin(inF0);
int r005 = asint(inF0);
uint r006 = asuint(inF0);
float r007 = asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
float r009 = atan(inF0);
float r010 = atan2(inF0, inF1);
float r011 = ceil(inF0);
float r012 = clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(7);
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
float r014 = cos(inF0);
float r015 = cosh(inF0);
uint r016 = countbits(7);
float r017 = ddx(inF0);
float r018 = ddx_coarse(inF0);
float r019 = ddx_fine(inF0);
float r020 = ddy(inF0);
float r021 = ddy_coarse(inF0);
float r022 = ddy_fine(inF0);
float r023 = degrees(inF0);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
float r027 = exp(inF0);
float r028 = exp2(inF0);
uint r029 = firstbithigh(7);
uint r030 = firstbitlow(7);
float r031 = floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reversebits(2);
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
float r033 = fmod(inF0, inF1);
float r034 = frac(inF0);
float r035 = frexp(inF0, inF1);
float r036 = fwidth(inF0);
bool r037 = isinf(inF0);
bool r038 = isnan(inF0);
float r039 = ldexp(inF0, inF1);
float r039a = lerp(inF0, inF1, inF2);
float r040 = log(inF0);
float r041 = log10(inF0);
float r042 = log2(inF0);
float r043 = max(inF0, inF1);
float r044 = min(inF0, inF1);
float r045 = pow(inF0, inF1);
float r046 = radians(inF0);
float r047 = rcp(inF0);
uint r048 = reversebits(2);
float r049 = round(inF0);
float r050 = rsqrt(inF0);
float r051 = saturate(inF0);
float r052 = sign(inF0);
float r053 = sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
float r055 = sinh(inF0);
float r056 = smoothstep(inF0, inF1, inF2);
float r057 = sqrt(inF0);
float r058 = step(inF0, inF1);
float r059 = tan(inF0);
float r060 = tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
float r061 = trunc(inF0);
return 0.0;
}
float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2)
float1 PixelShaderFunction1(float1 inF0, float1 inF1, float1 inF2)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
{
uint2 out_u2;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
bool r000 = all(inF0);
float2 r001 = abs(inF0);
float2 r002 = acos(inF0);
bool r003 = any(inF0);
float2 r004 = asin(inF0);
int2 r005 = asint(inF0);
uint2 r006 = asuint(inF0);
float2 r007 = asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
float2 r009 = atan(inF0);
float2 r010 = atan2(inF0, inF1);
float2 r011 = ceil(inF0);
float2 r012 = clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(int2(7,3));
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
float2 r013 = cos(inF0);
float2 r015 = cosh(inF0);
uint2 r016 = countbits(int2(7,3));
float2 r017 = ddx(inF0);
float2 r018 = ddx_coarse(inF0);
float2 r019 = ddx_fine(inF0);
float2 r020 = ddy(inF0);
float2 r021 = ddy_coarse(inF0);
float2 r022 = ddy_fine(inF0);
float2 r023 = degrees(inF0);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
float r026 = distance(inF0, inF1);
float r027 = dot(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
float2 r028 = exp(inF0);
float2 r029 = exp2(inF0);
float2 r030 = faceforward(inF0, inF1, inF2);
uint2 r031 = firstbithigh(uint2(7,8));
uint2 r032 = firstbitlow(uint2(7,8));
float2 r033 = floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int2(1,2));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
float2 r035 = fmod(inF0, inF1);
float2 r036 = frac(inF0);
float2 r037 = frexp(inF0, inF1);
float2 r038 = fwidth(inF0);
bool2 r039 = isinf(inF0);
bool2 r040 = isnan(inF0);
float2 r041 = ldexp(inF0, inF1);
float2 r039a = lerp(inF0, inF1, inF2);
float r042 = length(inF0);
float2 r043 = log(inF0);
float2 r044 = log10(inF0);
float2 r045 = log2(inF0);
float2 r046 = max(inF0, inF1);
float2 r047 = min(inF0, inF1);
float2 r048 = normalize(inF0);
float2 r049 = pow(inF0, inF1);
float2 r050 = radians(inF0);
float2 r051 = rcp(inF0);
float2 r052 = reflect(inF0, inF1);
float2 r053 = refract(inF0, inF1, 2.0);
uint2 r054 = reversebits(uint2(1,2));
float2 r055 = round(inF0);
float2 r056 = rsqrt(inF0);
float2 r057 = saturate(inF0);
float2 r058 = sign(inF0);
float2 r059 = sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
float2 r060 = sinh(inF0);
float2 r061 = smoothstep(inF0, inF1, inF2);
float2 r062 = sqrt(inF0);
float2 r063 = step(inF0, inF1);
float2 r064 = tan(inF0);
float2 r065 = tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
float2 r066 = trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
{
uint3 out_u3;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
bool r000 = all(inF0);
float3 r001 = abs(inF0);
float3 r002 = acos(inF0);
bool r003 = any(inF0);
float3 r004 = asin(inF0);
int3 r005 = asint(inF0);
uint3 r006 = asuint(inF0);
float3 r007 = asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
float3 r009 = atan(inF0);
float3 r010 = atan2(inF0, inF1);
float3 r011 = ceil(inF0);
float3 r012 = clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(int3(7,3,5));
cross(inF0, inF1);
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
float3 r013 = cos(inF0);
float3 r014 = cosh(inF0);
uint3 r015 = countbits(uint3(7,3,5));
float3 r016 = cross(inF0, inF1);
float3 r017 = ddx(inF0);
float3 r018 = ddx_coarse(inF0);
float3 r019 = ddx_fine(inF0);
float3 r020 = ddy(inF0);
float3 r021 = ddy_coarse(inF0);
float3 r022 = ddy_fine(inF0);
float3 r023 = degrees(inF0);
float r024 = distance(inF0, inF1);
float r025 = dot(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
float3 r029 = exp(inF0);
float3 r030 = exp2(inF0);
float3 r031 = faceforward(inF0, inF1, inF2);
uint3 r032 = firstbithigh(uint3(2,3,4));
uint3 r033 = firstbitlow(uint3(2,3,4));
float3 r034 = floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int3(1,2,3));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
float3 r036 = fmod(inF0, inF1);
float3 r037 = frac(inF0);
float3 r038 = frexp(inF0, inF1);
float3 r039 = fwidth(inF0);
bool3 r040 = isinf(inF0);
bool3 r041 = isnan(inF0);
float3 r042 = ldexp(inF0, inF1);
float3 r039a = lerp(inF0, inF1, inF2);
float r043 = length(inF0);
float3 r044 = log(inF0);
float3 r045 = log10(inF0);
float3 r046 = log2(inF0);
float3 r047 = max(inF0, inF1);
float3 r048 = min(inF0, inF1);
float3 r049 = normalize(inF0);
float3 r050 = pow(inF0, inF1);
float3 r051 = radians(inF0);
float3 r052 = rcp(inF0);
float3 r053 = reflect(inF0, inF1);
float3 r054 = refract(inF0, inF1, 2.0);
uint3 r055 = reversebits(uint3(1,2,3));
float3 r056 = round(inF0);
float3 r057 = rsqrt(inF0);
float3 r058 = saturate(inF0);
float3 r059 = sign(inF0);
float3 r060 = sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
float3 r061 = sinh(inF0);
float3 r062 = smoothstep(inF0, inF1, inF2);
float3 r063 = sqrt(inF0);
float3 r064 = step(inF0, inF1);
float3 r065 = tan(inF0);
float3 r066 = tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
float3 r067 = trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float3(1,2,3);
@ -253,77 +259,78 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
{
uint4 out_u4;
all(inF0);
abs(inF0);
acos(inF0);
any(inF0);
asin(inF0);
asint(inF0);
asuint(inF0);
asfloat(inU0);
bool r000 = all(inF0);
float4 r001 = abs(inF0);
float4 r002 = acos(inF0);
bool r003 = any(inF0);
float4 r004 = asin(inF0);
int4 r005 = asint(inF0);
uint4 r006 = asuint(inF0);
float4 r007 = asfloat(inU0);
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
atan(inF0);
atan2(inF0, inF1);
ceil(inF0);
clamp(inF0, inF1, inF2);
float4 r009 = atan(inF0);
float4 r010 = atan2(inF0, inF1);
float4 r011 = ceil(inF0);
float4 r012 = clamp(inF0, inF1, inF2);
clip(inF0);
cos(inF0);
cosh(inF0);
countbits(int4(7,3,5,2));
ddx(inF0);
ddx_coarse(inF0);
ddx_fine(inF0);
ddy(inF0);
ddy_coarse(inF0);
ddy_fine(inF0);
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
dst(inF0, inF1);
float4 r013 = cos(inF0);
float4 r014 = cosh(inF0);
uint4 r015 = countbits(uint4(7,3,5,2));
float4 r016 = ddx(inF0);
float4 r017 = ddx_coarse(inF0);
float4 r018 = ddx_fine(inF0);
float4 r019 = ddy(inF0);
float4 r020 = ddy_coarse(inF0);
float4 r021 = ddy_fine(inF0);
float4 r022 = degrees(inF0);
float r023 = distance(inF0, inF1);
float r024 = dot(inF0, inF1);
float4 r025 = dst(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
exp(inF0);
exp2(inF0);
faceforward(inF0, inF1, inF2);
firstbithigh(7);
firstbitlow(7);
floor(inF0);
float4 r029 = exp(inF0);
float4 r030 = exp2(inF0);
float4 r031 = faceforward(inF0, inF1, inF2);
uint4 r032 = firstbithigh(uint4(7,8,9,10));
uint4 r033 = firstbitlow(uint4(7,8,9,10));
float4 r034 = floor(inF0);
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
frexp(inF0, inF1);
fwidth(inF0);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
length(inF0);
log(inF0);
log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
normalize(inF0);
pow(inF0, inF1);
radians(inF0);
rcp(inF0);
reflect(inF0, inF1);
refract(inF0, inF1, 2.0);
reversebits(int4(1,2,3,4));
round(inF0);
rsqrt(inF0);
saturate(inF0);
sign(inF0);
sin(inF0);
float4 r036 = fmod(inF0, inF1);
float4 r037 = frac(inF0);
float4 r038 = frexp(inF0, inF1);
float4 r039 = fwidth(inF0);
bool4 r040 = isinf(inF0);
bool4 r041 = isnan(inF0);
float4 r042 = ldexp(inF0, inF1);
float4 r039a = lerp(inF0, inF1, inF2);
float r043 = length(inF0);
float4 r044 = log(inF0);
float4 r045 = log10(inF0);
float4 r046 = log2(inF0);
float4 r047 = max(inF0, inF1);
float4 r048 = min(inF0, inF1);
float4 r049 = normalize(inF0);
float4 r050 = pow(inF0, inF1);
float4 r051 = radians(inF0);
float4 r052 = rcp(inF0);
float4 r053 = reflect(inF0, inF1);
float4 r054 = refract(inF0, inF1, 2.0);
uint4 r055 = reversebits(uint4(1,2,3,4));
float4 r056 = round(inF0);
float4 r057 = rsqrt(inF0);
float4 r058 = saturate(inF0);
float4 r059 = sign(inF0);
float4 r060 = sin(inF0);
sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
step(inF0, inF1);
tan(inF0);
tanh(inF0);
float4 r061 = sinh(inF0);
float4 r062 = smoothstep(inF0, inF1, inF2);
float4 r063 = sqrt(inF0);
float4 r064 = step(inF0, inF1);
float4 r065 = tan(inF0);
float4 r066 = tanh(inF0);
// TODO: sampler intrinsics, when we can declare the types.
trunc(inF0);
float4 r067 = trunc(inF0);
// TODO: ... add when float1 prototypes are generated
return float4(1,2,3,4);
@ -335,83 +342,82 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
// asuint(inF0); \
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
all(inF0); \
abs(inF0); \
acos(inF0); \
any(inF0); \
asin(inF0); \
atan(inF0); \
atan2(inF0, inF1); \
ceil(inF0); \
clip(inF0); \
clamp(inF0, inF1, inF2); \
cos(inF0); \
cosh(inF0); \
ddx(inF0); \
ddx_coarse(inF0); \
ddx_fine(inF0); \
ddy(inF0); \
ddy_coarse(inF0); \
ddy_fine(inF0); \
degrees(inF0); \
determinant(inF0); \
exp(inF0); \
exp2(inF0); \
firstbithigh(7); \
firstbitlow(7); \
floor(inF0); \
fmod(inF0, inF1); \
frac(inF0); \
frexp(inF0, inF1); \
fwidth(inF0); \
ldexp(inF0, inF1); \
log(inF0); \
log10(inF0); \
log2(inF0); \
max(inF0, inF1); \
min(inF0, inF1); \
pow(inF0, inF1); \
radians(inF0); \
round(inF0); \
rsqrt(inF0); \
saturate(inF0); \
sign(inF0); \
sin(inF0); \
sincos(inF0, inF1, inF2); \
sinh(inF0); \
smoothstep(inF0, inF1, inF2); \
sqrt(inF0); \
step(inF0, inF1); \
tan(inF0); \
tanh(inF0); \
transpose(inF0); \
trunc(inF0);
#define MATFNS(MT) \
bool r000 = all(inF0); \
MT r001 = abs(inF0); \
acos(inF0); \
bool r003 = any(inF0); \
MT r004 = asin(inF0); \
MT r005 = atan(inF0); \
MT r006 = atan2(inF0, inF1); \
MT r007 = ceil(inF0); \
clip(inF0); \
MT r008 = clamp(inF0, inF1, inF2); \
MT r009 = cos(inF0); \
MT r010 = cosh(inF0); \
MT r011 = ddx(inF0); \
MT r012 = ddx_coarse(inF0); \
MT r013 = ddx_fine(inF0); \
MT r014 = ddy(inF0); \
MT r015 = ddy_coarse(inF0); \
MT r016 = ddy_fine(inF0); \
MT r017 = degrees(inF0); \
float r018 = determinant(inF0); \
MT r019 = exp(inF0); \
MT R020 = exp2(inF0); \
MT r021 = floor(inF0); \
MT r022 = fmod(inF0, inF1); \
MT r023 = frac(inF0); \
MT r024 = frexp(inF0, inF1); \
MT r025 = fwidth(inF0); \
MT r026 = ldexp(inF0, inF1); \
MT r026a = lerp(inF0, inF1, inF2); \
MT r027 = log(inF0); \
MT r028 = log10(inF0); \
MT r029 = log2(inF0); \
MT r030 = max(inF0, inF1); \
MT r031 = min(inF0, inF1); \
MT r032 = pow(inF0, inF1); \
MT r033 = radians(inF0); \
MT r034 = round(inF0); \
MT r035 = rsqrt(inF0); \
MT r036 = saturate(inF0); \
MT r037 = sign(inF0); \
MT r038 = sin(inF0); \
sincos(inF0, inF1, inF2); \
MT r039 = sinh(inF0); \
MT r049 = smoothstep(inF0, inF1, inF2); \
MT r041 = sqrt(inF0); \
MT r042 = step(inF0, inF1); \
MT r043 = tan(inF0); \
MT r044 = tanh(inF0); \
transpose(inF0); \
MT r046 = trunc(inF0);
// TODO: turn on non-square matrix tests when protos are available.
float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
float2x2 PixelShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
MATFNS(float2x2);
// TODO: ... add when float1 prototypes are generated
return float2x2(2,2,2,2);
}
float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
float3x3 PixelShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
MATFNS(float3x3);
// TODO: ... add when float1 prototypes are generated
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
float4x4 PixelShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
MATFNS(float4x4);
// TODO: ... add when float1 prototypes are generated
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
@ -429,23 +435,49 @@ float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
MT r8 = mul(inFM0, inFM1);
void TestGenMul(float inF0, float inF1,
void TestGenMul2(float inF0, float inF1,
float2 inFV0, float2 inFV1,
float2x2 inFM0, float2x2 inFM1)
{
TESTGENMUL(float, float2, float2x2);
}
void TestGenMul(float inF0, float inF1,
void TestGenMul3(float inF0, float inF1,
float3 inFV0, float3 inFV1,
float3x3 inFM0, float3x3 inFM1)
{
TESTGENMUL(float, float3, float3x3);
}
void TestGenMul(float inF0, float inF1,
void TestGenMul4(float inF0, float inF1,
float4 inFV0, float4 inFV1,
float4x4 inFM0, float4x4 inFM1)
{
TESTGENMUL(float, float4, float4x4);
}
// Test some non-square mats
void TestGenMulNxM(float inF0, float inF1,
float2 inFV2, float3 inFV3,
float2x3 inFM2x3, float3x2 inFM3x2,
float3x3 inFM3x3, float3x4 inFM3x4,
float2x4 inFM2x4)
{
float r00 = mul(inF0, inF1); // S=S*S
float2 r01 = mul(inFV2, inF0); // V=V*S
float3 r02 = mul(inFV3, inF0); // V=V*S
float2 r03 = mul(inF0, inFV2); // V=S*V
float3 r04 = mul(inF0, inFV3); // V=S*V
float r05 = mul(inFV2, inFV2); // S=V*V
float r06 = mul(inFV3, inFV3); // S=V*V
float3 r07 = mul(inFV2, inFM2x3); // V=V*M (return V dim is Mcols)
float2 r08 = mul(inFV3, inFM3x2); // V=V*M (return V dim is Mcols)
float2 r09 = mul(inFM2x3, inFV3); // V=M*V (return V dim is Mrows)
float3 r10 = mul(inFM3x2, inFV2); // V=M*V (return V dim is Mrows)
float2x3 r11 = mul(inFM2x3, inF0);
float3x2 r12 = mul(inFM3x2, inF0);
float2x2 r13 = mul(inFM2x3, inFM3x2);
float2x3 r14 = mul(inFM2x3, inFM3x3);
float2x4 r15 = mul(inFM2x3, inFM3x4);
float3x4 r16 = mul(inFM3x2, inFM2x4);
}

View File

@ -1,4 +1,4 @@
float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
float ComputeShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
{
uint out_u1;
@ -23,7 +23,7 @@ float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
@ -53,7 +53,7 @@ float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
return 0.0;
}
float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
float1 ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
@ -62,7 +62,7 @@ float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
return 0.0;
}
float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
float2 ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
uint2 out_u2;
@ -84,7 +84,7 @@ float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
@ -109,7 +109,7 @@ float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
return float2(1,2);
}
float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
float3 ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
uint3 out_u3;
@ -129,7 +129,7 @@ float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
@ -174,7 +174,7 @@ float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage

View File

@ -1,4 +1,4 @@
float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
float PixelShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
{
// AllMemoryBarrier(); // TODO: expected error: invalid in fragment stage
// AllMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage
@ -12,7 +12,7 @@ float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
// InterlockedAdd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedAnd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out i // InterlockedMax(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedMin(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
@ -32,7 +32,7 @@ float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
return 0.0;
}
float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
float1 PixelShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
@ -41,7 +41,7 @@ float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
return 0.0;
}
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
@ -52,14 +52,14 @@ float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
@ -68,7 +68,7 @@ float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
@ -85,7 +85,7 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
@ -100,7 +100,6 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
f16tof32(inF0); \
firstbithigh(inF0); \
firstbitlow(inF0); \
fma(inF0, inF1, inF2); \
reversebits(inF0); \
length(inF0); \
noise(inF0); \
@ -112,7 +111,7 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
// TODO: turn on non-square matrix tests when protos are available.
float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
float2x2 PixelShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
@ -120,7 +119,7 @@ float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
return float2x2(2,2,2,2);
}
float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
float3x3 PixelShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
@ -128,7 +127,7 @@ float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
float4x4 PixelShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()

View File

@ -11,7 +11,7 @@ uint4 gs_ua4;
uint4 gs_ub4;
uint4 gs_uc4;
float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
float VertexShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
{
uint out_u1;
@ -39,7 +39,7 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
@ -71,7 +71,7 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
return 0.0;
}
float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
@ -80,7 +80,7 @@ float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
return 0.0;
}
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
uint2 out_u2;
@ -102,7 +102,7 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
@ -127,7 +127,7 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
return float2(1,2);
}
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
uint3 out_u3;
@ -147,7 +147,7 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
@ -192,7 +192,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
fwidth(inF0); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
@ -234,7 +234,6 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
f16tof32(inF0); \
firstbithigh(inF0); \
firstbitlow(inF0); \
fma(inF0, inF1, inF2); \
fwidth(inF0); \
noise(inF0); \
reversebits(inF0); \
@ -248,7 +247,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
// TODO: turn on non-square matrix tests when protos are available.
float2x2 VertexShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
float2x2 VertexShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
@ -256,7 +255,7 @@ float2x2 VertexShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
return float2x2(2,2,2,2);
}
float3x3 VertexShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
float3x3 VertexShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
@ -264,7 +263,7 @@ float3x3 VertexShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 VertexShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
float4x4 VertexShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()

View File

@ -1,4 +1,4 @@
float VertexShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
float VertexShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1)
{
all(inF0);
abs(inF0);
@ -32,6 +32,7 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint i
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
lerp(inF0, inF1, inF2);
log(inF0);
log10(inF0);
log2(inF0);
@ -59,13 +60,13 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint i
return 0.0;
}
float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2)
float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
{
all(inF0);
abs(inF0);
@ -102,6 +103,7 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
lerp(inF0, inF1, inF2);
length(inF0);
log(inF0);
log10(inF0);
@ -134,7 +136,7 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u
return float2(1,2);
}
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
{
all(inF0);
abs(inF0);
@ -172,6 +174,7 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, u
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
lerp(inF0, inF1, inF2);
length(inF0);
log(inF0);
log10(inF0);
@ -204,7 +207,7 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, u
return float3(1,2,3);
}
float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
{
all(inF0);
abs(inF0);
@ -242,6 +245,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, u
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
lerp(inF0, inF1, inF2);
length(inF0);
log(inF0);
log10(inF0);
@ -303,6 +307,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, u
frac(inF0); \
frexp(inF0, inF1); \
ldexp(inF0, inF1); \
lerp(inF0, inF1, inF2); \
log(inF0); \
log10(inF0); \
log2(inF0); \
@ -327,7 +332,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, u
// TODO: turn on non-square matrix tests when protos are available.
float2x2 VertexShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
float2x2 VertexShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS();
@ -336,7 +341,7 @@ float2x2 VertexShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
return float2x2(2,2,2,2);
}
float3x3 VertexShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
float3x3 VertexShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS();
@ -345,7 +350,7 @@ float3x3 VertexShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 VertexShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
float4x4 VertexShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS();
@ -366,23 +371,49 @@ float4x4 VertexShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
MT r8 = mul(inFM0, inFM1);
void TestGenMul(float inF0, float inF1,
float2 inFV0, float2 inFV1,
float2x2 inFM0, float2x2 inFM1)
void TestGenMul2(float inF0, float inF1,
float2 inFV0, float2 inFV1,
float2x2 inFM0, float2x2 inFM1)
{
TESTGENMUL(float, float2, float2x2);
}
void TestGenMul(float inF0, float inF1,
float3 inFV0, float3 inFV1,
float3x3 inFM0, float3x3 inFM1)
void TestGenMul3(float inF0, float inF1,
float3 inFV0, float3 inFV1,
float3x3 inFM0, float3x3 inFM1)
{
TESTGENMUL(float, float3, float3x3);
}
void TestGenMul(float inF0, float inF1,
float4 inFV0, float4 inFV1,
float4x4 inFM0, float4x4 inFM1)
void TestGenMul4(float inF0, float inF1,
float4 inFV0, float4 inFV1,
float4x4 inFM0, float4x4 inFM1)
{
TESTGENMUL(float, float4, float4x4);
}
// Test some non-square mats
void TestGenMulNxM(float inF0, float inF1,
float2 inFV2, float3 inFV3,
float2x3 inFM2x3, float3x2 inFM3x2,
float3x3 inFM3x3, float3x4 inFM3x4,
float2x4 inFM2x4)
{
float r00 = mul(inF0, inF1); // S=S*S
float2 r01 = mul(inFV2, inF0); // V=V*S
float3 r02 = mul(inFV3, inF0); // V=V*S
float2 r03 = mul(inF0, inFV2); // V=S*V
float3 r04 = mul(inF0, inFV3); // V=S*V
float r05 = mul(inFV2, inFV2); // S=V*V
float r06 = mul(inFV3, inFV3); // S=V*V
float3 r07 = mul(inFV2, inFM2x3); // V=V*M (return V dim is Mcols)
float2 r08 = mul(inFV3, inFM3x2); // V=V*M (return V dim is Mcols)
float2 r09 = mul(inFM2x3, inFV3); // V=M*V (return V dim is Mrows)
float3 r10 = mul(inFM3x2, inFV2); // V=M*V (return V dim is Mrows)
float2x3 r11 = mul(inFM2x3, inF0);
float3x2 r12 = mul(inFM3x2, inF0);
float2x2 r13 = mul(inFM2x3, inFM3x2);
float2x3 r14 = mul(inFM2x3, inFM3x3);
float2x4 r15 = mul(inFM2x3, inFM3x4);
float3x4 r16 = mul(inFM3x2, inFM2x4);
}

55
Test/hlsl.switch.frag Normal file
View File

@ -0,0 +1,55 @@
float4 PixelShaderFunction(float4 input, int c, int d) : COLOR0
{
switch(c)
{
}
switch(c)
{
default:
}
switch (c) {
case 1:
++input;
break;
case 2:
--input;
break;
}
switch (c) {
case 1:
++input;
break;
case 2:
switch (d) {
case 2:
input += 2.0;
break;
case 3:
input += 3.0;
break;
}
break;
default:
input += 4.0;
}
switch (c) {
case 1:
}
switch (c) {
case 1:
case 2:
case 3:
++input;
break;
case 4:
case 5:
--input;
}
return input;
}

View File

@ -0,0 +1,47 @@
float PixelShaderFunction()
{
vector r00 = float4(1,2,3,4); // vector means float4
float4 r01 = vector(2,3,4,5); // vector means float4
vector<bool, 1> r12 = bool1(false);
vector<int, 1> r13 = int1(1);
vector<float, 1> r14 = float1(1);
vector<double, 1> r15 = double1(1);
vector<uint, 1> r16 = uint1(1);
vector<bool, 2> r20 = bool2(false, true);
vector<int, 2> r21 = int2(1,2);
vector<float, 2> r22 = float2(1,2);
vector<double, 2> r23 = double2(1,2);
vector<uint, 2> r24 = uint2(1,2);
vector<bool, 3> r30 = bool3(false, true, true);
vector<int, 3> r31 = int3(1,2,3);
vector<float, 3> r32 = float3(1,2,3);
vector<double, 3> r33 = double3(1,2,3);
vector<uint, 3> r34 = uint3(1,2,3);
vector<bool, 4> r40 = bool4(false, true, true, false);
vector<int, 4> r41 = int4(1,2,3,4);
vector<float, 4> r42 = float4(1,2,3,4);
vector<double, 4> r43 = double4(1,2,3,4);
vector<uint, 4> r44 = uint4(1,2,3,4);
matrix r50 = float4x4(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
float4x4 r51 = matrix(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
// matrix<bool, 2, 3> r60 = bool2x3(false, true, false, true, false, true); // TODO:
matrix<float, 2, 3> r61 = float2x3(1,2,3,4,5,6);
matrix<float, 3, 2> r62 = float3x2(1,2,3,4,5,6);
// matrix<float, 4, 1> r63 = float4x1(1,2,3,4); // TODO:
// matrix<float, 1, 4> r64 = float1x4(1,2,3,4); // TODO:
matrix<float, 4, 2> r65 = float4x2(1,2,3,4,5,6,7,8);
matrix<float, 4, 3> r66 = float4x3(1,2,3,4,5,6,7,8,9,10,11,12);
// TODO: bool mats
// TODO: int mats
return 0.0;
}

View File

@ -0,0 +1,23 @@
float PixelShaderFunction()
{
// TODO: All of the below should fail, although presently the first failure
// aborts compilation and the rest are skipped. Having a separate test for
// each would be cumbersome.
vector<void, 2> r00; // cannot declare vectors of voids
matrix<void, 2, 3> r01; // cannot declare matrices of voids
vector<float, 2, 3> r02; // too many parameters to vector
matrix<float, 2> r03; // not enough parameters to matrix
int three = 3;
vector<void, three> r04; // size must be a literal constant integer
matrix<void, three, three> r05; // size must be a literal constant integer
vector<vector<int, 3>, 3> r06; // type must be a simple scalar
vector<float3, 3> r07; // type must be a simple scalar
return 0.0;
}

11
Test/hlsl.typedef.frag Normal file
View File

@ -0,0 +1,11 @@
typedef float4 myVec4;
float4 ShaderFunction(float4 input, int ii) : COLOR0
{
typedef int myInt;
myVec4 a1 = myVec4(1.0);
myInt i = 2;
typedef myInt myInt2;
myInt2 j = ii;
return input * a1 + myVec4(i + j);
}

View File

@ -0,0 +1,7 @@
#version 130
out float gl_ClipDistance[8]; // OK, 8 is gl_MaxClipDistances
void main()
{
}

View File

@ -6,27 +6,6 @@ EXE=../build/install/bin/glslangValidator
HASERROR=0
mkdir -p localResults
#
# configuration file tests
#
echo running configuration file test
$EXE -c > $TARGETDIR/test.conf
diff -b $BASEDIR/test.conf $TARGETDIR/test.conf || HASERROR=1
$EXE -i -l $TARGETDIR/test.conf specExamples.vert > $TARGETDIR/specExamples.vert.out
diff -b $BASEDIR/specExamples.vert.out $TARGETDIR || HASERROR=1
$EXE -l 100Limits.vert 100.conf > $TARGETDIR/100LimitsConf.vert.out
diff -b $BASEDIR/100LimitsConf.vert.out $TARGETDIR/100LimitsConf.vert.out || HASERROR=1
#
# isolated compilation tests
#
while read t; do
echo Running $t...
b=`basename $t`
$EXE -i -l $t > $TARGETDIR/$b.out
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
done < testlist
if [ -a localtestlist ]
then
while read t; do
@ -37,87 +16,21 @@ if [ -a localtestlist ]
done < localtestlist
fi
#
# SPIR-V code generation tests
#
while read t; do
case $t in
\#*)
# Skip comment lines in the test list file.
;;
*)
echo Running SPIR-V $t...
b=`basename $t`
$EXE -H $t > $TARGETDIR/$b.out
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
;;
esac
done < test-spirv-list
rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv
#
# HLSL -> SPIR-V code generation tests
#
while read t; do
case $t in
\#*)
# Skip comment lines in the test list file.
;;
*)
echo Running HLSL-to-SPIR-V $t...
b=`basename $t`
$EXE -D -e PixelShaderFunction -H -i $t > $TARGETDIR/$b.out
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
;;
esac
done < test-hlsl-spirv-list
rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv
#
# Preprocessor tests
#
while read t; do
echo Running Preprocessor $t...
b=`basename $t`
$EXE -E $t > $TARGETDIR/$b.out 2> $TARGETDIR/$b.err
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
diff -b $BASEDIR/$b.err $TARGETDIR/$b.err || HASERROR=1
done < test-preprocessor-list
#
# grouped shaders for bulk (faster) tests
#
function runBulkTest {
echo Running $*...
$EXE -i -l -t $* > $TARGETDIR/$1.out
diff -b $BASEDIR/$1.out $TARGETDIR/$1.out || HASERROR=1
}
runBulkTest mains1.frag mains2.frag noMain1.geom noMain2.geom
runBulkTest noMain.vert mains.frag
runBulkTest link1.frag link2.frag link3.frag
runBulkTest es-link1.frag es-link2.frag
runBulkTest recurse1.vert recurse1.frag recurse2.frag
runBulkTest 300link.frag
runBulkTest 300link2.frag
runBulkTest 300link3.frag
runBulkTest empty.frag empty2.frag empty3.frag
runBulkTest 150.tesc 150.tese 400.tesc 400.tese 410.tesc 420.tesc 420.tese
runBulkTest max_vertices_0.geom
#
# reflection tests
#
echo Running reflection...
$EXE -l -q reflection.vert > $TARGETDIR/reflection.vert.out
$EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
#
# multi-threaded test
#
echo Comparing single thread to multithread for all tests in current directory...
$EXE -i *.vert *.geom *.frag *.tes* *.comp > singleThread.out
$EXE -i *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out
$EXE -i -C *.vert *.geom *.frag *.tes* *.comp > singleThread.out
$EXE -i -C *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out
diff singleThread.out multiThread.out || HASERROR=1
if [ $HASERROR -eq 0 ]

10
Test/spv.430.frag Normal file
View File

@ -0,0 +1,10 @@
#version 430 core
out vec4 color;
void main()
{
color = vec4(1.0);
color *= gl_Layer;
color *= gl_ViewportIndex;
}

20
Test/spv.450.tesc Normal file
View File

@ -0,0 +1,20 @@
#version 450 core
layout(vertices = 4) out;
patch out vec4 patchOut;
struct S {
float sMem1; // should not see a patch decoration
float sMem2; // should not see a patch decoration
};
layout(location = 12) patch out TheBlock {
highp float bMem1; // should not see a location decoration
highp float bMem2;
S s; // should see a patch decoration
} tcBlock[2];
void main()
{
}

View File

@ -1,4 +1,4 @@
#version 310 es
#version 450
@ -22,6 +22,7 @@ void main()
func(counter);
uint val = atomicCounter(countArr[2]);
atomicCounterDecrement(counter);
atomicCounterIncrement(counter);
}
shared int atomi;

View File

@ -0,0 +1,6 @@
#version 330
void main()
{
gl_FragColor = vec4(1.0);
}

8
Test/spv.specConst.vert Normal file
View File

@ -0,0 +1,8 @@
#version 450
layout(constant_id = 11) const int a = 8;
void main()
{
gl_Position = vec4(1.0) / a;
}

View File

@ -1,4 +0,0 @@
# Test looping constructs.
# No tests yet for making sure break and continue from a nested loop
# goes to the innermost target.
hlsl.frag

View File

@ -1,16 +0,0 @@
preprocessor.cpp_style_line_directive.vert
preprocessor.cpp_style___FILE__.vert
preprocessor.edge_cases.vert
preprocessor.errors.vert
preprocessor.extensions.vert
preprocessor.function_macro.vert
preprocessor.include.enabled.vert
preprocessor.include.disabled.vert
preprocessor.line.vert
preprocessor.line.frag
preprocessor.pragma.vert
preprocessor.simple.vert
preprocessor.success_if_parse_would_fail.vert
preprocessor.defined.vert
preprocessor.many.endif.vert
preprocessor.eof_missing.vert

View File

@ -1,115 +0,0 @@
# Test looping constructs.
# No tests yet for making sure break and continue from a nested loop
# goes to the innermost target.
spv.do-simple.vert
spv.do-while-continue-break.vert
spv.for-complex-condition.vert
spv.for-continue-break.vert
spv.for-simple.vert
spv.for-notest.vert
spv.for-nobody.vert
spv.while-continue-break.vert
spv.while-simple.vert
# vulkan-specific tests
spv.set.vert
spv.double.comp
spv.100ops.frag
spv.130.frag
spv.140.frag
spv.150.geom
spv.150.vert
spv.300BuiltIns.vert
spv.300layout.frag
spv.300layout.vert
spv.300layoutp.vert
spv.310.comp
spv.330.geom
spv.400.frag
spv.400.tesc
spv.400.tese
spv.420.geom
spv.430.vert
spv.accessChain.frag
spv.aggOps.frag
spv.always-discard.frag
spv.always-discard2.frag
spv.bitCast.frag
spv.bool.vert
spv.boolInBlock.frag
spv.branch-return.vert
spv.conditionalDiscard.frag
spv.conversion.frag
spv.dataOut.frag
spv.dataOutIndirect.frag
spv.dataOutIndirect.vert
spv.deepRvalue.frag
spv.depthOut.frag
spv.discard-dce.frag
spv.doWhileLoop.frag
spv.earlyReturnDiscard.frag
spv.flowControl.frag
spv.forLoop.frag
spv.forwardFun.frag
spv.functionCall.frag
spv.functionSemantics.frag
spv.interpOps.frag
spv.int64.frag
spv.layoutNested.vert
spv.length.frag
spv.localAggregates.frag
spv.loops.frag
spv.loopsArtificial.frag
spv.matFun.vert
spv.matrix.frag
spv.matrix2.frag
spv.memoryQualifier.frag
spv.merge-unreachable.frag
spv.newTexture.frag
spv.noDeadDecorations.vert
spv.nonSquare.vert
spv.Operations.frag
spv.intOps.vert
spv.precision.frag
spv.prepost.frag
spv.qualifiers.vert
spv.shaderBallot.comp
spv.shaderGroupVote.comp
spv.shiftOps.frag
spv.simpleFunctionCall.frag
spv.simpleMat.vert
spv.sparseTexture.frag
spv.sparseTextureClamp.frag
spv.structAssignment.frag
spv.structDeref.frag
spv.structure.frag
spv.switch.frag
spv.swizzle.frag
spv.test.frag
spv.test.vert
spv.texture.frag
spv.texture.vert
spv.image.frag
spv.types.frag
spv.uint.frag
spv.uniformArray.frag
spv.variableArrayIndex.frag
spv.varyingArray.frag
spv.varyingArrayIndirect.frag
spv.voidFunction.frag
spv.whileLoop.frag
spv.AofA.frag
spv.queryL.frag
spv.separate.frag
spv.shortCircuit.frag
spv.pushConstant.vert
spv.subpass.frag
spv.specConstant.vert
spv.specConstant.comp
spv.specConstantComposite.vert
spv.specConstantOperations.vert
spv.precise.tese
spv.precise.tesc
# GLSL-level semantics
vulkan.frag
vulkan.vert
vulkan.comp

View File

@ -1,134 +0,0 @@
sample.frag
sample.vert
decls.frag
specExamples.frag
specExamples.vert
versionsClean.frag
versionsClean.vert
versionsErrors.frag
versionsErrors.vert
100.frag
120.vert
120.frag
130.vert
130.frag
140.vert
140.frag
150.vert
150.geom
150.frag
precision.frag
precision.vert
nonSquare.vert
matrixError.vert
cppSimple.vert
cppIndent.vert
cppNest.vert
cppComplexExpr.vert
badChars.frag
pointCoord.frag
array.frag
array100.frag
comment.frag
300.vert
300.frag
300BuiltIns.frag
300layout.vert
300layout.frag
300operations.frag
300block.frag
310.comp
310.vert
310.geom
310.frag
310.tesc
310.tese
310implicitSizeArrayError.vert
310AofA.vert
330.frag
330comp.frag
constErrors.frag
constFold.frag
errors.frag
forwardRef.frag
uint.frag
switch.frag
tokenLength.vert
100Limits.vert
100scope.vert
110scope.vert
300scope.vert
400.frag
420.frag
420.vert
420.geom
420_size_gl_in.geom
430scope.vert
lineContinuation100.vert
lineContinuation.vert
numeral.frag
400.geom
400.tesc
400.tese
410.tesc
420.tesc
420.tese
410.geom
430.vert
430.comp
430AofA.frag
440.vert
440.frag
450.vert
450.geom
450.tesc
450.tese
450.frag
450.comp
dce.frag
atomic_uint.frag
aggOps.frag
always-discard.frag
always-discard2.frag
conditionalDiscard.frag
conversion.frag
dataOut.frag
dataOutIndirect.frag
deepRvalue.frag
depthOut.frag
discard-dce.frag
doWhileLoop.frag
earlyReturnDiscard.frag
flowControl.frag
forLoop.frag
functionCall.frag
functionSemantics.frag
length.frag
localAggregates.frag
loops.frag
loopsArtificial.frag
matrix.frag
matrix2.frag
newTexture.frag
Operations.frag
prepost.frag
simpleFunctionCall.frag
structAssignment.frag
structDeref.frag
structure.frag
swizzle.frag
syntaxError.frag
test.frag
texture.frag
types.frag
uniformArray.frag
variableArrayIndex.frag
varyingArray.frag
varyingArrayIndirect.frag
voidFunction.frag
whileLoop.frag
nonVulkan.frag
negativeArraySize.comp
spv.atomic.comp
precise.tesc
precise_struct_block.vert

View File

@ -1553,6 +1553,13 @@ public:
if (structure) {
s.append("{");
for (size_t i = 0; i < structure->size(); ++i) {
if (s.size() > 3 * GlslangMaxTypeLength) {
// If we are getting too long, cut it short,
// just need to draw the line somewhere, as there is no limit to
// how large a struct/block type can get.
s.append("...");
break;
}
if (! (*structure)[i].type->hiddenMember()) {
s.append((*structure)[i].type->getCompleteString());
s.append(" ");

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