Updated glslang.
This commit is contained in:
parent
bf4cc4a1cc
commit
da90f6c062
1
3rdparty/glslang/.appveyor.yml
vendored
1
3rdparty/glslang/.appveyor.yml
vendored
@ -60,6 +60,7 @@ after_test:
|
||||
# Zip all glslang artifacts for uploading and deploying
|
||||
- 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip
|
||||
bin\glslangValidator.exe
|
||||
bin\spirv-remap.exe
|
||||
include\glslang\*
|
||||
include\SPIRV\*
|
||||
lib\glslang%SUFFIX%.lib
|
||||
|
1
3rdparty/glslang/SPIRV/CMakeLists.txt
vendored
1
3rdparty/glslang/SPIRV/CMakeLists.txt
vendored
@ -60,6 +60,7 @@ if(ENABLE_OPT)
|
||||
PRIVATE ${spirv-tools_SOURCE_DIR}/source
|
||||
)
|
||||
target_link_libraries(SPIRV glslang SPIRV-Tools-opt)
|
||||
target_include_directories(SPIRV PUBLIC ../External)
|
||||
else()
|
||||
target_link_libraries(SPIRV glslang)
|
||||
endif(ENABLE_OPT)
|
||||
|
1
3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
vendored
Normal file → Executable file
1
3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
vendored
Normal file → Executable file
@ -36,6 +36,7 @@ static const char* const E_SPV_KHR_device_group = "SPV_KHR_devic
|
||||
static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview";
|
||||
static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters";
|
||||
static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage";
|
||||
static const char* const E_SPV_KHR_8bit_storage = "SPV_KHR_8bit_storage";
|
||||
static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
|
||||
static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage";
|
||||
|
||||
|
14
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
14
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
@ -2507,6 +2507,20 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
|
||||
}
|
||||
}
|
||||
|
||||
const bool contains8BitType = node->getType().containsBasicType(glslang::EbtInt8) ||
|
||||
node->getType().containsBasicType(glslang::EbtUint8);
|
||||
if (contains8BitType) {
|
||||
if (storageClass == spv::StorageClassPushConstant) {
|
||||
builder.addExtension(spv::E_SPV_KHR_8bit_storage);
|
||||
builder.addCapability(spv::CapabilityStoragePushConstant8);
|
||||
} else if (storageClass == spv::StorageClassUniform) {
|
||||
builder.addExtension(spv::E_SPV_KHR_8bit_storage);
|
||||
builder.addCapability(spv::CapabilityUniformAndStorageBuffer8BitAccess);
|
||||
if (node->getType().getQualifier().storage == glslang::EvqBuffer)
|
||||
builder.addCapability(spv::CapabilityStorageBuffer8BitAccess);
|
||||
}
|
||||
}
|
||||
|
||||
const char* name = node->getName().c_str();
|
||||
if (glslang::IsAnonymous(name))
|
||||
name = "";
|
||||
|
21
3rdparty/glslang/SPIRV/disassemble.cpp
vendored
21
3rdparty/glslang/SPIRV/disassemble.cpp
vendored
@ -716,4 +716,25 @@ void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
|
||||
SpirvStream.processInstructions();
|
||||
}
|
||||
|
||||
#if ENABLE_OPT
|
||||
|
||||
#include "spirv-tools/libspirv.h"
|
||||
|
||||
// Use the SPIRV-Tools disassembler to print SPIR-V.
|
||||
void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv)
|
||||
{
|
||||
spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3);
|
||||
spv_text text;
|
||||
spv_diagnostic diagnostic = nullptr;
|
||||
spvBinaryToText(context, &spirv.front(), spirv.size(),
|
||||
SPV_BINARY_TO_TEXT_OPTION_FRIENDLY_NAMES | SPV_BINARY_TO_TEXT_OPTION_INDENT,
|
||||
&text, &diagnostic);
|
||||
if (diagnostic == nullptr)
|
||||
out << text->str;
|
||||
else
|
||||
spvDiagnosticPrint(diagnostic);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
}; // end namespace spv
|
||||
|
4
3rdparty/glslang/SPIRV/disassemble.h
vendored
4
3rdparty/glslang/SPIRV/disassemble.h
vendored
@ -45,8 +45,12 @@
|
||||
|
||||
namespace spv {
|
||||
|
||||
// disassemble with glslang custom disassembler
|
||||
void Disassemble(std::ostream& out, const std::vector<unsigned int>&);
|
||||
|
||||
// disassemble with SPIRV-Tools disassembler
|
||||
void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& stream);
|
||||
|
||||
}; // end namespace spv
|
||||
|
||||
#endif // disassembler_H
|
||||
|
4
3rdparty/glslang/SPIRV/doc.cpp
vendored
4
3rdparty/glslang/SPIRV/doc.cpp
vendored
@ -790,6 +790,10 @@ const char* CapabilityString(int info)
|
||||
case CapabilityStoragePushConstant16: return "StoragePushConstant16";
|
||||
case CapabilityStorageInputOutput16: return "StorageInputOutput16";
|
||||
|
||||
case CapabilityStorageBuffer8BitAccess: return "CapabilityStorageBuffer8BitAccess";
|
||||
case CapabilityUniformAndStorageBuffer8BitAccess: return "CapabilityUniformAndStorageBuffer8BitAccess";
|
||||
case CapabilityStoragePushConstant8: return "CapabilityStoragePushConstant8";
|
||||
|
||||
case CapabilityDeviceGroup: return "DeviceGroup";
|
||||
case CapabilityMultiView: return "MultiView";
|
||||
|
||||
|
3
3rdparty/glslang/SPIRV/spirv.hpp
vendored
Normal file → Executable file
3
3rdparty/glslang/SPIRV/spirv.hpp
vendored
Normal file → Executable file
@ -679,6 +679,9 @@ enum Capability {
|
||||
CapabilityVariablePointers = 4442,
|
||||
CapabilityAtomicStorageOps = 4445,
|
||||
CapabilitySampleMaskPostDepthCoverage = 4447,
|
||||
CapabilityStorageBuffer8BitAccess = 4448,
|
||||
CapabilityUniformAndStorageBuffer8BitAccess = 4449,
|
||||
CapabilityStoragePushConstant8 = 4450,
|
||||
CapabilityFloat16ImageAMD = 5008,
|
||||
CapabilityImageGatherBiasLodAMD = 5009,
|
||||
CapabilityFragmentMaskAMD = 5010,
|
||||
|
1
3rdparty/glslang/StandAlone/CMakeLists.txt
vendored
1
3rdparty/glslang/StandAlone/CMakeLists.txt
vendored
@ -33,6 +33,7 @@ endif(WIN32)
|
||||
|
||||
target_link_libraries(glslangValidator ${LIBRARIES})
|
||||
target_link_libraries(spirv-remap ${LIBRARIES})
|
||||
target_include_directories(glslangValidator PUBLIC ../External)
|
||||
|
||||
if(WIN32)
|
||||
source_group("Source" FILES ${SOURCES})
|
||||
|
15
3rdparty/glslang/StandAlone/StandAlone.cpp
vendored
Normal file → Executable file
15
3rdparty/glslang/StandAlone/StandAlone.cpp
vendored
Normal file → Executable file
@ -102,6 +102,7 @@ enum TOptions {
|
||||
EOptionDumpBareVersion = (1 << 31),
|
||||
};
|
||||
bool targetHlslFunctionality1 = false;
|
||||
bool SpvToolsDisassembler = false;
|
||||
|
||||
//
|
||||
// Return codes from main/exit().
|
||||
@ -506,6 +507,8 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
sourceEntryPointName = argv[1];
|
||||
bumpArg();
|
||||
break;
|
||||
} else if (lowerword == "spirv-dis") {
|
||||
SpvToolsDisassembler = true;
|
||||
} else if (lowerword == "stdin") {
|
||||
Options |= EOptionStdin;
|
||||
shaderStageName = argv[1];
|
||||
@ -982,9 +985,15 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
} else {
|
||||
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
|
||||
}
|
||||
if (Options & EOptionHumanReadableSpv) {
|
||||
#if ENABLE_OPT
|
||||
if (SpvToolsDisassembler)
|
||||
spv::SpirvToolsDisassemble(std::cout, spirv);
|
||||
#else
|
||||
if (SpvToolsDisassembler)
|
||||
printf("SPIRV-Tools is not enabled; use -H for human readable SPIR-V\n");
|
||||
#endif
|
||||
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
||||
spv::Disassemble(std::cout, spirv);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1405,6 +1414,8 @@ void usage()
|
||||
" --shift-UBO-binding [stage] [num set]... per-descriptor-set shift values\n"
|
||||
" --shift-cbuffer-binding [stage] num synonym for --shift-UBO-binding\n"
|
||||
" --shift-cbuffer-binding [stage] [num set]... per-descriptor-set shift values\n"
|
||||
" --spirv-dis output standard form disassembly; works only\n"
|
||||
" when a SPIR-V generation option is also used\n"
|
||||
" --sub [stage] num synonym for --shift-UBO-binding\n"
|
||||
" --source-entrypoint <name> the given shader source function is\n"
|
||||
" renamed to be the <name> given in -e\n"
|
||||
|
@ -56,9 +56,8 @@ ERROR: 0:248: 'explicit types' : required extension not requested: Possible exte
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:248: 'half floating-point suffix' : not supported with this profile: none
|
||||
ERROR: 0:248: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON
|
||||
ERROR: 56 compilation errors. No code generated.
|
||||
ERROR: 55 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 120
|
||||
|
@ -179,6 +179,10 @@ ERROR: node is still EOpNull!
|
||||
0:83 2147483647 (const int)
|
||||
0:84 Constant:
|
||||
0:84 +1.#INF
|
||||
0:84 Constant:
|
||||
0:84 -1.#INF
|
||||
0:84 Constant:
|
||||
0:84 1.#IND
|
||||
0:88 Constant:
|
||||
0:88 2 (const uint)
|
||||
0:88 3 (const uint)
|
||||
|
@ -1,7 +1,6 @@
|
||||
cppBad2.vert
|
||||
ERROR: 0:3: 'macro expansion' : End of input in macro b
|
||||
ERROR: 0:3: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 100
|
||||
|
@ -1,20 +1,8 @@
|
||||
hlsl.calculatelodunclamped.dx10.frag
|
||||
ERROR: 0:28: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:29: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:30: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:32: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:33: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:34: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:36: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:37: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 0:38: '' : unimplemented: CalculateLevelOfDetailUnclamped
|
||||
ERROR: 9 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
using depth_any
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Sequence
|
||||
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:24 Function Parameters:
|
||||
0:? Sequence
|
||||
@ -29,7 +17,7 @@ ERROR: node is still EOpNull!
|
||||
0:28 Constant:
|
||||
0:28 0.100000
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 'txval11' ( temp float)
|
||||
@ -41,7 +29,7 @@ ERROR: node is still EOpNull!
|
||||
0:29 Constant:
|
||||
0:29 0.200000
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 1 (const int)
|
||||
0:30 Sequence
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'txval12' ( temp float)
|
||||
@ -53,7 +41,7 @@ ERROR: node is still EOpNull!
|
||||
0:30 Constant:
|
||||
0:30 0.300000
|
||||
0:30 Constant:
|
||||
0:30 0 (const int)
|
||||
0:30 1 (const int)
|
||||
0:32 Sequence
|
||||
0:32 move second child to first child ( temp float)
|
||||
0:32 'txval20' ( temp float)
|
||||
@ -66,7 +54,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.100000
|
||||
0:? 0.200000
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 1 (const int)
|
||||
0:33 Sequence
|
||||
0:33 move second child to first child ( temp float)
|
||||
0:33 'txval21' ( temp float)
|
||||
@ -79,7 +67,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.300000
|
||||
0:? 0.400000
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 move second child to first child ( temp float)
|
||||
0:34 'txval22' ( temp float)
|
||||
@ -92,7 +80,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 1 (const int)
|
||||
0:36 Sequence
|
||||
0:36 move second child to first child ( temp float)
|
||||
0:36 'txval40' ( temp float)
|
||||
@ -106,7 +94,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.200000
|
||||
0:? 0.300000
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 1 (const int)
|
||||
0:37 Sequence
|
||||
0:37 move second child to first child ( temp float)
|
||||
0:37 'txval41' ( temp float)
|
||||
@ -120,7 +108,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 1 (const int)
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child ( temp float)
|
||||
0:38 'txval42' ( temp float)
|
||||
@ -134,7 +122,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.800000
|
||||
0:? 0.900000
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 1 (const int)
|
||||
0:40 move second child to first child ( temp 4-component vector of float)
|
||||
0:40 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
@ -195,7 +183,7 @@ Linked fragment stage:
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
using depth_any
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Sequence
|
||||
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:24 Function Parameters:
|
||||
0:? Sequence
|
||||
@ -210,7 +198,7 @@ ERROR: node is still EOpNull!
|
||||
0:28 Constant:
|
||||
0:28 0.100000
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 'txval11' ( temp float)
|
||||
@ -222,7 +210,7 @@ ERROR: node is still EOpNull!
|
||||
0:29 Constant:
|
||||
0:29 0.200000
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 1 (const int)
|
||||
0:30 Sequence
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'txval12' ( temp float)
|
||||
@ -234,7 +222,7 @@ ERROR: node is still EOpNull!
|
||||
0:30 Constant:
|
||||
0:30 0.300000
|
||||
0:30 Constant:
|
||||
0:30 0 (const int)
|
||||
0:30 1 (const int)
|
||||
0:32 Sequence
|
||||
0:32 move second child to first child ( temp float)
|
||||
0:32 'txval20' ( temp float)
|
||||
@ -247,7 +235,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.100000
|
||||
0:? 0.200000
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 1 (const int)
|
||||
0:33 Sequence
|
||||
0:33 move second child to first child ( temp float)
|
||||
0:33 'txval21' ( temp float)
|
||||
@ -260,7 +248,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.300000
|
||||
0:? 0.400000
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 move second child to first child ( temp float)
|
||||
0:34 'txval22' ( temp float)
|
||||
@ -273,7 +261,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 1 (const int)
|
||||
0:36 Sequence
|
||||
0:36 move second child to first child ( temp float)
|
||||
0:36 'txval40' ( temp float)
|
||||
@ -287,7 +275,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.200000
|
||||
0:? 0.300000
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 1 (const int)
|
||||
0:37 Sequence
|
||||
0:37 move second child to first child ( temp float)
|
||||
0:37 'txval41' ( temp float)
|
||||
@ -301,7 +289,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 1 (const int)
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child ( temp float)
|
||||
0:38 'txval42' ( temp float)
|
||||
@ -315,7 +303,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 0.800000
|
||||
0:? 0.900000
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 1 (const int)
|
||||
0:40 move second child to first child ( temp 4-component vector of float)
|
||||
0:40 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:40 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
@ -369,4 +357,224 @@ ERROR: node is still EOpNull!
|
||||
0:? '@entryPointOutput.Depth' ( out float FragDepth)
|
||||
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 148
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
Capability SampledCubeArray
|
||||
Capability ImageQuery
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 140 144
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
ExecutionMode 4 DepthReplacing
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 8 "PS_OUTPUT"
|
||||
MemberName 8(PS_OUTPUT) 0 "Color"
|
||||
MemberName 8(PS_OUTPUT) 1 "Depth"
|
||||
Name 10 "@main("
|
||||
Name 13 "txval10"
|
||||
Name 16 "g_tTex1df4a"
|
||||
Name 20 "g_sSamp"
|
||||
Name 30 "txval11"
|
||||
Name 33 "g_tTex1di4a"
|
||||
Name 41 "txval12"
|
||||
Name 45 "g_tTex1du4a"
|
||||
Name 53 "txval20"
|
||||
Name 56 "g_tTex2df4a"
|
||||
Name 64 "txval21"
|
||||
Name 67 "g_tTex2di4a"
|
||||
Name 76 "txval22"
|
||||
Name 79 "g_tTex2du4a"
|
||||
Name 89 "txval40"
|
||||
Name 92 "g_tTexcdf4a"
|
||||
Name 101 "txval41"
|
||||
Name 104 "g_tTexcdi4a"
|
||||
Name 112 "txval42"
|
||||
Name 115 "g_tTexcdu4a"
|
||||
Name 127 "psout"
|
||||
Name 137 "flattenTemp"
|
||||
Name 140 "@entryPointOutput.Color"
|
||||
Name 144 "@entryPointOutput.Depth"
|
||||
Name 147 "g_tTex1df4"
|
||||
Decorate 16(g_tTex1df4a) DescriptorSet 0
|
||||
Decorate 16(g_tTex1df4a) Binding 1
|
||||
Decorate 20(g_sSamp) DescriptorSet 0
|
||||
Decorate 20(g_sSamp) Binding 0
|
||||
Decorate 33(g_tTex1di4a) DescriptorSet 0
|
||||
Decorate 45(g_tTex1du4a) DescriptorSet 0
|
||||
Decorate 56(g_tTex2df4a) DescriptorSet 0
|
||||
Decorate 67(g_tTex2di4a) DescriptorSet 0
|
||||
Decorate 79(g_tTex2du4a) DescriptorSet 0
|
||||
Decorate 92(g_tTexcdf4a) DescriptorSet 0
|
||||
Decorate 104(g_tTexcdi4a) DescriptorSet 0
|
||||
Decorate 115(g_tTexcdu4a) DescriptorSet 0
|
||||
Decorate 140(@entryPointOutput.Color) Location 0
|
||||
Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth
|
||||
Decorate 147(g_tTex1df4) DescriptorSet 0
|
||||
Decorate 147(g_tTex1df4) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
|
||||
9: TypeFunction 8(PS_OUTPUT)
|
||||
12: TypePointer Function 6(float)
|
||||
14: TypeImage 6(float) 1D array sampled format:Unknown
|
||||
15: TypePointer UniformConstant 14
|
||||
16(g_tTex1df4a): 15(ptr) Variable UniformConstant
|
||||
18: TypeSampler
|
||||
19: TypePointer UniformConstant 18
|
||||
20(g_sSamp): 19(ptr) Variable UniformConstant
|
||||
22: TypeSampledImage 14
|
||||
24: 6(float) Constant 1036831949
|
||||
25: TypeVector 6(float) 2
|
||||
27: TypeInt 32 1
|
||||
28: 27(int) Constant 1
|
||||
31: TypeImage 27(int) 1D array sampled format:Unknown
|
||||
32: TypePointer UniformConstant 31
|
||||
33(g_tTex1di4a): 32(ptr) Variable UniformConstant
|
||||
36: TypeSampledImage 31
|
||||
38: 6(float) Constant 1045220557
|
||||
42: TypeInt 32 0
|
||||
43: TypeImage 42(int) 1D array sampled format:Unknown
|
||||
44: TypePointer UniformConstant 43
|
||||
45(g_tTex1du4a): 44(ptr) Variable UniformConstant
|
||||
48: TypeSampledImage 43
|
||||
50: 6(float) Constant 1050253722
|
||||
54: TypeImage 6(float) 2D array sampled format:Unknown
|
||||
55: TypePointer UniformConstant 54
|
||||
56(g_tTex2df4a): 55(ptr) Variable UniformConstant
|
||||
59: TypeSampledImage 54
|
||||
61: 25(fvec2) ConstantComposite 24 38
|
||||
65: TypeImage 27(int) 2D array sampled format:Unknown
|
||||
66: TypePointer UniformConstant 65
|
||||
67(g_tTex2di4a): 66(ptr) Variable UniformConstant
|
||||
70: TypeSampledImage 65
|
||||
72: 6(float) Constant 1053609165
|
||||
73: 25(fvec2) ConstantComposite 50 72
|
||||
77: TypeImage 42(int) 2D array sampled format:Unknown
|
||||
78: TypePointer UniformConstant 77
|
||||
79(g_tTex2du4a): 78(ptr) Variable UniformConstant
|
||||
82: TypeSampledImage 77
|
||||
84: 6(float) Constant 1056964608
|
||||
85: 6(float) Constant 1058642330
|
||||
86: 25(fvec2) ConstantComposite 84 85
|
||||
90: TypeImage 6(float) Cube array sampled format:Unknown
|
||||
91: TypePointer UniformConstant 90
|
||||
92(g_tTexcdf4a): 91(ptr) Variable UniformConstant
|
||||
95: TypeSampledImage 90
|
||||
97: TypeVector 6(float) 3
|
||||
98: 97(fvec3) ConstantComposite 24 38 50
|
||||
102: TypeImage 27(int) Cube array sampled format:Unknown
|
||||
103: TypePointer UniformConstant 102
|
||||
104(g_tTexcdi4a): 103(ptr) Variable UniformConstant
|
||||
107: TypeSampledImage 102
|
||||
109: 97(fvec3) ConstantComposite 72 84 85
|
||||
113: TypeImage 42(int) Cube array sampled format:Unknown
|
||||
114: TypePointer UniformConstant 113
|
||||
115(g_tTexcdu4a): 114(ptr) Variable UniformConstant
|
||||
118: TypeSampledImage 113
|
||||
120: 6(float) Constant 1060320051
|
||||
121: 6(float) Constant 1061997773
|
||||
122: 6(float) Constant 1063675494
|
||||
123: 97(fvec3) ConstantComposite 120 121 122
|
||||
126: TypePointer Function 8(PS_OUTPUT)
|
||||
128: 27(int) Constant 0
|
||||
129: 6(float) Constant 1065353216
|
||||
130: 7(fvec4) ConstantComposite 129 129 129 129
|
||||
131: TypePointer Function 7(fvec4)
|
||||
139: TypePointer Output 7(fvec4)
|
||||
140(@entryPointOutput.Color): 139(ptr) Variable Output
|
||||
143: TypePointer Output 6(float)
|
||||
144(@entryPointOutput.Depth): 143(ptr) Variable Output
|
||||
147(g_tTex1df4): 15(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
137(flattenTemp): 126(ptr) Variable Function
|
||||
138:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
Store 137(flattenTemp) 138
|
||||
141: 131(ptr) AccessChain 137(flattenTemp) 128
|
||||
142: 7(fvec4) Load 141
|
||||
Store 140(@entryPointOutput.Color) 142
|
||||
145: 12(ptr) AccessChain 137(flattenTemp) 28
|
||||
146: 6(float) Load 145
|
||||
Store 144(@entryPointOutput.Depth) 146
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
11: Label
|
||||
13(txval10): 12(ptr) Variable Function
|
||||
30(txval11): 12(ptr) Variable Function
|
||||
41(txval12): 12(ptr) Variable Function
|
||||
53(txval20): 12(ptr) Variable Function
|
||||
64(txval21): 12(ptr) Variable Function
|
||||
76(txval22): 12(ptr) Variable Function
|
||||
89(txval40): 12(ptr) Variable Function
|
||||
101(txval41): 12(ptr) Variable Function
|
||||
112(txval42): 12(ptr) Variable Function
|
||||
127(psout): 126(ptr) Variable Function
|
||||
17: 14 Load 16(g_tTex1df4a)
|
||||
21: 18 Load 20(g_sSamp)
|
||||
23: 22 SampledImage 17 21
|
||||
26: 25(fvec2) ImageQueryLod 23 24
|
||||
29: 6(float) CompositeExtract 26 1
|
||||
Store 13(txval10) 29
|
||||
34: 31 Load 33(g_tTex1di4a)
|
||||
35: 18 Load 20(g_sSamp)
|
||||
37: 36 SampledImage 34 35
|
||||
39: 25(fvec2) ImageQueryLod 37 38
|
||||
40: 6(float) CompositeExtract 39 1
|
||||
Store 30(txval11) 40
|
||||
46: 43 Load 45(g_tTex1du4a)
|
||||
47: 18 Load 20(g_sSamp)
|
||||
49: 48 SampledImage 46 47
|
||||
51: 25(fvec2) ImageQueryLod 49 50
|
||||
52: 6(float) CompositeExtract 51 1
|
||||
Store 41(txval12) 52
|
||||
57: 54 Load 56(g_tTex2df4a)
|
||||
58: 18 Load 20(g_sSamp)
|
||||
60: 59 SampledImage 57 58
|
||||
62: 25(fvec2) ImageQueryLod 60 61
|
||||
63: 6(float) CompositeExtract 62 1
|
||||
Store 53(txval20) 63
|
||||
68: 65 Load 67(g_tTex2di4a)
|
||||
69: 18 Load 20(g_sSamp)
|
||||
71: 70 SampledImage 68 69
|
||||
74: 25(fvec2) ImageQueryLod 71 73
|
||||
75: 6(float) CompositeExtract 74 1
|
||||
Store 64(txval21) 75
|
||||
80: 77 Load 79(g_tTex2du4a)
|
||||
81: 18 Load 20(g_sSamp)
|
||||
83: 82 SampledImage 80 81
|
||||
87: 25(fvec2) ImageQueryLod 83 86
|
||||
88: 6(float) CompositeExtract 87 1
|
||||
Store 76(txval22) 88
|
||||
93: 90 Load 92(g_tTexcdf4a)
|
||||
94: 18 Load 20(g_sSamp)
|
||||
96: 95 SampledImage 93 94
|
||||
99: 25(fvec2) ImageQueryLod 96 98
|
||||
100: 6(float) CompositeExtract 99 1
|
||||
Store 89(txval40) 100
|
||||
105: 102 Load 104(g_tTexcdi4a)
|
||||
106: 18 Load 20(g_sSamp)
|
||||
108: 107 SampledImage 105 106
|
||||
110: 25(fvec2) ImageQueryLod 108 109
|
||||
111: 6(float) CompositeExtract 110 1
|
||||
Store 101(txval41) 111
|
||||
116: 113 Load 115(g_tTexcdu4a)
|
||||
117: 18 Load 20(g_sSamp)
|
||||
119: 118 SampledImage 116 117
|
||||
124: 25(fvec2) ImageQueryLod 119 123
|
||||
125: 6(float) CompositeExtract 124 1
|
||||
Store 112(txval42) 125
|
||||
132: 131(ptr) AccessChain 127(psout) 128
|
||||
Store 132 130
|
||||
133: 12(ptr) AccessChain 127(psout) 28
|
||||
Store 133 129
|
||||
134:8(PS_OUTPUT) Load 127(psout)
|
||||
ReturnValue 134
|
||||
FunctionEnd
|
||||
|
3
3rdparty/glslang/Test/baseResults/hlsl.pp.expand.frag.err
vendored
Normal file
3
3rdparty/glslang/Test/baseResults/hlsl.pp.expand.frag.err
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
ERROR: HLSL currently only supported when requesting SPIR-V for Vulkan.
|
||||
ERROR: HLSL currently only supported when requesting SPIR-V for Vulkan.
|
||||
|
18
3rdparty/glslang/Test/baseResults/hlsl.pp.expand.frag.out
vendored
Normal file
18
3rdparty/glslang/Test/baseResults/hlsl.pp.expand.frag.out
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
struct A
|
||||
{
|
||||
float4 a;
|
||||
float4 b;
|
||||
float4 c = { 1, 2, 3, 4 };
|
||||
float4 d = {({ {(({ 1, 2, 3, 4 }))} })}, { { 1, 2, 3, 4 } };
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
|
4
3rdparty/glslang/Test/baseResults/preprocessor.bad_arg.vert.err
vendored
Normal file
4
3rdparty/glslang/Test/baseResults/preprocessor.bad_arg.vert.err
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
ERROR: 0:8: 'macro expansion' : End of input in macro EXP2
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
0
3rdparty/glslang/Test/baseResults/preprocessor.bad_arg.vert.out
vendored
Normal file
0
3rdparty/glslang/Test/baseResults/preprocessor.bad_arg.vert.out
vendored
Normal file
13
3rdparty/glslang/Test/baseResults/samplerlessTextureFunctions.frag.out
vendored
Normal file
13
3rdparty/glslang/Test/baseResults/samplerlessTextureFunctions.frag.out
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
samplerlessTextureFunctions.frag
|
||||
ERROR: 0:9: 'texelFetch' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:10: 'texelFetch' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:16: 'texelFetchOffset' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:18: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:19: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:20: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:22: 'textureQueryLevels' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 0:24: 'textureSamples' : required extension not requested: GL_EXT_samplerless_texture_functions
|
||||
ERROR: 8 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
336
3rdparty/glslang/Test/baseResults/spv.16bitstorage-int.frag.out
vendored
Executable file
336
3rdparty/glslang/Test/baseResults/spv.16bitstorage-int.frag.out
vendored
Executable file
@ -0,0 +1,336 @@
|
||||
spv.16bitstorage-int.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 171
|
||||
|
||||
Capability Shader
|
||||
Capability Int16
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_16bit_storage"
|
||||
Name 4 "main"
|
||||
Name 12 "S"
|
||||
MemberName 12(S) 0 "x"
|
||||
MemberName 12(S) 1 "y"
|
||||
MemberName 12(S) 2 "z"
|
||||
Name 17 "B2"
|
||||
MemberName 17(B2) 0 "o"
|
||||
MemberName 17(B2) 1 "p"
|
||||
MemberName 17(B2) 2 "q"
|
||||
MemberName 17(B2) 3 "r"
|
||||
MemberName 17(B2) 4 "u"
|
||||
MemberName 17(B2) 5 "v"
|
||||
MemberName 17(B2) 6 "x"
|
||||
MemberName 17(B2) 7 "w"
|
||||
Name 19 "b2"
|
||||
Name 23 "S"
|
||||
MemberName 23(S) 0 "x"
|
||||
MemberName 23(S) 1 "y"
|
||||
MemberName 23(S) 2 "z"
|
||||
Name 25 "B1"
|
||||
MemberName 25(B1) 0 "a"
|
||||
MemberName 25(B1) 1 "b"
|
||||
MemberName 25(B1) 2 "c"
|
||||
MemberName 25(B1) 3 "d"
|
||||
MemberName 25(B1) 4 "g"
|
||||
MemberName 25(B1) 5 "h"
|
||||
MemberName 25(B1) 6 "j"
|
||||
Name 27 "b1"
|
||||
Name 45 "S"
|
||||
MemberName 45(S) 0 "x"
|
||||
MemberName 45(S) 1 "y"
|
||||
MemberName 45(S) 2 "z"
|
||||
Name 49 "B5"
|
||||
MemberName 49(B5) 0 "o"
|
||||
MemberName 49(B5) 1 "p"
|
||||
MemberName 49(B5) 2 "q"
|
||||
MemberName 49(B5) 3 "r"
|
||||
MemberName 49(B5) 4 "u"
|
||||
MemberName 49(B5) 5 "v"
|
||||
MemberName 49(B5) 6 "x"
|
||||
MemberName 49(B5) 7 "w"
|
||||
Name 51 "b5"
|
||||
Name 69 "x0"
|
||||
Name 75 "x1"
|
||||
Name 88 "S2"
|
||||
MemberName 88(S2) 0 "x"
|
||||
MemberName 88(S2) 1 "y"
|
||||
MemberName 88(S2) 2 "z"
|
||||
Name 89 "S3"
|
||||
MemberName 89(S3) 0 "x"
|
||||
Name 90 "B4"
|
||||
MemberName 90(B4) 0 "x"
|
||||
MemberName 90(B4) 1 "y"
|
||||
Name 92 "b4"
|
||||
Name 93 "S2"
|
||||
MemberName 93(S2) 0 "x"
|
||||
MemberName 93(S2) 1 "y"
|
||||
MemberName 93(S2) 2 "z"
|
||||
Name 94 "B3"
|
||||
MemberName 94(B3) 0 "x"
|
||||
Name 96 "b3"
|
||||
Name 113 "v3"
|
||||
Name 135 "u3"
|
||||
Decorate 11 ArrayStride 2
|
||||
MemberDecorate 12(S) 0 Offset 0
|
||||
MemberDecorate 12(S) 1 Offset 4
|
||||
MemberDecorate 12(S) 2 Offset 8
|
||||
Decorate 13 ArrayStride 16
|
||||
Decorate 15 ArrayStride 4
|
||||
Decorate 16 ArrayStride 2
|
||||
MemberDecorate 17(B2) 0 Offset 0
|
||||
MemberDecorate 17(B2) 1 Offset 4
|
||||
MemberDecorate 17(B2) 2 Offset 8
|
||||
MemberDecorate 17(B2) 3 Offset 14
|
||||
MemberDecorate 17(B2) 4 Offset 24
|
||||
MemberDecorate 17(B2) 5 Offset 40
|
||||
MemberDecorate 17(B2) 6 Offset 72
|
||||
MemberDecorate 17(B2) 7 Offset 472
|
||||
Decorate 17(B2) BufferBlock
|
||||
Decorate 19(b2) DescriptorSet 0
|
||||
Decorate 22 ArrayStride 16
|
||||
MemberDecorate 23(S) 0 Offset 0
|
||||
MemberDecorate 23(S) 1 Offset 4
|
||||
MemberDecorate 23(S) 2 Offset 8
|
||||
Decorate 24 ArrayStride 16
|
||||
MemberDecorate 25(B1) 0 Offset 0
|
||||
MemberDecorate 25(B1) 1 Offset 4
|
||||
MemberDecorate 25(B1) 2 Offset 8
|
||||
MemberDecorate 25(B1) 3 Offset 16
|
||||
MemberDecorate 25(B1) 4 Offset 48
|
||||
MemberDecorate 25(B1) 5 Offset 64
|
||||
MemberDecorate 25(B1) 6 Offset 96
|
||||
Decorate 25(B1) Block
|
||||
Decorate 27(b1) DescriptorSet 0
|
||||
Decorate 44 ArrayStride 16
|
||||
MemberDecorate 45(S) 0 Offset 0
|
||||
MemberDecorate 45(S) 1 Offset 4
|
||||
MemberDecorate 45(S) 2 Offset 8
|
||||
Decorate 46 ArrayStride 16
|
||||
Decorate 47 ArrayStride 16
|
||||
Decorate 48 ArrayStride 16
|
||||
MemberDecorate 49(B5) 0 Offset 0
|
||||
MemberDecorate 49(B5) 1 Offset 4
|
||||
MemberDecorate 49(B5) 2 Offset 8
|
||||
MemberDecorate 49(B5) 3 Offset 16
|
||||
MemberDecorate 49(B5) 4 Offset 48
|
||||
MemberDecorate 49(B5) 5 Offset 64
|
||||
MemberDecorate 49(B5) 6 Offset 96
|
||||
MemberDecorate 49(B5) 7 Offset 1696
|
||||
Decorate 49(B5) Block
|
||||
Decorate 51(b5) DescriptorSet 0
|
||||
MemberDecorate 88(S2) 0 ColMajor
|
||||
MemberDecorate 88(S2) 0 Offset 0
|
||||
MemberDecorate 88(S2) 0 MatrixStride 16
|
||||
MemberDecorate 88(S2) 1 Offset 64
|
||||
MemberDecorate 88(S2) 2 Offset 68
|
||||
MemberDecorate 89(S3) 0 Offset 0
|
||||
MemberDecorate 90(B4) 0 Offset 0
|
||||
MemberDecorate 90(B4) 1 Offset 80
|
||||
Decorate 90(B4) BufferBlock
|
||||
Decorate 92(b4) DescriptorSet 0
|
||||
MemberDecorate 93(S2) 0 RowMajor
|
||||
MemberDecorate 93(S2) 0 Offset 0
|
||||
MemberDecorate 93(S2) 0 MatrixStride 16
|
||||
MemberDecorate 93(S2) 1 Offset 64
|
||||
MemberDecorate 93(S2) 2 Offset 68
|
||||
MemberDecorate 94(B3) 0 Offset 0
|
||||
Decorate 94(B3) BufferBlock
|
||||
Decorate 96(b3) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 16 1
|
||||
7: TypeVector 6(int16_t) 2
|
||||
8: TypeVector 6(int16_t) 3
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 2
|
||||
11: TypeArray 6(int16_t) 10
|
||||
12(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3)
|
||||
13: TypeArray 12(S) 10
|
||||
14: 9(int) Constant 100
|
||||
15: TypeArray 7(i16vec2) 14
|
||||
16: TypeRuntimeArray 6(int16_t)
|
||||
17(B2): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 11 12(S) 13 15 16
|
||||
18: TypePointer Uniform 17(B2)
|
||||
19(b2): 18(ptr) Variable Uniform
|
||||
20: TypeInt 32 1
|
||||
21: 20(int) Constant 0
|
||||
22: TypeArray 6(int16_t) 10
|
||||
23(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3)
|
||||
24: TypeArray 23(S) 10
|
||||
25(B1): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 22 23(S) 24 20(int)
|
||||
26: TypePointer Uniform 25(B1)
|
||||
27(b1): 26(ptr) Variable Uniform
|
||||
28: TypePointer Uniform 6(int16_t)
|
||||
32: 20(int) Constant 1
|
||||
33: 20(int) Constant 2
|
||||
34: TypePointer Uniform 8(i16vec3)
|
||||
37: TypeVector 20(int) 3
|
||||
39: TypeVector 20(int) 2
|
||||
42: TypePointer Uniform 7(i16vec2)
|
||||
44: TypeArray 6(int16_t) 10
|
||||
45(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3)
|
||||
46: TypeArray 45(S) 10
|
||||
47: TypeArray 7(i16vec2) 14
|
||||
48: TypeArray 6(int16_t) 14
|
||||
49(B5): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 44 45(S) 46 47 48
|
||||
50: TypePointer Uniform 49(B5)
|
||||
51(b5): 50(ptr) Variable Uniform
|
||||
58: 20(int) Constant 3
|
||||
68: TypePointer Function 20(int)
|
||||
73: TypeVector 20(int) 4
|
||||
74: TypePointer Function 73(ivec4)
|
||||
85: TypeFloat 32
|
||||
86: TypeVector 85(float) 4
|
||||
87: TypeMatrix 86(fvec4) 4
|
||||
88(S2): TypeStruct 87 6(int16_t) 20(int)
|
||||
89(S3): TypeStruct 88(S2)
|
||||
90(B4): TypeStruct 88(S2) 89(S3)
|
||||
91: TypePointer Uniform 90(B4)
|
||||
92(b4): 91(ptr) Variable Uniform
|
||||
93(S2): TypeStruct 87 6(int16_t) 20(int)
|
||||
94(B3): TypeStruct 93(S2)
|
||||
95: TypePointer Uniform 94(B3)
|
||||
96(b3): 95(ptr) Variable Uniform
|
||||
97: TypePointer Uniform 87
|
||||
104: 9(int) Constant 0
|
||||
108: 20(int) Constant 5
|
||||
112: TypePointer Function 37(ivec3)
|
||||
114: 20(int) Constant 7
|
||||
115: 20(int) Constant 6
|
||||
116: TypePointer Uniform 20(int)
|
||||
166: 39(ivec2) ConstantComposite 32 33
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
69(x0): 68(ptr) Variable Function
|
||||
75(x1): 74(ptr) Variable Function
|
||||
113(v3): 112(ptr) Variable Function
|
||||
135(u3): 112(ptr) Variable Function
|
||||
29: 28(ptr) AccessChain 27(b1) 21
|
||||
30: 6(int16_t) Load 29
|
||||
31: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 31 30
|
||||
35: 34(ptr) AccessChain 19(b2) 33
|
||||
36: 8(i16vec3) Load 35
|
||||
38: 37(ivec3) SConvert 36
|
||||
40: 39(ivec2) VectorShuffle 38 38 0 1
|
||||
41: 7(i16vec2) SConvert 40
|
||||
43: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 43 41
|
||||
52: 34(ptr) AccessChain 51(b5) 33
|
||||
53: 8(i16vec3) Load 52
|
||||
54: 37(ivec3) SConvert 53
|
||||
55: 39(ivec2) VectorShuffle 54 54 0 1
|
||||
56: 7(i16vec2) SConvert 55
|
||||
57: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 57 56
|
||||
59: 28(ptr) AccessChain 19(b2) 58 21
|
||||
60: 6(int16_t) Load 59
|
||||
61: 28(ptr) AccessChain 19(b2) 58 21
|
||||
Store 61 60
|
||||
62: 28(ptr) AccessChain 51(b5) 58 32
|
||||
63: 6(int16_t) Load 62
|
||||
64: 28(ptr) AccessChain 19(b2) 58 32
|
||||
Store 64 63
|
||||
65: 42(ptr) AccessChain 19(b2) 32
|
||||
66: 7(i16vec2) Load 65
|
||||
67: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 67 66
|
||||
70: 28(ptr) AccessChain 27(b1) 21
|
||||
71: 6(int16_t) Load 70
|
||||
72: 20(int) SConvert 71
|
||||
Store 69(x0) 72
|
||||
76: 28(ptr) AccessChain 27(b1) 21
|
||||
77: 6(int16_t) Load 76
|
||||
78: 20(int) SConvert 77
|
||||
79: 42(ptr) AccessChain 19(b2) 32
|
||||
80: 7(i16vec2) Load 79
|
||||
81: 39(ivec2) SConvert 80
|
||||
82: 20(int) CompositeExtract 81 0
|
||||
83: 20(int) CompositeExtract 81 1
|
||||
84: 73(ivec4) CompositeConstruct 78 82 83 32
|
||||
Store 75(x1) 84
|
||||
98: 97(ptr) AccessChain 96(b3) 21 21
|
||||
99: 87 Load 98
|
||||
100: 97(ptr) AccessChain 92(b4) 21 21
|
||||
Store 100 99
|
||||
101: 42(ptr) AccessChain 19(b2) 32
|
||||
102: 7(i16vec2) Load 101
|
||||
103: 39(ivec2) SConvert 102
|
||||
105: 20(int) CompositeExtract 103 0
|
||||
106: 6(int16_t) SConvert 105
|
||||
107: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 107 106
|
||||
109: 42(ptr) AccessChain 19(b2) 108 32 32
|
||||
110: 7(i16vec2) Load 109
|
||||
111: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 111 110
|
||||
117: 116(ptr) AccessChain 27(b1) 115
|
||||
118: 20(int) Load 117
|
||||
119: 28(ptr) AccessChain 19(b2) 114 118
|
||||
120: 6(int16_t) Load 119
|
||||
121: 20(int) SConvert 120
|
||||
122: 116(ptr) AccessChain 27(b1) 115
|
||||
123: 20(int) Load 122
|
||||
124: 20(int) IAdd 123 32
|
||||
125: 28(ptr) AccessChain 19(b2) 114 124
|
||||
126: 6(int16_t) Load 125
|
||||
127: 20(int) SConvert 126
|
||||
128: 116(ptr) AccessChain 27(b1) 115
|
||||
129: 20(int) Load 128
|
||||
130: 20(int) IAdd 129 33
|
||||
131: 28(ptr) AccessChain 19(b2) 114 130
|
||||
132: 6(int16_t) Load 131
|
||||
133: 20(int) SConvert 132
|
||||
134: 37(ivec3) CompositeConstruct 121 127 133
|
||||
Store 113(v3) 134
|
||||
136: 116(ptr) AccessChain 27(b1) 115
|
||||
137: 20(int) Load 136
|
||||
138: 28(ptr) AccessChain 51(b5) 114 137
|
||||
139: 6(int16_t) Load 138
|
||||
140: 20(int) SConvert 139
|
||||
141: 116(ptr) AccessChain 27(b1) 115
|
||||
142: 20(int) Load 141
|
||||
143: 20(int) IAdd 142 32
|
||||
144: 28(ptr) AccessChain 51(b5) 114 143
|
||||
145: 6(int16_t) Load 144
|
||||
146: 20(int) SConvert 145
|
||||
147: 116(ptr) AccessChain 27(b1) 115
|
||||
148: 20(int) Load 147
|
||||
149: 20(int) IAdd 148 33
|
||||
150: 28(ptr) AccessChain 51(b5) 114 149
|
||||
151: 6(int16_t) Load 150
|
||||
152: 20(int) SConvert 151
|
||||
153: 37(ivec3) CompositeConstruct 140 146 152
|
||||
Store 135(u3) 153
|
||||
154: 42(ptr) AccessChain 19(b2) 115 21
|
||||
155: 7(i16vec2) Load 154
|
||||
156: 42(ptr) AccessChain 19(b2) 115 21
|
||||
Store 156 155
|
||||
157: 42(ptr) AccessChain 51(b5) 115 32
|
||||
158: 7(i16vec2) Load 157
|
||||
159: 42(ptr) AccessChain 19(b2) 115 32
|
||||
Store 159 158
|
||||
160: 28(ptr) AccessChain 27(b1) 21
|
||||
161: 6(int16_t) Load 160
|
||||
162: 28(ptr) AccessChain 19(b2) 32 104
|
||||
Store 162 161
|
||||
163: 28(ptr) AccessChain 19(b2) 32 104
|
||||
164: 6(int16_t) Load 163
|
||||
165: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 165 164
|
||||
167: 7(i16vec2) SConvert 166
|
||||
168: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 168 167
|
||||
169: 6(int16_t) SConvert 58
|
||||
170: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 170 169
|
||||
Return
|
||||
FunctionEnd
|
338
3rdparty/glslang/Test/baseResults/spv.16bitstorage-uint.frag.out
vendored
Executable file
338
3rdparty/glslang/Test/baseResults/spv.16bitstorage-uint.frag.out
vendored
Executable file
@ -0,0 +1,338 @@
|
||||
spv.16bitstorage-uint.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 173
|
||||
|
||||
Capability Shader
|
||||
Capability Int16
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_16bit_storage"
|
||||
Name 4 "main"
|
||||
Name 12 "S"
|
||||
MemberName 12(S) 0 "x"
|
||||
MemberName 12(S) 1 "y"
|
||||
MemberName 12(S) 2 "z"
|
||||
Name 17 "B2"
|
||||
MemberName 17(B2) 0 "o"
|
||||
MemberName 17(B2) 1 "p"
|
||||
MemberName 17(B2) 2 "q"
|
||||
MemberName 17(B2) 3 "r"
|
||||
MemberName 17(B2) 4 "u"
|
||||
MemberName 17(B2) 5 "v"
|
||||
MemberName 17(B2) 6 "x"
|
||||
MemberName 17(B2) 7 "w"
|
||||
Name 19 "b2"
|
||||
Name 23 "S"
|
||||
MemberName 23(S) 0 "x"
|
||||
MemberName 23(S) 1 "y"
|
||||
MemberName 23(S) 2 "z"
|
||||
Name 25 "B1"
|
||||
MemberName 25(B1) 0 "a"
|
||||
MemberName 25(B1) 1 "b"
|
||||
MemberName 25(B1) 2 "c"
|
||||
MemberName 25(B1) 3 "d"
|
||||
MemberName 25(B1) 4 "g"
|
||||
MemberName 25(B1) 5 "h"
|
||||
MemberName 25(B1) 6 "j"
|
||||
Name 27 "b1"
|
||||
Name 45 "S"
|
||||
MemberName 45(S) 0 "x"
|
||||
MemberName 45(S) 1 "y"
|
||||
MemberName 45(S) 2 "z"
|
||||
Name 49 "B5"
|
||||
MemberName 49(B5) 0 "o"
|
||||
MemberName 49(B5) 1 "p"
|
||||
MemberName 49(B5) 2 "q"
|
||||
MemberName 49(B5) 3 "r"
|
||||
MemberName 49(B5) 4 "u"
|
||||
MemberName 49(B5) 5 "v"
|
||||
MemberName 49(B5) 6 "x"
|
||||
MemberName 49(B5) 7 "w"
|
||||
Name 51 "b5"
|
||||
Name 69 "x0"
|
||||
Name 75 "x1"
|
||||
Name 89 "S2"
|
||||
MemberName 89(S2) 0 "x"
|
||||
MemberName 89(S2) 1 "y"
|
||||
MemberName 89(S2) 2 "z"
|
||||
Name 90 "S3"
|
||||
MemberName 90(S3) 0 "x"
|
||||
Name 91 "B4"
|
||||
MemberName 91(B4) 0 "x"
|
||||
MemberName 91(B4) 1 "y"
|
||||
Name 93 "b4"
|
||||
Name 94 "S2"
|
||||
MemberName 94(S2) 0 "x"
|
||||
MemberName 94(S2) 1 "y"
|
||||
MemberName 94(S2) 2 "z"
|
||||
Name 95 "B3"
|
||||
MemberName 95(B3) 0 "x"
|
||||
Name 97 "b3"
|
||||
Name 114 "v3"
|
||||
Name 136 "u3"
|
||||
Decorate 11 ArrayStride 2
|
||||
MemberDecorate 12(S) 0 Offset 0
|
||||
MemberDecorate 12(S) 1 Offset 4
|
||||
MemberDecorate 12(S) 2 Offset 8
|
||||
Decorate 13 ArrayStride 16
|
||||
Decorate 15 ArrayStride 4
|
||||
Decorate 16 ArrayStride 2
|
||||
MemberDecorate 17(B2) 0 Offset 0
|
||||
MemberDecorate 17(B2) 1 Offset 4
|
||||
MemberDecorate 17(B2) 2 Offset 8
|
||||
MemberDecorate 17(B2) 3 Offset 14
|
||||
MemberDecorate 17(B2) 4 Offset 24
|
||||
MemberDecorate 17(B2) 5 Offset 40
|
||||
MemberDecorate 17(B2) 6 Offset 72
|
||||
MemberDecorate 17(B2) 7 Offset 472
|
||||
Decorate 17(B2) BufferBlock
|
||||
Decorate 19(b2) DescriptorSet 0
|
||||
Decorate 22 ArrayStride 16
|
||||
MemberDecorate 23(S) 0 Offset 0
|
||||
MemberDecorate 23(S) 1 Offset 4
|
||||
MemberDecorate 23(S) 2 Offset 8
|
||||
Decorate 24 ArrayStride 16
|
||||
MemberDecorate 25(B1) 0 Offset 0
|
||||
MemberDecorate 25(B1) 1 Offset 4
|
||||
MemberDecorate 25(B1) 2 Offset 8
|
||||
MemberDecorate 25(B1) 3 Offset 16
|
||||
MemberDecorate 25(B1) 4 Offset 48
|
||||
MemberDecorate 25(B1) 5 Offset 64
|
||||
MemberDecorate 25(B1) 6 Offset 96
|
||||
Decorate 25(B1) Block
|
||||
Decorate 27(b1) DescriptorSet 0
|
||||
Decorate 44 ArrayStride 16
|
||||
MemberDecorate 45(S) 0 Offset 0
|
||||
MemberDecorate 45(S) 1 Offset 4
|
||||
MemberDecorate 45(S) 2 Offset 8
|
||||
Decorate 46 ArrayStride 16
|
||||
Decorate 47 ArrayStride 16
|
||||
Decorate 48 ArrayStride 16
|
||||
MemberDecorate 49(B5) 0 Offset 0
|
||||
MemberDecorate 49(B5) 1 Offset 4
|
||||
MemberDecorate 49(B5) 2 Offset 8
|
||||
MemberDecorate 49(B5) 3 Offset 16
|
||||
MemberDecorate 49(B5) 4 Offset 48
|
||||
MemberDecorate 49(B5) 5 Offset 64
|
||||
MemberDecorate 49(B5) 6 Offset 96
|
||||
MemberDecorate 49(B5) 7 Offset 1696
|
||||
Decorate 49(B5) Block
|
||||
Decorate 51(b5) DescriptorSet 0
|
||||
MemberDecorate 89(S2) 0 ColMajor
|
||||
MemberDecorate 89(S2) 0 Offset 0
|
||||
MemberDecorate 89(S2) 0 MatrixStride 16
|
||||
MemberDecorate 89(S2) 1 Offset 64
|
||||
MemberDecorate 89(S2) 2 Offset 68
|
||||
MemberDecorate 90(S3) 0 Offset 0
|
||||
MemberDecorate 91(B4) 0 Offset 0
|
||||
MemberDecorate 91(B4) 1 Offset 80
|
||||
Decorate 91(B4) BufferBlock
|
||||
Decorate 93(b4) DescriptorSet 0
|
||||
MemberDecorate 94(S2) 0 RowMajor
|
||||
MemberDecorate 94(S2) 0 Offset 0
|
||||
MemberDecorate 94(S2) 0 MatrixStride 16
|
||||
MemberDecorate 94(S2) 1 Offset 64
|
||||
MemberDecorate 94(S2) 2 Offset 68
|
||||
MemberDecorate 95(B3) 0 Offset 0
|
||||
Decorate 95(B3) BufferBlock
|
||||
Decorate 97(b3) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 16 0
|
||||
7: TypeVector 6(int16_t) 2
|
||||
8: TypeVector 6(int16_t) 3
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 2
|
||||
11: TypeArray 6(int16_t) 10
|
||||
12(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3)
|
||||
13: TypeArray 12(S) 10
|
||||
14: 9(int) Constant 100
|
||||
15: TypeArray 7(i16vec2) 14
|
||||
16: TypeRuntimeArray 6(int16_t)
|
||||
17(B2): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 11 12(S) 13 15 16
|
||||
18: TypePointer Uniform 17(B2)
|
||||
19(b2): 18(ptr) Variable Uniform
|
||||
20: TypeInt 32 1
|
||||
21: 20(int) Constant 0
|
||||
22: TypeArray 6(int16_t) 10
|
||||
23(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3)
|
||||
24: TypeArray 23(S) 10
|
||||
25(B1): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 22 23(S) 24 9(int)
|
||||
26: TypePointer Uniform 25(B1)
|
||||
27(b1): 26(ptr) Variable Uniform
|
||||
28: TypePointer Uniform 6(int16_t)
|
||||
32: 20(int) Constant 1
|
||||
33: 20(int) Constant 2
|
||||
34: TypePointer Uniform 8(i16vec3)
|
||||
37: TypeVector 9(int) 3
|
||||
39: TypeVector 9(int) 2
|
||||
42: TypePointer Uniform 7(i16vec2)
|
||||
44: TypeArray 6(int16_t) 10
|
||||
45(S): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3)
|
||||
46: TypeArray 45(S) 10
|
||||
47: TypeArray 7(i16vec2) 14
|
||||
48: TypeArray 6(int16_t) 14
|
||||
49(B5): TypeStruct 6(int16_t) 7(i16vec2) 8(i16vec3) 44 45(S) 46 47 48
|
||||
50: TypePointer Uniform 49(B5)
|
||||
51(b5): 50(ptr) Variable Uniform
|
||||
58: 20(int) Constant 3
|
||||
68: TypePointer Function 9(int)
|
||||
73: TypeVector 9(int) 4
|
||||
74: TypePointer Function 73(ivec4)
|
||||
82: 9(int) Constant 1
|
||||
86: TypeFloat 32
|
||||
87: TypeVector 86(float) 4
|
||||
88: TypeMatrix 87(fvec4) 4
|
||||
89(S2): TypeStruct 88 6(int16_t) 9(int)
|
||||
90(S3): TypeStruct 89(S2)
|
||||
91(B4): TypeStruct 89(S2) 90(S3)
|
||||
92: TypePointer Uniform 91(B4)
|
||||
93(b4): 92(ptr) Variable Uniform
|
||||
94(S2): TypeStruct 88 6(int16_t) 9(int)
|
||||
95(B3): TypeStruct 94(S2)
|
||||
96: TypePointer Uniform 95(B3)
|
||||
97(b3): 96(ptr) Variable Uniform
|
||||
98: TypePointer Uniform 88
|
||||
105: 9(int) Constant 0
|
||||
109: 20(int) Constant 5
|
||||
113: TypePointer Function 37(ivec3)
|
||||
115: 20(int) Constant 7
|
||||
116: 20(int) Constant 6
|
||||
117: TypePointer Uniform 9(int)
|
||||
167: 39(ivec2) ConstantComposite 82 10
|
||||
170: 9(int) Constant 3
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
69(x0): 68(ptr) Variable Function
|
||||
75(x1): 74(ptr) Variable Function
|
||||
114(v3): 113(ptr) Variable Function
|
||||
136(u3): 113(ptr) Variable Function
|
||||
29: 28(ptr) AccessChain 27(b1) 21
|
||||
30: 6(int16_t) Load 29
|
||||
31: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 31 30
|
||||
35: 34(ptr) AccessChain 19(b2) 33
|
||||
36: 8(i16vec3) Load 35
|
||||
38: 37(ivec3) UConvert 36
|
||||
40: 39(ivec2) VectorShuffle 38 38 0 1
|
||||
41: 7(i16vec2) UConvert 40
|
||||
43: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 43 41
|
||||
52: 34(ptr) AccessChain 51(b5) 33
|
||||
53: 8(i16vec3) Load 52
|
||||
54: 37(ivec3) UConvert 53
|
||||
55: 39(ivec2) VectorShuffle 54 54 0 1
|
||||
56: 7(i16vec2) UConvert 55
|
||||
57: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 57 56
|
||||
59: 28(ptr) AccessChain 19(b2) 58 21
|
||||
60: 6(int16_t) Load 59
|
||||
61: 28(ptr) AccessChain 19(b2) 58 21
|
||||
Store 61 60
|
||||
62: 28(ptr) AccessChain 51(b5) 58 32
|
||||
63: 6(int16_t) Load 62
|
||||
64: 28(ptr) AccessChain 19(b2) 58 32
|
||||
Store 64 63
|
||||
65: 42(ptr) AccessChain 19(b2) 32
|
||||
66: 7(i16vec2) Load 65
|
||||
67: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 67 66
|
||||
70: 28(ptr) AccessChain 27(b1) 21
|
||||
71: 6(int16_t) Load 70
|
||||
72: 9(int) UConvert 71
|
||||
Store 69(x0) 72
|
||||
76: 28(ptr) AccessChain 27(b1) 21
|
||||
77: 6(int16_t) Load 76
|
||||
78: 9(int) UConvert 77
|
||||
79: 42(ptr) AccessChain 19(b2) 32
|
||||
80: 7(i16vec2) Load 79
|
||||
81: 39(ivec2) UConvert 80
|
||||
83: 9(int) CompositeExtract 81 0
|
||||
84: 9(int) CompositeExtract 81 1
|
||||
85: 73(ivec4) CompositeConstruct 78 83 84 82
|
||||
Store 75(x1) 85
|
||||
99: 98(ptr) AccessChain 97(b3) 21 21
|
||||
100: 88 Load 99
|
||||
101: 98(ptr) AccessChain 93(b4) 21 21
|
||||
Store 101 100
|
||||
102: 42(ptr) AccessChain 19(b2) 32
|
||||
103: 7(i16vec2) Load 102
|
||||
104: 39(ivec2) UConvert 103
|
||||
106: 9(int) CompositeExtract 104 0
|
||||
107: 6(int16_t) UConvert 106
|
||||
108: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 108 107
|
||||
110: 42(ptr) AccessChain 19(b2) 109 32 32
|
||||
111: 7(i16vec2) Load 110
|
||||
112: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 112 111
|
||||
118: 117(ptr) AccessChain 27(b1) 116
|
||||
119: 9(int) Load 118
|
||||
120: 28(ptr) AccessChain 19(b2) 115 119
|
||||
121: 6(int16_t) Load 120
|
||||
122: 9(int) UConvert 121
|
||||
123: 117(ptr) AccessChain 27(b1) 116
|
||||
124: 9(int) Load 123
|
||||
125: 9(int) IAdd 124 82
|
||||
126: 28(ptr) AccessChain 19(b2) 115 125
|
||||
127: 6(int16_t) Load 126
|
||||
128: 9(int) UConvert 127
|
||||
129: 117(ptr) AccessChain 27(b1) 116
|
||||
130: 9(int) Load 129
|
||||
131: 9(int) IAdd 130 10
|
||||
132: 28(ptr) AccessChain 19(b2) 115 131
|
||||
133: 6(int16_t) Load 132
|
||||
134: 9(int) UConvert 133
|
||||
135: 37(ivec3) CompositeConstruct 122 128 134
|
||||
Store 114(v3) 135
|
||||
137: 117(ptr) AccessChain 27(b1) 116
|
||||
138: 9(int) Load 137
|
||||
139: 28(ptr) AccessChain 51(b5) 115 138
|
||||
140: 6(int16_t) Load 139
|
||||
141: 9(int) UConvert 140
|
||||
142: 117(ptr) AccessChain 27(b1) 116
|
||||
143: 9(int) Load 142
|
||||
144: 9(int) IAdd 143 82
|
||||
145: 28(ptr) AccessChain 51(b5) 115 144
|
||||
146: 6(int16_t) Load 145
|
||||
147: 9(int) UConvert 146
|
||||
148: 117(ptr) AccessChain 27(b1) 116
|
||||
149: 9(int) Load 148
|
||||
150: 9(int) IAdd 149 10
|
||||
151: 28(ptr) AccessChain 51(b5) 115 150
|
||||
152: 6(int16_t) Load 151
|
||||
153: 9(int) UConvert 152
|
||||
154: 37(ivec3) CompositeConstruct 141 147 153
|
||||
Store 136(u3) 154
|
||||
155: 42(ptr) AccessChain 19(b2) 116 21
|
||||
156: 7(i16vec2) Load 155
|
||||
157: 42(ptr) AccessChain 19(b2) 116 21
|
||||
Store 157 156
|
||||
158: 42(ptr) AccessChain 51(b5) 116 32
|
||||
159: 7(i16vec2) Load 158
|
||||
160: 42(ptr) AccessChain 19(b2) 116 32
|
||||
Store 160 159
|
||||
161: 28(ptr) AccessChain 27(b1) 21
|
||||
162: 6(int16_t) Load 161
|
||||
163: 28(ptr) AccessChain 19(b2) 32 105
|
||||
Store 163 162
|
||||
164: 28(ptr) AccessChain 19(b2) 32 105
|
||||
165: 6(int16_t) Load 164
|
||||
166: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 166 165
|
||||
168: 7(i16vec2) UConvert 167
|
||||
169: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 169 168
|
||||
171: 6(int16_t) UConvert 170
|
||||
172: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 172 171
|
||||
Return
|
||||
FunctionEnd
|
338
3rdparty/glslang/Test/baseResults/spv.16bitstorage.frag.out
vendored
Executable file
338
3rdparty/glslang/Test/baseResults/spv.16bitstorage.frag.out
vendored
Executable file
@ -0,0 +1,338 @@
|
||||
spv.16bitstorage.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 173
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_half_float"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_16bit_storage"
|
||||
Name 4 "main"
|
||||
Name 12 "S"
|
||||
MemberName 12(S) 0 "x"
|
||||
MemberName 12(S) 1 "y"
|
||||
MemberName 12(S) 2 "z"
|
||||
Name 17 "B2"
|
||||
MemberName 17(B2) 0 "o"
|
||||
MemberName 17(B2) 1 "p"
|
||||
MemberName 17(B2) 2 "q"
|
||||
MemberName 17(B2) 3 "r"
|
||||
MemberName 17(B2) 4 "u"
|
||||
MemberName 17(B2) 5 "v"
|
||||
MemberName 17(B2) 6 "x"
|
||||
MemberName 17(B2) 7 "w"
|
||||
Name 19 "b2"
|
||||
Name 23 "S"
|
||||
MemberName 23(S) 0 "x"
|
||||
MemberName 23(S) 1 "y"
|
||||
MemberName 23(S) 2 "z"
|
||||
Name 25 "B1"
|
||||
MemberName 25(B1) 0 "a"
|
||||
MemberName 25(B1) 1 "b"
|
||||
MemberName 25(B1) 2 "c"
|
||||
MemberName 25(B1) 3 "d"
|
||||
MemberName 25(B1) 4 "g"
|
||||
MemberName 25(B1) 5 "h"
|
||||
MemberName 25(B1) 6 "j"
|
||||
Name 27 "b1"
|
||||
Name 46 "S"
|
||||
MemberName 46(S) 0 "x"
|
||||
MemberName 46(S) 1 "y"
|
||||
MemberName 46(S) 2 "z"
|
||||
Name 50 "B5"
|
||||
MemberName 50(B5) 0 "o"
|
||||
MemberName 50(B5) 1 "p"
|
||||
MemberName 50(B5) 2 "q"
|
||||
MemberName 50(B5) 3 "r"
|
||||
MemberName 50(B5) 4 "u"
|
||||
MemberName 50(B5) 5 "v"
|
||||
MemberName 50(B5) 6 "x"
|
||||
MemberName 50(B5) 7 "w"
|
||||
Name 52 "b5"
|
||||
Name 70 "x0"
|
||||
Name 76 "x1"
|
||||
Name 88 "S2"
|
||||
MemberName 88(S2) 0 "x"
|
||||
MemberName 88(S2) 1 "y"
|
||||
MemberName 88(S2) 2 "z"
|
||||
Name 89 "S3"
|
||||
MemberName 89(S3) 0 "x"
|
||||
Name 90 "B4"
|
||||
MemberName 90(B4) 0 "x"
|
||||
MemberName 90(B4) 1 "y"
|
||||
Name 92 "b4"
|
||||
Name 93 "S2"
|
||||
MemberName 93(S2) 0 "x"
|
||||
MemberName 93(S2) 1 "y"
|
||||
MemberName 93(S2) 2 "z"
|
||||
Name 94 "B3"
|
||||
MemberName 94(B3) 0 "x"
|
||||
Name 96 "b3"
|
||||
Name 113 "v3"
|
||||
Name 135 "u3"
|
||||
Decorate 11 ArrayStride 2
|
||||
MemberDecorate 12(S) 0 Offset 0
|
||||
MemberDecorate 12(S) 1 Offset 4
|
||||
MemberDecorate 12(S) 2 Offset 8
|
||||
Decorate 13 ArrayStride 16
|
||||
Decorate 15 ArrayStride 4
|
||||
Decorate 16 ArrayStride 2
|
||||
MemberDecorate 17(B2) 0 Offset 0
|
||||
MemberDecorate 17(B2) 1 Offset 4
|
||||
MemberDecorate 17(B2) 2 Offset 8
|
||||
MemberDecorate 17(B2) 3 Offset 14
|
||||
MemberDecorate 17(B2) 4 Offset 24
|
||||
MemberDecorate 17(B2) 5 Offset 40
|
||||
MemberDecorate 17(B2) 6 Offset 72
|
||||
MemberDecorate 17(B2) 7 Offset 472
|
||||
Decorate 17(B2) BufferBlock
|
||||
Decorate 19(b2) DescriptorSet 0
|
||||
Decorate 22 ArrayStride 16
|
||||
MemberDecorate 23(S) 0 Offset 0
|
||||
MemberDecorate 23(S) 1 Offset 4
|
||||
MemberDecorate 23(S) 2 Offset 8
|
||||
Decorate 24 ArrayStride 16
|
||||
MemberDecorate 25(B1) 0 Offset 0
|
||||
MemberDecorate 25(B1) 1 Offset 4
|
||||
MemberDecorate 25(B1) 2 Offset 8
|
||||
MemberDecorate 25(B1) 3 Offset 16
|
||||
MemberDecorate 25(B1) 4 Offset 48
|
||||
MemberDecorate 25(B1) 5 Offset 64
|
||||
MemberDecorate 25(B1) 6 Offset 96
|
||||
Decorate 25(B1) Block
|
||||
Decorate 27(b1) DescriptorSet 0
|
||||
Decorate 45 ArrayStride 16
|
||||
MemberDecorate 46(S) 0 Offset 0
|
||||
MemberDecorate 46(S) 1 Offset 4
|
||||
MemberDecorate 46(S) 2 Offset 8
|
||||
Decorate 47 ArrayStride 16
|
||||
Decorate 48 ArrayStride 16
|
||||
Decorate 49 ArrayStride 16
|
||||
MemberDecorate 50(B5) 0 Offset 0
|
||||
MemberDecorate 50(B5) 1 Offset 4
|
||||
MemberDecorate 50(B5) 2 Offset 8
|
||||
MemberDecorate 50(B5) 3 Offset 16
|
||||
MemberDecorate 50(B5) 4 Offset 48
|
||||
MemberDecorate 50(B5) 5 Offset 64
|
||||
MemberDecorate 50(B5) 6 Offset 96
|
||||
MemberDecorate 50(B5) 7 Offset 1696
|
||||
Decorate 50(B5) Block
|
||||
Decorate 52(b5) DescriptorSet 0
|
||||
MemberDecorate 88(S2) 0 ColMajor
|
||||
MemberDecorate 88(S2) 0 Offset 0
|
||||
MemberDecorate 88(S2) 0 MatrixStride 16
|
||||
MemberDecorate 88(S2) 1 Offset 64
|
||||
MemberDecorate 88(S2) 2 Offset 68
|
||||
MemberDecorate 89(S3) 0 Offset 0
|
||||
MemberDecorate 90(B4) 0 Offset 0
|
||||
MemberDecorate 90(B4) 1 Offset 80
|
||||
Decorate 90(B4) BufferBlock
|
||||
Decorate 92(b4) DescriptorSet 0
|
||||
MemberDecorate 93(S2) 0 RowMajor
|
||||
MemberDecorate 93(S2) 0 Offset 0
|
||||
MemberDecorate 93(S2) 0 MatrixStride 16
|
||||
MemberDecorate 93(S2) 1 Offset 64
|
||||
MemberDecorate 93(S2) 2 Offset 68
|
||||
MemberDecorate 94(B3) 0 Offset 0
|
||||
Decorate 94(B3) BufferBlock
|
||||
Decorate 96(b3) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 16
|
||||
7: TypeVector 6(float16_t) 2
|
||||
8: TypeVector 6(float16_t) 3
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 2
|
||||
11: TypeArray 6(float16_t) 10
|
||||
12(S): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3)
|
||||
13: TypeArray 12(S) 10
|
||||
14: 9(int) Constant 100
|
||||
15: TypeArray 7(f16vec2) 14
|
||||
16: TypeRuntimeArray 6(float16_t)
|
||||
17(B2): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 11 12(S) 13 15 16
|
||||
18: TypePointer Uniform 17(B2)
|
||||
19(b2): 18(ptr) Variable Uniform
|
||||
20: TypeInt 32 1
|
||||
21: 20(int) Constant 0
|
||||
22: TypeArray 6(float16_t) 10
|
||||
23(S): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3)
|
||||
24: TypeArray 23(S) 10
|
||||
25(B1): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 22 23(S) 24 20(int)
|
||||
26: TypePointer Uniform 25(B1)
|
||||
27(b1): 26(ptr) Variable Uniform
|
||||
28: TypePointer Uniform 6(float16_t)
|
||||
32: 20(int) Constant 1
|
||||
33: 20(int) Constant 2
|
||||
34: TypePointer Uniform 8(f16vec3)
|
||||
37: TypeFloat 32
|
||||
38: TypeVector 37(float) 3
|
||||
40: TypeVector 37(float) 2
|
||||
43: TypePointer Uniform 7(f16vec2)
|
||||
45: TypeArray 6(float16_t) 10
|
||||
46(S): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3)
|
||||
47: TypeArray 46(S) 10
|
||||
48: TypeArray 7(f16vec2) 14
|
||||
49: TypeArray 6(float16_t) 14
|
||||
50(B5): TypeStruct 6(float16_t) 7(f16vec2) 8(f16vec3) 45 46(S) 47 48 49
|
||||
51: TypePointer Uniform 50(B5)
|
||||
52(b5): 51(ptr) Variable Uniform
|
||||
59: 20(int) Constant 3
|
||||
69: TypePointer Function 37(float)
|
||||
74: TypeVector 37(float) 4
|
||||
75: TypePointer Function 74(fvec4)
|
||||
83: 37(float) Constant 1065353216
|
||||
87: TypeMatrix 74(fvec4) 4
|
||||
88(S2): TypeStruct 87 6(float16_t) 37(float)
|
||||
89(S3): TypeStruct 88(S2)
|
||||
90(B4): TypeStruct 88(S2) 89(S3)
|
||||
91: TypePointer Uniform 90(B4)
|
||||
92(b4): 91(ptr) Variable Uniform
|
||||
93(S2): TypeStruct 87 6(float16_t) 37(float)
|
||||
94(B3): TypeStruct 93(S2)
|
||||
95: TypePointer Uniform 94(B3)
|
||||
96(b3): 95(ptr) Variable Uniform
|
||||
97: TypePointer Uniform 87
|
||||
104: 9(int) Constant 0
|
||||
108: 20(int) Constant 5
|
||||
112: TypePointer Function 38(fvec3)
|
||||
114: 20(int) Constant 7
|
||||
115: 20(int) Constant 6
|
||||
116: TypePointer Uniform 20(int)
|
||||
166: 37(float) Constant 1073741824
|
||||
167: 40(fvec2) ConstantComposite 83 166
|
||||
170: 37(float) Constant 1077936128
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
70(x0): 69(ptr) Variable Function
|
||||
76(x1): 75(ptr) Variable Function
|
||||
113(v3): 112(ptr) Variable Function
|
||||
135(u3): 112(ptr) Variable Function
|
||||
29: 28(ptr) AccessChain 27(b1) 21
|
||||
30:6(float16_t) Load 29
|
||||
31: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 31 30
|
||||
35: 34(ptr) AccessChain 19(b2) 33
|
||||
36: 8(f16vec3) Load 35
|
||||
39: 38(fvec3) FConvert 36
|
||||
41: 40(fvec2) VectorShuffle 39 39 0 1
|
||||
42: 7(f16vec2) FConvert 41
|
||||
44: 43(ptr) AccessChain 19(b2) 32
|
||||
Store 44 42
|
||||
53: 34(ptr) AccessChain 52(b5) 33
|
||||
54: 8(f16vec3) Load 53
|
||||
55: 38(fvec3) FConvert 54
|
||||
56: 40(fvec2) VectorShuffle 55 55 0 1
|
||||
57: 7(f16vec2) FConvert 56
|
||||
58: 43(ptr) AccessChain 19(b2) 32
|
||||
Store 58 57
|
||||
60: 28(ptr) AccessChain 19(b2) 59 21
|
||||
61:6(float16_t) Load 60
|
||||
62: 28(ptr) AccessChain 19(b2) 59 21
|
||||
Store 62 61
|
||||
63: 28(ptr) AccessChain 52(b5) 59 32
|
||||
64:6(float16_t) Load 63
|
||||
65: 28(ptr) AccessChain 19(b2) 59 32
|
||||
Store 65 64
|
||||
66: 43(ptr) AccessChain 19(b2) 32
|
||||
67: 7(f16vec2) Load 66
|
||||
68: 43(ptr) AccessChain 19(b2) 32
|
||||
Store 68 67
|
||||
71: 28(ptr) AccessChain 27(b1) 21
|
||||
72:6(float16_t) Load 71
|
||||
73: 37(float) FConvert 72
|
||||
Store 70(x0) 73
|
||||
77: 28(ptr) AccessChain 27(b1) 21
|
||||
78:6(float16_t) Load 77
|
||||
79: 37(float) FConvert 78
|
||||
80: 43(ptr) AccessChain 19(b2) 32
|
||||
81: 7(f16vec2) Load 80
|
||||
82: 40(fvec2) FConvert 81
|
||||
84: 37(float) CompositeExtract 82 0
|
||||
85: 37(float) CompositeExtract 82 1
|
||||
86: 74(fvec4) CompositeConstruct 79 84 85 83
|
||||
Store 76(x1) 86
|
||||
98: 97(ptr) AccessChain 96(b3) 21 21
|
||||
99: 87 Load 98
|
||||
100: 97(ptr) AccessChain 92(b4) 21 21
|
||||
Store 100 99
|
||||
101: 43(ptr) AccessChain 19(b2) 32
|
||||
102: 7(f16vec2) Load 101
|
||||
103: 40(fvec2) FConvert 102
|
||||
105: 37(float) CompositeExtract 103 0
|
||||
106:6(float16_t) FConvert 105
|
||||
107: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 107 106
|
||||
109: 43(ptr) AccessChain 19(b2) 108 32 32
|
||||
110: 7(f16vec2) Load 109
|
||||
111: 43(ptr) AccessChain 19(b2) 32
|
||||
Store 111 110
|
||||
117: 116(ptr) AccessChain 27(b1) 115
|
||||
118: 20(int) Load 117
|
||||
119: 28(ptr) AccessChain 19(b2) 114 118
|
||||
120:6(float16_t) Load 119
|
||||
121: 37(float) FConvert 120
|
||||
122: 116(ptr) AccessChain 27(b1) 115
|
||||
123: 20(int) Load 122
|
||||
124: 20(int) IAdd 123 32
|
||||
125: 28(ptr) AccessChain 19(b2) 114 124
|
||||
126:6(float16_t) Load 125
|
||||
127: 37(float) FConvert 126
|
||||
128: 116(ptr) AccessChain 27(b1) 115
|
||||
129: 20(int) Load 128
|
||||
130: 20(int) IAdd 129 33
|
||||
131: 28(ptr) AccessChain 19(b2) 114 130
|
||||
132:6(float16_t) Load 131
|
||||
133: 37(float) FConvert 132
|
||||
134: 38(fvec3) CompositeConstruct 121 127 133
|
||||
Store 113(v3) 134
|
||||
136: 116(ptr) AccessChain 27(b1) 115
|
||||
137: 20(int) Load 136
|
||||
138: 28(ptr) AccessChain 52(b5) 114 137
|
||||
139:6(float16_t) Load 138
|
||||
140: 37(float) FConvert 139
|
||||
141: 116(ptr) AccessChain 27(b1) 115
|
||||
142: 20(int) Load 141
|
||||
143: 20(int) IAdd 142 32
|
||||
144: 28(ptr) AccessChain 52(b5) 114 143
|
||||
145:6(float16_t) Load 144
|
||||
146: 37(float) FConvert 145
|
||||
147: 116(ptr) AccessChain 27(b1) 115
|
||||
148: 20(int) Load 147
|
||||
149: 20(int) IAdd 148 33
|
||||
150: 28(ptr) AccessChain 52(b5) 114 149
|
||||
151:6(float16_t) Load 150
|
||||
152: 37(float) FConvert 151
|
||||
153: 38(fvec3) CompositeConstruct 140 146 152
|
||||
Store 135(u3) 153
|
||||
154: 43(ptr) AccessChain 19(b2) 115 21
|
||||
155: 7(f16vec2) Load 154
|
||||
156: 43(ptr) AccessChain 19(b2) 115 21
|
||||
Store 156 155
|
||||
157: 43(ptr) AccessChain 52(b5) 115 32
|
||||
158: 7(f16vec2) Load 157
|
||||
159: 43(ptr) AccessChain 19(b2) 115 32
|
||||
Store 159 158
|
||||
160: 28(ptr) AccessChain 27(b1) 21
|
||||
161:6(float16_t) Load 160
|
||||
162: 28(ptr) AccessChain 19(b2) 32 104
|
||||
Store 162 161
|
||||
163: 28(ptr) AccessChain 19(b2) 32 104
|
||||
164:6(float16_t) Load 163
|
||||
165: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 165 164
|
||||
168: 7(f16vec2) FConvert 167
|
||||
169: 43(ptr) AccessChain 19(b2) 32
|
||||
Store 169 168
|
||||
171:6(float16_t) FConvert 170
|
||||
172: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 172 171
|
||||
Return
|
||||
FunctionEnd
|
91
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-int.frag.out
vendored
Executable file
91
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-int.frag.out
vendored
Executable file
@ -0,0 +1,91 @@
|
||||
spv.16bitstorage_Error-int.frag
|
||||
ERROR: 0:54: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:58: 'can't use with structs containing int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:61: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:74: ''[' does not operate on types containing (u)int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:75: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int16_t (or there is no acceptable conversion)
|
||||
ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:81: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:82: 'can't use with structs containing int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:83: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:84: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:85: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:87: 'can't use with arrays containing int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:88: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:89: '16-bit array constructors not supported' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:89: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:92: 'Can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:93: 'func2' : no matching overloaded function found
|
||||
ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 26 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
91
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-uint.frag.out
vendored
Executable file
91
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-uint.frag.out
vendored
Executable file
@ -0,0 +1,91 @@
|
||||
spv.16bitstorage_Error-uint.frag
|
||||
ERROR: 0:54: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:58: 'can't use with structs containing uint16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:61: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:74: ''[' does not operate on types containing (u)int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:75: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint16_t (or there is no acceptable conversion)
|
||||
ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:81: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:82: 'can't use with structs containing uint16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:83: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:84: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:85: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:87: 'can't use with arrays containing uint16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:88: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:89: '16-bit array constructors not supported' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:89: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:92: 'Can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_int16
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int16
|
||||
ERROR: 0:93: 'func2' : no matching overloaded function found
|
||||
ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 26 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
99
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error.frag.out
vendored
Executable file
99
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error.frag.out
vendored
Executable file
@ -0,0 +1,99 @@
|
||||
spv.16bitstorage_Error.frag
|
||||
ERROR: 0:54: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:58: 'can't use with structs containing float16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:61: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:74: ''[' does not operate on types containing float16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:75: 'can't swizzle types containing float16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:76: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:76: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:76: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:77: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:77: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform float16_t (or there is no acceptable conversion)
|
||||
ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type ' const float' (or there is no acceptable conversion)
|
||||
ERROR: 0:81: 'can't swizzle types containing float16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:82: 'can't use with structs containing float16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:83: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:84: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:85: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:87: 'can't use with arrays containing float16' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:88: 'explicit types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:88: 'explicit types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:89: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:90: '16-bit array constructors not supported' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:90: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:93: 'Can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
|
||||
GL_AMD_gpu_shader_half_float
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_float16
|
||||
ERROR: 0:94: 'func2' : no matching overloaded function found
|
||||
ERROR: 0:100: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 28 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
335
3rdparty/glslang/Test/baseResults/spv.8bitstorage-int.frag.out
vendored
Executable file
335
3rdparty/glslang/Test/baseResults/spv.8bitstorage-int.frag.out
vendored
Executable file
@ -0,0 +1,335 @@
|
||||
spv.8bitstorage-int.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 171
|
||||
|
||||
Capability Shader
|
||||
Capability Int8
|
||||
Capability CapabilityStorageBuffer8BitAccess
|
||||
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||
Extension "SPV_KHR_8bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_8bit_storage"
|
||||
Name 4 "main"
|
||||
Name 12 "S"
|
||||
MemberName 12(S) 0 "x"
|
||||
MemberName 12(S) 1 "y"
|
||||
MemberName 12(S) 2 "z"
|
||||
Name 17 "B2"
|
||||
MemberName 17(B2) 0 "o"
|
||||
MemberName 17(B2) 1 "p"
|
||||
MemberName 17(B2) 2 "q"
|
||||
MemberName 17(B2) 3 "r"
|
||||
MemberName 17(B2) 4 "u"
|
||||
MemberName 17(B2) 5 "v"
|
||||
MemberName 17(B2) 6 "x"
|
||||
MemberName 17(B2) 7 "w"
|
||||
Name 19 "b2"
|
||||
Name 23 "S"
|
||||
MemberName 23(S) 0 "x"
|
||||
MemberName 23(S) 1 "y"
|
||||
MemberName 23(S) 2 "z"
|
||||
Name 25 "B1"
|
||||
MemberName 25(B1) 0 "a"
|
||||
MemberName 25(B1) 1 "b"
|
||||
MemberName 25(B1) 2 "c"
|
||||
MemberName 25(B1) 3 "d"
|
||||
MemberName 25(B1) 4 "g"
|
||||
MemberName 25(B1) 5 "h"
|
||||
MemberName 25(B1) 6 "j"
|
||||
Name 27 "b1"
|
||||
Name 45 "S"
|
||||
MemberName 45(S) 0 "x"
|
||||
MemberName 45(S) 1 "y"
|
||||
MemberName 45(S) 2 "z"
|
||||
Name 49 "B5"
|
||||
MemberName 49(B5) 0 "o"
|
||||
MemberName 49(B5) 1 "p"
|
||||
MemberName 49(B5) 2 "q"
|
||||
MemberName 49(B5) 3 "r"
|
||||
MemberName 49(B5) 4 "u"
|
||||
MemberName 49(B5) 5 "v"
|
||||
MemberName 49(B5) 6 "x"
|
||||
MemberName 49(B5) 7 "w"
|
||||
Name 51 "b5"
|
||||
Name 69 "x0"
|
||||
Name 75 "x1"
|
||||
Name 88 "S2"
|
||||
MemberName 88(S2) 0 "x"
|
||||
MemberName 88(S2) 1 "y"
|
||||
MemberName 88(S2) 2 "z"
|
||||
Name 89 "S3"
|
||||
MemberName 89(S3) 0 "x"
|
||||
Name 90 "B4"
|
||||
MemberName 90(B4) 0 "x"
|
||||
MemberName 90(B4) 1 "y"
|
||||
Name 92 "b4"
|
||||
Name 93 "S2"
|
||||
MemberName 93(S2) 0 "x"
|
||||
MemberName 93(S2) 1 "y"
|
||||
MemberName 93(S2) 2 "z"
|
||||
Name 94 "B3"
|
||||
MemberName 94(B3) 0 "x"
|
||||
Name 96 "b3"
|
||||
Name 113 "v3"
|
||||
Name 135 "u3"
|
||||
Decorate 11 ArrayStride 1
|
||||
MemberDecorate 12(S) 0 Offset 0
|
||||
MemberDecorate 12(S) 1 Offset 2
|
||||
MemberDecorate 12(S) 2 Offset 4
|
||||
Decorate 13 ArrayStride 8
|
||||
Decorate 15 ArrayStride 2
|
||||
Decorate 16 ArrayStride 1
|
||||
MemberDecorate 17(B2) 0 Offset 0
|
||||
MemberDecorate 17(B2) 1 Offset 2
|
||||
MemberDecorate 17(B2) 2 Offset 4
|
||||
MemberDecorate 17(B2) 3 Offset 7
|
||||
MemberDecorate 17(B2) 4 Offset 12
|
||||
MemberDecorate 17(B2) 5 Offset 20
|
||||
MemberDecorate 17(B2) 6 Offset 36
|
||||
MemberDecorate 17(B2) 7 Offset 236
|
||||
Decorate 17(B2) BufferBlock
|
||||
Decorate 19(b2) DescriptorSet 0
|
||||
Decorate 22 ArrayStride 16
|
||||
MemberDecorate 23(S) 0 Offset 0
|
||||
MemberDecorate 23(S) 1 Offset 2
|
||||
MemberDecorate 23(S) 2 Offset 4
|
||||
Decorate 24 ArrayStride 16
|
||||
MemberDecorate 25(B1) 0 Offset 0
|
||||
MemberDecorate 25(B1) 1 Offset 2
|
||||
MemberDecorate 25(B1) 2 Offset 4
|
||||
MemberDecorate 25(B1) 3 Offset 16
|
||||
MemberDecorate 25(B1) 4 Offset 48
|
||||
MemberDecorate 25(B1) 5 Offset 64
|
||||
MemberDecorate 25(B1) 6 Offset 96
|
||||
Decorate 25(B1) Block
|
||||
Decorate 27(b1) DescriptorSet 0
|
||||
Decorate 44 ArrayStride 16
|
||||
MemberDecorate 45(S) 0 Offset 0
|
||||
MemberDecorate 45(S) 1 Offset 2
|
||||
MemberDecorate 45(S) 2 Offset 4
|
||||
Decorate 46 ArrayStride 16
|
||||
Decorate 47 ArrayStride 16
|
||||
Decorate 48 ArrayStride 16
|
||||
MemberDecorate 49(B5) 0 Offset 0
|
||||
MemberDecorate 49(B5) 1 Offset 2
|
||||
MemberDecorate 49(B5) 2 Offset 4
|
||||
MemberDecorate 49(B5) 3 Offset 16
|
||||
MemberDecorate 49(B5) 4 Offset 48
|
||||
MemberDecorate 49(B5) 5 Offset 64
|
||||
MemberDecorate 49(B5) 6 Offset 96
|
||||
MemberDecorate 49(B5) 7 Offset 1696
|
||||
Decorate 49(B5) Block
|
||||
Decorate 51(b5) DescriptorSet 0
|
||||
MemberDecorate 88(S2) 0 ColMajor
|
||||
MemberDecorate 88(S2) 0 Offset 0
|
||||
MemberDecorate 88(S2) 0 MatrixStride 16
|
||||
MemberDecorate 88(S2) 1 Offset 64
|
||||
MemberDecorate 88(S2) 2 Offset 68
|
||||
MemberDecorate 89(S3) 0 Offset 0
|
||||
MemberDecorate 90(B4) 0 Offset 0
|
||||
MemberDecorate 90(B4) 1 Offset 80
|
||||
Decorate 90(B4) BufferBlock
|
||||
Decorate 92(b4) DescriptorSet 0
|
||||
MemberDecorate 93(S2) 0 RowMajor
|
||||
MemberDecorate 93(S2) 0 Offset 0
|
||||
MemberDecorate 93(S2) 0 MatrixStride 16
|
||||
MemberDecorate 93(S2) 1 Offset 64
|
||||
MemberDecorate 93(S2) 2 Offset 68
|
||||
MemberDecorate 94(B3) 0 Offset 0
|
||||
Decorate 94(B3) BufferBlock
|
||||
Decorate 96(b3) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 8 1
|
||||
7: TypeVector 6(int8_t) 2
|
||||
8: TypeVector 6(int8_t) 3
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 2
|
||||
11: TypeArray 6(int8_t) 10
|
||||
12(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3)
|
||||
13: TypeArray 12(S) 10
|
||||
14: 9(int) Constant 100
|
||||
15: TypeArray 7(i8vec2) 14
|
||||
16: TypeRuntimeArray 6(int8_t)
|
||||
17(B2): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 11 12(S) 13 15 16
|
||||
18: TypePointer Uniform 17(B2)
|
||||
19(b2): 18(ptr) Variable Uniform
|
||||
20: TypeInt 32 1
|
||||
21: 20(int) Constant 0
|
||||
22: TypeArray 6(int8_t) 10
|
||||
23(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3)
|
||||
24: TypeArray 23(S) 10
|
||||
25(B1): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 22 23(S) 24 20(int)
|
||||
26: TypePointer Uniform 25(B1)
|
||||
27(b1): 26(ptr) Variable Uniform
|
||||
28: TypePointer Uniform 6(int8_t)
|
||||
32: 20(int) Constant 1
|
||||
33: 20(int) Constant 2
|
||||
34: TypePointer Uniform 8(i8vec3)
|
||||
37: TypeVector 20(int) 3
|
||||
39: TypeVector 20(int) 2
|
||||
42: TypePointer Uniform 7(i8vec2)
|
||||
44: TypeArray 6(int8_t) 10
|
||||
45(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3)
|
||||
46: TypeArray 45(S) 10
|
||||
47: TypeArray 7(i8vec2) 14
|
||||
48: TypeArray 6(int8_t) 14
|
||||
49(B5): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 44 45(S) 46 47 48
|
||||
50: TypePointer Uniform 49(B5)
|
||||
51(b5): 50(ptr) Variable Uniform
|
||||
58: 20(int) Constant 3
|
||||
68: TypePointer Function 20(int)
|
||||
73: TypeVector 20(int) 4
|
||||
74: TypePointer Function 73(ivec4)
|
||||
85: TypeFloat 32
|
||||
86: TypeVector 85(float) 4
|
||||
87: TypeMatrix 86(fvec4) 4
|
||||
88(S2): TypeStruct 87 6(int8_t) 20(int)
|
||||
89(S3): TypeStruct 88(S2)
|
||||
90(B4): TypeStruct 88(S2) 89(S3)
|
||||
91: TypePointer Uniform 90(B4)
|
||||
92(b4): 91(ptr) Variable Uniform
|
||||
93(S2): TypeStruct 87 6(int8_t) 20(int)
|
||||
94(B3): TypeStruct 93(S2)
|
||||
95: TypePointer Uniform 94(B3)
|
||||
96(b3): 95(ptr) Variable Uniform
|
||||
97: TypePointer Uniform 87
|
||||
104: 9(int) Constant 0
|
||||
108: 20(int) Constant 5
|
||||
112: TypePointer Function 37(ivec3)
|
||||
114: 20(int) Constant 7
|
||||
115: 20(int) Constant 6
|
||||
116: TypePointer Uniform 20(int)
|
||||
166: 39(ivec2) ConstantComposite 32 33
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
69(x0): 68(ptr) Variable Function
|
||||
75(x1): 74(ptr) Variable Function
|
||||
113(v3): 112(ptr) Variable Function
|
||||
135(u3): 112(ptr) Variable Function
|
||||
29: 28(ptr) AccessChain 27(b1) 21
|
||||
30: 6(int8_t) Load 29
|
||||
31: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 31 30
|
||||
35: 34(ptr) AccessChain 19(b2) 33
|
||||
36: 8(i8vec3) Load 35
|
||||
38: 37(ivec3) SConvert 36
|
||||
40: 39(ivec2) VectorShuffle 38 38 0 1
|
||||
41: 7(i8vec2) SConvert 40
|
||||
43: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 43 41
|
||||
52: 34(ptr) AccessChain 51(b5) 33
|
||||
53: 8(i8vec3) Load 52
|
||||
54: 37(ivec3) SConvert 53
|
||||
55: 39(ivec2) VectorShuffle 54 54 0 1
|
||||
56: 7(i8vec2) SConvert 55
|
||||
57: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 57 56
|
||||
59: 28(ptr) AccessChain 19(b2) 58 21
|
||||
60: 6(int8_t) Load 59
|
||||
61: 28(ptr) AccessChain 19(b2) 58 21
|
||||
Store 61 60
|
||||
62: 28(ptr) AccessChain 51(b5) 58 32
|
||||
63: 6(int8_t) Load 62
|
||||
64: 28(ptr) AccessChain 19(b2) 58 32
|
||||
Store 64 63
|
||||
65: 42(ptr) AccessChain 19(b2) 32
|
||||
66: 7(i8vec2) Load 65
|
||||
67: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 67 66
|
||||
70: 28(ptr) AccessChain 27(b1) 21
|
||||
71: 6(int8_t) Load 70
|
||||
72: 20(int) SConvert 71
|
||||
Store 69(x0) 72
|
||||
76: 28(ptr) AccessChain 27(b1) 21
|
||||
77: 6(int8_t) Load 76
|
||||
78: 20(int) SConvert 77
|
||||
79: 42(ptr) AccessChain 19(b2) 32
|
||||
80: 7(i8vec2) Load 79
|
||||
81: 39(ivec2) SConvert 80
|
||||
82: 20(int) CompositeExtract 81 0
|
||||
83: 20(int) CompositeExtract 81 1
|
||||
84: 73(ivec4) CompositeConstruct 78 82 83 32
|
||||
Store 75(x1) 84
|
||||
98: 97(ptr) AccessChain 96(b3) 21 21
|
||||
99: 87 Load 98
|
||||
100: 97(ptr) AccessChain 92(b4) 21 21
|
||||
Store 100 99
|
||||
101: 42(ptr) AccessChain 19(b2) 32
|
||||
102: 7(i8vec2) Load 101
|
||||
103: 39(ivec2) SConvert 102
|
||||
105: 20(int) CompositeExtract 103 0
|
||||
106: 6(int8_t) SConvert 105
|
||||
107: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 107 106
|
||||
109: 42(ptr) AccessChain 19(b2) 108 32 32
|
||||
110: 7(i8vec2) Load 109
|
||||
111: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 111 110
|
||||
117: 116(ptr) AccessChain 27(b1) 115
|
||||
118: 20(int) Load 117
|
||||
119: 28(ptr) AccessChain 19(b2) 114 118
|
||||
120: 6(int8_t) Load 119
|
||||
121: 20(int) SConvert 120
|
||||
122: 116(ptr) AccessChain 27(b1) 115
|
||||
123: 20(int) Load 122
|
||||
124: 20(int) IAdd 123 32
|
||||
125: 28(ptr) AccessChain 19(b2) 114 124
|
||||
126: 6(int8_t) Load 125
|
||||
127: 20(int) SConvert 126
|
||||
128: 116(ptr) AccessChain 27(b1) 115
|
||||
129: 20(int) Load 128
|
||||
130: 20(int) IAdd 129 33
|
||||
131: 28(ptr) AccessChain 19(b2) 114 130
|
||||
132: 6(int8_t) Load 131
|
||||
133: 20(int) SConvert 132
|
||||
134: 37(ivec3) CompositeConstruct 121 127 133
|
||||
Store 113(v3) 134
|
||||
136: 116(ptr) AccessChain 27(b1) 115
|
||||
137: 20(int) Load 136
|
||||
138: 28(ptr) AccessChain 51(b5) 114 137
|
||||
139: 6(int8_t) Load 138
|
||||
140: 20(int) SConvert 139
|
||||
141: 116(ptr) AccessChain 27(b1) 115
|
||||
142: 20(int) Load 141
|
||||
143: 20(int) IAdd 142 32
|
||||
144: 28(ptr) AccessChain 51(b5) 114 143
|
||||
145: 6(int8_t) Load 144
|
||||
146: 20(int) SConvert 145
|
||||
147: 116(ptr) AccessChain 27(b1) 115
|
||||
148: 20(int) Load 147
|
||||
149: 20(int) IAdd 148 33
|
||||
150: 28(ptr) AccessChain 51(b5) 114 149
|
||||
151: 6(int8_t) Load 150
|
||||
152: 20(int) SConvert 151
|
||||
153: 37(ivec3) CompositeConstruct 140 146 152
|
||||
Store 135(u3) 153
|
||||
154: 42(ptr) AccessChain 19(b2) 115 21
|
||||
155: 7(i8vec2) Load 154
|
||||
156: 42(ptr) AccessChain 19(b2) 115 21
|
||||
Store 156 155
|
||||
157: 42(ptr) AccessChain 51(b5) 115 32
|
||||
158: 7(i8vec2) Load 157
|
||||
159: 42(ptr) AccessChain 19(b2) 115 32
|
||||
Store 159 158
|
||||
160: 28(ptr) AccessChain 27(b1) 21
|
||||
161: 6(int8_t) Load 160
|
||||
162: 28(ptr) AccessChain 19(b2) 32 104
|
||||
Store 162 161
|
||||
163: 28(ptr) AccessChain 19(b2) 32 104
|
||||
164: 6(int8_t) Load 163
|
||||
165: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 165 164
|
||||
167: 7(i8vec2) SConvert 166
|
||||
168: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 168 167
|
||||
169: 6(int8_t) SConvert 58
|
||||
170: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 170 169
|
||||
Return
|
||||
FunctionEnd
|
337
3rdparty/glslang/Test/baseResults/spv.8bitstorage-uint.frag.out
vendored
Executable file
337
3rdparty/glslang/Test/baseResults/spv.8bitstorage-uint.frag.out
vendored
Executable file
@ -0,0 +1,337 @@
|
||||
spv.8bitstorage-uint.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 173
|
||||
|
||||
Capability Shader
|
||||
Capability Int8
|
||||
Capability CapabilityStorageBuffer8BitAccess
|
||||
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||
Extension "SPV_KHR_8bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_8bit_storage"
|
||||
Name 4 "main"
|
||||
Name 12 "S"
|
||||
MemberName 12(S) 0 "x"
|
||||
MemberName 12(S) 1 "y"
|
||||
MemberName 12(S) 2 "z"
|
||||
Name 17 "B2"
|
||||
MemberName 17(B2) 0 "o"
|
||||
MemberName 17(B2) 1 "p"
|
||||
MemberName 17(B2) 2 "q"
|
||||
MemberName 17(B2) 3 "r"
|
||||
MemberName 17(B2) 4 "u"
|
||||
MemberName 17(B2) 5 "v"
|
||||
MemberName 17(B2) 6 "x"
|
||||
MemberName 17(B2) 7 "w"
|
||||
Name 19 "b2"
|
||||
Name 23 "S"
|
||||
MemberName 23(S) 0 "x"
|
||||
MemberName 23(S) 1 "y"
|
||||
MemberName 23(S) 2 "z"
|
||||
Name 25 "B1"
|
||||
MemberName 25(B1) 0 "a"
|
||||
MemberName 25(B1) 1 "b"
|
||||
MemberName 25(B1) 2 "c"
|
||||
MemberName 25(B1) 3 "d"
|
||||
MemberName 25(B1) 4 "g"
|
||||
MemberName 25(B1) 5 "h"
|
||||
MemberName 25(B1) 6 "j"
|
||||
Name 27 "b1"
|
||||
Name 45 "S"
|
||||
MemberName 45(S) 0 "x"
|
||||
MemberName 45(S) 1 "y"
|
||||
MemberName 45(S) 2 "z"
|
||||
Name 49 "B5"
|
||||
MemberName 49(B5) 0 "o"
|
||||
MemberName 49(B5) 1 "p"
|
||||
MemberName 49(B5) 2 "q"
|
||||
MemberName 49(B5) 3 "r"
|
||||
MemberName 49(B5) 4 "u"
|
||||
MemberName 49(B5) 5 "v"
|
||||
MemberName 49(B5) 6 "x"
|
||||
MemberName 49(B5) 7 "w"
|
||||
Name 51 "b5"
|
||||
Name 69 "x0"
|
||||
Name 75 "x1"
|
||||
Name 89 "S2"
|
||||
MemberName 89(S2) 0 "x"
|
||||
MemberName 89(S2) 1 "y"
|
||||
MemberName 89(S2) 2 "z"
|
||||
Name 90 "S3"
|
||||
MemberName 90(S3) 0 "x"
|
||||
Name 91 "B4"
|
||||
MemberName 91(B4) 0 "x"
|
||||
MemberName 91(B4) 1 "y"
|
||||
Name 93 "b4"
|
||||
Name 94 "S2"
|
||||
MemberName 94(S2) 0 "x"
|
||||
MemberName 94(S2) 1 "y"
|
||||
MemberName 94(S2) 2 "z"
|
||||
Name 95 "B3"
|
||||
MemberName 95(B3) 0 "x"
|
||||
Name 97 "b3"
|
||||
Name 114 "v3"
|
||||
Name 136 "u3"
|
||||
Decorate 11 ArrayStride 1
|
||||
MemberDecorate 12(S) 0 Offset 0
|
||||
MemberDecorate 12(S) 1 Offset 2
|
||||
MemberDecorate 12(S) 2 Offset 4
|
||||
Decorate 13 ArrayStride 8
|
||||
Decorate 15 ArrayStride 2
|
||||
Decorate 16 ArrayStride 1
|
||||
MemberDecorate 17(B2) 0 Offset 0
|
||||
MemberDecorate 17(B2) 1 Offset 2
|
||||
MemberDecorate 17(B2) 2 Offset 4
|
||||
MemberDecorate 17(B2) 3 Offset 7
|
||||
MemberDecorate 17(B2) 4 Offset 12
|
||||
MemberDecorate 17(B2) 5 Offset 20
|
||||
MemberDecorate 17(B2) 6 Offset 36
|
||||
MemberDecorate 17(B2) 7 Offset 236
|
||||
Decorate 17(B2) BufferBlock
|
||||
Decorate 19(b2) DescriptorSet 0
|
||||
Decorate 22 ArrayStride 16
|
||||
MemberDecorate 23(S) 0 Offset 0
|
||||
MemberDecorate 23(S) 1 Offset 2
|
||||
MemberDecorate 23(S) 2 Offset 4
|
||||
Decorate 24 ArrayStride 16
|
||||
MemberDecorate 25(B1) 0 Offset 0
|
||||
MemberDecorate 25(B1) 1 Offset 2
|
||||
MemberDecorate 25(B1) 2 Offset 4
|
||||
MemberDecorate 25(B1) 3 Offset 16
|
||||
MemberDecorate 25(B1) 4 Offset 48
|
||||
MemberDecorate 25(B1) 5 Offset 64
|
||||
MemberDecorate 25(B1) 6 Offset 96
|
||||
Decorate 25(B1) Block
|
||||
Decorate 27(b1) DescriptorSet 0
|
||||
Decorate 44 ArrayStride 16
|
||||
MemberDecorate 45(S) 0 Offset 0
|
||||
MemberDecorate 45(S) 1 Offset 2
|
||||
MemberDecorate 45(S) 2 Offset 4
|
||||
Decorate 46 ArrayStride 16
|
||||
Decorate 47 ArrayStride 16
|
||||
Decorate 48 ArrayStride 16
|
||||
MemberDecorate 49(B5) 0 Offset 0
|
||||
MemberDecorate 49(B5) 1 Offset 2
|
||||
MemberDecorate 49(B5) 2 Offset 4
|
||||
MemberDecorate 49(B5) 3 Offset 16
|
||||
MemberDecorate 49(B5) 4 Offset 48
|
||||
MemberDecorate 49(B5) 5 Offset 64
|
||||
MemberDecorate 49(B5) 6 Offset 96
|
||||
MemberDecorate 49(B5) 7 Offset 1696
|
||||
Decorate 49(B5) Block
|
||||
Decorate 51(b5) DescriptorSet 0
|
||||
MemberDecorate 89(S2) 0 ColMajor
|
||||
MemberDecorate 89(S2) 0 Offset 0
|
||||
MemberDecorate 89(S2) 0 MatrixStride 16
|
||||
MemberDecorate 89(S2) 1 Offset 64
|
||||
MemberDecorate 89(S2) 2 Offset 68
|
||||
MemberDecorate 90(S3) 0 Offset 0
|
||||
MemberDecorate 91(B4) 0 Offset 0
|
||||
MemberDecorate 91(B4) 1 Offset 80
|
||||
Decorate 91(B4) BufferBlock
|
||||
Decorate 93(b4) DescriptorSet 0
|
||||
MemberDecorate 94(S2) 0 RowMajor
|
||||
MemberDecorate 94(S2) 0 Offset 0
|
||||
MemberDecorate 94(S2) 0 MatrixStride 16
|
||||
MemberDecorate 94(S2) 1 Offset 64
|
||||
MemberDecorate 94(S2) 2 Offset 68
|
||||
MemberDecorate 95(B3) 0 Offset 0
|
||||
Decorate 95(B3) BufferBlock
|
||||
Decorate 97(b3) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 8 0
|
||||
7: TypeVector 6(int8_t) 2
|
||||
8: TypeVector 6(int8_t) 3
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 2
|
||||
11: TypeArray 6(int8_t) 10
|
||||
12(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3)
|
||||
13: TypeArray 12(S) 10
|
||||
14: 9(int) Constant 100
|
||||
15: TypeArray 7(i8vec2) 14
|
||||
16: TypeRuntimeArray 6(int8_t)
|
||||
17(B2): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 11 12(S) 13 15 16
|
||||
18: TypePointer Uniform 17(B2)
|
||||
19(b2): 18(ptr) Variable Uniform
|
||||
20: TypeInt 32 1
|
||||
21: 20(int) Constant 0
|
||||
22: TypeArray 6(int8_t) 10
|
||||
23(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3)
|
||||
24: TypeArray 23(S) 10
|
||||
25(B1): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 22 23(S) 24 9(int)
|
||||
26: TypePointer Uniform 25(B1)
|
||||
27(b1): 26(ptr) Variable Uniform
|
||||
28: TypePointer Uniform 6(int8_t)
|
||||
32: 20(int) Constant 1
|
||||
33: 20(int) Constant 2
|
||||
34: TypePointer Uniform 8(i8vec3)
|
||||
37: TypeVector 9(int) 3
|
||||
39: TypeVector 9(int) 2
|
||||
42: TypePointer Uniform 7(i8vec2)
|
||||
44: TypeArray 6(int8_t) 10
|
||||
45(S): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3)
|
||||
46: TypeArray 45(S) 10
|
||||
47: TypeArray 7(i8vec2) 14
|
||||
48: TypeArray 6(int8_t) 14
|
||||
49(B5): TypeStruct 6(int8_t) 7(i8vec2) 8(i8vec3) 44 45(S) 46 47 48
|
||||
50: TypePointer Uniform 49(B5)
|
||||
51(b5): 50(ptr) Variable Uniform
|
||||
58: 20(int) Constant 3
|
||||
68: TypePointer Function 9(int)
|
||||
73: TypeVector 9(int) 4
|
||||
74: TypePointer Function 73(ivec4)
|
||||
82: 9(int) Constant 1
|
||||
86: TypeFloat 32
|
||||
87: TypeVector 86(float) 4
|
||||
88: TypeMatrix 87(fvec4) 4
|
||||
89(S2): TypeStruct 88 6(int8_t) 9(int)
|
||||
90(S3): TypeStruct 89(S2)
|
||||
91(B4): TypeStruct 89(S2) 90(S3)
|
||||
92: TypePointer Uniform 91(B4)
|
||||
93(b4): 92(ptr) Variable Uniform
|
||||
94(S2): TypeStruct 88 6(int8_t) 9(int)
|
||||
95(B3): TypeStruct 94(S2)
|
||||
96: TypePointer Uniform 95(B3)
|
||||
97(b3): 96(ptr) Variable Uniform
|
||||
98: TypePointer Uniform 88
|
||||
105: 9(int) Constant 0
|
||||
109: 20(int) Constant 5
|
||||
113: TypePointer Function 37(ivec3)
|
||||
115: 20(int) Constant 7
|
||||
116: 20(int) Constant 6
|
||||
117: TypePointer Uniform 9(int)
|
||||
167: 39(ivec2) ConstantComposite 82 10
|
||||
170: 9(int) Constant 3
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
69(x0): 68(ptr) Variable Function
|
||||
75(x1): 74(ptr) Variable Function
|
||||
114(v3): 113(ptr) Variable Function
|
||||
136(u3): 113(ptr) Variable Function
|
||||
29: 28(ptr) AccessChain 27(b1) 21
|
||||
30: 6(int8_t) Load 29
|
||||
31: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 31 30
|
||||
35: 34(ptr) AccessChain 19(b2) 33
|
||||
36: 8(i8vec3) Load 35
|
||||
38: 37(ivec3) UConvert 36
|
||||
40: 39(ivec2) VectorShuffle 38 38 0 1
|
||||
41: 7(i8vec2) UConvert 40
|
||||
43: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 43 41
|
||||
52: 34(ptr) AccessChain 51(b5) 33
|
||||
53: 8(i8vec3) Load 52
|
||||
54: 37(ivec3) UConvert 53
|
||||
55: 39(ivec2) VectorShuffle 54 54 0 1
|
||||
56: 7(i8vec2) UConvert 55
|
||||
57: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 57 56
|
||||
59: 28(ptr) AccessChain 19(b2) 58 21
|
||||
60: 6(int8_t) Load 59
|
||||
61: 28(ptr) AccessChain 19(b2) 58 21
|
||||
Store 61 60
|
||||
62: 28(ptr) AccessChain 51(b5) 58 32
|
||||
63: 6(int8_t) Load 62
|
||||
64: 28(ptr) AccessChain 19(b2) 58 32
|
||||
Store 64 63
|
||||
65: 42(ptr) AccessChain 19(b2) 32
|
||||
66: 7(i8vec2) Load 65
|
||||
67: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 67 66
|
||||
70: 28(ptr) AccessChain 27(b1) 21
|
||||
71: 6(int8_t) Load 70
|
||||
72: 9(int) UConvert 71
|
||||
Store 69(x0) 72
|
||||
76: 28(ptr) AccessChain 27(b1) 21
|
||||
77: 6(int8_t) Load 76
|
||||
78: 9(int) UConvert 77
|
||||
79: 42(ptr) AccessChain 19(b2) 32
|
||||
80: 7(i8vec2) Load 79
|
||||
81: 39(ivec2) UConvert 80
|
||||
83: 9(int) CompositeExtract 81 0
|
||||
84: 9(int) CompositeExtract 81 1
|
||||
85: 73(ivec4) CompositeConstruct 78 83 84 82
|
||||
Store 75(x1) 85
|
||||
99: 98(ptr) AccessChain 97(b3) 21 21
|
||||
100: 88 Load 99
|
||||
101: 98(ptr) AccessChain 93(b4) 21 21
|
||||
Store 101 100
|
||||
102: 42(ptr) AccessChain 19(b2) 32
|
||||
103: 7(i8vec2) Load 102
|
||||
104: 39(ivec2) UConvert 103
|
||||
106: 9(int) CompositeExtract 104 0
|
||||
107: 6(int8_t) UConvert 106
|
||||
108: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 108 107
|
||||
110: 42(ptr) AccessChain 19(b2) 109 32 32
|
||||
111: 7(i8vec2) Load 110
|
||||
112: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 112 111
|
||||
118: 117(ptr) AccessChain 27(b1) 116
|
||||
119: 9(int) Load 118
|
||||
120: 28(ptr) AccessChain 19(b2) 115 119
|
||||
121: 6(int8_t) Load 120
|
||||
122: 9(int) UConvert 121
|
||||
123: 117(ptr) AccessChain 27(b1) 116
|
||||
124: 9(int) Load 123
|
||||
125: 9(int) IAdd 124 82
|
||||
126: 28(ptr) AccessChain 19(b2) 115 125
|
||||
127: 6(int8_t) Load 126
|
||||
128: 9(int) UConvert 127
|
||||
129: 117(ptr) AccessChain 27(b1) 116
|
||||
130: 9(int) Load 129
|
||||
131: 9(int) IAdd 130 10
|
||||
132: 28(ptr) AccessChain 19(b2) 115 131
|
||||
133: 6(int8_t) Load 132
|
||||
134: 9(int) UConvert 133
|
||||
135: 37(ivec3) CompositeConstruct 122 128 134
|
||||
Store 114(v3) 135
|
||||
137: 117(ptr) AccessChain 27(b1) 116
|
||||
138: 9(int) Load 137
|
||||
139: 28(ptr) AccessChain 51(b5) 115 138
|
||||
140: 6(int8_t) Load 139
|
||||
141: 9(int) UConvert 140
|
||||
142: 117(ptr) AccessChain 27(b1) 116
|
||||
143: 9(int) Load 142
|
||||
144: 9(int) IAdd 143 82
|
||||
145: 28(ptr) AccessChain 51(b5) 115 144
|
||||
146: 6(int8_t) Load 145
|
||||
147: 9(int) UConvert 146
|
||||
148: 117(ptr) AccessChain 27(b1) 116
|
||||
149: 9(int) Load 148
|
||||
150: 9(int) IAdd 149 10
|
||||
151: 28(ptr) AccessChain 51(b5) 115 150
|
||||
152: 6(int8_t) Load 151
|
||||
153: 9(int) UConvert 152
|
||||
154: 37(ivec3) CompositeConstruct 141 147 153
|
||||
Store 136(u3) 154
|
||||
155: 42(ptr) AccessChain 19(b2) 116 21
|
||||
156: 7(i8vec2) Load 155
|
||||
157: 42(ptr) AccessChain 19(b2) 116 21
|
||||
Store 157 156
|
||||
158: 42(ptr) AccessChain 51(b5) 116 32
|
||||
159: 7(i8vec2) Load 158
|
||||
160: 42(ptr) AccessChain 19(b2) 116 32
|
||||
Store 160 159
|
||||
161: 28(ptr) AccessChain 27(b1) 21
|
||||
162: 6(int8_t) Load 161
|
||||
163: 28(ptr) AccessChain 19(b2) 32 105
|
||||
Store 163 162
|
||||
164: 28(ptr) AccessChain 19(b2) 32 105
|
||||
165: 6(int8_t) Load 164
|
||||
166: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 166 165
|
||||
168: 7(i8vec2) UConvert 167
|
||||
169: 42(ptr) AccessChain 19(b2) 32
|
||||
Store 169 168
|
||||
171: 6(int8_t) UConvert 170
|
||||
172: 28(ptr) AccessChain 19(b2) 21
|
||||
Store 172 171
|
||||
Return
|
||||
FunctionEnd
|
71
3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-int.frag.out
vendored
Executable file
71
3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-int.frag.out
vendored
Executable file
@ -0,0 +1,71 @@
|
||||
spv.8bitstorage_Error-int.frag
|
||||
ERROR: 0:54: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:58: 'can't use with structs containing int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:61: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:74: ''[' does not operate on types containing (u)int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:75: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int8_t (or there is no acceptable conversion)
|
||||
ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:81: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:82: 'can't use with structs containing int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:83: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:84: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:85: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:87: 'can't use with arrays containing int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:88: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:89: '8-bit array constructors not supported' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:89: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:92: 'Can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:93: 'func2' : no matching overloaded function found
|
||||
ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 26 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
71
3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-uint.frag.out
vendored
Executable file
71
3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-uint.frag.out
vendored
Executable file
@ -0,0 +1,71 @@
|
||||
spv.8bitstorage_Error-uint.frag
|
||||
ERROR: 0:54: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:58: 'can't use with structs containing uint8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:61: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:74: ''[' does not operate on types containing (u)int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:75: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:78: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:79: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint8_t (or there is no acceptable conversion)
|
||||
ERROR: 0:80: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:81: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:82: 'can't use with structs containing uint8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:83: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:84: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:85: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:87: 'can't use with arrays containing uint8' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:88: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:89: '8-bit array constructors not supported' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:89: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:92: 'Can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include:
|
||||
GL_KHX_shader_explicit_arithmetic_types
|
||||
GL_KHX_shader_explicit_arithmetic_types_int8
|
||||
ERROR: 0:93: 'func2' : no matching overloaded function found
|
||||
ERROR: 0:99: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 26 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
887
3rdparty/glslang/Test/baseResults/spv.int8.frag.out
vendored
887
3rdparty/glslang/Test/baseResults/spv.int8.frag.out
vendored
@ -1,7 +1,7 @@
|
||||
spv.int8.frag
|
||||
// Module Version 10300
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 531
|
||||
// Id's are bound by 518
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
@ -9,6 +9,8 @@ spv.int8.frag
|
||||
Capability Int64
|
||||
Capability Int16
|
||||
Capability Int8
|
||||
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||
Extension "SPV_KHR_8bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
@ -47,52 +49,52 @@ spv.int8.frag
|
||||
Name 144 "u16v"
|
||||
Name 174 "bv"
|
||||
Name 192 "u8v"
|
||||
Name 196 "i8"
|
||||
Name 216 "i"
|
||||
Name 223 "uv"
|
||||
Name 242 "i16"
|
||||
Name 279 "b"
|
||||
Name 341 "i8v"
|
||||
Name 344 "i8"
|
||||
Name 354 "u8v"
|
||||
Name 356 "u8"
|
||||
Name 430 "i16"
|
||||
Name 433 "i32"
|
||||
Name 436 "i8v4"
|
||||
Name 440 "u16"
|
||||
Name 441 "u8v2"
|
||||
Name 444 "u32"
|
||||
Name 447 "u8v4"
|
||||
Name 459 "bv"
|
||||
Name 526 "Block"
|
||||
MemberName 526(Block) 0 "i8"
|
||||
MemberName 526(Block) 1 "i8v2"
|
||||
MemberName 526(Block) 2 "i8v3"
|
||||
MemberName 526(Block) 3 "i8v4"
|
||||
MemberName 526(Block) 4 "u8"
|
||||
MemberName 526(Block) 5 "u8v2"
|
||||
MemberName 526(Block) 6 "u8v3"
|
||||
MemberName 526(Block) 7 "u8v4"
|
||||
Name 528 "block"
|
||||
Name 529 "si8"
|
||||
Name 530 "su8"
|
||||
Name 197 "i8"
|
||||
Name 217 "i"
|
||||
Name 224 "uv"
|
||||
Name 240 "i16"
|
||||
Name 276 "b"
|
||||
Name 338 "i8v"
|
||||
Name 341 "i8"
|
||||
Name 351 "u8v"
|
||||
Name 353 "u8"
|
||||
Name 423 "i16"
|
||||
Name 426 "i32"
|
||||
Name 429 "i8v4"
|
||||
Name 433 "u16"
|
||||
Name 434 "u8v2"
|
||||
Name 437 "u32"
|
||||
Name 440 "u8v4"
|
||||
Name 452 "bv"
|
||||
Name 513 "Block"
|
||||
MemberName 513(Block) 0 "i8"
|
||||
MemberName 513(Block) 1 "i8v2"
|
||||
MemberName 513(Block) 2 "i8v3"
|
||||
MemberName 513(Block) 3 "i8v4"
|
||||
MemberName 513(Block) 4 "u8"
|
||||
MemberName 513(Block) 5 "u8v2"
|
||||
MemberName 513(Block) 6 "u8v3"
|
||||
MemberName 513(Block) 7 "u8v4"
|
||||
Name 515 "block"
|
||||
Name 516 "si8"
|
||||
Name 517 "su8"
|
||||
MemberDecorate 24(Uniforms) 0 Offset 0
|
||||
Decorate 24(Uniforms) Block
|
||||
Decorate 26 DescriptorSet 0
|
||||
Decorate 26 Binding 0
|
||||
MemberDecorate 526(Block) 0 Offset 0
|
||||
MemberDecorate 526(Block) 1 Offset 2
|
||||
MemberDecorate 526(Block) 2 Offset 4
|
||||
MemberDecorate 526(Block) 3 Offset 8
|
||||
MemberDecorate 526(Block) 4 Offset 12
|
||||
MemberDecorate 526(Block) 5 Offset 14
|
||||
MemberDecorate 526(Block) 6 Offset 16
|
||||
MemberDecorate 526(Block) 7 Offset 20
|
||||
Decorate 526(Block) Block
|
||||
Decorate 528(block) DescriptorSet 0
|
||||
Decorate 528(block) Binding 1
|
||||
Decorate 529(si8) SpecId 100
|
||||
Decorate 530(su8) SpecId 101
|
||||
MemberDecorate 513(Block) 0 Offset 0
|
||||
MemberDecorate 513(Block) 1 Offset 2
|
||||
MemberDecorate 513(Block) 2 Offset 4
|
||||
MemberDecorate 513(Block) 3 Offset 8
|
||||
MemberDecorate 513(Block) 4 Offset 12
|
||||
MemberDecorate 513(Block) 5 Offset 14
|
||||
MemberDecorate 513(Block) 6 Offset 16
|
||||
MemberDecorate 513(Block) 7 Offset 20
|
||||
Decorate 513(Block) Block
|
||||
Decorate 515(block) DescriptorSet 0
|
||||
Decorate 515(block) Binding 1
|
||||
Decorate 516(si8) SpecId 100
|
||||
Decorate 517(su8) SpecId 101
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
14: TypeInt 8 1
|
||||
@ -157,37 +159,36 @@ spv.int8.frag
|
||||
182: 36(int8_t) Constant 1
|
||||
183: 49(i8vec2) ConstantComposite 181 181
|
||||
184: 49(i8vec2) ConstantComposite 182 182
|
||||
190: TypeVector 14(int8_t) 3
|
||||
190: TypeVector 36(int8_t) 3
|
||||
191: TypePointer Function 190(i8vec3)
|
||||
215: TypePointer Function 27(int)
|
||||
221: TypeVector 17(int) 3
|
||||
222: TypePointer Function 221(ivec3)
|
||||
225: TypeVector 27(int) 3
|
||||
241: TypePointer Function 57(int16_t)
|
||||
264: 17(int) Constant 1
|
||||
270: 17(int) Constant 2
|
||||
278: TypePointer Function 171(bool)
|
||||
280: 17(int) Constant 0
|
||||
293: TypePointer Function 17(int)
|
||||
352: 52(i8vec2) ConstantComposite 21 21
|
||||
358: TypeVector 36(int8_t) 3
|
||||
362: 190(i8vec3) ConstantComposite 22 22 22
|
||||
404: 171(bool) ConstantTrue
|
||||
411: 171(bool) ConstantFalse
|
||||
412: 172(bvec2) ConstantComposite 411 411
|
||||
427: TypeVector 171(bool) 3
|
||||
428: 427(bvec3) ConstantComposite 411 411 411
|
||||
434: TypeVector 14(int8_t) 4
|
||||
435: TypePointer Function 434(i8vec4)
|
||||
439: TypePointer Function 64(int16_t)
|
||||
445: TypeVector 36(int8_t) 4
|
||||
446: TypePointer Function 445(i8vec4)
|
||||
458: TypePointer Function 427(bvec3)
|
||||
526(Block): TypeStruct 14(int8_t) 52(i8vec2) 190(i8vec3) 434(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 445(i8vec4)
|
||||
527: TypePointer Uniform 526(Block)
|
||||
528(block): 527(ptr) Variable Uniform
|
||||
529(si8): 14(int8_t) SpecConstant 4294967286
|
||||
530(su8): 36(int8_t) SpecConstant 20
|
||||
194: TypeVector 14(int8_t) 3
|
||||
216: TypePointer Function 27(int)
|
||||
222: TypeVector 17(int) 3
|
||||
223: TypePointer Function 222(ivec3)
|
||||
239: TypePointer Function 57(int16_t)
|
||||
261: 17(int) Constant 1
|
||||
267: 17(int) Constant 2
|
||||
275: TypePointer Function 171(bool)
|
||||
277: 17(int) Constant 0
|
||||
291: TypePointer Function 17(int)
|
||||
349: 52(i8vec2) ConstantComposite 21 21
|
||||
358: 190(i8vec3) ConstantComposite 181 181 181
|
||||
400: 171(bool) ConstantTrue
|
||||
407: 171(bool) ConstantFalse
|
||||
408: 172(bvec2) ConstantComposite 407 407
|
||||
420: TypeVector 171(bool) 3
|
||||
421: 420(bvec3) ConstantComposite 407 407 407
|
||||
427: TypeVector 14(int8_t) 4
|
||||
428: TypePointer Function 427(i8vec4)
|
||||
432: TypePointer Function 64(int16_t)
|
||||
438: TypeVector 36(int8_t) 4
|
||||
439: TypePointer Function 438(i8vec4)
|
||||
451: TypePointer Function 420(bvec3)
|
||||
513(Block): TypeStruct 14(int8_t) 52(i8vec2) 194(i8vec3) 427(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 438(i8vec4)
|
||||
514: TypePointer Uniform 513(Block)
|
||||
515(block): 514(ptr) Variable Uniform
|
||||
516(si8): 14(int8_t) SpecConstant 4294967286
|
||||
517(su8): 36(int8_t) SpecConstant 20
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
@ -360,389 +361,377 @@ spv.int8.frag
|
||||
10(operators(): 2 Function None 3
|
||||
11: Label
|
||||
192(u8v): 191(ptr) Variable Function
|
||||
196(i8): 15(ptr) Variable Function
|
||||
216(i): 215(ptr) Variable Function
|
||||
223(uv): 222(ptr) Variable Function
|
||||
242(i16): 241(ptr) Variable Function
|
||||
279(b): 278(ptr) Variable Function
|
||||
197(i8): 15(ptr) Variable Function
|
||||
217(i): 216(ptr) Variable Function
|
||||
224(uv): 223(ptr) Variable Function
|
||||
240(i16): 239(ptr) Variable Function
|
||||
276(b): 275(ptr) Variable Function
|
||||
193: 190(i8vec3) Load 192(u8v)
|
||||
194: 190(i8vec3) CompositeConstruct 176 176 176
|
||||
195: 190(i8vec3) IAdd 193 194
|
||||
Store 192(u8v) 195
|
||||
197: 14(int8_t) Load 196(i8)
|
||||
198: 14(int8_t) ISub 197 176
|
||||
Store 196(i8) 198
|
||||
199: 14(int8_t) Load 196(i8)
|
||||
200: 14(int8_t) IAdd 199 176
|
||||
Store 196(i8) 200
|
||||
201: 190(i8vec3) Load 192(u8v)
|
||||
202: 190(i8vec3) CompositeConstruct 176 176 176
|
||||
203: 190(i8vec3) ISub 201 202
|
||||
Store 192(u8v) 203
|
||||
204: 190(i8vec3) Load 192(u8v)
|
||||
205: 190(i8vec3) Not 204
|
||||
Store 192(u8v) 205
|
||||
206: 14(int8_t) Load 196(i8)
|
||||
Store 196(i8) 206
|
||||
207: 190(i8vec3) Load 192(u8v)
|
||||
208: 190(i8vec3) SNegate 207
|
||||
Store 192(u8v) 208
|
||||
209: 14(int8_t) Load 196(i8)
|
||||
210: 14(int8_t) Load 196(i8)
|
||||
211: 14(int8_t) IAdd 210 209
|
||||
Store 196(i8) 211
|
||||
212: 190(i8vec3) Load 192(u8v)
|
||||
195: 194(i8vec3) CompositeConstruct 176 176 176
|
||||
196: 190(i8vec3) IAdd 193 195
|
||||
Store 192(u8v) 196
|
||||
198: 14(int8_t) Load 197(i8)
|
||||
199: 14(int8_t) ISub 198 176
|
||||
Store 197(i8) 199
|
||||
200: 14(int8_t) Load 197(i8)
|
||||
201: 14(int8_t) IAdd 200 176
|
||||
Store 197(i8) 201
|
||||
202: 190(i8vec3) Load 192(u8v)
|
||||
203: 194(i8vec3) CompositeConstruct 176 176 176
|
||||
204: 190(i8vec3) ISub 202 203
|
||||
Store 192(u8v) 204
|
||||
205: 190(i8vec3) Load 192(u8v)
|
||||
206: 190(i8vec3) Not 205
|
||||
Store 192(u8v) 206
|
||||
207: 14(int8_t) Load 197(i8)
|
||||
Store 197(i8) 207
|
||||
208: 190(i8vec3) Load 192(u8v)
|
||||
209: 190(i8vec3) SNegate 208
|
||||
Store 192(u8v) 209
|
||||
210: 14(int8_t) Load 197(i8)
|
||||
211: 14(int8_t) Load 197(i8)
|
||||
212: 14(int8_t) IAdd 211 210
|
||||
Store 197(i8) 212
|
||||
213: 190(i8vec3) Load 192(u8v)
|
||||
214: 190(i8vec3) ISub 213 212
|
||||
Store 192(u8v) 214
|
||||
217: 14(int8_t) Load 196(i8)
|
||||
218: 27(int) SConvert 217
|
||||
219: 27(int) Load 216(i)
|
||||
220: 27(int) IMul 219 218
|
||||
Store 216(i) 220
|
||||
224: 190(i8vec3) Load 192(u8v)
|
||||
226: 225(ivec3) SConvert 224
|
||||
227: 221(ivec3) Bitcast 226
|
||||
228: 221(ivec3) Load 223(uv)
|
||||
229: 221(ivec3) UDiv 228 227
|
||||
Store 223(uv) 229
|
||||
230: 14(int8_t) Load 196(i8)
|
||||
231: 27(int) SConvert 230
|
||||
232: 17(int) Bitcast 231
|
||||
233: 221(ivec3) Load 223(uv)
|
||||
234: 221(ivec3) CompositeConstruct 232 232 232
|
||||
235: 221(ivec3) UMod 233 234
|
||||
Store 223(uv) 235
|
||||
236: 190(i8vec3) Load 192(u8v)
|
||||
237: 225(ivec3) SConvert 236
|
||||
238: 221(ivec3) Bitcast 237
|
||||
239: 221(ivec3) Load 223(uv)
|
||||
240: 221(ivec3) IAdd 238 239
|
||||
Store 223(uv) 240
|
||||
243: 14(int8_t) Load 196(i8)
|
||||
244: 57(int16_t) SConvert 243
|
||||
245: 57(int16_t) Load 242(i16)
|
||||
246: 57(int16_t) ISub 244 245
|
||||
Store 242(i16) 246
|
||||
247: 190(i8vec3) Load 192(u8v)
|
||||
248: 225(ivec3) SConvert 247
|
||||
249: 221(ivec3) Bitcast 248
|
||||
250: 221(ivec3) Load 223(uv)
|
||||
251: 221(ivec3) IMul 249 250
|
||||
Store 223(uv) 251
|
||||
252: 14(int8_t) Load 196(i8)
|
||||
253: 57(int16_t) SConvert 252
|
||||
254: 57(int16_t) Load 242(i16)
|
||||
255: 57(int16_t) IMul 253 254
|
||||
Store 242(i16) 255
|
||||
256: 14(int8_t) Load 196(i8)
|
||||
257: 27(int) SConvert 256
|
||||
258: 27(int) Load 216(i)
|
||||
259: 27(int) SMod 257 258
|
||||
Store 216(i) 259
|
||||
260: 14(int8_t) Load 196(i8)
|
||||
261: 190(i8vec3) Load 192(u8v)
|
||||
262: 190(i8vec3) CompositeConstruct 260 260 260
|
||||
263: 190(i8vec3) ShiftLeftLogical 261 262
|
||||
Store 192(u8v) 263
|
||||
265: 15(ptr) AccessChain 192(u8v) 264
|
||||
266: 14(int8_t) Load 265
|
||||
267: 14(int8_t) Load 196(i8)
|
||||
268: 14(int8_t) ShiftRightArithmetic 267 266
|
||||
Store 196(i8) 268
|
||||
269: 14(int8_t) Load 196(i8)
|
||||
271: 15(ptr) AccessChain 192(u8v) 270
|
||||
272: 14(int8_t) Load 271
|
||||
273: 14(int8_t) ShiftLeftLogical 269 272
|
||||
Store 196(i8) 273
|
||||
274: 190(i8vec3) Load 192(u8v)
|
||||
275: 14(int8_t) Load 196(i8)
|
||||
276: 190(i8vec3) CompositeConstruct 275 275 275
|
||||
277: 190(i8vec3) ShiftLeftLogical 274 276
|
||||
Store 192(u8v) 277
|
||||
281: 15(ptr) AccessChain 192(u8v) 280
|
||||
282: 14(int8_t) Load 281
|
||||
283: 14(int8_t) Load 196(i8)
|
||||
284: 171(bool) INotEqual 282 283
|
||||
Store 279(b) 284
|
||||
285: 14(int8_t) Load 196(i8)
|
||||
286: 15(ptr) AccessChain 192(u8v) 280
|
||||
287: 14(int8_t) Load 286
|
||||
288: 171(bool) IEqual 285 287
|
||||
Store 279(b) 288
|
||||
289: 15(ptr) AccessChain 192(u8v) 280
|
||||
290: 14(int8_t) Load 289
|
||||
291: 27(int) SConvert 290
|
||||
292: 17(int) Bitcast 291
|
||||
294: 293(ptr) AccessChain 223(uv) 264
|
||||
295: 17(int) Load 294
|
||||
296: 171(bool) UGreaterThan 292 295
|
||||
Store 279(b) 296
|
||||
297: 14(int8_t) Load 196(i8)
|
||||
298: 27(int) SConvert 297
|
||||
299: 27(int) Load 216(i)
|
||||
300: 171(bool) SLessThan 298 299
|
||||
Store 279(b) 300
|
||||
301: 15(ptr) AccessChain 192(u8v) 264
|
||||
302: 14(int8_t) Load 301
|
||||
303: 27(int) SConvert 302
|
||||
304: 17(int) Bitcast 303
|
||||
305: 293(ptr) AccessChain 223(uv) 280
|
||||
306: 17(int) Load 305
|
||||
307: 171(bool) UGreaterThanEqual 304 306
|
||||
Store 279(b) 307
|
||||
308: 14(int8_t) Load 196(i8)
|
||||
309: 27(int) SConvert 308
|
||||
310: 27(int) Load 216(i)
|
||||
311: 171(bool) SLessThanEqual 309 310
|
||||
Store 279(b) 311
|
||||
312: 14(int8_t) Load 196(i8)
|
||||
313: 27(int) SConvert 312
|
||||
314: 17(int) Bitcast 313
|
||||
315: 221(ivec3) Load 223(uv)
|
||||
316: 221(ivec3) CompositeConstruct 314 314 314
|
||||
317: 221(ivec3) BitwiseOr 315 316
|
||||
Store 223(uv) 317
|
||||
318: 14(int8_t) Load 196(i8)
|
||||
319: 27(int) SConvert 318
|
||||
320: 27(int) Load 216(i)
|
||||
321: 27(int) BitwiseOr 319 320
|
||||
Store 216(i) 321
|
||||
322: 14(int8_t) Load 196(i8)
|
||||
323: 57(int16_t) SConvert 322
|
||||
324: 57(int16_t) Load 242(i16)
|
||||
325: 57(int16_t) BitwiseAnd 324 323
|
||||
Store 242(i16) 325
|
||||
326: 190(i8vec3) Load 192(u8v)
|
||||
327: 225(ivec3) SConvert 326
|
||||
328: 221(ivec3) Bitcast 327
|
||||
329: 221(ivec3) Load 223(uv)
|
||||
330: 221(ivec3) BitwiseAnd 328 329
|
||||
Store 223(uv) 330
|
||||
331: 14(int8_t) Load 196(i8)
|
||||
332: 27(int) SConvert 331
|
||||
333: 17(int) Bitcast 332
|
||||
334: 221(ivec3) Load 223(uv)
|
||||
335: 221(ivec3) CompositeConstruct 333 333 333
|
||||
336: 221(ivec3) BitwiseXor 334 335
|
||||
Store 223(uv) 336
|
||||
337: 190(i8vec3) Load 192(u8v)
|
||||
338: 14(int8_t) Load 196(i8)
|
||||
339: 190(i8vec3) CompositeConstruct 338 338 338
|
||||
340: 190(i8vec3) BitwiseXor 337 339
|
||||
Store 192(u8v) 340
|
||||
214: 190(i8vec3) Load 192(u8v)
|
||||
215: 190(i8vec3) ISub 214 213
|
||||
Store 192(u8v) 215
|
||||
218: 14(int8_t) Load 197(i8)
|
||||
219: 27(int) SConvert 218
|
||||
220: 27(int) Load 217(i)
|
||||
221: 27(int) IMul 220 219
|
||||
Store 217(i) 221
|
||||
225: 190(i8vec3) Load 192(u8v)
|
||||
226: 222(ivec3) UConvert 225
|
||||
227: 222(ivec3) Load 224(uv)
|
||||
228: 222(ivec3) UDiv 227 226
|
||||
Store 224(uv) 228
|
||||
229: 14(int8_t) Load 197(i8)
|
||||
230: 27(int) SConvert 229
|
||||
231: 17(int) Bitcast 230
|
||||
232: 222(ivec3) Load 224(uv)
|
||||
233: 222(ivec3) CompositeConstruct 231 231 231
|
||||
234: 222(ivec3) UMod 232 233
|
||||
Store 224(uv) 234
|
||||
235: 190(i8vec3) Load 192(u8v)
|
||||
236: 222(ivec3) UConvert 235
|
||||
237: 222(ivec3) Load 224(uv)
|
||||
238: 222(ivec3) IAdd 236 237
|
||||
Store 224(uv) 238
|
||||
241: 14(int8_t) Load 197(i8)
|
||||
242: 57(int16_t) SConvert 241
|
||||
243: 57(int16_t) Load 240(i16)
|
||||
244: 57(int16_t) ISub 242 243
|
||||
Store 240(i16) 244
|
||||
245: 190(i8vec3) Load 192(u8v)
|
||||
246: 222(ivec3) UConvert 245
|
||||
247: 222(ivec3) Load 224(uv)
|
||||
248: 222(ivec3) IMul 246 247
|
||||
Store 224(uv) 248
|
||||
249: 14(int8_t) Load 197(i8)
|
||||
250: 57(int16_t) SConvert 249
|
||||
251: 57(int16_t) Load 240(i16)
|
||||
252: 57(int16_t) IMul 250 251
|
||||
Store 240(i16) 252
|
||||
253: 14(int8_t) Load 197(i8)
|
||||
254: 27(int) SConvert 253
|
||||
255: 27(int) Load 217(i)
|
||||
256: 27(int) SMod 254 255
|
||||
Store 217(i) 256
|
||||
257: 14(int8_t) Load 197(i8)
|
||||
258: 190(i8vec3) Load 192(u8v)
|
||||
259: 194(i8vec3) CompositeConstruct 257 257 257
|
||||
260: 190(i8vec3) ShiftLeftLogical 258 259
|
||||
Store 192(u8v) 260
|
||||
262: 37(ptr) AccessChain 192(u8v) 261
|
||||
263: 36(int8_t) Load 262
|
||||
264: 14(int8_t) Load 197(i8)
|
||||
265: 14(int8_t) ShiftRightArithmetic 264 263
|
||||
Store 197(i8) 265
|
||||
266: 14(int8_t) Load 197(i8)
|
||||
268: 37(ptr) AccessChain 192(u8v) 267
|
||||
269: 36(int8_t) Load 268
|
||||
270: 14(int8_t) ShiftLeftLogical 266 269
|
||||
Store 197(i8) 270
|
||||
271: 190(i8vec3) Load 192(u8v)
|
||||
272: 14(int8_t) Load 197(i8)
|
||||
273: 194(i8vec3) CompositeConstruct 272 272 272
|
||||
274: 190(i8vec3) ShiftLeftLogical 271 273
|
||||
Store 192(u8v) 274
|
||||
278: 37(ptr) AccessChain 192(u8v) 277
|
||||
279: 36(int8_t) Load 278
|
||||
280: 14(int8_t) Load 197(i8)
|
||||
281: 36(int8_t) Bitcast 280
|
||||
282: 171(bool) INotEqual 279 281
|
||||
Store 276(b) 282
|
||||
283: 14(int8_t) Load 197(i8)
|
||||
284: 36(int8_t) Bitcast 283
|
||||
285: 37(ptr) AccessChain 192(u8v) 277
|
||||
286: 36(int8_t) Load 285
|
||||
287: 171(bool) IEqual 284 286
|
||||
Store 276(b) 287
|
||||
288: 37(ptr) AccessChain 192(u8v) 277
|
||||
289: 36(int8_t) Load 288
|
||||
290: 17(int) UConvert 289
|
||||
292: 291(ptr) AccessChain 224(uv) 261
|
||||
293: 17(int) Load 292
|
||||
294: 171(bool) UGreaterThan 290 293
|
||||
Store 276(b) 294
|
||||
295: 14(int8_t) Load 197(i8)
|
||||
296: 27(int) SConvert 295
|
||||
297: 27(int) Load 217(i)
|
||||
298: 171(bool) SLessThan 296 297
|
||||
Store 276(b) 298
|
||||
299: 37(ptr) AccessChain 192(u8v) 261
|
||||
300: 36(int8_t) Load 299
|
||||
301: 17(int) UConvert 300
|
||||
302: 291(ptr) AccessChain 224(uv) 277
|
||||
303: 17(int) Load 302
|
||||
304: 171(bool) UGreaterThanEqual 301 303
|
||||
Store 276(b) 304
|
||||
305: 14(int8_t) Load 197(i8)
|
||||
306: 27(int) SConvert 305
|
||||
307: 27(int) Load 217(i)
|
||||
308: 171(bool) SLessThanEqual 306 307
|
||||
Store 276(b) 308
|
||||
309: 14(int8_t) Load 197(i8)
|
||||
310: 27(int) SConvert 309
|
||||
311: 17(int) Bitcast 310
|
||||
312: 222(ivec3) Load 224(uv)
|
||||
313: 222(ivec3) CompositeConstruct 311 311 311
|
||||
314: 222(ivec3) BitwiseOr 312 313
|
||||
Store 224(uv) 314
|
||||
315: 14(int8_t) Load 197(i8)
|
||||
316: 27(int) SConvert 315
|
||||
317: 27(int) Load 217(i)
|
||||
318: 27(int) BitwiseOr 316 317
|
||||
Store 217(i) 318
|
||||
319: 14(int8_t) Load 197(i8)
|
||||
320: 57(int16_t) SConvert 319
|
||||
321: 57(int16_t) Load 240(i16)
|
||||
322: 57(int16_t) BitwiseAnd 321 320
|
||||
Store 240(i16) 322
|
||||
323: 190(i8vec3) Load 192(u8v)
|
||||
324: 222(ivec3) UConvert 323
|
||||
325: 222(ivec3) Load 224(uv)
|
||||
326: 222(ivec3) BitwiseAnd 324 325
|
||||
Store 224(uv) 326
|
||||
327: 14(int8_t) Load 197(i8)
|
||||
328: 27(int) SConvert 327
|
||||
329: 17(int) Bitcast 328
|
||||
330: 222(ivec3) Load 224(uv)
|
||||
331: 222(ivec3) CompositeConstruct 329 329 329
|
||||
332: 222(ivec3) BitwiseXor 330 331
|
||||
Store 224(uv) 332
|
||||
333: 190(i8vec3) Load 192(u8v)
|
||||
334: 14(int8_t) Load 197(i8)
|
||||
335: 36(int8_t) Bitcast 334
|
||||
336: 190(i8vec3) CompositeConstruct 335 335 335
|
||||
337: 190(i8vec3) BitwiseXor 333 336
|
||||
Store 192(u8v) 337
|
||||
Return
|
||||
FunctionEnd
|
||||
12(builtinFuncs(): 2 Function None 3
|
||||
13: Label
|
||||
341(i8v): 53(ptr) Variable Function
|
||||
344(i8): 15(ptr) Variable Function
|
||||
354(u8v): 191(ptr) Variable Function
|
||||
356(u8): 37(ptr) Variable Function
|
||||
430(i16): 241(ptr) Variable Function
|
||||
433(i32): 215(ptr) Variable Function
|
||||
436(i8v4): 435(ptr) Variable Function
|
||||
440(u16): 439(ptr) Variable Function
|
||||
441(u8v2): 50(ptr) Variable Function
|
||||
444(u32): 293(ptr) Variable Function
|
||||
447(u8v4): 446(ptr) Variable Function
|
||||
459(bv): 458(ptr) Variable Function
|
||||
342: 52(i8vec2) Load 341(i8v)
|
||||
343: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 342
|
||||
Store 341(i8v) 343
|
||||
345: 14(int8_t) Load 344(i8)
|
||||
346: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 345
|
||||
Store 344(i8) 346
|
||||
347: 52(i8vec2) Load 341(i8v)
|
||||
348: 14(int8_t) Load 344(i8)
|
||||
349: 52(i8vec2) CompositeConstruct 348 348
|
||||
350: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 347 349
|
||||
Store 341(i8v) 350
|
||||
351: 52(i8vec2) Load 341(i8v)
|
||||
353: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 352
|
||||
Store 341(i8v) 353
|
||||
355: 190(i8vec3) Load 354(u8v)
|
||||
357: 36(int8_t) Load 356(u8)
|
||||
359: 358(i8vec3) CompositeConstruct 357 357 357
|
||||
360: 190(i8vec3) ExtInst 1(GLSL.std.450) 39(SMin) 355 359
|
||||
Store 354(u8v) 360
|
||||
361: 190(i8vec3) Load 354(u8v)
|
||||
363: 190(i8vec3) ExtInst 1(GLSL.std.450) 39(SMin) 361 362
|
||||
Store 354(u8v) 363
|
||||
364: 52(i8vec2) Load 341(i8v)
|
||||
365: 14(int8_t) Load 344(i8)
|
||||
366: 52(i8vec2) CompositeConstruct 365 365
|
||||
367: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 366
|
||||
Store 341(i8v) 367
|
||||
368: 52(i8vec2) Load 341(i8v)
|
||||
369: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 368 352
|
||||
Store 341(i8v) 369
|
||||
370: 190(i8vec3) Load 354(u8v)
|
||||
371: 36(int8_t) Load 356(u8)
|
||||
372: 358(i8vec3) CompositeConstruct 371 371 371
|
||||
373: 190(i8vec3) ExtInst 1(GLSL.std.450) 42(SMax) 370 372
|
||||
Store 354(u8v) 373
|
||||
374: 190(i8vec3) Load 354(u8v)
|
||||
375: 190(i8vec3) ExtInst 1(GLSL.std.450) 42(SMax) 374 362
|
||||
Store 354(u8v) 375
|
||||
376: 52(i8vec2) Load 341(i8v)
|
||||
377: 14(int8_t) Load 344(i8)
|
||||
378: 14(int8_t) SNegate 377
|
||||
379: 14(int8_t) Load 344(i8)
|
||||
380: 52(i8vec2) CompositeConstruct 378 378
|
||||
381: 52(i8vec2) CompositeConstruct 379 379
|
||||
382: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 376 380 381
|
||||
Store 341(i8v) 382
|
||||
383: 52(i8vec2) Load 341(i8v)
|
||||
384: 52(i8vec2) Load 341(i8v)
|
||||
385: 52(i8vec2) SNegate 384
|
||||
386: 52(i8vec2) Load 341(i8v)
|
||||
387: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 383 385 386
|
||||
Store 341(i8v) 387
|
||||
388: 190(i8vec3) Load 354(u8v)
|
||||
389: 36(int8_t) Load 356(u8)
|
||||
390: 36(int8_t) SNegate 389
|
||||
391: 36(int8_t) Load 356(u8)
|
||||
392: 358(i8vec3) CompositeConstruct 390 390 390
|
||||
393: 358(i8vec3) CompositeConstruct 391 391 391
|
||||
394: 190(i8vec3) ExtInst 1(GLSL.std.450) 45(SClamp) 388 392 393
|
||||
Store 354(u8v) 394
|
||||
395: 190(i8vec3) Load 354(u8v)
|
||||
396: 190(i8vec3) Load 354(u8v)
|
||||
397: 190(i8vec3) SNegate 396
|
||||
398: 190(i8vec3) Load 354(u8v)
|
||||
399: 190(i8vec3) ExtInst 1(GLSL.std.450) 45(SClamp) 395 397 398
|
||||
Store 354(u8v) 399
|
||||
400: 15(ptr) AccessChain 341(i8v) 280
|
||||
401: 14(int8_t) Load 400
|
||||
402: 15(ptr) AccessChain 341(i8v) 264
|
||||
403: 14(int8_t) Load 402
|
||||
405: 14(int8_t) Select 404 403 401
|
||||
Store 344(i8) 405
|
||||
406: 14(int8_t) Load 344(i8)
|
||||
407: 52(i8vec2) CompositeConstruct 406 406
|
||||
408: 14(int8_t) Load 344(i8)
|
||||
409: 14(int8_t) SNegate 408
|
||||
410: 52(i8vec2) CompositeConstruct 409 409
|
||||
413: 52(i8vec2) Select 412 410 407
|
||||
Store 341(i8v) 413
|
||||
414: 15(ptr) AccessChain 354(u8v) 280
|
||||
415: 14(int8_t) Load 414
|
||||
416: 15(ptr) AccessChain 354(u8v) 264
|
||||
417: 14(int8_t) Load 416
|
||||
418: 14(int8_t) Select 404 417 415
|
||||
419: 36(int8_t) Bitcast 418
|
||||
Store 356(u8) 419
|
||||
420: 36(int8_t) Load 356(u8)
|
||||
421: 14(int8_t) Bitcast 420
|
||||
422: 190(i8vec3) CompositeConstruct 421 421 421
|
||||
423: 36(int8_t) Load 356(u8)
|
||||
424: 36(int8_t) SNegate 423
|
||||
425: 14(int8_t) Bitcast 424
|
||||
426: 190(i8vec3) CompositeConstruct 425 425 425
|
||||
429: 190(i8vec3) Select 428 426 422
|
||||
Store 354(u8v) 429
|
||||
431: 52(i8vec2) Load 341(i8v)
|
||||
432: 57(int16_t) Bitcast 431
|
||||
Store 430(i16) 432
|
||||
437: 434(i8vec4) Load 436(i8v4)
|
||||
438: 27(int) Bitcast 437
|
||||
Store 433(i32) 438
|
||||
442: 49(i8vec2) Load 441(u8v2)
|
||||
443: 64(int16_t) Bitcast 442
|
||||
Store 440(u16) 443
|
||||
448: 445(i8vec4) Load 447(u8v4)
|
||||
449: 17(int) Bitcast 448
|
||||
Store 444(u32) 449
|
||||
450: 57(int16_t) Load 430(i16)
|
||||
451: 52(i8vec2) Bitcast 450
|
||||
Store 341(i8v) 451
|
||||
452: 27(int) Load 433(i32)
|
||||
453: 434(i8vec4) Bitcast 452
|
||||
Store 436(i8v4) 453
|
||||
454: 64(int16_t) Load 440(u16)
|
||||
455: 49(i8vec2) Bitcast 454
|
||||
Store 441(u8v2) 455
|
||||
456: 17(int) Load 444(u32)
|
||||
457: 445(i8vec4) Bitcast 456
|
||||
Store 447(u8v4) 457
|
||||
460: 190(i8vec3) Load 354(u8v)
|
||||
461: 36(int8_t) Load 356(u8)
|
||||
462: 14(int8_t) Bitcast 461
|
||||
463: 190(i8vec3) CompositeConstruct 462 462 462
|
||||
464: 427(bvec3) SLessThan 460 463
|
||||
Store 459(bv) 464
|
||||
465: 52(i8vec2) Load 341(i8v)
|
||||
466: 14(int8_t) Load 344(i8)
|
||||
467: 52(i8vec2) CompositeConstruct 466 466
|
||||
468: 172(bvec2) SLessThan 465 467
|
||||
469: 427(bvec3) Load 459(bv)
|
||||
470: 427(bvec3) VectorShuffle 469 468 3 4 2
|
||||
Store 459(bv) 470
|
||||
471: 190(i8vec3) Load 354(u8v)
|
||||
472: 36(int8_t) Load 356(u8)
|
||||
473: 14(int8_t) Bitcast 472
|
||||
474: 190(i8vec3) CompositeConstruct 473 473 473
|
||||
475: 427(bvec3) SLessThanEqual 471 474
|
||||
Store 459(bv) 475
|
||||
476: 52(i8vec2) Load 341(i8v)
|
||||
477: 14(int8_t) Load 344(i8)
|
||||
478: 52(i8vec2) CompositeConstruct 477 477
|
||||
479: 172(bvec2) SLessThanEqual 476 478
|
||||
480: 427(bvec3) Load 459(bv)
|
||||
481: 427(bvec3) VectorShuffle 480 479 3 4 2
|
||||
Store 459(bv) 481
|
||||
482: 190(i8vec3) Load 354(u8v)
|
||||
483: 36(int8_t) Load 356(u8)
|
||||
484: 14(int8_t) Bitcast 483
|
||||
338(i8v): 53(ptr) Variable Function
|
||||
341(i8): 15(ptr) Variable Function
|
||||
351(u8v): 191(ptr) Variable Function
|
||||
353(u8): 37(ptr) Variable Function
|
||||
423(i16): 239(ptr) Variable Function
|
||||
426(i32): 216(ptr) Variable Function
|
||||
429(i8v4): 428(ptr) Variable Function
|
||||
433(u16): 432(ptr) Variable Function
|
||||
434(u8v2): 50(ptr) Variable Function
|
||||
437(u32): 291(ptr) Variable Function
|
||||
440(u8v4): 439(ptr) Variable Function
|
||||
452(bv): 451(ptr) Variable Function
|
||||
339: 52(i8vec2) Load 338(i8v)
|
||||
340: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 339
|
||||
Store 338(i8v) 340
|
||||
342: 14(int8_t) Load 341(i8)
|
||||
343: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 342
|
||||
Store 341(i8) 343
|
||||
344: 52(i8vec2) Load 338(i8v)
|
||||
345: 14(int8_t) Load 341(i8)
|
||||
346: 52(i8vec2) CompositeConstruct 345 345
|
||||
347: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 344 346
|
||||
Store 338(i8v) 347
|
||||
348: 52(i8vec2) Load 338(i8v)
|
||||
350: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 348 349
|
||||
Store 338(i8v) 350
|
||||
352: 190(i8vec3) Load 351(u8v)
|
||||
354: 36(int8_t) Load 353(u8)
|
||||
355: 190(i8vec3) CompositeConstruct 354 354 354
|
||||
356: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 352 355
|
||||
Store 351(u8v) 356
|
||||
357: 190(i8vec3) Load 351(u8v)
|
||||
359: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 358
|
||||
Store 351(u8v) 359
|
||||
360: 52(i8vec2) Load 338(i8v)
|
||||
361: 14(int8_t) Load 341(i8)
|
||||
362: 52(i8vec2) CompositeConstruct 361 361
|
||||
363: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 360 362
|
||||
Store 338(i8v) 363
|
||||
364: 52(i8vec2) Load 338(i8v)
|
||||
365: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 349
|
||||
Store 338(i8v) 365
|
||||
366: 190(i8vec3) Load 351(u8v)
|
||||
367: 36(int8_t) Load 353(u8)
|
||||
368: 190(i8vec3) CompositeConstruct 367 367 367
|
||||
369: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 366 368
|
||||
Store 351(u8v) 369
|
||||
370: 190(i8vec3) Load 351(u8v)
|
||||
371: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 370 358
|
||||
Store 351(u8v) 371
|
||||
372: 52(i8vec2) Load 338(i8v)
|
||||
373: 14(int8_t) Load 341(i8)
|
||||
374: 14(int8_t) SNegate 373
|
||||
375: 14(int8_t) Load 341(i8)
|
||||
376: 52(i8vec2) CompositeConstruct 374 374
|
||||
377: 52(i8vec2) CompositeConstruct 375 375
|
||||
378: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 372 376 377
|
||||
Store 338(i8v) 378
|
||||
379: 52(i8vec2) Load 338(i8v)
|
||||
380: 52(i8vec2) Load 338(i8v)
|
||||
381: 52(i8vec2) SNegate 380
|
||||
382: 52(i8vec2) Load 338(i8v)
|
||||
383: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 381 382
|
||||
Store 338(i8v) 383
|
||||
384: 190(i8vec3) Load 351(u8v)
|
||||
385: 36(int8_t) Load 353(u8)
|
||||
386: 36(int8_t) SNegate 385
|
||||
387: 36(int8_t) Load 353(u8)
|
||||
388: 190(i8vec3) CompositeConstruct 386 386 386
|
||||
389: 190(i8vec3) CompositeConstruct 387 387 387
|
||||
390: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 384 388 389
|
||||
Store 351(u8v) 390
|
||||
391: 190(i8vec3) Load 351(u8v)
|
||||
392: 190(i8vec3) Load 351(u8v)
|
||||
393: 190(i8vec3) SNegate 392
|
||||
394: 190(i8vec3) Load 351(u8v)
|
||||
395: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 393 394
|
||||
Store 351(u8v) 395
|
||||
396: 15(ptr) AccessChain 338(i8v) 277
|
||||
397: 14(int8_t) Load 396
|
||||
398: 15(ptr) AccessChain 338(i8v) 261
|
||||
399: 14(int8_t) Load 398
|
||||
401: 14(int8_t) Select 400 399 397
|
||||
Store 341(i8) 401
|
||||
402: 14(int8_t) Load 341(i8)
|
||||
403: 52(i8vec2) CompositeConstruct 402 402
|
||||
404: 14(int8_t) Load 341(i8)
|
||||
405: 14(int8_t) SNegate 404
|
||||
406: 52(i8vec2) CompositeConstruct 405 405
|
||||
409: 52(i8vec2) Select 408 406 403
|
||||
Store 338(i8v) 409
|
||||
410: 37(ptr) AccessChain 351(u8v) 277
|
||||
411: 36(int8_t) Load 410
|
||||
412: 37(ptr) AccessChain 351(u8v) 261
|
||||
413: 36(int8_t) Load 412
|
||||
414: 36(int8_t) Select 400 413 411
|
||||
Store 353(u8) 414
|
||||
415: 36(int8_t) Load 353(u8)
|
||||
416: 190(i8vec3) CompositeConstruct 415 415 415
|
||||
417: 36(int8_t) Load 353(u8)
|
||||
418: 36(int8_t) SNegate 417
|
||||
419: 190(i8vec3) CompositeConstruct 418 418 418
|
||||
422: 190(i8vec3) Select 421 419 416
|
||||
Store 351(u8v) 422
|
||||
424: 52(i8vec2) Load 338(i8v)
|
||||
425: 57(int16_t) Bitcast 424
|
||||
Store 423(i16) 425
|
||||
430: 427(i8vec4) Load 429(i8v4)
|
||||
431: 27(int) Bitcast 430
|
||||
Store 426(i32) 431
|
||||
435: 49(i8vec2) Load 434(u8v2)
|
||||
436: 64(int16_t) Bitcast 435
|
||||
Store 433(u16) 436
|
||||
441: 438(i8vec4) Load 440(u8v4)
|
||||
442: 17(int) Bitcast 441
|
||||
Store 437(u32) 442
|
||||
443: 57(int16_t) Load 423(i16)
|
||||
444: 52(i8vec2) Bitcast 443
|
||||
Store 338(i8v) 444
|
||||
445: 27(int) Load 426(i32)
|
||||
446: 427(i8vec4) Bitcast 445
|
||||
Store 429(i8v4) 446
|
||||
447: 64(int16_t) Load 433(u16)
|
||||
448: 49(i8vec2) Bitcast 447
|
||||
Store 434(u8v2) 448
|
||||
449: 17(int) Load 437(u32)
|
||||
450: 438(i8vec4) Bitcast 449
|
||||
Store 440(u8v4) 450
|
||||
453: 190(i8vec3) Load 351(u8v)
|
||||
454: 36(int8_t) Load 353(u8)
|
||||
455: 190(i8vec3) CompositeConstruct 454 454 454
|
||||
456: 420(bvec3) ULessThan 453 455
|
||||
Store 452(bv) 456
|
||||
457: 52(i8vec2) Load 338(i8v)
|
||||
458: 14(int8_t) Load 341(i8)
|
||||
459: 52(i8vec2) CompositeConstruct 458 458
|
||||
460: 172(bvec2) SLessThan 457 459
|
||||
461: 420(bvec3) Load 452(bv)
|
||||
462: 420(bvec3) VectorShuffle 461 460 3 4 2
|
||||
Store 452(bv) 462
|
||||
463: 190(i8vec3) Load 351(u8v)
|
||||
464: 36(int8_t) Load 353(u8)
|
||||
465: 190(i8vec3) CompositeConstruct 464 464 464
|
||||
466: 420(bvec3) ULessThanEqual 463 465
|
||||
Store 452(bv) 466
|
||||
467: 52(i8vec2) Load 338(i8v)
|
||||
468: 14(int8_t) Load 341(i8)
|
||||
469: 52(i8vec2) CompositeConstruct 468 468
|
||||
470: 172(bvec2) SLessThanEqual 467 469
|
||||
471: 420(bvec3) Load 452(bv)
|
||||
472: 420(bvec3) VectorShuffle 471 470 3 4 2
|
||||
Store 452(bv) 472
|
||||
473: 190(i8vec3) Load 351(u8v)
|
||||
474: 36(int8_t) Load 353(u8)
|
||||
475: 190(i8vec3) CompositeConstruct 474 474 474
|
||||
476: 420(bvec3) UGreaterThan 473 475
|
||||
Store 452(bv) 476
|
||||
477: 52(i8vec2) Load 338(i8v)
|
||||
478: 14(int8_t) Load 341(i8)
|
||||
479: 52(i8vec2) CompositeConstruct 478 478
|
||||
480: 172(bvec2) SGreaterThan 477 479
|
||||
481: 420(bvec3) Load 452(bv)
|
||||
482: 420(bvec3) VectorShuffle 481 480 3 4 2
|
||||
Store 452(bv) 482
|
||||
483: 190(i8vec3) Load 351(u8v)
|
||||
484: 36(int8_t) Load 353(u8)
|
||||
485: 190(i8vec3) CompositeConstruct 484 484 484
|
||||
486: 427(bvec3) SGreaterThan 482 485
|
||||
Store 459(bv) 486
|
||||
487: 52(i8vec2) Load 341(i8v)
|
||||
488: 14(int8_t) Load 344(i8)
|
||||
486: 420(bvec3) UGreaterThanEqual 483 485
|
||||
Store 452(bv) 486
|
||||
487: 52(i8vec2) Load 338(i8v)
|
||||
488: 14(int8_t) Load 341(i8)
|
||||
489: 52(i8vec2) CompositeConstruct 488 488
|
||||
490: 172(bvec2) SGreaterThan 487 489
|
||||
491: 427(bvec3) Load 459(bv)
|
||||
492: 427(bvec3) VectorShuffle 491 490 3 4 2
|
||||
Store 459(bv) 492
|
||||
493: 190(i8vec3) Load 354(u8v)
|
||||
494: 36(int8_t) Load 356(u8)
|
||||
495: 14(int8_t) Bitcast 494
|
||||
496: 190(i8vec3) CompositeConstruct 495 495 495
|
||||
497: 427(bvec3) SGreaterThanEqual 493 496
|
||||
Store 459(bv) 497
|
||||
498: 52(i8vec2) Load 341(i8v)
|
||||
499: 14(int8_t) Load 344(i8)
|
||||
500: 52(i8vec2) CompositeConstruct 499 499
|
||||
501: 172(bvec2) SGreaterThanEqual 498 500
|
||||
502: 427(bvec3) Load 459(bv)
|
||||
503: 427(bvec3) VectorShuffle 502 501 3 4 2
|
||||
Store 459(bv) 503
|
||||
504: 190(i8vec3) Load 354(u8v)
|
||||
505: 36(int8_t) Load 356(u8)
|
||||
506: 14(int8_t) Bitcast 505
|
||||
507: 190(i8vec3) CompositeConstruct 506 506 506
|
||||
508: 427(bvec3) IEqual 504 507
|
||||
Store 459(bv) 508
|
||||
509: 52(i8vec2) Load 341(i8v)
|
||||
510: 14(int8_t) Load 344(i8)
|
||||
511: 52(i8vec2) CompositeConstruct 510 510
|
||||
512: 172(bvec2) IEqual 509 511
|
||||
513: 427(bvec3) Load 459(bv)
|
||||
514: 427(bvec3) VectorShuffle 513 512 3 4 2
|
||||
Store 459(bv) 514
|
||||
515: 190(i8vec3) Load 354(u8v)
|
||||
516: 36(int8_t) Load 356(u8)
|
||||
517: 14(int8_t) Bitcast 516
|
||||
518: 190(i8vec3) CompositeConstruct 517 517 517
|
||||
519: 427(bvec3) INotEqual 515 518
|
||||
Store 459(bv) 519
|
||||
520: 52(i8vec2) Load 341(i8v)
|
||||
521: 14(int8_t) Load 344(i8)
|
||||
522: 52(i8vec2) CompositeConstruct 521 521
|
||||
523: 172(bvec2) INotEqual 520 522
|
||||
524: 427(bvec3) Load 459(bv)
|
||||
525: 427(bvec3) VectorShuffle 524 523 3 4 2
|
||||
Store 459(bv) 525
|
||||
490: 172(bvec2) SGreaterThanEqual 487 489
|
||||
491: 420(bvec3) Load 452(bv)
|
||||
492: 420(bvec3) VectorShuffle 491 490 3 4 2
|
||||
Store 452(bv) 492
|
||||
493: 190(i8vec3) Load 351(u8v)
|
||||
494: 36(int8_t) Load 353(u8)
|
||||
495: 190(i8vec3) CompositeConstruct 494 494 494
|
||||
496: 420(bvec3) IEqual 493 495
|
||||
Store 452(bv) 496
|
||||
497: 52(i8vec2) Load 338(i8v)
|
||||
498: 14(int8_t) Load 341(i8)
|
||||
499: 52(i8vec2) CompositeConstruct 498 498
|
||||
500: 172(bvec2) IEqual 497 499
|
||||
501: 420(bvec3) Load 452(bv)
|
||||
502: 420(bvec3) VectorShuffle 501 500 3 4 2
|
||||
Store 452(bv) 502
|
||||
503: 190(i8vec3) Load 351(u8v)
|
||||
504: 36(int8_t) Load 353(u8)
|
||||
505: 190(i8vec3) CompositeConstruct 504 504 504
|
||||
506: 420(bvec3) INotEqual 503 505
|
||||
Store 452(bv) 506
|
||||
507: 52(i8vec2) Load 338(i8v)
|
||||
508: 14(int8_t) Load 341(i8)
|
||||
509: 52(i8vec2) CompositeConstruct 508 508
|
||||
510: 172(bvec2) INotEqual 507 509
|
||||
511: 420(bvec3) Load 452(bv)
|
||||
512: 420(bvec3) VectorShuffle 511 510 3 4 2
|
||||
Store 452(bv) 512
|
||||
Return
|
||||
FunctionEnd
|
||||
|
93
3rdparty/glslang/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
vendored
Normal file
93
3rdparty/glslang/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
spv.samplerlessTextureFunctions.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 51
|
||||
|
||||
Capability Shader
|
||||
Capability SampledBuffer
|
||||
Capability ImageQuery
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_samplerless_texture_functions"
|
||||
Name 4 "main"
|
||||
Name 9 "tex2DFetch"
|
||||
Name 12 "tex2D"
|
||||
Name 19 "texMSFetch"
|
||||
Name 22 "texMS"
|
||||
Name 25 "bufFetch"
|
||||
Name 28 "buf"
|
||||
Name 31 "tex2DFetchOffset"
|
||||
Name 35 "tex2DSize"
|
||||
Name 38 "texMSSize"
|
||||
Name 42 "bufSize"
|
||||
Name 45 "tex2DLevels"
|
||||
Name 48 "texMSSamples"
|
||||
Decorate 12(tex2D) DescriptorSet 0
|
||||
Decorate 12(tex2D) Binding 1
|
||||
Decorate 22(texMS) DescriptorSet 0
|
||||
Decorate 22(texMS) Binding 1
|
||||
Decorate 28(buf) DescriptorSet 0
|
||||
Decorate 28(buf) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
10: TypeImage 6(float) 2D sampled format:Unknown
|
||||
11: TypePointer UniformConstant 10
|
||||
12(tex2D): 11(ptr) Variable UniformConstant
|
||||
14: TypeInt 32 1
|
||||
15: TypeVector 14(int) 2
|
||||
16: 14(int) Constant 0
|
||||
17: 15(ivec2) ConstantComposite 16 16
|
||||
20: TypeImage 6(float) 2D multi-sampled sampled format:Unknown
|
||||
21: TypePointer UniformConstant 20
|
||||
22(texMS): 21(ptr) Variable UniformConstant
|
||||
26: TypeImage 6(float) Buffer sampled format:Unknown
|
||||
27: TypePointer UniformConstant 26
|
||||
28(buf): 27(ptr) Variable UniformConstant
|
||||
34: TypePointer Function 15(ivec2)
|
||||
41: TypePointer Function 14(int)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(tex2DFetch): 8(ptr) Variable Function
|
||||
19(texMSFetch): 8(ptr) Variable Function
|
||||
25(bufFetch): 8(ptr) Variable Function
|
||||
31(tex2DFetchOffset): 8(ptr) Variable Function
|
||||
35(tex2DSize): 34(ptr) Variable Function
|
||||
38(texMSSize): 34(ptr) Variable Function
|
||||
42(bufSize): 41(ptr) Variable Function
|
||||
45(tex2DLevels): 41(ptr) Variable Function
|
||||
48(texMSSamples): 41(ptr) Variable Function
|
||||
13: 10 Load 12(tex2D)
|
||||
18: 7(fvec4) ImageFetch 13 17 Lod 16
|
||||
Store 9(tex2DFetch) 18
|
||||
23: 20 Load 22(texMS)
|
||||
24: 7(fvec4) ImageFetch 23 17 Sample 16
|
||||
Store 19(texMSFetch) 24
|
||||
29: 26 Load 28(buf)
|
||||
30: 7(fvec4) ImageFetch 29 16
|
||||
Store 25(bufFetch) 30
|
||||
32: 10 Load 12(tex2D)
|
||||
33: 7(fvec4) ImageFetch 32 17 Lod ConstOffset 16 17
|
||||
Store 31(tex2DFetchOffset) 33
|
||||
36: 10 Load 12(tex2D)
|
||||
37: 15(ivec2) ImageQuerySizeLod 36 16
|
||||
Store 35(tex2DSize) 37
|
||||
39: 20 Load 22(texMS)
|
||||
40: 15(ivec2) ImageQuerySize 39
|
||||
Store 38(texMSSize) 40
|
||||
43: 26 Load 28(buf)
|
||||
44: 14(int) ImageQuerySize 43
|
||||
Store 42(bufSize) 44
|
||||
46: 10 Load 12(tex2D)
|
||||
47: 14(int) ImageQueryLevels 46
|
||||
Store 45(tex2DLevels) 47
|
||||
49: 20 Load 22(texMS)
|
||||
50: 14(int) ImageQuerySamples 49
|
||||
Store 48(texMSSamples) 50
|
||||
Return
|
||||
FunctionEnd
|
@ -11,7 +11,7 @@ spv.specConstant.vert
|
||||
Source GLSL 400
|
||||
Name 4 "main"
|
||||
Name 9 "arraySize"
|
||||
Name 14 "foo(vf4[s2468];"
|
||||
Name 14 "foo(vf4[s2543];"
|
||||
Name 13 "p"
|
||||
Name 17 "builtin_spec_constant("
|
||||
Name 20 "color"
|
||||
@ -102,10 +102,10 @@ spv.specConstant.vert
|
||||
Store 20(color) 46
|
||||
48: 10 Load 22(ucol)
|
||||
Store 47(param) 48
|
||||
49: 2 FunctionCall 14(foo(vf4[s2468];) 47(param)
|
||||
49: 2 FunctionCall 14(foo(vf4[s2543];) 47(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
14(foo(vf4[s2468];): 2 Function None 12
|
||||
14(foo(vf4[s2543];): 2 Function None 12
|
||||
13(p): 11(ptr) FunctionParameter
|
||||
15: Label
|
||||
54: 24(ptr) AccessChain 53(dupUcol) 23
|
||||
|
2
3rdparty/glslang/Test/constFold.frag
vendored
Normal file → Executable file
2
3rdparty/glslang/Test/constFold.frag
vendored
Normal file → Executable file
@ -81,7 +81,7 @@ void foo()
|
||||
a[0] = s.m[1].z; // 7.0
|
||||
b % 0; // int
|
||||
b / 0;
|
||||
e / 0;
|
||||
e / 0; -e / 0; 0.0 / 0.0;
|
||||
const uint ua = 5;
|
||||
const uvec2 ub = uvec2(6, 7);
|
||||
const uint uc = 8;
|
||||
|
17
3rdparty/glslang/Test/hlsl.pp.expand.frag
vendored
Executable file
17
3rdparty/glslang/Test/hlsl.pp.expand.frag
vendored
Executable file
@ -0,0 +1,17 @@
|
||||
#define EMP1(a)
|
||||
#define EMP2(a, b)
|
||||
|
||||
#define EXP1(a) = a
|
||||
#define EXP2(a, b) = a, b
|
||||
|
||||
struct A
|
||||
{
|
||||
float4 a EMP1({1,2,3,4}); // No PP arg errors
|
||||
float4 b EMP2({({{(({1,2,3,4}))}})}, {{1,2,3,4}}); // No PP arg errors
|
||||
float4 c EXP1({1,2,3,4}); // ERROR: No PP arg errors, but init error
|
||||
float4 d EXP2({({{(({1,2,3,4}))}})}, {{1,2,3,4}}); // ERROR: No PP arg errors, but init error
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
8
3rdparty/glslang/Test/preprocessor.bad_arg.vert
vendored
Executable file
8
3rdparty/glslang/Test/preprocessor.bad_arg.vert
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#define M(a) a
|
||||
int M(aou
|
||||
= 2) // Okay, one argument, split across newline
|
||||
;
|
||||
|
||||
// end of file during an argument
|
||||
#define EXP2(a, b)
|
||||
EXP2(((((1,2,3,4))), );
|
7
3rdparty/glslang/Test/runtests
vendored
7
3rdparty/glslang/Test/runtests
vendored
@ -215,6 +215,13 @@ $EXE -H -e main -D -Od -fhlsl_functionality1 hlsl.noSemantic.functionality1.comp
|
||||
$TARGETDIR/hlsl.noSemantic.functionality1.comp.out
|
||||
diff -b $BASEDIR/hlsl.noSemantic.functionality1.comp.out $TARGETDIR/hlsl.noSemantic.functionality1.comp.out || HASERROR=1
|
||||
|
||||
#
|
||||
# Testing HLSL-specific PP feature expansion
|
||||
#
|
||||
$EXE -D -E hlsl.pp.expand.frag > $TARGETDIR/hlsl.pp.expand.frag.out 2> $TARGETDIR/hlsl.pp.expand.frag.err
|
||||
diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1
|
||||
diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1
|
||||
|
||||
#
|
||||
# Final checking
|
||||
#
|
||||
|
0
3rdparty/glslang/Test/runtimeArray.vert
vendored
Normal file → Executable file
0
3rdparty/glslang/Test/runtimeArray.vert
vendored
Normal file → Executable file
46
3rdparty/glslang/Test/samplerlessTextureFunctions.frag
vendored
Normal file
46
3rdparty/glslang/Test/samplerlessTextureFunctions.frag
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
#version 450 core
|
||||
|
||||
layout(binding = 1) uniform texture2D tex2D;
|
||||
layout(binding = 1) uniform texture2DMS texMS;
|
||||
layout(binding = 0) uniform textureBuffer buf;
|
||||
|
||||
void testBad()
|
||||
{
|
||||
vec4 tex2DFetch = texelFetch(tex2D, ivec2(0, 0), 0);
|
||||
vec4 texMSFetch = texelFetch(texMS, ivec2(0, 0), 0);
|
||||
|
||||
// Allowed by KHR_vulkan_glsl without the extension. All others should
|
||||
// error.
|
||||
vec4 bufFetch = texelFetch(buf, 0);
|
||||
|
||||
vec4 tex2DFetchOffset = texelFetchOffset(tex2D, ivec2(0, 0), 0, ivec2(0, 0));
|
||||
|
||||
ivec2 tex2DSize = textureSize(tex2D, 0);
|
||||
ivec2 texMSSize = textureSize(texMS);
|
||||
int bufSize = textureSize(buf);
|
||||
|
||||
int tex2DLevels = textureQueryLevels(tex2D);
|
||||
|
||||
int texMSSamples = textureSamples(texMS);
|
||||
}
|
||||
|
||||
#extension GL_EXT_samplerless_texture_functions : enable
|
||||
|
||||
void main()
|
||||
{
|
||||
// These should all succeed.
|
||||
|
||||
vec4 tex2DFetch = texelFetch(tex2D, ivec2(0, 0), 0);
|
||||
vec4 texMSFetch = texelFetch(texMS, ivec2(0, 0), 0);
|
||||
vec4 bufFetch = texelFetch(buf, 0);
|
||||
|
||||
vec4 tex2DFetchOffset = texelFetchOffset(tex2D, ivec2(0, 0), 0, ivec2(0, 0));
|
||||
|
||||
ivec2 tex2DSize = textureSize(tex2D, 0);
|
||||
ivec2 texMSSize = textureSize(texMS);
|
||||
int bufSize = textureSize(buf);
|
||||
|
||||
int tex2DLevels = textureQueryLevels(tex2D);
|
||||
|
||||
int texMSSamples = textureSamples(texMS);
|
||||
}
|
90
3rdparty/glslang/Test/spv.16bitstorage-int.frag
vendored
Executable file
90
3rdparty/glslang/Test/spv.16bitstorage-int.frag
vendored
Executable file
@ -0,0 +1,90 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_16bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
int16_t x;
|
||||
i16vec2 y;
|
||||
i16vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
int16_t a;
|
||||
i16vec2 b;
|
||||
i16vec3 c;
|
||||
int16_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
int j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
int16_t o;
|
||||
i16vec2 p;
|
||||
i16vec3 q;
|
||||
int16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
i16vec2 x[100];
|
||||
int16_t w[];
|
||||
} b2;
|
||||
|
||||
layout(row_major, std140) uniform B5
|
||||
{
|
||||
int16_t o;
|
||||
i16vec2 p;
|
||||
i16vec3 q;
|
||||
int16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
i16vec2 x[100];
|
||||
int16_t w[100];
|
||||
} b5;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
int16_t y;
|
||||
int z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
S3 y;
|
||||
} b4;
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b1.a;
|
||||
b2.p = i16vec2(ivec3(b2.q).xy);
|
||||
b2.p = i16vec2(ivec3(b5.q).xy);
|
||||
b2.r[0] = b2.r[0];
|
||||
b2.r[1] = b5.r[1];
|
||||
b2.p = b2.p;
|
||||
int x0 = int(b1.a);
|
||||
ivec4 x1 = ivec4(b1.a, b2.p, 1);
|
||||
b4.x.x = b3.x.x;
|
||||
b2.o = int16_t(ivec2(b2.p).x);
|
||||
b2.p = b2.v[1].y;
|
||||
ivec3 v3 = ivec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]);
|
||||
ivec3 u3 = ivec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]);
|
||||
b2.x[0] = b2.x[0];
|
||||
b2.x[1] = b5.x[1];
|
||||
b2.p.x = b1.a;
|
||||
b2.o = b2.p.x;
|
||||
b2.p = i16vec2(ivec2(1, 2));
|
||||
b2.o = int16_t(3);
|
||||
}
|
||||
|
90
3rdparty/glslang/Test/spv.16bitstorage-uint.frag
vendored
Executable file
90
3rdparty/glslang/Test/spv.16bitstorage-uint.frag
vendored
Executable file
@ -0,0 +1,90 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_16bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
uint16_t x;
|
||||
u16vec2 y;
|
||||
u16vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
uint16_t a;
|
||||
u16vec2 b;
|
||||
u16vec3 c;
|
||||
uint16_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
uint j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
uint16_t o;
|
||||
u16vec2 p;
|
||||
u16vec3 q;
|
||||
uint16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
u16vec2 x[100];
|
||||
uint16_t w[];
|
||||
} b2;
|
||||
|
||||
layout(row_major, std140) uniform B5
|
||||
{
|
||||
uint16_t o;
|
||||
u16vec2 p;
|
||||
u16vec3 q;
|
||||
uint16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
u16vec2 x[100];
|
||||
uint16_t w[100];
|
||||
} b5;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
uint16_t y;
|
||||
uint z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
S3 y;
|
||||
} b4;
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b1.a;
|
||||
b2.p = u16vec2(uvec3(b2.q).xy);
|
||||
b2.p = u16vec2(uvec3(b5.q).xy);
|
||||
b2.r[0] = b2.r[0];
|
||||
b2.r[1] = b5.r[1];
|
||||
b2.p = b2.p;
|
||||
uint x0 = uint(b1.a);
|
||||
uvec4 x1 = uvec4(b1.a, b2.p, 1);
|
||||
b4.x.x = b3.x.x;
|
||||
b2.o = uint16_t(uvec2(b2.p).x);
|
||||
b2.p = b2.v[1].y;
|
||||
uvec3 v3 = uvec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]);
|
||||
uvec3 u3 = uvec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]);
|
||||
b2.x[0] = b2.x[0];
|
||||
b2.x[1] = b5.x[1];
|
||||
b2.p.x = b1.a;
|
||||
b2.o = b2.p.x;
|
||||
b2.p = u16vec2(uvec2(1, 2));
|
||||
b2.o = uint16_t(3u);
|
||||
}
|
||||
|
90
3rdparty/glslang/Test/spv.16bitstorage.frag
vendored
Executable file
90
3rdparty/glslang/Test/spv.16bitstorage.frag
vendored
Executable file
@ -0,0 +1,90 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_16bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
float16_t x;
|
||||
f16vec2 y;
|
||||
f16vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
float16_t a;
|
||||
f16vec2 b;
|
||||
f16vec3 c;
|
||||
float16_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
int j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
float16_t o;
|
||||
f16vec2 p;
|
||||
f16vec3 q;
|
||||
float16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
f16vec2 x[100];
|
||||
float16_t w[];
|
||||
} b2;
|
||||
|
||||
layout(row_major, std140) uniform B5
|
||||
{
|
||||
float16_t o;
|
||||
f16vec2 p;
|
||||
f16vec3 q;
|
||||
float16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
f16vec2 x[100];
|
||||
float16_t w[100];
|
||||
} b5;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
float16_t y;
|
||||
float z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
S3 y;
|
||||
} b4;
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b1.a;
|
||||
b2.p = f16vec2(vec3(b2.q).xy);
|
||||
b2.p = f16vec2(vec3(b5.q).xy);
|
||||
b2.r[0] = b2.r[0];
|
||||
b2.r[1] = b5.r[1];
|
||||
b2.p = b2.p;
|
||||
float x0 = float(b1.a);
|
||||
vec4 x1 = vec4(b1.a, b2.p, 1.0);
|
||||
b4.x.x = b3.x.x;
|
||||
b2.o = float16_t(vec2(b2.p).x);
|
||||
b2.p = b2.v[1].y;
|
||||
vec3 v3 = vec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]);
|
||||
vec3 u3 = vec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]);
|
||||
b2.x[0] = b2.x[0];
|
||||
b2.x[1] = b5.x[1];
|
||||
b2.p.x = b1.a;
|
||||
b2.o = b2.p.x;
|
||||
b2.p = f16vec2(vec2(1.0, 2.0));
|
||||
b2.o = float16_t(3.0);
|
||||
}
|
||||
|
101
3rdparty/glslang/Test/spv.16bitstorage_Error-int.frag
vendored
Executable file
101
3rdparty/glslang/Test/spv.16bitstorage_Error-int.frag
vendored
Executable file
@ -0,0 +1,101 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_16bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
int16_t x;
|
||||
i16vec2 y;
|
||||
i16vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
int16_t a;
|
||||
i16vec2 b;
|
||||
i16vec3 c;
|
||||
int16_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
int j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
int16_t o;
|
||||
i16vec2 p;
|
||||
i16vec3 q;
|
||||
int16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
int16_t w[];
|
||||
} b2;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
int16_t y;
|
||||
int z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
} b4;
|
||||
|
||||
void func3(S2 x) {
|
||||
}
|
||||
|
||||
S2 func4() {
|
||||
return b4.x;
|
||||
}
|
||||
|
||||
int func(int16_t a) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct S4 {
|
||||
int x;
|
||||
int16_t y;
|
||||
};
|
||||
|
||||
int func2(int a) { return 0; }
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b2.q[1];
|
||||
b2.p = b2.q.xy;
|
||||
b2.o = max(b1.a, b1.a);
|
||||
bvec2 bv = lessThan(b2.p, b2.p);
|
||||
b2.o = b1.a + b1.a;
|
||||
b2.o = -b1.a;
|
||||
b2.o = b1.a + 1;
|
||||
b2.p = b2.p.yx;
|
||||
b4.x = b3.x;
|
||||
int16_t f0;
|
||||
S2 f1;
|
||||
S3 f2;
|
||||
if (b1.a == b1.a) {}
|
||||
b2.r = b2.r;
|
||||
b2.p = i16vec2(3, 4);
|
||||
i16vec2[2](i16vec2(ivec2(1,2)), i16vec2(ivec2(3,4)));
|
||||
// NOT ERRORING YET
|
||||
b3.x;
|
||||
S4(0, int16_t(0));
|
||||
func2(b1.a);
|
||||
}
|
||||
|
||||
|
||||
layout(column_major, std140) uniform B6
|
||||
{
|
||||
i16mat2x3 e;
|
||||
} b6;
|
||||
|
101
3rdparty/glslang/Test/spv.16bitstorage_Error-uint.frag
vendored
Executable file
101
3rdparty/glslang/Test/spv.16bitstorage_Error-uint.frag
vendored
Executable file
@ -0,0 +1,101 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_16bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
uint16_t x;
|
||||
u16vec2 y;
|
||||
u16vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
uint16_t a;
|
||||
u16vec2 b;
|
||||
u16vec3 c;
|
||||
uint16_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
uint j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
uint16_t o;
|
||||
u16vec2 p;
|
||||
u16vec3 q;
|
||||
uint16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
uint16_t w[];
|
||||
} b2;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
uint16_t y;
|
||||
uint z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
} b4;
|
||||
|
||||
void func3(S2 x) {
|
||||
}
|
||||
|
||||
S2 func4() {
|
||||
return b4.x;
|
||||
}
|
||||
|
||||
uint func(uint16_t a) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct S4 {
|
||||
uint x;
|
||||
uint16_t y;
|
||||
};
|
||||
|
||||
uint func2(uint a) { return 0; }
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b2.q[1];
|
||||
b2.p = b2.q.xy;
|
||||
b2.o = max(b1.a, b1.a);
|
||||
bvec2 bv = lessThan(b2.p, b2.p);
|
||||
b2.o = b1.a + b1.a;
|
||||
b2.o = -b1.a;
|
||||
b2.o = b1.a + 1;
|
||||
b2.p = b2.p.yx;
|
||||
b4.x = b3.x;
|
||||
uint16_t f0;
|
||||
S2 f1;
|
||||
S3 f2;
|
||||
if (b1.a == b1.a) {}
|
||||
b2.r = b2.r;
|
||||
b2.p = u16vec2(3, 4);
|
||||
u16vec2[2](u16vec2(uvec2(1,2)), u16vec2(uvec2(3,4)));
|
||||
// NOT ERRORING YET
|
||||
b3.x;
|
||||
S4(0u, uint16_t(0u));
|
||||
func2(b1.a);
|
||||
}
|
||||
|
||||
|
||||
layout(column_major, std140) uniform B6
|
||||
{
|
||||
u16mat2x3 e;
|
||||
} b6;
|
||||
|
102
3rdparty/glslang/Test/spv.16bitstorage_Error.frag
vendored
Executable file
102
3rdparty/glslang/Test/spv.16bitstorage_Error.frag
vendored
Executable file
@ -0,0 +1,102 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_16bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
float16_t x;
|
||||
f16vec2 y;
|
||||
f16vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
float16_t a;
|
||||
f16vec2 b;
|
||||
f16vec3 c;
|
||||
float16_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
int j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
float16_t o;
|
||||
f16vec2 p;
|
||||
f16vec3 q;
|
||||
float16_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
float16_t w[];
|
||||
} b2;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
float16_t y;
|
||||
float z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
} b4;
|
||||
|
||||
void func3(S2 x) {
|
||||
}
|
||||
|
||||
S2 func4() {
|
||||
return b4.x;
|
||||
}
|
||||
|
||||
float func(float16_t a) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
struct S4 {
|
||||
float x;
|
||||
float16_t y;
|
||||
};
|
||||
|
||||
float func2(float a) { return 0.0; }
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b2.q[1];
|
||||
b2.p = b2.q.xy;
|
||||
b2.o = max(b1.a, b1.a);
|
||||
bvec2 bv = lessThan(b2.p, b2.p);
|
||||
b2.o = b1.a + b1.a;
|
||||
b2.o = -b1.a;
|
||||
b2.o = b1.a + 1.0;
|
||||
b2.p = b2.p.yx;
|
||||
b4.x = b3.x;
|
||||
float16_t f0;
|
||||
S2 f1;
|
||||
S3 f2;
|
||||
if (b1.a == b1.a) {}
|
||||
b2.r = b2.r;
|
||||
b2.o = 1.0HF;
|
||||
b2.p = f16vec2(3.0, 4.0);
|
||||
f16vec2[2](f16vec2(vec2(1.0,2.0)), f16vec2(vec2(3.0,4.0)));
|
||||
// NOT ERRORING YET
|
||||
b3.x;
|
||||
S4(0.0, float16_t(0.0));
|
||||
func2(b1.a);
|
||||
}
|
||||
|
||||
|
||||
layout(column_major, std140) uniform B6
|
||||
{
|
||||
f16mat2x3 e;
|
||||
} b6;
|
||||
|
90
3rdparty/glslang/Test/spv.8bitstorage-int.frag
vendored
Executable file
90
3rdparty/glslang/Test/spv.8bitstorage-int.frag
vendored
Executable file
@ -0,0 +1,90 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_8bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
int8_t x;
|
||||
i8vec2 y;
|
||||
i8vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
int8_t a;
|
||||
i8vec2 b;
|
||||
i8vec3 c;
|
||||
int8_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
int j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
int8_t o;
|
||||
i8vec2 p;
|
||||
i8vec3 q;
|
||||
int8_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
i8vec2 x[100];
|
||||
int8_t w[];
|
||||
} b2;
|
||||
|
||||
layout(row_major, std140) uniform B5
|
||||
{
|
||||
int8_t o;
|
||||
i8vec2 p;
|
||||
i8vec3 q;
|
||||
int8_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
i8vec2 x[100];
|
||||
int8_t w[100];
|
||||
} b5;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
int8_t y;
|
||||
int z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
S3 y;
|
||||
} b4;
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b1.a;
|
||||
b2.p = i8vec2(ivec3(b2.q).xy);
|
||||
b2.p = i8vec2(ivec3(b5.q).xy);
|
||||
b2.r[0] = b2.r[0];
|
||||
b2.r[1] = b5.r[1];
|
||||
b2.p = b2.p;
|
||||
int x0 = int(b1.a);
|
||||
ivec4 x1 = ivec4(b1.a, b2.p, 1);
|
||||
b4.x.x = b3.x.x;
|
||||
b2.o = int8_t(ivec2(b2.p).x);
|
||||
b2.p = b2.v[1].y;
|
||||
ivec3 v3 = ivec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]);
|
||||
ivec3 u3 = ivec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]);
|
||||
b2.x[0] = b2.x[0];
|
||||
b2.x[1] = b5.x[1];
|
||||
b2.p.x = b1.a;
|
||||
b2.o = b2.p.x;
|
||||
b2.p = i8vec2(ivec2(1, 2));
|
||||
b2.o = int8_t(3);
|
||||
}
|
||||
|
90
3rdparty/glslang/Test/spv.8bitstorage-uint.frag
vendored
Executable file
90
3rdparty/glslang/Test/spv.8bitstorage-uint.frag
vendored
Executable file
@ -0,0 +1,90 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_8bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
uint8_t x;
|
||||
u8vec2 y;
|
||||
u8vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
uint8_t a;
|
||||
u8vec2 b;
|
||||
u8vec3 c;
|
||||
uint8_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
uint j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
uint8_t o;
|
||||
u8vec2 p;
|
||||
u8vec3 q;
|
||||
uint8_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
u8vec2 x[100];
|
||||
uint8_t w[];
|
||||
} b2;
|
||||
|
||||
layout(row_major, std140) uniform B5
|
||||
{
|
||||
uint8_t o;
|
||||
u8vec2 p;
|
||||
u8vec3 q;
|
||||
uint8_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
u8vec2 x[100];
|
||||
uint8_t w[100];
|
||||
} b5;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
uint8_t y;
|
||||
uint z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
S3 y;
|
||||
} b4;
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b1.a;
|
||||
b2.p = u8vec2(uvec3(b2.q).xy);
|
||||
b2.p = u8vec2(uvec3(b5.q).xy);
|
||||
b2.r[0] = b2.r[0];
|
||||
b2.r[1] = b5.r[1];
|
||||
b2.p = b2.p;
|
||||
uint x0 = uint(b1.a);
|
||||
uvec4 x1 = uvec4(b1.a, b2.p, 1);
|
||||
b4.x.x = b3.x.x;
|
||||
b2.o = uint8_t(uvec2(b2.p).x);
|
||||
b2.p = b2.v[1].y;
|
||||
uvec3 v3 = uvec3(b2.w[b1.j], b2.w[b1.j+1], b2.w[b1.j+2]);
|
||||
uvec3 u3 = uvec3(b5.w[b1.j], b5.w[b1.j+1], b5.w[b1.j+2]);
|
||||
b2.x[0] = b2.x[0];
|
||||
b2.x[1] = b5.x[1];
|
||||
b2.p.x = b1.a;
|
||||
b2.o = b2.p.x;
|
||||
b2.p = u8vec2(uvec2(1, 2));
|
||||
b2.o = uint8_t(3u);
|
||||
}
|
||||
|
101
3rdparty/glslang/Test/spv.8bitstorage_Error-int.frag
vendored
Executable file
101
3rdparty/glslang/Test/spv.8bitstorage_Error-int.frag
vendored
Executable file
@ -0,0 +1,101 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_8bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
int8_t x;
|
||||
i8vec2 y;
|
||||
i8vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
int8_t a;
|
||||
i8vec2 b;
|
||||
i8vec3 c;
|
||||
int8_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
int j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
int8_t o;
|
||||
i8vec2 p;
|
||||
i8vec3 q;
|
||||
int8_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
int8_t w[];
|
||||
} b2;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
int8_t y;
|
||||
int z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
} b4;
|
||||
|
||||
void func3(S2 x) {
|
||||
}
|
||||
|
||||
S2 func4() {
|
||||
return b4.x;
|
||||
}
|
||||
|
||||
int func(int8_t a) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct S4 {
|
||||
int x;
|
||||
int8_t y;
|
||||
};
|
||||
|
||||
int func2(int a) { return 0; }
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b2.q[1];
|
||||
b2.p = b2.q.xy;
|
||||
b2.o = max(b1.a, b1.a);
|
||||
bvec2 bv = lessThan(b2.p, b2.p);
|
||||
b2.o = b1.a + b1.a;
|
||||
b2.o = -b1.a;
|
||||
b2.o = b1.a + 1;
|
||||
b2.p = b2.p.yx;
|
||||
b4.x = b3.x;
|
||||
int8_t f0;
|
||||
S2 f1;
|
||||
S3 f2;
|
||||
if (b1.a == b1.a) {}
|
||||
b2.r = b2.r;
|
||||
b2.p = i8vec2(3, 4);
|
||||
i8vec2[2](i8vec2(ivec2(1,2)), i8vec2(ivec2(3,4)));
|
||||
// NOT ERRORING YET
|
||||
b3.x;
|
||||
S4(0, int8_t(0));
|
||||
func2(b1.a);
|
||||
}
|
||||
|
||||
|
||||
layout(column_major, std140) uniform B6
|
||||
{
|
||||
i8mat2x3 e;
|
||||
} b6;
|
||||
|
101
3rdparty/glslang/Test/spv.8bitstorage_Error-uint.frag
vendored
Executable file
101
3rdparty/glslang/Test/spv.8bitstorage_Error-uint.frag
vendored
Executable file
@ -0,0 +1,101 @@
|
||||
#version 450 core
|
||||
|
||||
#extension GL_EXT_shader_8bit_storage : enable
|
||||
|
||||
struct S
|
||||
{
|
||||
uint8_t x;
|
||||
u8vec2 y;
|
||||
u8vec3 z;
|
||||
};
|
||||
|
||||
layout(column_major, std140) uniform B1
|
||||
{
|
||||
uint8_t a;
|
||||
u8vec2 b;
|
||||
u8vec3 c;
|
||||
uint8_t d[2];
|
||||
S g;
|
||||
S h[2];
|
||||
uint j;
|
||||
} b1;
|
||||
|
||||
layout(row_major, std430) buffer B2
|
||||
{
|
||||
uint8_t o;
|
||||
u8vec2 p;
|
||||
u8vec3 q;
|
||||
uint8_t r[2];
|
||||
S u;
|
||||
S v[2];
|
||||
uint8_t w[];
|
||||
} b2;
|
||||
|
||||
struct S2 {
|
||||
mat4x4 x;
|
||||
uint8_t y;
|
||||
uint z;
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
S2 x;
|
||||
};
|
||||
|
||||
layout(row_major, std430) buffer B3
|
||||
{
|
||||
S2 x;
|
||||
} b3;
|
||||
|
||||
layout(column_major, std430) buffer B4
|
||||
{
|
||||
S2 x;
|
||||
} b4;
|
||||
|
||||
void func3(S2 x) {
|
||||
}
|
||||
|
||||
S2 func4() {
|
||||
return b4.x;
|
||||
}
|
||||
|
||||
uint func(uint8_t a) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct S4 {
|
||||
uint x;
|
||||
uint8_t y;
|
||||
};
|
||||
|
||||
uint func2(uint a) { return 0; }
|
||||
|
||||
void main()
|
||||
{
|
||||
b2.o = b2.q[1];
|
||||
b2.p = b2.q.xy;
|
||||
b2.o = max(b1.a, b1.a);
|
||||
bvec2 bv = lessThan(b2.p, b2.p);
|
||||
b2.o = b1.a + b1.a;
|
||||
b2.o = -b1.a;
|
||||
b2.o = b1.a + 1;
|
||||
b2.p = b2.p.yx;
|
||||
b4.x = b3.x;
|
||||
uint8_t f0;
|
||||
S2 f1;
|
||||
S3 f2;
|
||||
if (b1.a == b1.a) {}
|
||||
b2.r = b2.r;
|
||||
b2.p = u8vec2(3, 4);
|
||||
u8vec2[2](u8vec2(uvec2(1,2)), u8vec2(uvec2(3,4)));
|
||||
// NOT ERRORING YET
|
||||
b3.x;
|
||||
S4(0u, uint8_t(0u));
|
||||
func2(b1.a);
|
||||
}
|
||||
|
||||
|
||||
layout(column_major, std140) uniform B6
|
||||
{
|
||||
u8mat2x3 e;
|
||||
} b6;
|
||||
|
23
3rdparty/glslang/Test/spv.samplerlessTextureFunctions.frag
vendored
Normal file
23
3rdparty/glslang/Test/spv.samplerlessTextureFunctions.frag
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
#version 450 core
|
||||
#extension GL_EXT_samplerless_texture_functions : enable
|
||||
|
||||
layout(binding = 1) uniform texture2D tex2D;
|
||||
layout(binding = 1) uniform texture2DMS texMS;
|
||||
layout(binding = 0) uniform textureBuffer buf;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 tex2DFetch = texelFetch(tex2D, ivec2(0, 0), 0);
|
||||
vec4 texMSFetch = texelFetch(texMS, ivec2(0, 0), 0);
|
||||
vec4 bufFetch = texelFetch(buf, 0);
|
||||
|
||||
vec4 tex2DFetchOffset = texelFetchOffset(tex2D, ivec2(0, 0), 0, ivec2(0, 0));
|
||||
|
||||
ivec2 tex2DSize = textureSize(tex2D, 0);
|
||||
ivec2 texMSSize = textureSize(texMS);
|
||||
int bufSize = textureSize(buf);
|
||||
|
||||
int tex2DLevels = textureQueryLevels(tex2D);
|
||||
|
||||
int texMSSamples = textureSamples(texMS);
|
||||
}
|
10
3rdparty/glslang/glslang/Include/Types.h
vendored
Normal file → Executable file
10
3rdparty/glslang/glslang/Include/Types.h
vendored
Normal file → Executable file
@ -1472,6 +1472,16 @@ public:
|
||||
return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } );
|
||||
}
|
||||
|
||||
virtual bool contains16BitInt() const
|
||||
{
|
||||
return containsBasicType(EbtInt16) || containsBasicType(EbtUint16);
|
||||
}
|
||||
|
||||
virtual bool contains8BitInt() const
|
||||
{
|
||||
return containsBasicType(EbtInt8) || containsBasicType(EbtUint8);
|
||||
}
|
||||
|
||||
// Array editing methods. Array descriptors can be shared across
|
||||
// type instances. This allows all uses of the same array
|
||||
// to be updated at once. E.g., all nodes can be explicitly sized
|
||||
|
2
3rdparty/glslang/glslang/Include/revision.h
vendored
2
3rdparty/glslang/glslang/Include/revision.h
vendored
@ -1,3 +1,3 @@
|
||||
// This header is generated by the make-revision script.
|
||||
|
||||
#define GLSLANG_PATCH_LEVEL 2776
|
||||
#define GLSLANG_PATCH_LEVEL 2797
|
||||
|
@ -179,7 +179,14 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
|
||||
case EbtDouble:
|
||||
case EbtFloat:
|
||||
case EbtFloat16:
|
||||
newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst());
|
||||
if (rightUnionArray[i].getDConst() != 0.0)
|
||||
newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst());
|
||||
else if (leftUnionArray[i].getDConst() > 0.0)
|
||||
newConstArray[i].setDConst((double)INFINITY);
|
||||
else if (leftUnionArray[i].getDConst() < 0.0)
|
||||
newConstArray[i].setDConst((double)-INFINITY);
|
||||
else
|
||||
newConstArray[i].setDConst((double)NAN);
|
||||
break;
|
||||
case EbtInt8:
|
||||
if (rightUnionArray[i] == (signed char)0)
|
||||
|
@ -5914,15 +5914,19 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
|
||||
addSamplingFunctions(sampler, typeName, version, profile);
|
||||
addGatherFunctions(sampler, typeName, version, profile);
|
||||
|
||||
if (spvVersion.vulkan > 0 && sampler.dim == EsdBuffer && sampler.isCombined()) {
|
||||
// Vulkan wants a textureBuffer to allow texelFetch() --
|
||||
// a sampled image with no sampler.
|
||||
// So, add sampling functions for both the
|
||||
// samplerBuffer and textureBuffer types.
|
||||
if (spvVersion.vulkan > 0 && sampler.isCombined() && !sampler.shadow) {
|
||||
// Base Vulkan allows texelFetch() for
|
||||
// textureBuffer (i.e. without sampler).
|
||||
//
|
||||
// GL_EXT_samplerless_texture_functions
|
||||
// allows texelFetch() and query functions
|
||||
// (other than textureQueryLod()) for all
|
||||
// texture types.
|
||||
sampler.setTexture(sampler.type, sampler.dim, sampler.arrayed, sampler.shadow,
|
||||
sampler.ms);
|
||||
TString textureTypeName = sampler.getString();
|
||||
addSamplingFunctions(sampler, textureTypeName, version, profile);
|
||||
addQueryFunctions(sampler, textureTypeName, version, profile);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5995,7 +5999,7 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int
|
||||
// textureQueryLod(), fragment stage only
|
||||
//
|
||||
|
||||
if (profile != EEsProfile && version >= 400 && ! sampler.image && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) {
|
||||
if (profile != EEsProfile && version >= 400 && sampler.combined && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) {
|
||||
#ifdef AMD_EXTENSIONS
|
||||
for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) {
|
||||
if (f16TexAddr && sampler.type != EbtFloat16)
|
||||
@ -6200,12 +6204,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
|
||||
//
|
||||
for (int proj = 0; proj <= 1; ++proj) { // loop over "bool" projective or not
|
||||
|
||||
if (proj && (sampler.dim == EsdCube || sampler.dim == EsdBuffer || sampler.arrayed || sampler.ms))
|
||||
if (proj && (sampler.dim == EsdCube || sampler.dim == EsdBuffer || sampler.arrayed || sampler.ms || !sampler.combined))
|
||||
continue;
|
||||
|
||||
for (int lod = 0; lod <= 1; ++lod) {
|
||||
|
||||
if (lod && (sampler.dim == EsdBuffer || sampler.dim == EsdRect || sampler.ms))
|
||||
if (lod && (sampler.dim == EsdBuffer || sampler.dim == EsdRect || sampler.ms || !sampler.combined))
|
||||
continue;
|
||||
if (lod && sampler.dim == Esd2D && sampler.arrayed && sampler.shadow)
|
||||
continue;
|
||||
@ -6214,7 +6218,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
|
||||
|
||||
for (int bias = 0; bias <= 1; ++bias) {
|
||||
|
||||
if (bias && (lod || sampler.ms))
|
||||
if (bias && (lod || sampler.ms || !sampler.combined))
|
||||
continue;
|
||||
if (bias && (sampler.dim == Esd2D || sampler.dim == EsdCube) && sampler.shadow && sampler.arrayed)
|
||||
continue;
|
||||
@ -6236,12 +6240,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
|
||||
continue;
|
||||
if (fetch && (sampler.shadow || sampler.dim == EsdCube))
|
||||
continue;
|
||||
if (fetch == 0 && (sampler.ms || sampler.dim == EsdBuffer))
|
||||
if (fetch == 0 && (sampler.ms || sampler.dim == EsdBuffer || !sampler.combined))
|
||||
continue;
|
||||
|
||||
for (int grad = 0; grad <= 1; ++grad) { // loop over "bool" grad or not
|
||||
|
||||
if (grad && (lod || bias || sampler.ms))
|
||||
if (grad && (lod || bias || sampler.ms || !sampler.combined))
|
||||
continue;
|
||||
if (grad && sampler.dim == EsdBuffer)
|
||||
continue;
|
||||
@ -6263,7 +6267,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
|
||||
|
||||
if (extraProj && ! proj)
|
||||
continue;
|
||||
if (extraProj && (sampler.dim == Esd3D || sampler.shadow))
|
||||
if (extraProj && (sampler.dim == Esd3D || sampler.shadow || !sampler.combined))
|
||||
continue;
|
||||
#ifdef AMD_EXTENSIONS
|
||||
for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing
|
||||
|
78
3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
vendored
Normal file → Executable file
78
3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
vendored
Normal file → Executable file
@ -881,6 +881,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
|
||||
// like vector and matrix sizes.
|
||||
|
||||
TBasicType promoteTo;
|
||||
// GL_EXT_shader_16bit_storage can't do OpConstantComposite with
|
||||
// 16-bit types, so disable promotion for those types.
|
||||
bool canPromoteConstant = true;
|
||||
|
||||
switch (op) {
|
||||
//
|
||||
@ -897,18 +900,28 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
|
||||
break;
|
||||
case EOpConstructFloat16:
|
||||
promoteTo = EbtFloat16;
|
||||
canPromoteConstant = extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float16);
|
||||
break;
|
||||
case EOpConstructInt8:
|
||||
promoteTo = EbtInt8;
|
||||
canPromoteConstant = extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int8);
|
||||
break;
|
||||
case EOpConstructUint8:
|
||||
promoteTo = EbtUint8;
|
||||
canPromoteConstant = extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int8);
|
||||
break;
|
||||
case EOpConstructInt16:
|
||||
promoteTo = EbtInt16;
|
||||
canPromoteConstant = extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int16);
|
||||
break;
|
||||
case EOpConstructUint16:
|
||||
promoteTo = EbtUint16;
|
||||
canPromoteConstant = extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int16);
|
||||
break;
|
||||
case EOpConstructInt:
|
||||
promoteTo = EbtInt;
|
||||
@ -999,7 +1012,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (node->getAsConstantUnion())
|
||||
if (canPromoteConstant && node->getAsConstantUnion())
|
||||
return promoteConstantUnion(promoteTo, node->getAsConstantUnion());
|
||||
|
||||
//
|
||||
@ -1468,16 +1481,16 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
|
||||
case EbtUint:
|
||||
case EbtInt64:
|
||||
case EbtUint64:
|
||||
case EbtFloat:
|
||||
case EbtDouble:
|
||||
return true;
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
case EbtFloat16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_half_float);
|
||||
#endif
|
||||
case EbtFloat:
|
||||
case EbtDouble:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtFloat16:
|
||||
#endif
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1485,17 +1498,21 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
|
||||
switch (from) {
|
||||
case EbtInt:
|
||||
case EbtUint:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
#endif
|
||||
case EbtFloat:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtFloat16:
|
||||
#endif
|
||||
return true;
|
||||
case EbtBool:
|
||||
return (source == EShSourceHlsl);
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
case EbtFloat16:
|
||||
return
|
||||
#ifdef AMD_EXTENSIONS
|
||||
extensionRequested(E_GL_AMD_gpu_shader_half_float) ||
|
||||
#endif
|
||||
(source == EShSourceHlsl);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1504,25 +1521,27 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
|
||||
case EbtInt:
|
||||
return version >= 400 || (source == EShSourceHlsl);
|
||||
case EbtUint:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
#endif
|
||||
return true;
|
||||
case EbtBool:
|
||||
return (source == EShSourceHlsl);
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
case EbtInt:
|
||||
switch (from) {
|
||||
case EbtInt:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
#endif
|
||||
return true;
|
||||
case EbtBool:
|
||||
return (source == EShSourceHlsl);
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1532,11 +1551,12 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
|
||||
case EbtUint:
|
||||
case EbtInt64:
|
||||
case EbtUint64:
|
||||
return true;
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1544,32 +1564,36 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
|
||||
switch (from) {
|
||||
case EbtInt:
|
||||
case EbtInt64:
|
||||
return true;
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtFloat16:
|
||||
switch (from) {
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
case EbtFloat16:
|
||||
return true;
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_half_float);
|
||||
#endif
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
case EbtUint16:
|
||||
switch (from) {
|
||||
#ifdef AMD_EXTENSIONS
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
return true;
|
||||
return extensionRequested(E_GL_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -354,96 +354,109 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb
|
||||
//
|
||||
TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index)
|
||||
{
|
||||
TIntermTyped* result = nullptr;
|
||||
|
||||
int indexValue = 0;
|
||||
if (index->getQualifier().isFrontEndConstant())
|
||||
indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst();
|
||||
|
||||
// basic type checks...
|
||||
variableCheck(base);
|
||||
|
||||
if (! base->isArray() && ! base->isMatrix() && ! base->isVector()) {
|
||||
if (base->getAsSymbolNode())
|
||||
error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), "");
|
||||
else
|
||||
error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", "");
|
||||
} else if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant()) {
|
||||
|
||||
// Insert dummy error-recovery result
|
||||
return intermediate.addConstantUnion(0.0, EbtFloat, loc);
|
||||
}
|
||||
|
||||
if (!base->isArray() && base->isVector()) {
|
||||
if (base->getType().containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(loc, "'[' does not operate on types containing float16");
|
||||
}
|
||||
if (base->getType().contains16BitInt()) {
|
||||
requireInt16Arithmetic(loc, "'[' does not operate on types containing (u)int16");
|
||||
}
|
||||
if (base->getType().contains8BitInt()) {
|
||||
requireInt8Arithmetic(loc, "'[' does not operate on types containing (u)int8");
|
||||
}
|
||||
}
|
||||
|
||||
// check for constant folding
|
||||
if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant()) {
|
||||
// both base and index are front-end constants
|
||||
checkIndex(loc, base->getType(), indexValue);
|
||||
return intermediate.foldDereference(base, indexValue, loc);
|
||||
} else {
|
||||
// at least one of base and index is not a front-end constant variable...
|
||||
}
|
||||
|
||||
if (index->getQualifier().isFrontEndConstant())
|
||||
// at least one of base and index is not a front-end constant variable...
|
||||
TIntermTyped* result = nullptr;
|
||||
if (index->getQualifier().isFrontEndConstant())
|
||||
checkIndex(loc, base->getType(), indexValue);
|
||||
|
||||
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
|
||||
handleIoResizeArrayAccess(loc, base);
|
||||
|
||||
if (index->getQualifier().isFrontEndConstant()) {
|
||||
if (base->getType().isUnsizedArray())
|
||||
base->getWritableType().updateImplicitArraySize(indexValue + 1);
|
||||
else
|
||||
checkIndex(loc, base->getType(), indexValue);
|
||||
|
||||
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
|
||||
handleIoResizeArrayAccess(loc, base);
|
||||
|
||||
if (index->getQualifier().isFrontEndConstant()) {
|
||||
if (base->getType().isUnsizedArray())
|
||||
base->getWritableType().updateImplicitArraySize(indexValue + 1);
|
||||
else
|
||||
checkIndex(loc, base->getType(), indexValue);
|
||||
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
|
||||
} else {
|
||||
if (base->getType().isUnsizedArray()) {
|
||||
// we have a variable index into an unsized array, which is okay,
|
||||
// depending on the situation
|
||||
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
|
||||
error(loc, "", "[", "array must be sized by a redeclaration or layout qualifier before being indexed with a variable");
|
||||
else {
|
||||
// it is okay for a run-time sized array
|
||||
checkRuntimeSizable(loc, *base);
|
||||
}
|
||||
base->getWritableType().setArrayVariablyIndexed();
|
||||
}
|
||||
if (base->getBasicType() == EbtBlock) {
|
||||
if (base->getQualifier().storage == EvqBuffer)
|
||||
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
|
||||
else if (base->getQualifier().storage == EvqUniform)
|
||||
profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5,
|
||||
"variable indexing uniform block array");
|
||||
else {
|
||||
// input/output blocks either don't exist or can be variable indexed
|
||||
}
|
||||
} else if (language == EShLangFragment && base->getQualifier().isPipeOutput())
|
||||
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array");
|
||||
else if (base->getBasicType() == EbtSampler && version >= 130) {
|
||||
const char* explanation = "variable indexing sampler array";
|
||||
requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation);
|
||||
profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation);
|
||||
profileRequires(base->getLoc(), ECoreProfile | ECompatibilityProfile, 400, nullptr, explanation);
|
||||
}
|
||||
|
||||
result = intermediate.addIndex(EOpIndexIndirect, base, index, loc);
|
||||
}
|
||||
}
|
||||
|
||||
if (result == nullptr) {
|
||||
// Insert dummy error-recovery result
|
||||
result = intermediate.addConstantUnion(0.0, EbtFloat, loc);
|
||||
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
|
||||
} else {
|
||||
// Insert valid dereferenced result
|
||||
TType newType(base->getType(), 0); // dereferenced type
|
||||
if (base->getType().getQualifier().isConstant() && index->getQualifier().isConstant()) {
|
||||
newType.getQualifier().storage = EvqConst;
|
||||
// If base or index is a specialization constant, the result should also be a specialization constant.
|
||||
if (base->getType().getQualifier().isSpecConstant() || index->getQualifier().isSpecConstant()) {
|
||||
newType.getQualifier().makeSpecConstant();
|
||||
if (base->getType().isUnsizedArray()) {
|
||||
// we have a variable index into an unsized array, which is okay,
|
||||
// depending on the situation
|
||||
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
|
||||
error(loc, "", "[", "array must be sized by a redeclaration or layout qualifier before being indexed with a variable");
|
||||
else {
|
||||
// it is okay for a run-time sized array
|
||||
checkRuntimeSizable(loc, *base);
|
||||
}
|
||||
} else {
|
||||
newType.getQualifier().makePartialTemporary();
|
||||
base->getWritableType().setArrayVariablyIndexed();
|
||||
}
|
||||
if (base->getBasicType() == EbtBlock) {
|
||||
if (base->getQualifier().storage == EvqBuffer)
|
||||
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
|
||||
else if (base->getQualifier().storage == EvqUniform)
|
||||
profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5,
|
||||
"variable indexing uniform block array");
|
||||
else {
|
||||
// input/output blocks either don't exist or can be variable indexed
|
||||
}
|
||||
} else if (language == EShLangFragment && base->getQualifier().isPipeOutput())
|
||||
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array");
|
||||
else if (base->getBasicType() == EbtSampler && version >= 130) {
|
||||
const char* explanation = "variable indexing sampler array";
|
||||
requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation);
|
||||
profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation);
|
||||
profileRequires(base->getLoc(), ECoreProfile | ECompatibilityProfile, 400, nullptr, explanation);
|
||||
}
|
||||
result->setType(newType);
|
||||
|
||||
// Propagate nonuniform
|
||||
if (base->getQualifier().isNonUniform() || index->getQualifier().isNonUniform())
|
||||
result->getWritableType().getQualifier().nonUniform = true;
|
||||
|
||||
if (anyIndexLimits)
|
||||
handleIndexLimits(loc, base, index);
|
||||
result = intermediate.addIndex(EOpIndexIndirect, base, index, loc);
|
||||
}
|
||||
|
||||
// Insert valid dereferenced result
|
||||
TType newType(base->getType(), 0); // dereferenced type
|
||||
if (base->getType().getQualifier().isConstant() && index->getQualifier().isConstant()) {
|
||||
newType.getQualifier().storage = EvqConst;
|
||||
// If base or index is a specialization constant, the result should also be a specialization constant.
|
||||
if (base->getType().getQualifier().isSpecConstant() || index->getQualifier().isSpecConstant()) {
|
||||
newType.getQualifier().makeSpecConstant();
|
||||
}
|
||||
} else {
|
||||
newType.getQualifier().makePartialTemporary();
|
||||
}
|
||||
result->setType(newType);
|
||||
|
||||
// Propagate nonuniform
|
||||
if (base->getQualifier().isNonUniform() || index->getQualifier().isNonUniform())
|
||||
result->getWritableType().getQualifier().nonUniform = true;
|
||||
|
||||
if (anyIndexLimits)
|
||||
handleIndexLimits(loc, base, index);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -615,6 +628,12 @@ TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char*
|
||||
break;
|
||||
}
|
||||
|
||||
if (((left->getType().containsBasicType(EbtFloat16) || right->getType().containsBasicType(EbtFloat16)) && !float16Arithmetic()) ||
|
||||
((left->getType().contains16BitInt() || right->getType().contains16BitInt()) && !int16Arithmetic()) ||
|
||||
((left->getType().contains8BitInt() || right->getType().contains8BitInt()) && !int8Arithmetic())) {
|
||||
allowed = false;
|
||||
}
|
||||
|
||||
TIntermTyped* result = nullptr;
|
||||
if (allowed)
|
||||
result = intermediate.addBinaryMath(op, left, right, loc);
|
||||
@ -630,7 +649,17 @@ TIntermTyped* TParseContext::handleUnaryMath(const TSourceLoc& loc, const char*
|
||||
{
|
||||
rValueErrorCheck(loc, str, childNode);
|
||||
|
||||
TIntermTyped* result = intermediate.addUnaryMath(op, childNode, loc);
|
||||
bool allowed = true;
|
||||
if ((childNode->getType().containsBasicType(EbtFloat16) && !float16Arithmetic()) ||
|
||||
(childNode->getType().contains16BitInt() && !int16Arithmetic()) ||
|
||||
(childNode->getType().contains8BitInt() && !int8Arithmetic())) {
|
||||
allowed = false;
|
||||
}
|
||||
|
||||
TIntermTyped* result = nullptr;
|
||||
|
||||
if (allowed)
|
||||
result = intermediate.addUnaryMath(op, childNode, loc);
|
||||
|
||||
if (result)
|
||||
return result;
|
||||
@ -692,6 +721,16 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm
|
||||
TSwizzleSelectors<TVectorSelector> selectors;
|
||||
parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
|
||||
|
||||
if (base->isVector() && selectors.size() != 1 && base->getType().containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(loc, "can't swizzle types containing float16");
|
||||
}
|
||||
if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt()) {
|
||||
requireInt16Arithmetic(loc, "can't swizzle types containing (u)int16");
|
||||
}
|
||||
if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt()) {
|
||||
requireInt8Arithmetic(loc, "can't swizzle types containing (u)int8");
|
||||
}
|
||||
|
||||
if (base->isScalar()) {
|
||||
if (selectors.size() == 1)
|
||||
return result;
|
||||
@ -970,6 +1009,16 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
|
||||
if (builtIn && fnCandidate->getNumExtensions())
|
||||
requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
|
||||
|
||||
if (builtIn && fnCandidate->getType().containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(loc, "float16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (builtIn && fnCandidate->getType().contains16BitInt()) {
|
||||
requireInt16Arithmetic(loc, "(u)int16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (builtIn && fnCandidate->getType().contains8BitInt()) {
|
||||
requireInt8Arithmetic(loc, "(u)int8 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
|
||||
if (arguments != nullptr) {
|
||||
// Make sure qualifications work for these arguments.
|
||||
TIntermAggregate* aggregate = arguments->getAsAggregate();
|
||||
@ -995,6 +1044,17 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
|
||||
if (argQualifier.writeonly && ! formalQualifier.writeonly)
|
||||
error(arguments->getLoc(), message, "writeonly", "");
|
||||
}
|
||||
|
||||
if (builtIn && arg->getAsTyped()->getType().containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(arguments->getLoc(), "float16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (builtIn && arg->getAsTyped()->getType().contains16BitInt()) {
|
||||
requireInt16Arithmetic(arguments->getLoc(), "(u)int16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (builtIn && arg->getAsTyped()->getType().contains8BitInt()) {
|
||||
requireInt8Arithmetic(arguments->getLoc(), "(u)int8 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
|
||||
// TODO 4.5 functionality: A shader will fail to compile
|
||||
// if the value passed to the memargument of an atomic memory function does not correspond to a buffer or
|
||||
// shared variable. It is acceptable to pass an element of an array or a single component of a vector to the
|
||||
@ -1179,6 +1239,8 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction
|
||||
|
||||
TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
|
||||
{
|
||||
storage16BitAssignmentCheck(loc, value->getType(), "return");
|
||||
|
||||
functionReturnsValue = true;
|
||||
if (currentFunctionType->getBasicType() == EbtVoid) {
|
||||
error(loc, "void function cannot return a value", "return", "");
|
||||
@ -1705,6 +1767,31 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
|
||||
break;
|
||||
}
|
||||
|
||||
// Texture operations on texture objects (aside from texelFetch on a
|
||||
// textureBuffer) require EXT_samplerless_texture_functions.
|
||||
switch (callNode.getOp()) {
|
||||
case EOpTextureQuerySize:
|
||||
case EOpTextureQueryLevels:
|
||||
case EOpTextureQuerySamples:
|
||||
case EOpTextureFetch:
|
||||
case EOpTextureFetchOffset:
|
||||
{
|
||||
const TSampler& sampler = fnCandidate[0].type->getSampler();
|
||||
|
||||
const bool isTexture = sampler.isTexture() && !sampler.isCombined();
|
||||
const bool isBuffer = sampler.dim == EsdBuffer;
|
||||
const bool isFetch = callNode.getOp() == EOpTextureFetch || callNode.getOp() == EOpTextureFetchOffset;
|
||||
|
||||
if (isTexture && (!isBuffer || !isFetch))
|
||||
requireExtensions(loc, 1, &E_GL_EXT_samplerless_texture_functions, fnCandidate.getName().c_str());
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (callNode.getOp() > EOpSubgroupGuardStart && callNode.getOp() < EOpSubgroupGuardStop) {
|
||||
// these require SPIR-V 1.3
|
||||
if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3)
|
||||
@ -2328,6 +2415,68 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
|
||||
specConstType = true;
|
||||
if (function[arg].type->isFloatingDomain())
|
||||
floatArgument = true;
|
||||
if (type.isStruct()) {
|
||||
if (function[arg].type->containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(loc, "Can't construct structure containing 16-bit type");
|
||||
}
|
||||
if (function[arg].type->containsBasicType(EbtUint16) ||
|
||||
function[arg].type->containsBasicType(EbtInt16)) {
|
||||
requireInt16Arithmetic(loc, "Can't construct structure containing 16-bit type");
|
||||
}
|
||||
if (function[arg].type->containsBasicType(EbtUint8) ||
|
||||
function[arg].type->containsBasicType(EbtInt8)) {
|
||||
requireInt8Arithmetic(loc, "Can't construct structure containing 8-bit type");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (op) {
|
||||
case EOpConstructFloat16:
|
||||
case EOpConstructF16Vec2:
|
||||
case EOpConstructF16Vec3:
|
||||
case EOpConstructF16Vec4:
|
||||
if (type.isArray()) {
|
||||
requireFloat16Arithmetic(loc, "16-bit array constructors not supported");
|
||||
}
|
||||
|
||||
if (type.isVector() && function.getParamCount() != 1) {
|
||||
requireFloat16Arithmetic(loc, "16-bit vector constructors only take vector types");
|
||||
}
|
||||
break;
|
||||
case EOpConstructUint16:
|
||||
case EOpConstructU16Vec2:
|
||||
case EOpConstructU16Vec3:
|
||||
case EOpConstructU16Vec4:
|
||||
case EOpConstructInt16:
|
||||
case EOpConstructI16Vec2:
|
||||
case EOpConstructI16Vec3:
|
||||
case EOpConstructI16Vec4:
|
||||
if (type.isArray()) {
|
||||
requireInt16Arithmetic(loc, "16-bit array constructors not supported");
|
||||
}
|
||||
|
||||
if (type.isVector() && function.getParamCount() != 1) {
|
||||
requireInt16Arithmetic(loc, "16-bit vector constructors only take vector types");
|
||||
}
|
||||
break;
|
||||
case EOpConstructUint8:
|
||||
case EOpConstructU8Vec2:
|
||||
case EOpConstructU8Vec3:
|
||||
case EOpConstructU8Vec4:
|
||||
case EOpConstructInt8:
|
||||
case EOpConstructI8Vec2:
|
||||
case EOpConstructI8Vec3:
|
||||
case EOpConstructI8Vec4:
|
||||
if (type.isArray()) {
|
||||
requireInt8Arithmetic(loc, "8-bit array constructors not supported");
|
||||
}
|
||||
|
||||
if (type.isVector() && function.getParamCount() != 1) {
|
||||
requireInt8Arithmetic(loc, "8-bit vector constructors only take vector types");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// inherit constness from children
|
||||
@ -3012,6 +3161,16 @@ void TParseContext::parameterTypeCheck(const TSourceLoc& loc, TStorageQualifier
|
||||
{
|
||||
if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque())
|
||||
error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), "");
|
||||
|
||||
if (!parsingBuiltins && type.containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(loc, "float16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (!parsingBuiltins && type.contains16BitInt()) {
|
||||
requireInt16Arithmetic(loc, "(u)int16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (!parsingBuiltins && type.contains8BitInt()) {
|
||||
requireInt8Arithmetic(loc, "(u)int8 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
}
|
||||
|
||||
bool TParseContext::containsFieldWithBasicType(const TType& type, TBasicType basicType)
|
||||
@ -3786,6 +3945,39 @@ void TParseContext::opaqueCheck(const TSourceLoc& loc, const TType& type, const
|
||||
error(loc, "can't use with samplers or structs containing samplers", op, "");
|
||||
}
|
||||
|
||||
void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op)
|
||||
{
|
||||
if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16))
|
||||
requireFloat16Arithmetic(loc, "can't use with structs containing float16");
|
||||
|
||||
if (type.isArray() && type.getBasicType() == EbtFloat16)
|
||||
requireFloat16Arithmetic(loc, "can't use with arrays containing float16");
|
||||
|
||||
if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt16))
|
||||
requireInt16Arithmetic(loc, "can't use with structs containing int16");
|
||||
|
||||
if (type.isArray() && type.getBasicType() == EbtInt16)
|
||||
requireInt16Arithmetic(loc, "can't use with arrays containing int16");
|
||||
|
||||
if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint16))
|
||||
requireInt16Arithmetic(loc, "can't use with structs containing uint16");
|
||||
|
||||
if (type.isArray() && type.getBasicType() == EbtUint16)
|
||||
requireInt16Arithmetic(loc, "can't use with arrays containing uint16");
|
||||
|
||||
if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt8))
|
||||
requireInt8Arithmetic(loc, "can't use with structs containing int8");
|
||||
|
||||
if (type.isArray() && type.getBasicType() == EbtInt8)
|
||||
requireInt8Arithmetic(loc, "can't use with arrays containing int8");
|
||||
|
||||
if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint8))
|
||||
requireInt8Arithmetic(loc, "can't use with structs containing uint8");
|
||||
|
||||
if (type.isArray() && type.getBasicType() == EbtUint8)
|
||||
requireInt8Arithmetic(loc, "can't use with arrays containing uint8");
|
||||
}
|
||||
|
||||
void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op)
|
||||
{
|
||||
if (type.containsSpecializationSize())
|
||||
@ -5389,6 +5581,18 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
|
||||
atomicUintCheck(loc, type, identifier);
|
||||
transparentOpaqueCheck(loc, type, identifier);
|
||||
|
||||
if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) {
|
||||
if (type.containsBasicType(EbtFloat16)) {
|
||||
requireFloat16Arithmetic(loc, "float16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (type.contains16BitInt()) {
|
||||
requireInt16Arithmetic(loc, "(u)int16 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
if (type.contains8BitInt()) {
|
||||
requireInt8Arithmetic(loc, "(u)int8 types can only be in uniform block or buffer storage");
|
||||
}
|
||||
}
|
||||
|
||||
if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger))
|
||||
error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", "");
|
||||
if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.layoutDepth != EldNone)
|
||||
|
1
3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h
vendored
Normal file → Executable file
1
3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h
vendored
Normal file → Executable file
@ -367,6 +367,7 @@ public:
|
||||
void nestedStructCheck(const TSourceLoc&);
|
||||
void arrayObjectCheck(const TSourceLoc&, const TType&, const char* op);
|
||||
void opaqueCheck(const TSourceLoc&, const TType&, const char* op);
|
||||
void storage16BitAssignmentCheck(const TSourceLoc&, const TType&, const char* op);
|
||||
void specializationCheck(const TSourceLoc&, const TType&, const char* op);
|
||||
void structTypeCheck(const TSourceLoc&, TPublicType&);
|
||||
void inductiveLoopCheck(const TSourceLoc&, TIntermNode* init, TIntermLoop* loop);
|
||||
|
@ -1110,6 +1110,7 @@ int TScanContext::tokenizeIdentifier()
|
||||
afterType = true;
|
||||
if (parseContext.symbolTable.atBuiltInLevel() ||
|
||||
((parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
parseContext.extensionTurnedOn(E_GL_EXT_shader_8bit_storage) ||
|
||||
parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int8)) &&
|
||||
parseContext.profile != EEsProfile && parseContext.version >= 450))
|
||||
return keyword;
|
||||
@ -1130,6 +1131,7 @@ int TScanContext::tokenizeIdentifier()
|
||||
#ifdef AMD_EXTENSIONS
|
||||
parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
|
||||
#endif
|
||||
parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
|
||||
parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int16))))
|
||||
return keyword;
|
||||
@ -1201,6 +1203,20 @@ int TScanContext::tokenizeIdentifier()
|
||||
case F16VEC2:
|
||||
case F16VEC3:
|
||||
case F16VEC4:
|
||||
afterType = true;
|
||||
if (parseContext.symbolTable.atBuiltInLevel() ||
|
||||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
|
||||
(
|
||||
#ifdef AMD_EXTENSIONS
|
||||
parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
|
||||
#endif
|
||||
parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
|
||||
parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
|
||||
parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float16))))
|
||||
return keyword;
|
||||
|
||||
return identifierOrType();
|
||||
|
||||
case F16MAT2:
|
||||
case F16MAT3:
|
||||
case F16MAT4:
|
||||
|
@ -200,6 +200,10 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_EXT_post_depth_coverage] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_control_flow_attributes] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_nonuniform_qualifier] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_samplerless_texture_functions] = EBhDisable;
|
||||
|
||||
extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable;
|
||||
|
||||
// #line and #include
|
||||
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable;
|
||||
@ -362,6 +366,9 @@ void TParseVersions::getPreamble(std::string& preamble)
|
||||
"#define GL_EXT_post_depth_coverage 1\n"
|
||||
"#define GL_EXT_control_flow_attributes 1\n"
|
||||
"#define GL_EXT_nonuniform_qualifier 1\n"
|
||||
"#define GL_EXT_shader_16bit_storage 1\n"
|
||||
"#define GL_EXT_shader_8bit_storage 1\n"
|
||||
"#define GL_EXT_samplerless_texture_functions 1\n"
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
"#define GL_KHR_shader_subgroup_basic 1\n"
|
||||
@ -811,27 +818,94 @@ void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op)
|
||||
void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op)
|
||||
{
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 400, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 400, nullptr, op);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
|
||||
}
|
||||
|
||||
// Call for any operation needing GLSL float16 data-type support.
|
||||
void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn)
|
||||
{
|
||||
if (!builtIn) {
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
const char* const extensions[3] = {E_GL_AMD_gpu_shader_half_float,
|
||||
E_GL_AMD_gpu_shader_half_float,
|
||||
#endif
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float16};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
|
||||
}
|
||||
}
|
||||
|
||||
bool TParseVersions::float16Arithmetic()
|
||||
{
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
E_GL_AMD_gpu_shader_half_float,
|
||||
#endif
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float16};
|
||||
return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
|
||||
}
|
||||
|
||||
bool TParseVersions::int16Arithmetic()
|
||||
{
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
E_GL_AMD_gpu_shader_int16,
|
||||
#endif
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int16};
|
||||
return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
|
||||
}
|
||||
|
||||
bool TParseVersions::int8Arithmetic()
|
||||
{
|
||||
const char* const extensions[] = {
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int8};
|
||||
return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
|
||||
}
|
||||
|
||||
void TParseVersions::requireFloat16Arithmetic(const TSourceLoc& loc, const char* featureDesc)
|
||||
{
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
E_GL_AMD_gpu_shader_half_float,
|
||||
#endif
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float16};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, featureDesc);
|
||||
}
|
||||
|
||||
void TParseVersions::requireInt16Arithmetic(const TSourceLoc& loc, const char* featureDesc)
|
||||
{
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
E_GL_AMD_gpu_shader_int16,
|
||||
#endif
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int16};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, featureDesc);
|
||||
}
|
||||
|
||||
void TParseVersions::requireInt8Arithmetic(const TSourceLoc& loc, const char* featureDesc)
|
||||
{
|
||||
const char* const extensions[] = {
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int8};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, featureDesc);
|
||||
}
|
||||
|
||||
void TParseVersions::float16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn)
|
||||
{
|
||||
if (!builtIn) {
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
E_GL_AMD_gpu_shader_half_float,
|
||||
#endif
|
||||
E_GL_EXT_shader_16bit_storage,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float16};
|
||||
|
||||
#else
|
||||
const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float16};
|
||||
#endif
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
@ -842,9 +916,6 @@ void TParseVersions::explicitFloat32Check(const TSourceLoc& loc, const char* op,
|
||||
const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float32};
|
||||
requireExtensions(loc, 2, extensions, "explicit types");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
@ -856,8 +927,7 @@ void TParseVersions::explicitFloat64Check(const TSourceLoc& loc, const char* op,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_float64};
|
||||
requireExtensions(loc, 2, extensions, "explicit types");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
@ -868,9 +938,6 @@ void TParseVersions::explicitInt8Check(const TSourceLoc& loc, const char* op, bo
|
||||
const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int8};
|
||||
requireExtensions(loc, 2, extensions, "explicit types");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
@ -881,8 +948,7 @@ void TParseVersions::float16OpaqueCheck(const TSourceLoc& loc, const char* op, b
|
||||
if (! builtIn) {
|
||||
requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float_fetch, op);
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -891,18 +957,38 @@ void TParseVersions::float16OpaqueCheck(const TSourceLoc& loc, const char* op, b
|
||||
void TParseVersions::explicitInt16Check(const TSourceLoc& loc, const char* op, bool builtIn)
|
||||
{
|
||||
if (! builtIn) {
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
const char* const extensions[3] = {E_GL_AMD_gpu_shader_int16,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int16};
|
||||
#else
|
||||
const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int16};
|
||||
E_GL_AMD_gpu_shader_int16,
|
||||
#endif
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int16};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
|
||||
}
|
||||
}
|
||||
|
||||
void TParseVersions::int16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn)
|
||||
{
|
||||
if (! builtIn) {
|
||||
const char* const extensions[] = {
|
||||
#if AMD_EXTENSIONS
|
||||
E_GL_AMD_gpu_shader_int16,
|
||||
#endif
|
||||
E_GL_EXT_shader_16bit_storage,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int16};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
|
||||
}
|
||||
}
|
||||
|
||||
void TParseVersions::int8ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn)
|
||||
{
|
||||
if (! builtIn) {
|
||||
const char* const extensions[] = {
|
||||
E_GL_EXT_shader_8bit_storage,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int8};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
@ -913,9 +999,6 @@ void TParseVersions::explicitInt32Check(const TSourceLoc& loc, const char* op, b
|
||||
const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int32};
|
||||
requireExtensions(loc, 2, extensions, "explicit types");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
@ -928,8 +1011,7 @@ void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool buil
|
||||
E_GL_KHX_shader_explicit_arithmetic_types_int64};
|
||||
requireExtensions(loc, 3, extensions, "shader int64");
|
||||
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
|
||||
profileRequires(loc, ECoreProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
|
||||
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,12 +152,17 @@ const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_sub
|
||||
const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers";
|
||||
const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted";
|
||||
|
||||
const char* const E_GL_EXT_shader_16bit_storage = "GL_EXT_shader_16bit_storage";
|
||||
const char* const E_GL_EXT_shader_8bit_storage = "GL_EXT_shader_8bit_storage";
|
||||
|
||||
|
||||
// EXT extensions
|
||||
const char* const E_GL_EXT_device_group = "GL_EXT_device_group";
|
||||
const char* const E_GL_EXT_multiview = "GL_EXT_multiview";
|
||||
const char* const E_GL_EXT_post_depth_coverage = "GL_EXT_post_depth_coverage";
|
||||
const char* const E_GL_EXT_control_flow_attributes = "GL_EXT_control_flow_attributes";
|
||||
const char* const E_GL_EXT_nonuniform_qualifier = "GL_EXT_nonuniform_qualifier";
|
||||
const char* const E_GL_EXT_device_group = "GL_EXT_device_group";
|
||||
const char* const E_GL_EXT_multiview = "GL_EXT_multiview";
|
||||
const char* const E_GL_EXT_post_depth_coverage = "GL_EXT_post_depth_coverage";
|
||||
const char* const E_GL_EXT_control_flow_attributes = "GL_EXT_control_flow_attributes";
|
||||
const char* const E_GL_EXT_nonuniform_qualifier = "GL_EXT_nonuniform_qualifier";
|
||||
const char* const E_GL_EXT_samplerless_texture_functions = "GL_EXT_samplerless_texture_functions";
|
||||
|
||||
// Arrays of extensions for the above viewportEXTs duplications
|
||||
|
||||
|
79
3rdparty/glslang/glslang/MachineIndependent/glslang.y
vendored
Normal file → Executable file
79
3rdparty/glslang/glslang/MachineIndependent/glslang.y
vendored
Normal file → Executable file
@ -699,6 +699,7 @@ assignment_expression
|
||||
| unary_expression assignment_operator assignment_expression {
|
||||
parseContext.arrayObjectCheck($2.loc, $1->getType(), "array assignment");
|
||||
parseContext.opaqueCheck($2.loc, $1->getType(), "=");
|
||||
parseContext.storage16BitAssignmentCheck($2.loc, $1->getType(), "=");
|
||||
parseContext.specializationCheck($2.loc, $1->getType(), "=");
|
||||
parseContext.lValueErrorCheck($2.loc, "assign", $1);
|
||||
parseContext.rValueErrorCheck($2.loc, "assign", $3);
|
||||
@ -1419,7 +1420,7 @@ type_specifier_nonarray
|
||||
$$.basicType = EbtDouble;
|
||||
}
|
||||
| FLOAT16_T {
|
||||
parseContext.float16Check($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtFloat16;
|
||||
}
|
||||
@ -1443,22 +1444,22 @@ type_specifier_nonarray
|
||||
$$.basicType = EbtUint;
|
||||
}
|
||||
| INT8_T {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
}
|
||||
| UINT8_T {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint8;
|
||||
}
|
||||
| INT16_T {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
}
|
||||
| UINT16_T {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint16;
|
||||
}
|
||||
@ -1520,19 +1521,19 @@ type_specifier_nonarray
|
||||
$$.setVector(4);
|
||||
}
|
||||
| F16VEC2 {
|
||||
parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtFloat16;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| F16VEC3 {
|
||||
parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtFloat16;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| F16VEC4 {
|
||||
parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtFloat16;
|
||||
$$.setVector(4);
|
||||
@ -1604,40 +1605,40 @@ type_specifier_nonarray
|
||||
$$.setVector(4);
|
||||
}
|
||||
| I8VEC2 {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.setVector(2);
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| I8VEC3 {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.setVector(3);
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| I8VEC4 {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.setVector(4);
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.setVector(4);
|
||||
}
|
||||
| I16VEC2 {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
$$.setVector(2);
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| I16VEC3 {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
$$.setVector(3);
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| I16VEC4 {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
$$.setVector(4);
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt16;
|
||||
$$.setVector(4);
|
||||
}
|
||||
| I32VEC2 {
|
||||
parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
@ -1694,37 +1695,37 @@ type_specifier_nonarray
|
||||
$$.setVector(4);
|
||||
}
|
||||
| U8VEC2 {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint8;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| U8VEC3 {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt8;
|
||||
$$.basicType = EbtUint8;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| U8VEC4 {
|
||||
parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint8;
|
||||
$$.setVector(4);
|
||||
}
|
||||
| U16VEC2 {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint16;
|
||||
$$.setVector(2);
|
||||
}
|
||||
| U16VEC3 {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint16;
|
||||
$$.setVector(3);
|
||||
}
|
||||
| U16VEC4 {
|
||||
parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint16;
|
||||
$$.setVector(4);
|
||||
|
2321
3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
vendored
Normal file → Executable file
2321
3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
vendored
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -79,6 +79,15 @@ public:
|
||||
virtual void fullIntegerCheck(const TSourceLoc&, const char* op);
|
||||
virtual void doubleCheck(const TSourceLoc&, const char* op);
|
||||
virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual bool float16Arithmetic();
|
||||
virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* featureDesc);
|
||||
virtual void int16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual bool int16Arithmetic();
|
||||
virtual void requireInt16Arithmetic(const TSourceLoc& loc, const char* featureDesc);
|
||||
virtual void int8ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual bool int8Arithmetic();
|
||||
virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* featureDesc);
|
||||
#ifdef AMD_EXTENSIONS
|
||||
virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
#endif
|
||||
|
98
3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
vendored
Normal file → Executable file
98
3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
vendored
Normal file → Executable file
@ -515,15 +515,16 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo
|
||||
int TPpContext::evalToToken(int token, bool shortCircuit, int& res, bool& err, TPpToken* ppToken)
|
||||
{
|
||||
while (token == PpAtomIdentifier && strcmp("defined", ppToken->name) != 0) {
|
||||
int macroReturn = MacroExpand(ppToken, true, false);
|
||||
if (macroReturn == 0) {
|
||||
switch (MacroExpand(ppToken, true, false)) {
|
||||
case MacroExpandNotStarted:
|
||||
case MacroExpandError:
|
||||
parseContext.ppError(ppToken->loc, "can't evaluate expression", "preprocessor evaluation", "");
|
||||
err = true;
|
||||
res = 0;
|
||||
token = scanToken(ppToken);
|
||||
break;
|
||||
}
|
||||
if (macroReturn == -1) {
|
||||
case MacroExpandStarted:
|
||||
break;
|
||||
case MacroExpandUndef:
|
||||
if (! shortCircuit && parseContext.profile == EEsProfile) {
|
||||
const char* message = "undefined macro in expression not allowed in es profile";
|
||||
if (parseContext.relaxedErrors())
|
||||
@ -531,8 +532,11 @@ int TPpContext::evalToToken(int token, bool shortCircuit, int& res, bool& err, T
|
||||
else
|
||||
parseContext.ppError(ppToken->loc, message, "preprocessor evaluation", ppToken->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
token = scanToken(ppToken);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
|
||||
return token;
|
||||
@ -1011,15 +1015,25 @@ TPpContext::TokenStream* TPpContext::PrescanMacroArg(TokenStream& arg, TPpToken*
|
||||
int token;
|
||||
while ((token = scanToken(ppToken)) != tMarkerInput::marker && token != EndOfInput) {
|
||||
token = tokenPaste(token, *ppToken);
|
||||
if (token == PpAtomIdentifier) {
|
||||
switch (MacroExpand(ppToken, false, newLineOkay)) {
|
||||
case MacroExpandNotStarted:
|
||||
break;
|
||||
case MacroExpandError:
|
||||
token = EndOfInput;
|
||||
break;
|
||||
case MacroExpandStarted:
|
||||
case MacroExpandUndef:
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (token == tMarkerInput::marker || token == EndOfInput)
|
||||
break;
|
||||
if (token == PpAtomIdentifier && MacroExpand(ppToken, false, newLineOkay) != 0)
|
||||
continue;
|
||||
expandedArg->putToken(token, ppToken);
|
||||
}
|
||||
|
||||
if (token == EndOfInput) {
|
||||
// MacroExpand ate the marker, so had bad input, recover
|
||||
// Error, or MacroExpand ate the marker, so had bad input, recover
|
||||
delete expandedArg;
|
||||
expandedArg = nullptr;
|
||||
} else {
|
||||
@ -1115,14 +1129,18 @@ int TPpContext::tZeroInput::scan(TPpToken* ppToken)
|
||||
}
|
||||
|
||||
//
|
||||
// Check a token to see if it is a macro that should be expanded.
|
||||
// If it is, and defined, push a tInput that will produce the appropriate expansion
|
||||
// and return 1.
|
||||
// If it is, but undefined, and expandUndef is requested, push a tInput that will
|
||||
// expand to 0 and return -1.
|
||||
// Otherwise, return 0 to indicate no expansion, which is not necessarily an error.
|
||||
// Check a token to see if it is a macro that should be expanded:
|
||||
// - If it is, and defined, push a tInput that will produce the appropriate
|
||||
// expansion and return MacroExpandStarted.
|
||||
// - If it is, but undefined, and expandUndef is requested, push a tInput
|
||||
// that will expand to 0 and return MacroExpandUndef.
|
||||
// - Otherwise, there is no expansion, and there are two cases:
|
||||
// * It might be okay there is no expansion, and no specific error was
|
||||
// detected. Returns MacroExpandNotStarted.
|
||||
// * The expansion was started, but could not be completed, due to an error
|
||||
// that cannot be recovered from. Returns MacroExpandError.
|
||||
//
|
||||
int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOkay)
|
||||
MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOkay)
|
||||
{
|
||||
ppToken->space = false;
|
||||
int macroAtom = atomStrings.getAtom(ppToken->name);
|
||||
@ -1131,7 +1149,7 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
ppToken->ival = parseContext.getCurrentLoc().line;
|
||||
snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival);
|
||||
UngetToken(PpAtomConstInt, ppToken);
|
||||
return 1;
|
||||
return MacroExpandStarted;
|
||||
|
||||
case PpAtomFileMacro: {
|
||||
if (parseContext.getCurrentLoc().name)
|
||||
@ -1139,34 +1157,33 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
ppToken->ival = parseContext.getCurrentLoc().string;
|
||||
snprintf(ppToken->name, sizeof(ppToken->name), "%s", ppToken->loc.getStringNameOrNum().c_str());
|
||||
UngetToken(PpAtomConstInt, ppToken);
|
||||
return 1;
|
||||
return MacroExpandStarted;
|
||||
}
|
||||
|
||||
case PpAtomVersionMacro:
|
||||
ppToken->ival = parseContext.version;
|
||||
snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival);
|
||||
UngetToken(PpAtomConstInt, ppToken);
|
||||
return 1;
|
||||
return MacroExpandStarted;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
MacroSymbol* macro = macroAtom == 0 ? nullptr : lookupMacroDef(macroAtom);
|
||||
int depth = 0;
|
||||
|
||||
// no recursive expansions
|
||||
if (macro != nullptr && macro->busy)
|
||||
return 0;
|
||||
return MacroExpandNotStarted;
|
||||
|
||||
// not expanding undefined macros
|
||||
if ((macro == nullptr || macro->undef) && ! expandUndef)
|
||||
return 0;
|
||||
return MacroExpandNotStarted;
|
||||
|
||||
// 0 is the value of an undefined macro
|
||||
if ((macro == nullptr || macro->undef) && expandUndef) {
|
||||
pushInput(new tZeroInput(this));
|
||||
return -1;
|
||||
return MacroExpandUndef;
|
||||
}
|
||||
|
||||
tMacroInput *in = new tMacroInput(this);
|
||||
@ -1182,7 +1199,7 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
if (token != '(') {
|
||||
UngetToken(token, ppToken);
|
||||
delete in;
|
||||
return 0;
|
||||
return MacroExpandNotStarted;
|
||||
}
|
||||
in->args.resize(in->mac->args.size());
|
||||
for (size_t i = 0; i < in->mac->args.size(); i++)
|
||||
@ -1193,39 +1210,44 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
size_t arg = 0;
|
||||
bool tokenRecorded = false;
|
||||
do {
|
||||
depth = 0;
|
||||
while (1) {
|
||||
TVector<char> nestStack;
|
||||
while (true) {
|
||||
token = scanToken(ppToken);
|
||||
if (token == EndOfInput || token == tMarkerInput::marker) {
|
||||
parseContext.ppError(loc, "End of input in macro", "macro expansion", atomStrings.getString(macroAtom));
|
||||
delete in;
|
||||
return 0;
|
||||
return MacroExpandError;
|
||||
}
|
||||
if (token == '\n') {
|
||||
if (! newLineOkay) {
|
||||
parseContext.ppError(loc, "End of line in macro substitution:", "macro expansion", atomStrings.getString(macroAtom));
|
||||
delete in;
|
||||
return 0;
|
||||
return MacroExpandError;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (token == '#') {
|
||||
parseContext.ppError(ppToken->loc, "unexpected '#'", "macro expansion", atomStrings.getString(macroAtom));
|
||||
delete in;
|
||||
return 0;
|
||||
return MacroExpandError;
|
||||
}
|
||||
if (in->mac->args.size() == 0 && token != ')')
|
||||
break;
|
||||
if (depth == 0 && (token == ',' || token == ')'))
|
||||
if (nestStack.size() == 0 && (token == ',' || token == ')'))
|
||||
break;
|
||||
if (token == '(')
|
||||
depth++;
|
||||
if (token == ')')
|
||||
depth--;
|
||||
nestStack.push_back(')');
|
||||
else if (token == '{' && parseContext.isReadingHLSL())
|
||||
nestStack.push_back('}');
|
||||
else if (nestStack.size() > 0 && token == nestStack.back())
|
||||
nestStack.pop_back();
|
||||
in->args[arg]->putToken(token, ppToken);
|
||||
tokenRecorded = true;
|
||||
}
|
||||
// end of single argument scan
|
||||
|
||||
if (token == ')') {
|
||||
// closing paren of call
|
||||
if (in->mac->args.size() == 1 && tokenRecorded == 0)
|
||||
break;
|
||||
arg++;
|
||||
@ -1233,23 +1255,25 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
}
|
||||
arg++;
|
||||
} while (arg < in->mac->args.size());
|
||||
// end of all arguments scan
|
||||
|
||||
if (arg < in->mac->args.size())
|
||||
parseContext.ppError(loc, "Too few args in Macro", "macro expansion", atomStrings.getString(macroAtom));
|
||||
else if (token != ')') {
|
||||
depth=0;
|
||||
// Error recover code; find end of call, if possible
|
||||
int depth = 0;
|
||||
while (token != EndOfInput && (depth > 0 || token != ')')) {
|
||||
if (token == ')')
|
||||
if (token == ')' || token == '}')
|
||||
depth--;
|
||||
token = scanToken(ppToken);
|
||||
if (token == '(')
|
||||
if (token == '(' || token == '{')
|
||||
depth++;
|
||||
}
|
||||
|
||||
if (token == EndOfInput) {
|
||||
parseContext.ppError(loc, "End of input in macro", "macro expansion", atomStrings.getString(macroAtom));
|
||||
delete in;
|
||||
return 0;
|
||||
return MacroExpandError;
|
||||
}
|
||||
parseContext.ppError(loc, "Too many args in macro", "macro expansion", atomStrings.getString(macroAtom));
|
||||
}
|
||||
@ -1264,7 +1288,7 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
macro->busy = 1;
|
||||
macro->body.reset();
|
||||
|
||||
return 1;
|
||||
return MacroExpandStarted;
|
||||
}
|
||||
|
||||
} // end namespace glslang
|
||||
|
@ -183,6 +183,13 @@ protected:
|
||||
|
||||
class TInputScanner;
|
||||
|
||||
enum MacroExpandResult {
|
||||
MacroExpandNotStarted, // macro not expanded, which might not be an error
|
||||
MacroExpandError, // a clear error occurred while expanding, no expansion
|
||||
MacroExpandStarted, // macro expansion process has started
|
||||
MacroExpandUndef // macro is undefined and will be expanded
|
||||
};
|
||||
|
||||
// This class is the result of turning a huge pile of C code communicating through globals
|
||||
// into a class. This was done to allowing instancing to attain thread safety.
|
||||
// Don't expect too much in terms of OO design.
|
||||
@ -400,7 +407,7 @@ protected:
|
||||
int readCPPline(TPpToken * ppToken);
|
||||
int scanHeaderName(TPpToken* ppToken, char delimit);
|
||||
TokenStream* PrescanMacroArg(TokenStream&, TPpToken*, bool newLineOkay);
|
||||
int MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOkay);
|
||||
MacroExpandResult MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOkay);
|
||||
|
||||
//
|
||||
// From PpTokens.cpp
|
||||
|
@ -1061,8 +1061,17 @@ int TPpContext::tokenize(TPpToken& ppToken)
|
||||
continue;
|
||||
|
||||
// expand macros
|
||||
if (token == PpAtomIdentifier && MacroExpand(&ppToken, false, true) != 0)
|
||||
continue;
|
||||
if (token == PpAtomIdentifier) {
|
||||
switch (MacroExpand(&ppToken, false, true)) {
|
||||
case MacroExpandNotStarted:
|
||||
break;
|
||||
case MacroExpandError:
|
||||
return EndOfInput;
|
||||
case MacroExpandStarted:
|
||||
case MacroExpandUndef:
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
switch (token) {
|
||||
case PpAtomIdentifier:
|
||||
|
2
3rdparty/glslang/glslang/Public/ShaderLang.h
vendored
Normal file → Executable file
2
3rdparty/glslang/glslang/Public/ShaderLang.h
vendored
Normal file → Executable file
@ -70,7 +70,7 @@
|
||||
// This should always increase, as some paths to do not consume
|
||||
// a more major number.
|
||||
// It should increment by one when new functionality is added.
|
||||
#define GLSLANG_MINOR_VERSION 7
|
||||
#define GLSLANG_MINOR_VERSION 8
|
||||
|
||||
//
|
||||
// Call before doing any other compiler/linker operations.
|
||||
|
1
3rdparty/glslang/gtests/Pp.FromFile.cpp
vendored
Normal file → Executable file
1
3rdparty/glslang/gtests/Pp.FromFile.cpp
vendored
Normal file → Executable file
@ -50,6 +50,7 @@ TEST_P(PreprocessingTest, FromFile)
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
Glsl, PreprocessingTest,
|
||||
::testing::ValuesIn(std::vector<std::string>({
|
||||
"preprocessor.bad_arg.vert",
|
||||
"preprocessor.cpp_style_line_directive.vert",
|
||||
"preprocessor.cpp_style___FILE__.vert",
|
||||
"preprocessor.edge_cases.vert",
|
||||
|
12
3rdparty/glslang/gtests/Spv.FromFile.cpp
vendored
12
3rdparty/glslang/gtests/Spv.FromFile.cpp
vendored
@ -215,6 +215,12 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.140.frag",
|
||||
"spv.150.geom",
|
||||
"spv.150.vert",
|
||||
"spv.16bitstorage.frag",
|
||||
"spv.16bitstorage_Error.frag",
|
||||
"spv.16bitstorage-int.frag",
|
||||
"spv.16bitstorage_Error-int.frag",
|
||||
"spv.16bitstorage-uint.frag",
|
||||
"spv.16bitstorage_Error-uint.frag",
|
||||
"spv.300BuiltIns.vert",
|
||||
"spv.300layout.frag",
|
||||
"spv.300layout.vert",
|
||||
@ -231,6 +237,10 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.450.tesc",
|
||||
"spv.450.geom",
|
||||
"spv.450.noRedecl.tesc",
|
||||
"spv.8bitstorage-int.frag",
|
||||
"spv.8bitstorage_Error-int.frag",
|
||||
"spv.8bitstorage-uint.frag",
|
||||
"spv.8bitstorage_Error-uint.frag",
|
||||
"spv.accessChain.frag",
|
||||
"spv.aggOps.frag",
|
||||
"spv.always-discard.frag",
|
||||
@ -344,6 +354,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.xfb.vert",
|
||||
"spv.xfb2.vert",
|
||||
"spv.xfb3.vert",
|
||||
"spv.samplerlessTextureFunctions.frag",
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
@ -433,6 +444,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"vulkan.frag",
|
||||
"vulkan.vert",
|
||||
"vulkan.comp",
|
||||
"samplerlessTextureFunctions.frag",
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
9
3rdparty/glslang/hlsl/hlslParseHelper.cpp
vendored
9
3rdparty/glslang/hlsl/hlslParseHelper.cpp
vendored
@ -4377,16 +4377,13 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
|
||||
txquerylod->getSequence().push_back(txcombine);
|
||||
txquerylod->getSequence().push_back(argCoord);
|
||||
|
||||
TIntermTyped* lodComponent = intermediate.addConstantUnion(0, loc, true);
|
||||
TIntermTyped* lodComponent = intermediate.addConstantUnion(
|
||||
op == EOpMethodCalculateLevelOfDetail ? 0 : 1,
|
||||
loc, true);
|
||||
TIntermTyped* lodComponentIdx = intermediate.addIndex(EOpIndexDirect, txquerylod, lodComponent, loc);
|
||||
lodComponentIdx->setType(TType(EbtFloat, EvqTemporary, 1));
|
||||
|
||||
node = lodComponentIdx;
|
||||
|
||||
// We cannot currently obtain the unclamped LOD
|
||||
if (op == EOpMethodCalculateLevelOfDetailUnclamped)
|
||||
error(loc, "unimplemented: CalculateLevelOfDetailUnclamped", "", "");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
2
3rdparty/glslang/known_good_khr.json
vendored
Normal file → Executable file
2
3rdparty/glslang/known_good_khr.json
vendored
Normal file → Executable file
@ -12,7 +12,7 @@
|
||||
"site" : "gitlab",
|
||||
"subrepo" : "spirv/SPIRV-Headers",
|
||||
"subdir" : "External/spirv-tools/external/spirv-headers",
|
||||
"commit" : "4082a777bd5df31ed45acf40e64263094e85ed2e"
|
||||
"commit" : "gitlab-prelim-rc4"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user