Updated glslang.

This commit is contained in:
Branimir Karadžić 2018-12-02 20:13:19 -08:00
parent 6602a5bd2e
commit b9b9393a94
56 changed files with 1813 additions and 240 deletions

100
3rdparty/glslang/Android.mk vendored Normal file
View File

@ -0,0 +1,100 @@
LOCAL_PATH := $(call my-dir)
GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX
# AMD and NV extensions are turned on by default in upstream Glslang.
GLSLANG_DEFINES:= -DAMD_EXTENSIONS -DNV_EXTENSIONS -DENABLE_HLSL $(GLSLANG_OS_FLAGS)
include $(CLEAR_VARS)
LOCAL_MODULE:=OSDependent
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp
LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/OSDependent/Unix/
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:=OGLCompiler
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
LOCAL_SRC_FILES:=OGLCompilersDLL/InitializeDll.cpp
LOCAL_C_INCLUDES:=$(LOCAL_PATH)/OGLCompiler
LOCAL_STATIC_LIBRARIES:=OSDependent
include $(BUILD_STATIC_LIBRARY)
# Build Glslang's HLSL parser library.
include $(CLEAR_VARS)
LOCAL_MODULE:=HLSL
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
LOCAL_SRC_FILES:= \
hlsl/hlslAttributes.cpp \
hlsl/hlslGrammar.cpp \
hlsl/hlslOpMap.cpp \
hlsl/hlslParseables.cpp \
hlsl/hlslParseHelper.cpp \
hlsl/hlslScanContext.cpp \
hlsl/hlslTokenStream.cpp
LOCAL_C_INCLUDES:=$(LOCAL_PATH) \
$(LOCAL_PATH)/hlsl
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
GLSLANG_OUT_PATH=$(if $(call host-path-is-absolute,$(TARGET_OUT)),$(TARGET_OUT),$(abspath $(TARGET_OUT)))
LOCAL_MODULE:=glslang
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
LOCAL_SRC_FILES:= \
glslang/GenericCodeGen/CodeGen.cpp \
glslang/GenericCodeGen/Link.cpp \
glslang/MachineIndependent/attribute.cpp \
glslang/MachineIndependent/Constant.cpp \
glslang/MachineIndependent/glslang_tab.cpp \
glslang/MachineIndependent/InfoSink.cpp \
glslang/MachineIndependent/Initialize.cpp \
glslang/MachineIndependent/Intermediate.cpp \
glslang/MachineIndependent/intermOut.cpp \
glslang/MachineIndependent/IntermTraverse.cpp \
glslang/MachineIndependent/iomapper.cpp \
glslang/MachineIndependent/limits.cpp \
glslang/MachineIndependent/linkValidate.cpp \
glslang/MachineIndependent/parseConst.cpp \
glslang/MachineIndependent/ParseContextBase.cpp \
glslang/MachineIndependent/ParseHelper.cpp \
glslang/MachineIndependent/PoolAlloc.cpp \
glslang/MachineIndependent/propagateNoContraction.cpp \
glslang/MachineIndependent/reflection.cpp \
glslang/MachineIndependent/RemoveTree.cpp \
glslang/MachineIndependent/Scan.cpp \
glslang/MachineIndependent/ShaderLang.cpp \
glslang/MachineIndependent/SymbolTable.cpp \
glslang/MachineIndependent/Versions.cpp \
glslang/MachineIndependent/preprocessor/PpAtom.cpp \
glslang/MachineIndependent/preprocessor/PpContext.cpp \
glslang/MachineIndependent/preprocessor/Pp.cpp \
glslang/MachineIndependent/preprocessor/PpScanner.cpp \
glslang/MachineIndependent/preprocessor/PpTokens.cpp
LOCAL_C_INCLUDES:=$(LOCAL_PATH) \
$(LOCAL_PATH)/glslang/MachineIndependent \
$(GLSLANG_OUT_PATH)
LOCAL_STATIC_LIBRARIES:=OSDependent OGLCompiler HLSL
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:=SPIRV
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES)
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
LOCAL_SRC_FILES:= \
SPIRV/GlslangToSpv.cpp \
SPIRV/InReadableOrder.cpp \
SPIRV/Logger.cpp \
SPIRV/SPVRemapper.cpp \
SPIRV/SpvBuilder.cpp \
SPIRV/SpvPostProcess.cpp \
SPIRV/SpvTools.cpp \
SPIRV/disassemble.cpp \
SPIRV/doc.cpp
LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/SPIRV
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/SPIRV
LOCAL_STATIC_LIBRARIES:=glslang
include $(BUILD_STATIC_LIBRARY)

View File

@ -28,10 +28,11 @@
#define GLSLextEXT_H
static const int GLSLextEXTVersion = 100;
static const int GLSLextEXTRevision = 1;
static const int GLSLextEXTRevision = 2;
static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shader_stencil_export";
static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer";
static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered";
static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density";
#endif // #ifndef GLSLextEXT_H

View File

@ -833,6 +833,16 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
builder.addCapability(spv::CapabilityMultiView);
return spv::BuiltInViewIndex;
case glslang::EbvFragSizeEXT:
builder.addExtension(spv::E_SPV_EXT_fragment_invocation_density);
builder.addCapability(spv::CapabilityFragmentDensityEXT);
return spv::BuiltInFragSizeEXT;
case glslang::EbvFragInvocationCountEXT:
builder.addExtension(spv::E_SPV_EXT_fragment_invocation_density);
builder.addCapability(spv::CapabilityFragmentDensityEXT);
return spv::BuiltInFragInvocationCountEXT;
#ifdef NV_EXTENSIONS
case glslang::EbvViewportMaskNV:
if (!memberDeclaration) {
@ -1815,6 +1825,12 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion()->getConstArray()[0].getUConst();
spv::Id length = builder.createArrayLength(builder.accessChainGetLValue(), member);
// GLSL semantics say the result of .length() is an int, while SPIR-V says
// signedness must be 0. So, convert from SPIR-V unsigned back to GLSL's
// AST expectation of a signed result.
if (glslangIntermediate->getSource() == glslang::EShSourceGlsl)
length = builder.createUnaryOp(spv::OpBitcast, builder.makeIntType(32), length);
builder.clearAccessChain();
builder.setAccessChainRValue(length);
@ -7153,8 +7169,6 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
builder.addDecoration(id, spv::DecorationInputAttachmentIndex, symbol->getQualifier().layoutAttachment);
if (glslangIntermediate->getXfbMode()) {
builder.addCapability(spv::CapabilityTransformFeedback);
if (symbol->getQualifier().hasXfbStride())
builder.addDecoration(id, spv::DecorationXfbStride, symbol->getQualifier().layoutXfbStride);
if (symbol->getQualifier().hasXfbBuffer()) {
builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer);
unsigned stride = glslangIntermediate->getXfbStride(symbol->getQualifier().layoutXfbBuffer);

2
3rdparty/glslang/SPIRV/SpvBuilder.cpp vendored Normal file → Executable file
View File

@ -1293,7 +1293,7 @@ Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vec
Id Builder::createArrayLength(Id base, unsigned int member)
{
spv::Id intType = makeIntType(32);
spv::Id intType = makeUintType(32);
Instruction* length = new Instruction(getUniqueId(), intType, OpArrayLength);
length->addIdOperand(base);
length->addImmediateOperand(member);

View File

@ -181,7 +181,7 @@ void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector<unsigned int>
optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass());
optimizer.RegisterPass(spvtools::CreateCFGCleanupPass());
optimizer.Run(spirv.data(), spirv.size(), &spirv, spvtools::ValidatorOptions(), true);
optimizer.Run(spirv.data(), spirv.size(), &spirv);
}
}; // end namespace glslang

View File

@ -388,12 +388,15 @@ const char* BuiltInString(int builtIn)
case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
case BuiltInPositionPerViewNV: return "PositionPerViewNV";
case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV";
case BuiltInFragmentSizeNV: return "FragmentSizeNV";
case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV";
// case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT
// case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT
case BuiltInBaryCoordNV: return "BaryCoordNV";
case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
#endif
case BuiltInFragSizeEXT: return "FragSizeEXT";
case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT";
case 5264: return "FullyCoveredEXT";
@ -897,8 +900,9 @@ const char* CapabilityString(int info)
case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV";
case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV";
case CapabilityMeshShadingNV: return "MeshShadingNV";
case CapabilityShadingRateNV: return "ShadingRateNV";
// case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by CapabilityFragmentDensityEXT
#endif
case CapabilityFragmentDensityEXT: return "FragmentDensityEXT";
case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";

View File

@ -26,13 +26,14 @@
// the Binary Section of the SPIR-V specification.
// Enumeration tokens for SPIR-V, in various styles:
// C, C++, C++11, JSON, Lua, Python
// C, C++, C++11, JSON, Lua, Python, C#
//
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
// - C# will use enum classes in the Specification class located in the "Spv" namespace, e.g.: Spv.Specification.SourceLanguage.GLSL
//
// Some tokens act like mask values, which can be OR'd together,
// while others are mutually exclusive. The mask-like ones have
@ -512,7 +513,9 @@ enum BuiltIn {
BuiltInMeshViewIndicesNV = 5281,
BuiltInBaryCoordNV = 5286,
BuiltInBaryCoordNoPerspNV = 5287,
BuiltInFragSizeEXT = 5292,
BuiltInFragmentSizeNV = 5292,
BuiltInFragInvocationCountEXT = 5293,
BuiltInInvocationsPerPixelNV = 5293,
BuiltInLaunchIdNV = 5319,
BuiltInLaunchSizeNV = 5320,
@ -770,6 +773,7 @@ enum Capability {
CapabilityImageFootprintNV = 5282,
CapabilityFragmentBarycentricNV = 5284,
CapabilityComputeDerivativeGroupQuadsNV = 5288,
CapabilityFragmentDensityEXT = 5291,
CapabilityShadingRateNV = 5291,
CapabilityGroupNonUniformPartitionedNV = 5297,
CapabilityShaderNonUniformEXT = 5301,

View File

@ -0,0 +1,645 @@
constantUnaryConversion.comp
Shader version: 450
Requested GL_KHX_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
0:48 Function Definition: main( ( global void)
0:48 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
0:? 'int8_t_init' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_init' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_init' ( const int)
0:? -3 (const int)
0:? 'int64_t_init' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_init' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_init' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_init' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_init' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_init' ( const float16_t)
0:? 42.000000
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
0:? 'int8_t_to_bool' ( const bool)
0:? -1 (const int)
0:? 'int16_t_to_bool' ( const bool)
0:? -2 (const int)
0:? 'int32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'int64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint8_t_to_bool' ( const bool)
0:? 1 (const int)
0:? 'uint16_t_to_bool' ( const bool)
0:? 2 (const int)
0:? 'uint32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float16_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'bool_to_int8_t' ( const int8_t)
0:? true (const bool)
0:? 'int8_t_to_int8_t' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_to_int8_t' ( const int8_t)
0:? -2 (const int)
0:? 'int32_t_to_int8_t' ( const int8_t)
0:? -3 (const int)
0:? 'int64_t_to_int8_t' ( const int8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int8_t' ( const int8_t)
0:? 1 (const int)
0:? 'uint16_t_to_int8_t' ( const int8_t)
0:? 2 (const int)
0:? 'uint32_t_to_int8_t' ( const int8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int8_t' ( const int8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int8_t' ( const int8_t)
0:? 42.000000
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13.000000
0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4.000000
0:? 'bool_to_int16_t' ( const int16_t)
0:? true (const bool)
0:? 'int8_t_to_int16_t' ( const int16_t)
0:? -1 (const int)
0:? 'int16_t_to_int16_t' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_to_int16_t' ( const int16_t)
0:? -3 (const int)
0:? 'int64_t_to_int16_t' ( const int16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int16_t' ( const int16_t)
0:? 1 (const int)
0:? 'uint16_t_to_int16_t' ( const int16_t)
0:? 2 (const int)
0:? 'uint32_t_to_int16_t' ( const int16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int16_t' ( const int16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int16_t' ( const int16_t)
0:? 42.000000
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13.000000
0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4.000000
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
0:? -1 (const int)
0:? 'int16_t_to_int32_t' ( const int)
0:? -2 (const int)
0:? 'int32_t_to_int32_t' ( const int)
0:? -3 (const int)
0:? 'int64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'uint8_t_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'uint16_t_to_int32_t' ( const int)
0:? 2 (const int)
0:? 'uint32_t_to_int32_t' ( const int)
0:? 3 (const int)
0:? 'uint64_t_to_int32_t' ( const int)
0:? 4 (const int)
0:? 'float16_t_to_int32_t' ( const int)
0:? 42 (const int)
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
0:? -1 (const int)
0:? 'int16_t_to_int64_t' ( const int64_t)
0:? -2 (const int)
0:? 'int32_t_to_int64_t' ( const int64_t)
0:? -3 (const int64_t)
0:? 'int64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int64_t' ( const int64_t)
0:? 1 (const int)
0:? 'uint16_t_to_int64_t' ( const int64_t)
0:? 2 (const int)
0:? 'uint32_t_to_int64_t' ( const int64_t)
0:? 3 (const int64_t)
0:? 'uint64_t_to_int64_t' ( const int64_t)
0:? 4 (const int64_t)
0:? 'float16_t_to_int64_t' ( const int64_t)
0:? 42 (const int64_t)
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? true (const bool)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
0:? -1 (const int)
0:? 'int16_t_to_uint8_t' ( const uint8_t)
0:? -2 (const int)
0:? 'int32_t_to_uint8_t' ( const uint8_t)
0:? -3 (const int)
0:? 'int64_t_to_uint8_t' ( const uint8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint8_t' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint8_t' ( const uint8_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint8_t' ( const uint8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint8_t' ( const uint8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint8_t' ( const uint8_t)
0:? 42.000000
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13.000000
0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? -4.000000
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? true (const bool)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
0:? -1 (const int)
0:? 'int16_t_to_uint16_t' ( const uint16_t)
0:? -2 (const int)
0:? 'int32_t_to_uint16_t' ( const uint16_t)
0:? -3 (const int)
0:? 'int64_t_to_uint16_t' ( const uint16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint16_t' ( const uint16_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint16_t' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint16_t' ( const uint16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint16_t' ( const uint16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint16_t' ( const uint16_t)
0:? 42.000000
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13.000000
0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? -4.000000
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
0:? -1 (const int)
0:? 'int16_t_to_uint32_t' ( const uint)
0:? -2 (const int)
0:? 'int32_t_to_uint32_t' ( const uint)
0:? 4294967293 (const uint)
0:? 'int64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'uint8_t_to_uint32_t' ( const uint)
0:? 1 (const int)
0:? 'uint16_t_to_uint32_t' ( const uint)
0:? 2 (const int)
0:? 'uint32_t_to_uint32_t' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_to_uint32_t' ( const uint)
0:? 4 (const uint)
0:? 'float16_t_to_uint32_t' ( const uint)
0:? 42 (const uint)
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
0:? -1 (const int)
0:? 'int16_t_to_uint64_t' ( const uint64_t)
0:? -2 (const int)
0:? 'int32_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551613 (const uint64_t)
0:? 'int64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'uint8_t_to_uint64_t' ( const uint64_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint64_t' ( const uint64_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint64_t' ( const uint64_t)
0:? 3 (const uint64_t)
0:? 'uint64_t_to_uint64_t' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint64_t' ( const uint64_t)
0:? 42 (const uint64_t)
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
0:? -1 (const int)
0:? 'int16_t_to_float16_t' ( const float16_t)
0:? -2 (const int)
0:? 'int32_t_to_float16_t' ( const float16_t)
0:? -3.000000
0:? 'int64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'uint8_t_to_float16_t' ( const float16_t)
0:? 1 (const int)
0:? 'uint16_t_to_float16_t' ( const float16_t)
0:? 2 (const int)
0:? 'uint32_t_to_float16_t' ( const float16_t)
0:? 3.000000
0:? 'uint64_t_to_float16_t' ( const float16_t)
0:? 4.000000
0:? 'float16_t_to_float16_t' ( const float16_t)
0:? 42.000000
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
0:? -1 (const int)
0:? 'int16_t_to_float32_t' ( const float)
0:? -2 (const int)
0:? 'int32_t_to_float32_t' ( const float)
0:? -3.000000
0:? 'int64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'uint8_t_to_float32_t' ( const float)
0:? 1 (const int)
0:? 'uint16_t_to_float32_t' ( const float)
0:? 2 (const int)
0:? 'uint32_t_to_float32_t' ( const float)
0:? 3.000000
0:? 'uint64_t_to_float32_t' ( const float)
0:? 4.000000
0:? 'float16_t_to_float32_t' ( const float)
0:? 42.000000
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
0:? -1 (const int)
0:? 'int16_t_to_float64_t' ( const double)
0:? -2 (const int)
0:? 'int32_t_to_float64_t' ( const double)
0:? -3.000000
0:? 'int64_t_to_float64_t' ( const double)
0:? -4.000000
0:? 'uint8_t_to_float64_t' ( const double)
0:? 1 (const int)
0:? 'uint16_t_to_float64_t' ( const double)
0:? 2 (const int)
0:? 'uint32_t_to_float64_t' ( const double)
0:? 3.000000
0:? 'uint64_t_to_float64_t' ( const double)
0:? 4.000000
0:? 'float16_t_to_float64_t' ( const double)
0:? 42.000000
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
0:? -4.000000
Linked compute stage:
Shader version: 450
Requested GL_KHX_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
0:48 Function Definition: main( ( global void)
0:48 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
0:? 'int8_t_init' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_init' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_init' ( const int)
0:? -3 (const int)
0:? 'int64_t_init' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_init' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_init' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_init' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_init' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_init' ( const float16_t)
0:? 42.000000
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
0:? 'int8_t_to_bool' ( const bool)
0:? -1 (const int)
0:? 'int16_t_to_bool' ( const bool)
0:? -2 (const int)
0:? 'int32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'int64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint8_t_to_bool' ( const bool)
0:? 1 (const int)
0:? 'uint16_t_to_bool' ( const bool)
0:? 2 (const int)
0:? 'uint32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float16_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'bool_to_int8_t' ( const int8_t)
0:? true (const bool)
0:? 'int8_t_to_int8_t' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_to_int8_t' ( const int8_t)
0:? -2 (const int)
0:? 'int32_t_to_int8_t' ( const int8_t)
0:? -3 (const int)
0:? 'int64_t_to_int8_t' ( const int8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int8_t' ( const int8_t)
0:? 1 (const int)
0:? 'uint16_t_to_int8_t' ( const int8_t)
0:? 2 (const int)
0:? 'uint32_t_to_int8_t' ( const int8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int8_t' ( const int8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int8_t' ( const int8_t)
0:? 42.000000
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13.000000
0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4.000000
0:? 'bool_to_int16_t' ( const int16_t)
0:? true (const bool)
0:? 'int8_t_to_int16_t' ( const int16_t)
0:? -1 (const int)
0:? 'int16_t_to_int16_t' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_to_int16_t' ( const int16_t)
0:? -3 (const int)
0:? 'int64_t_to_int16_t' ( const int16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int16_t' ( const int16_t)
0:? 1 (const int)
0:? 'uint16_t_to_int16_t' ( const int16_t)
0:? 2 (const int)
0:? 'uint32_t_to_int16_t' ( const int16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int16_t' ( const int16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int16_t' ( const int16_t)
0:? 42.000000
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13.000000
0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4.000000
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
0:? -1 (const int)
0:? 'int16_t_to_int32_t' ( const int)
0:? -2 (const int)
0:? 'int32_t_to_int32_t' ( const int)
0:? -3 (const int)
0:? 'int64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'uint8_t_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'uint16_t_to_int32_t' ( const int)
0:? 2 (const int)
0:? 'uint32_t_to_int32_t' ( const int)
0:? 3 (const int)
0:? 'uint64_t_to_int32_t' ( const int)
0:? 4 (const int)
0:? 'float16_t_to_int32_t' ( const int)
0:? 42 (const int)
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
0:? -1 (const int)
0:? 'int16_t_to_int64_t' ( const int64_t)
0:? -2 (const int)
0:? 'int32_t_to_int64_t' ( const int64_t)
0:? -3 (const int64_t)
0:? 'int64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int64_t' ( const int64_t)
0:? 1 (const int)
0:? 'uint16_t_to_int64_t' ( const int64_t)
0:? 2 (const int)
0:? 'uint32_t_to_int64_t' ( const int64_t)
0:? 3 (const int64_t)
0:? 'uint64_t_to_int64_t' ( const int64_t)
0:? 4 (const int64_t)
0:? 'float16_t_to_int64_t' ( const int64_t)
0:? 42 (const int64_t)
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? true (const bool)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
0:? -1 (const int)
0:? 'int16_t_to_uint8_t' ( const uint8_t)
0:? -2 (const int)
0:? 'int32_t_to_uint8_t' ( const uint8_t)
0:? -3 (const int)
0:? 'int64_t_to_uint8_t' ( const uint8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint8_t' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint8_t' ( const uint8_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint8_t' ( const uint8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint8_t' ( const uint8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint8_t' ( const uint8_t)
0:? 42.000000
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13.000000
0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? -4.000000
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? true (const bool)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
0:? -1 (const int)
0:? 'int16_t_to_uint16_t' ( const uint16_t)
0:? -2 (const int)
0:? 'int32_t_to_uint16_t' ( const uint16_t)
0:? -3 (const int)
0:? 'int64_t_to_uint16_t' ( const uint16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint16_t' ( const uint16_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint16_t' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint16_t' ( const uint16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint16_t' ( const uint16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint16_t' ( const uint16_t)
0:? 42.000000
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13.000000
0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? -4.000000
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
0:? -1 (const int)
0:? 'int16_t_to_uint32_t' ( const uint)
0:? -2 (const int)
0:? 'int32_t_to_uint32_t' ( const uint)
0:? 4294967293 (const uint)
0:? 'int64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'uint8_t_to_uint32_t' ( const uint)
0:? 1 (const int)
0:? 'uint16_t_to_uint32_t' ( const uint)
0:? 2 (const int)
0:? 'uint32_t_to_uint32_t' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_to_uint32_t' ( const uint)
0:? 4 (const uint)
0:? 'float16_t_to_uint32_t' ( const uint)
0:? 42 (const uint)
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
0:? -1 (const int)
0:? 'int16_t_to_uint64_t' ( const uint64_t)
0:? -2 (const int)
0:? 'int32_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551613 (const uint64_t)
0:? 'int64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'uint8_t_to_uint64_t' ( const uint64_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint64_t' ( const uint64_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint64_t' ( const uint64_t)
0:? 3 (const uint64_t)
0:? 'uint64_t_to_uint64_t' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint64_t' ( const uint64_t)
0:? 42 (const uint64_t)
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
0:? -1 (const int)
0:? 'int16_t_to_float16_t' ( const float16_t)
0:? -2 (const int)
0:? 'int32_t_to_float16_t' ( const float16_t)
0:? -3.000000
0:? 'int64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'uint8_t_to_float16_t' ( const float16_t)
0:? 1 (const int)
0:? 'uint16_t_to_float16_t' ( const float16_t)
0:? 2 (const int)
0:? 'uint32_t_to_float16_t' ( const float16_t)
0:? 3.000000
0:? 'uint64_t_to_float16_t' ( const float16_t)
0:? 4.000000
0:? 'float16_t_to_float16_t' ( const float16_t)
0:? 42.000000
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
0:? -1 (const int)
0:? 'int16_t_to_float32_t' ( const float)
0:? -2 (const int)
0:? 'int32_t_to_float32_t' ( const float)
0:? -3.000000
0:? 'int64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'uint8_t_to_float32_t' ( const float)
0:? 1 (const int)
0:? 'uint16_t_to_float32_t' ( const float)
0:? 2 (const int)
0:? 'uint32_t_to_float32_t' ( const float)
0:? 3.000000
0:? 'uint64_t_to_float32_t' ( const float)
0:? 4.000000
0:? 'float16_t_to_float32_t' ( const float)
0:? 42.000000
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
0:? -1 (const int)
0:? 'int16_t_to_float64_t' ( const double)
0:? -2 (const int)
0:? 'int32_t_to_float64_t' ( const double)
0:? -3.000000
0:? 'int64_t_to_float64_t' ( const double)
0:? -4.000000
0:? 'uint8_t_to_float64_t' ( const double)
0:? 1 (const int)
0:? 'uint16_t_to_float64_t' ( const double)
0:? 2 (const int)
0:? 'uint32_t_to_float64_t' ( const double)
0:? 3.000000
0:? 'uint64_t_to_float64_t' ( const double)
0:? 4.000000
0:? 'float16_t_to_float64_t' ( const double)
0:? 42.000000
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
0:? -4.000000

View File

@ -323,10 +323,6 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's type.
OpStore %size %20
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 114
@ -370,13 +366,13 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
16(sbuf): TypeStruct 15
17: TypePointer Uniform 16(sbuf)
18(sbuf): 17(ptr) Variable Uniform
19: TypeInt 32 1
21: 19(int) Constant 0
23: 19(int) Constant 2
20: TypeInt 32 1
21: 20(int) Constant 0
23: 20(int) Constant 2
25: TypePointer Uniform 6(int)
29: TypePointer Function 19(int)
29: TypePointer Function 20(int)
32: 6(int) Constant 4
39: 19(int) Constant 1
39: 20(int) Constant 1
43: TypeVector 6(int) 2
45: TypeVector 8(float) 2
47: 8(float) Constant 0
@ -384,7 +380,7 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
69: TypeVector 6(int) 3
71: TypeVector 8(float) 3
80: 6(int) Constant 12
95: 19(int) Constant 3
95: 20(int) Constant 3
99: TypeVector 6(int) 4
106: TypePointer Input 6(int)
107(pos): 106(ptr) Variable Input
@ -409,22 +405,22 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
30(byteAddrTemp): 29(ptr) Variable Function
53(byteAddrTemp): 29(ptr) Variable Function
78(byteAddrTemp): 29(ptr) Variable Function
20: 19(int) ArrayLength 18(sbuf) 0
Store 14(size) 20
19: 6(int) ArrayLength 18(sbuf) 0
Store 14(size) 19
22: 6(int) Load 11(pos)
24: 19(int) ShiftRightLogical 22 23
24: 20(int) ShiftRightLogical 22 23
26: 25(ptr) AccessChain 18(sbuf) 21 24
27: 6(int) Load 26
28: 8(float) ConvertUToF 27
31: 6(int) Load 11(pos)
33: 6(int) IAdd 31 32
34: 19(int) ShiftRightLogical 33 23
34: 20(int) ShiftRightLogical 33 23
Store 30(byteAddrTemp) 34
35: 19(int) Load 30(byteAddrTemp)
35: 20(int) Load 30(byteAddrTemp)
36: 25(ptr) AccessChain 18(sbuf) 21 35
37: 6(int) Load 36
38: 19(int) Load 30(byteAddrTemp)
40: 19(int) IAdd 38 39
38: 20(int) Load 30(byteAddrTemp)
40: 20(int) IAdd 38 39
41: 25(ptr) AccessChain 18(sbuf) 21 40
42: 6(int) Load 41
44: 43(ivec2) CompositeConstruct 37 42
@ -436,17 +432,17 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
52: 9(fvec4) FAdd 51 50
54: 6(int) Load 11(pos)
56: 6(int) IAdd 54 55
57: 19(int) ShiftRightLogical 56 23
57: 20(int) ShiftRightLogical 56 23
Store 53(byteAddrTemp) 57
58: 19(int) Load 53(byteAddrTemp)
58: 20(int) Load 53(byteAddrTemp)
59: 25(ptr) AccessChain 18(sbuf) 21 58
60: 6(int) Load 59
61: 19(int) Load 53(byteAddrTemp)
62: 19(int) IAdd 61 39
61: 20(int) Load 53(byteAddrTemp)
62: 20(int) IAdd 61 39
63: 25(ptr) AccessChain 18(sbuf) 21 62
64: 6(int) Load 63
65: 19(int) Load 53(byteAddrTemp)
66: 19(int) IAdd 65 23
65: 20(int) Load 53(byteAddrTemp)
66: 20(int) IAdd 65 23
67: 25(ptr) AccessChain 18(sbuf) 21 66
68: 6(int) Load 67
70: 69(ivec3) CompositeConstruct 60 64 68
@ -458,21 +454,21 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
77: 9(fvec4) FAdd 52 76
79: 6(int) Load 11(pos)
81: 6(int) IAdd 79 80
82: 19(int) ShiftRightLogical 81 23
82: 20(int) ShiftRightLogical 81 23
Store 78(byteAddrTemp) 82
83: 19(int) Load 78(byteAddrTemp)
83: 20(int) Load 78(byteAddrTemp)
84: 25(ptr) AccessChain 18(sbuf) 21 83
85: 6(int) Load 84
86: 19(int) Load 78(byteAddrTemp)
87: 19(int) IAdd 86 39
86: 20(int) Load 78(byteAddrTemp)
87: 20(int) IAdd 86 39
88: 25(ptr) AccessChain 18(sbuf) 21 87
89: 6(int) Load 88
90: 19(int) Load 78(byteAddrTemp)
91: 19(int) IAdd 90 23
90: 20(int) Load 78(byteAddrTemp)
91: 20(int) IAdd 90 23
92: 25(ptr) AccessChain 18(sbuf) 21 91
93: 6(int) Load 92
94: 19(int) Load 78(byteAddrTemp)
96: 19(int) IAdd 94 95
94: 20(int) Load 78(byteAddrTemp)
96: 20(int) IAdd 94 95
97: 25(ptr) AccessChain 18(sbuf) 21 96
98: 6(int) Load 97
100: 99(ivec4) CompositeConstruct 85 89 93 98

View File

@ -175,10 +175,6 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '26[size]'s type does not match Object <id> '33's type.
OpStore %size %33
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 78
@ -276,7 +272,7 @@ error: OpStore Pointer <id> '26[size]'s type does not match Object <id> '33's ty
22: 6(int) IAdd 20 21
25: 24(ptr) AccessChain 17(sbuf2) 19 22
Store 25 23
33: 18(int) ArrayLength 32(sbuf) 0
33: 6(int) ArrayLength 32(sbuf) 0
Store 26(size) 33
Store 34(stride) 35
36: 6(int) Load 11(pos)

View File

@ -187,10 +187,6 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '43[size]'s type does not match Object <id> '44's type.
OpStore %size %44
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 96
@ -312,7 +308,7 @@ error: OpStore Pointer <id> '43[size]'s type does not match Object <id> '44's ty
41: 15(bool) INotEqual 39 35
42: 37(ptr) AccessChain 18(mydata) 40
Store 42 41
44: 24(int) ArrayLength 23(sbuf) 0
44: 6(int) ArrayLength 23(sbuf) 0
Store 43(size) 44
Store 45(stride) 46
47: 6(int) Load 11(pos)

View File

@ -175,10 +175,6 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '26[size]'s type does not match Object <id> '33's type.
OpStore %size %33
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 78
@ -274,7 +270,7 @@ error: OpStore Pointer <id> '26[size]'s type does not match Object <id> '33's ty
22: 6(int) IAdd 20 21
25: 24(ptr) AccessChain 17(sbuf2) 19 22
Store 25 23
33: 18(int) ArrayLength 32(sbuf) 0
33: 6(int) ArrayLength 32(sbuf) 0
Store 26(size) 33
Store 34(stride) 35
36: 6(int) Load 11(pos)

View File

@ -1003,10 +1003,6 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) flat in uint)
error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's type.
OpStore %size %20
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 239
@ -1053,18 +1049,18 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
16(sbuf): TypeStruct 15
17: TypePointer Uniform 16(sbuf)
18(sbuf): 17(ptr) Variable Uniform
19: TypeInt 32 1
21: TypePointer Function 19(int)
24: 19(int) Constant 2
26: 19(int) Constant 0
20: TypeInt 32 1
21: TypePointer Function 20(int)
24: 20(int) Constant 2
26: 20(int) Constant 0
30: TypePointer Uniform 6(int)
45: 19(int) Constant 1
45: 20(int) Constant 1
49: TypeVector 6(int) 2
51: 6(int) Constant 0
66: 6(int) Constant 1
87: TypeVector 6(int) 3
125: 6(int) Constant 2
147: 19(int) Constant 3
147: 20(int) Constant 3
151: TypeVector 6(int) 4
219: 6(int) Constant 3
231: TypePointer Input 6(int)
@ -1094,46 +1090,46 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
73(byteAddrTemp): 21(ptr) Variable Function
128(byteAddrTemp): 21(ptr) Variable Function
132(byteAddrTemp): 21(ptr) Variable Function
20: 19(int) ArrayLength 18(sbuf) 0
Store 14(size) 20
19: 6(int) ArrayLength 18(sbuf) 0
Store 14(size) 19
23: 6(int) Load 11(pos)
25: 19(int) ShiftRightLogical 23 24
25: 20(int) ShiftRightLogical 23 24
Store 22(byteAddrTemp) 25
27: 19(int) Load 22(byteAddrTemp)
27: 20(int) Load 22(byteAddrTemp)
28: 6(int) Load 11(pos)
29: 19(int) ShiftRightLogical 28 24
29: 20(int) ShiftRightLogical 28 24
31: 30(ptr) AccessChain 18(sbuf) 26 29
32: 6(int) Load 31
33: 30(ptr) AccessChain 18(sbuf) 26 27
Store 33 32
35: 6(int) Load 11(pos)
36: 19(int) ShiftRightLogical 35 24
36: 20(int) ShiftRightLogical 35 24
Store 34(byteAddrTemp) 36
37: 19(int) Load 34(byteAddrTemp)
37: 20(int) Load 34(byteAddrTemp)
39: 6(int) Load 11(pos)
40: 19(int) ShiftRightLogical 39 24
40: 20(int) ShiftRightLogical 39 24
Store 38(byteAddrTemp) 40
41: 19(int) Load 38(byteAddrTemp)
41: 20(int) Load 38(byteAddrTemp)
42: 30(ptr) AccessChain 18(sbuf) 26 41
43: 6(int) Load 42
44: 19(int) Load 38(byteAddrTemp)
46: 19(int) IAdd 44 45
44: 20(int) Load 38(byteAddrTemp)
46: 20(int) IAdd 44 45
47: 30(ptr) AccessChain 18(sbuf) 26 46
48: 6(int) Load 47
50: 49(ivec2) CompositeConstruct 43 48
52: 6(int) CompositeExtract 50 0
53: 30(ptr) AccessChain 18(sbuf) 26 37
Store 53 52
54: 19(int) Load 34(byteAddrTemp)
55: 19(int) IAdd 54 45
54: 20(int) Load 34(byteAddrTemp)
55: 20(int) IAdd 54 45
56: 6(int) Load 11(pos)
57: 19(int) ShiftRightLogical 56 24
57: 20(int) ShiftRightLogical 56 24
Store 38(byteAddrTemp) 57
58: 19(int) Load 38(byteAddrTemp)
58: 20(int) Load 38(byteAddrTemp)
59: 30(ptr) AccessChain 18(sbuf) 26 58
60: 6(int) Load 59
61: 19(int) Load 38(byteAddrTemp)
62: 19(int) IAdd 61 45
61: 20(int) Load 38(byteAddrTemp)
62: 20(int) IAdd 61 45
63: 30(ptr) AccessChain 18(sbuf) 26 62
64: 6(int) Load 63
65: 49(ivec2) CompositeConstruct 60 64
@ -1141,61 +1137,61 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
68: 30(ptr) AccessChain 18(sbuf) 26 55
Store 68 67
70: 6(int) Load 11(pos)
71: 19(int) ShiftRightLogical 70 24
71: 20(int) ShiftRightLogical 70 24
Store 69(byteAddrTemp) 71
72: 19(int) Load 69(byteAddrTemp)
72: 20(int) Load 69(byteAddrTemp)
74: 6(int) Load 11(pos)
75: 19(int) ShiftRightLogical 74 24
75: 20(int) ShiftRightLogical 74 24
Store 73(byteAddrTemp) 75
76: 19(int) Load 73(byteAddrTemp)
76: 20(int) Load 73(byteAddrTemp)
77: 30(ptr) AccessChain 18(sbuf) 26 76
78: 6(int) Load 77
79: 19(int) Load 73(byteAddrTemp)
80: 19(int) IAdd 79 45
79: 20(int) Load 73(byteAddrTemp)
80: 20(int) IAdd 79 45
81: 30(ptr) AccessChain 18(sbuf) 26 80
82: 6(int) Load 81
83: 19(int) Load 73(byteAddrTemp)
84: 19(int) IAdd 83 24
83: 20(int) Load 73(byteAddrTemp)
84: 20(int) IAdd 83 24
85: 30(ptr) AccessChain 18(sbuf) 26 84
86: 6(int) Load 85
88: 87(ivec3) CompositeConstruct 78 82 86
89: 6(int) CompositeExtract 88 0
90: 30(ptr) AccessChain 18(sbuf) 26 72
Store 90 89
91: 19(int) Load 69(byteAddrTemp)
92: 19(int) IAdd 91 45
91: 20(int) Load 69(byteAddrTemp)
92: 20(int) IAdd 91 45
93: 6(int) Load 11(pos)
94: 19(int) ShiftRightLogical 93 24
94: 20(int) ShiftRightLogical 93 24
Store 73(byteAddrTemp) 94
95: 19(int) Load 73(byteAddrTemp)
95: 20(int) Load 73(byteAddrTemp)
96: 30(ptr) AccessChain 18(sbuf) 26 95
97: 6(int) Load 96
98: 19(int) Load 73(byteAddrTemp)
99: 19(int) IAdd 98 45
98: 20(int) Load 73(byteAddrTemp)
99: 20(int) IAdd 98 45
100: 30(ptr) AccessChain 18(sbuf) 26 99
101: 6(int) Load 100
102: 19(int) Load 73(byteAddrTemp)
103: 19(int) IAdd 102 24
102: 20(int) Load 73(byteAddrTemp)
103: 20(int) IAdd 102 24
104: 30(ptr) AccessChain 18(sbuf) 26 103
105: 6(int) Load 104
106: 87(ivec3) CompositeConstruct 97 101 105
107: 6(int) CompositeExtract 106 1
108: 30(ptr) AccessChain 18(sbuf) 26 92
Store 108 107
109: 19(int) Load 69(byteAddrTemp)
110: 19(int) IAdd 109 24
109: 20(int) Load 69(byteAddrTemp)
110: 20(int) IAdd 109 24
111: 6(int) Load 11(pos)
112: 19(int) ShiftRightLogical 111 24
112: 20(int) ShiftRightLogical 111 24
Store 73(byteAddrTemp) 112
113: 19(int) Load 73(byteAddrTemp)
113: 20(int) Load 73(byteAddrTemp)
114: 30(ptr) AccessChain 18(sbuf) 26 113
115: 6(int) Load 114
116: 19(int) Load 73(byteAddrTemp)
117: 19(int) IAdd 116 45
116: 20(int) Load 73(byteAddrTemp)
117: 20(int) IAdd 116 45
118: 30(ptr) AccessChain 18(sbuf) 26 117
119: 6(int) Load 118
120: 19(int) Load 73(byteAddrTemp)
121: 19(int) IAdd 120 24
120: 20(int) Load 73(byteAddrTemp)
121: 20(int) IAdd 120 24
122: 30(ptr) AccessChain 18(sbuf) 26 121
123: 6(int) Load 122
124: 87(ivec3) CompositeConstruct 115 119 123
@ -1203,97 +1199,97 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
127: 30(ptr) AccessChain 18(sbuf) 26 110
Store 127 126
129: 6(int) Load 11(pos)
130: 19(int) ShiftRightLogical 129 24
130: 20(int) ShiftRightLogical 129 24
Store 128(byteAddrTemp) 130
131: 19(int) Load 128(byteAddrTemp)
131: 20(int) Load 128(byteAddrTemp)
133: 6(int) Load 11(pos)
134: 19(int) ShiftRightLogical 133 24
134: 20(int) ShiftRightLogical 133 24
Store 132(byteAddrTemp) 134
135: 19(int) Load 132(byteAddrTemp)
135: 20(int) Load 132(byteAddrTemp)
136: 30(ptr) AccessChain 18(sbuf) 26 135
137: 6(int) Load 136
138: 19(int) Load 132(byteAddrTemp)
139: 19(int) IAdd 138 45
138: 20(int) Load 132(byteAddrTemp)
139: 20(int) IAdd 138 45
140: 30(ptr) AccessChain 18(sbuf) 26 139
141: 6(int) Load 140
142: 19(int) Load 132(byteAddrTemp)
143: 19(int) IAdd 142 24
142: 20(int) Load 132(byteAddrTemp)
143: 20(int) IAdd 142 24
144: 30(ptr) AccessChain 18(sbuf) 26 143
145: 6(int) Load 144
146: 19(int) Load 132(byteAddrTemp)
148: 19(int) IAdd 146 147
146: 20(int) Load 132(byteAddrTemp)
148: 20(int) IAdd 146 147
149: 30(ptr) AccessChain 18(sbuf) 26 148
150: 6(int) Load 149
152: 151(ivec4) CompositeConstruct 137 141 145 150
153: 6(int) CompositeExtract 152 0
154: 30(ptr) AccessChain 18(sbuf) 26 131
Store 154 153
155: 19(int) Load 128(byteAddrTemp)
156: 19(int) IAdd 155 45
155: 20(int) Load 128(byteAddrTemp)
156: 20(int) IAdd 155 45
157: 6(int) Load 11(pos)
158: 19(int) ShiftRightLogical 157 24
158: 20(int) ShiftRightLogical 157 24
Store 132(byteAddrTemp) 158
159: 19(int) Load 132(byteAddrTemp)
159: 20(int) Load 132(byteAddrTemp)
160: 30(ptr) AccessChain 18(sbuf) 26 159
161: 6(int) Load 160
162: 19(int) Load 132(byteAddrTemp)
163: 19(int) IAdd 162 45
162: 20(int) Load 132(byteAddrTemp)
163: 20(int) IAdd 162 45
164: 30(ptr) AccessChain 18(sbuf) 26 163
165: 6(int) Load 164
166: 19(int) Load 132(byteAddrTemp)
167: 19(int) IAdd 166 24
166: 20(int) Load 132(byteAddrTemp)
167: 20(int) IAdd 166 24
168: 30(ptr) AccessChain 18(sbuf) 26 167
169: 6(int) Load 168
170: 19(int) Load 132(byteAddrTemp)
171: 19(int) IAdd 170 147
170: 20(int) Load 132(byteAddrTemp)
171: 20(int) IAdd 170 147
172: 30(ptr) AccessChain 18(sbuf) 26 171
173: 6(int) Load 172
174: 151(ivec4) CompositeConstruct 161 165 169 173
175: 6(int) CompositeExtract 174 1
176: 30(ptr) AccessChain 18(sbuf) 26 156
Store 176 175
177: 19(int) Load 128(byteAddrTemp)
178: 19(int) IAdd 177 24
177: 20(int) Load 128(byteAddrTemp)
178: 20(int) IAdd 177 24
179: 6(int) Load 11(pos)
180: 19(int) ShiftRightLogical 179 24
180: 20(int) ShiftRightLogical 179 24
Store 132(byteAddrTemp) 180
181: 19(int) Load 132(byteAddrTemp)
181: 20(int) Load 132(byteAddrTemp)
182: 30(ptr) AccessChain 18(sbuf) 26 181
183: 6(int) Load 182
184: 19(int) Load 132(byteAddrTemp)
185: 19(int) IAdd 184 45
184: 20(int) Load 132(byteAddrTemp)
185: 20(int) IAdd 184 45
186: 30(ptr) AccessChain 18(sbuf) 26 185
187: 6(int) Load 186
188: 19(int) Load 132(byteAddrTemp)
189: 19(int) IAdd 188 24
188: 20(int) Load 132(byteAddrTemp)
189: 20(int) IAdd 188 24
190: 30(ptr) AccessChain 18(sbuf) 26 189
191: 6(int) Load 190
192: 19(int) Load 132(byteAddrTemp)
193: 19(int) IAdd 192 147
192: 20(int) Load 132(byteAddrTemp)
193: 20(int) IAdd 192 147
194: 30(ptr) AccessChain 18(sbuf) 26 193
195: 6(int) Load 194
196: 151(ivec4) CompositeConstruct 183 187 191 195
197: 6(int) CompositeExtract 196 2
198: 30(ptr) AccessChain 18(sbuf) 26 178
Store 198 197
199: 19(int) Load 128(byteAddrTemp)
200: 19(int) IAdd 199 147
199: 20(int) Load 128(byteAddrTemp)
200: 20(int) IAdd 199 147
201: 6(int) Load 11(pos)
202: 19(int) ShiftRightLogical 201 24
202: 20(int) ShiftRightLogical 201 24
Store 132(byteAddrTemp) 202
203: 19(int) Load 132(byteAddrTemp)
203: 20(int) Load 132(byteAddrTemp)
204: 30(ptr) AccessChain 18(sbuf) 26 203
205: 6(int) Load 204
206: 19(int) Load 132(byteAddrTemp)
207: 19(int) IAdd 206 45
206: 20(int) Load 132(byteAddrTemp)
207: 20(int) IAdd 206 45
208: 30(ptr) AccessChain 18(sbuf) 26 207
209: 6(int) Load 208
210: 19(int) Load 132(byteAddrTemp)
211: 19(int) IAdd 210 24
210: 20(int) Load 132(byteAddrTemp)
211: 20(int) IAdd 210 24
212: 30(ptr) AccessChain 18(sbuf) 26 211
213: 6(int) Load 212
214: 19(int) Load 132(byteAddrTemp)
215: 19(int) IAdd 214 147
214: 20(int) Load 132(byteAddrTemp)
215: 20(int) IAdd 214 147
216: 30(ptr) AccessChain 18(sbuf) 26 215
217: 6(int) Load 216
218: 151(ivec4) CompositeConstruct 205 209 213 217
@ -1301,7 +1297,7 @@ error: OpStore Pointer <id> '14[size]'s type does not match Object <id> '20's ty
221: 30(ptr) AccessChain 18(sbuf) 26 200
Store 221 220
222: 6(int) Load 11(pos)
223: 19(int) ShiftRightLogical 222 24
223: 20(int) ShiftRightLogical 222 24
224: 30(ptr) AccessChain 18(sbuf) 26 223
225: 6(int) Load 224
226: 8(float) ConvertUToF 225

View File

@ -1,8 +1,4 @@
spv.150.geom
error: SPIRV-Tools Validation Errors
error: Capability GeometryStreams is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability GeometryStreams
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 71

View File

@ -1,7 +1,7 @@
spv.16bitstorage-int.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 171
// Id's are bound by 172
Capability Shader
Capability StorageUniformBufferBlock16
@ -204,7 +204,10 @@ spv.16bitstorage-int.frag
114: 20(int) Constant 7
115: 20(int) Constant 6
116: TypePointer Uniform 20(int)
166: 39(ivec2) ConstantComposite 32 33
166: 6(int16_t) Constant 1
167: 6(int16_t) Constant 2
168: 7(i16vec2) ConstantComposite 166 167
170: 6(int16_t) Constant 3
4(main): 2 Function None 3
5: Label
69(x0): 68(ptr) Variable Function
@ -324,11 +327,9 @@ spv.16bitstorage-int.frag
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
169: 42(ptr) AccessChain 19(b2) 32
Store 169 168
171: 28(ptr) AccessChain 19(b2) 21
Store 171 170
Return
FunctionEnd

View File

@ -205,8 +205,10 @@ spv.16bitstorage-uint.frag
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
167: 6(int16_t) Constant 1
168: 6(int16_t) Constant 2
169: 7(i16vec2) ConstantComposite 167 168
171: 6(int16_t) Constant 3
4(main): 2 Function None 3
5: Label
69(x0): 68(ptr) Variable Function
@ -326,10 +328,8 @@ spv.16bitstorage-uint.frag
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
170: 42(ptr) AccessChain 19(b2) 32
Store 170 169
172: 28(ptr) AccessChain 19(b2) 21
Store 172 171
Return

View File

@ -1,7 +1,7 @@
spv.16bitstorage.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 173
// Id's are bound by 172
Capability Shader
Capability StorageUniformBufferBlock16
@ -204,9 +204,10 @@ spv.16bitstorage.frag
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
166:6(float16_t) Constant 15360
167:6(float16_t) Constant 16384
168: 7(f16vec2) ConstantComposite 166 167
170:6(float16_t) Constant 16896
4(main): 2 Function None 3
5: Label
70(x0): 69(ptr) Variable Function
@ -326,11 +327,9 @@ spv.16bitstorage.frag
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
171: 28(ptr) AccessChain 19(b2) 21
Store 171 170
Return
FunctionEnd

View File

@ -1,14 +1,14 @@
spv.310.comp
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 71
// Id's are bound by 72
Capability Shader
Capability DeviceGroup
Extension "SPV_KHR_device_group"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 53 64
EntryPoint GLCompute 4 "main" 53 65
ExecutionMode 4 LocalSize 16 32 4
Source ESSL 310
SourceExtension "GL_EXT_device_group"
@ -30,7 +30,7 @@ spv.310.comp
MemberName 48(outs) 1 "va"
Name 50 "outnames"
Name 53 "gl_LocalInvocationID"
Name 64 "gl_DeviceIndex"
Name 65 "gl_DeviceIndex"
Decorate 11 ArrayStride 16
MemberDecorate 12(outb) 0 Offset 0
MemberDecorate 12(outb) 1 Offset 4
@ -48,8 +48,8 @@ spv.310.comp
Decorate 48(outs) BufferBlock
Decorate 50(outnames) DescriptorSet 0
Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 64(gl_DeviceIndex) BuiltIn DeviceIndex
Decorate 70 BuiltIn WorkgroupSize
Decorate 65(gl_DeviceIndex) BuiltIn DeviceIndex
Decorate 71 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -89,15 +89,15 @@ spv.310.comp
52: TypePointer Input 51(ivec3)
53(gl_LocalInvocationID): 52(ptr) Variable Input
54: TypePointer Input 6(int)
61: TypePointer Uniform 15(int)
63: TypePointer Input 15(int)
64(gl_DeviceIndex): 63(ptr) Variable Input
65: 6(int) Constant 1
66: 6(int) Constant 3400
67: 6(int) Constant 16
68: 6(int) Constant 32
69: 6(int) Constant 4
70: 51(ivec3) ConstantComposite 67 68 69
62: TypePointer Uniform 15(int)
64: TypePointer Input 15(int)
65(gl_DeviceIndex): 64(ptr) Variable Input
66: 6(int) Constant 1
67: 6(int) Constant 3400
68: 6(int) Constant 16
69: 6(int) Constant 32
70: 6(int) Constant 4
71: 51(ivec3) ConstantComposite 68 69 70
4(main): 2 Function None 3
5: Label
ControlBarrier 7 7 8
@ -124,10 +124,11 @@ spv.310.comp
58: 22(fvec4) CompositeConstruct 57 57 57 57
59: 29(ptr) AccessChain 50(outnames) 26 56
Store 59 58
60: 15(int) ArrayLength 14(outbname) 3
62: 61(ptr) AccessChain 50(outnames) 16
Store 62 60
MemoryBarrier 65 8
MemoryBarrier 7 66
60: 6(int) ArrayLength 14(outbname) 3
61: 15(int) Bitcast 60
63: 62(ptr) AccessChain 50(outnames) 16
Store 63 61
MemoryBarrier 66 8
MemoryBarrier 7 67
Return
FunctionEnd

View File

@ -1,8 +1,4 @@
spv.420.geom
error: SPIRV-Tools Validation Errors
error: Capability GeometryStreams is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability GeometryStreams
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 72

View File

@ -1,7 +1,7 @@
spv.8bitstorage-int.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 171
// Id's are bound by 172
Capability Shader
Capability CapabilityUniformAndStorageBuffer8BitAccess
@ -203,7 +203,10 @@ spv.8bitstorage-int.frag
114: 20(int) Constant 7
115: 20(int) Constant 6
116: TypePointer Uniform 20(int)
166: 39(ivec2) ConstantComposite 32 33
166: 6(int8_t) Constant 1
167: 6(int8_t) Constant 2
168: 7(i8vec2) ConstantComposite 166 167
170: 6(int8_t) Constant 3
4(main): 2 Function None 3
5: Label
69(x0): 68(ptr) Variable Function
@ -323,11 +326,9 @@ spv.8bitstorage-int.frag
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
169: 42(ptr) AccessChain 19(b2) 32
Store 169 168
171: 28(ptr) AccessChain 19(b2) 21
Store 171 170
Return
FunctionEnd

View File

@ -204,8 +204,10 @@ spv.8bitstorage-uint.frag
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
167: 6(int8_t) Constant 1
168: 6(int8_t) Constant 2
169: 7(i8vec2) ConstantComposite 167 168
171: 6(int8_t) Constant 3
4(main): 2 Function None 3
5: Label
69(x0): 68(ptr) Variable Function
@ -325,10 +327,8 @@ spv.8bitstorage-uint.frag
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
170: 42(ptr) AccessChain 19(b2) 32
Store 170 169
172: 28(ptr) AccessChain 19(b2) 21
Store 172 171
Return

View File

@ -1,8 +1,4 @@
spv.builtInXFB.vert
error: SPIRV-Tools Validation Errors
error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability TransformFeedback
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 21

View File

@ -0,0 +1,45 @@
spv.fragmentDensity-es.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 18
Capability Shader
Capability FragmentDensityEXT
Extension "SPV_EXT_fragment_invocation_density"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 11 14 16
ExecutionMode 4 OriginUpperLeft
Source ESSL 310
SourceExtension "GL_EXT_fragment_invocation_density"
Name 4 "main"
Name 9 "FragSize"
Name 11 "gl_FragSizeEXT"
Name 14 "FragInvocationCount"
Name 16 "gl_FragInvocationCountEXT"
Decorate 9(FragSize) Location 0
Decorate 11(gl_FragSizeEXT) Flat
Decorate 11(gl_FragSizeEXT) BuiltIn FragSizeEXT
Decorate 14(FragInvocationCount) Location 2
Decorate 16(gl_FragInvocationCountEXT) Flat
Decorate 16(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypeVector 6(int) 2
8: TypePointer Output 7(ivec2)
9(FragSize): 8(ptr) Variable Output
10: TypePointer Input 7(ivec2)
11(gl_FragSizeEXT): 10(ptr) Variable Input
13: TypePointer Output 6(int)
14(FragInvocationCount): 13(ptr) Variable Output
15: TypePointer Input 6(int)
16(gl_FragInvocationCountEXT): 15(ptr) Variable Input
4(main): 2 Function None 3
5: Label
12: 7(ivec2) Load 11(gl_FragSizeEXT)
Store 9(FragSize) 12
17: 6(int) Load 16(gl_FragInvocationCountEXT)
Store 14(FragInvocationCount) 17
Return
FunctionEnd

View File

@ -0,0 +1,7 @@
spv.fragmentDensity-neg.frag
ERROR: 0:10: 'gl_FragSizeEXT' : required extension not requested: GL_EXT_fragment_invocation_density
ERROR: 0:11: 'gl_FragInvocationCountEXT' : required extension not requested: GL_EXT_fragment_invocation_density
ERROR: 2 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

View File

@ -0,0 +1,48 @@
spv.fragmentDensity.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 21
Capability Shader
Capability FragmentDensityEXT
Extension "SPV_EXT_fragment_invocation_density"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 13 17 19
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_EXT_fragment_invocation_density"
Name 4 "main"
Name 9 "FragSize"
Name 13 "gl_FragSizeEXT"
Name 17 "FragInvocationCount"
Name 19 "gl_FragInvocationCountEXT"
Decorate 9(FragSize) Location 0
Decorate 13(gl_FragSizeEXT) Flat
Decorate 13(gl_FragSizeEXT) BuiltIn FragSizeEXT
Decorate 17(FragInvocationCount) Location 2
Decorate 19(gl_FragInvocationCountEXT) Flat
Decorate 19(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 2
8: TypePointer Output 7(fvec2)
9(FragSize): 8(ptr) Variable Output
10: TypeInt 32 1
11: TypeVector 10(int) 2
12: TypePointer Input 11(ivec2)
13(gl_FragSizeEXT): 12(ptr) Variable Input
16: TypePointer Output 10(int)
17(FragInvocationCount): 16(ptr) Variable Output
18: TypePointer Input 10(int)
19(gl_FragInvocationCountEXT): 18(ptr) Variable Input
4(main): 2 Function None 3
5: Label
14: 11(ivec2) Load 13(gl_FragSizeEXT)
15: 7(fvec2) ConvertSToF 14
Store 9(FragSize) 15
20: 10(int) Load 19(gl_FragInvocationCountEXT)
Store 17(FragInvocationCount) 20
Return
FunctionEnd

View File

@ -0,0 +1,9 @@
spv.fragmentDensity.vert
ERROR: 0:10: 'gl_FragSizeEXT' : undeclared identifier
ERROR: 0:10: 'assign' : cannot convert from ' temp float' to 'layout( location=0) smooth out highp 2-component vector of uint'
ERROR: 0:11: 'gl_FragInvocationCountEXT' : undeclared identifier
ERROR: 0:11: 'assign' : cannot convert from ' temp float' to 'layout( location=2) smooth out highp int'
ERROR: 4 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

View File

@ -4,7 +4,7 @@ spv.shadingRate.frag
// Id's are bound by 21
Capability Shader
Capability ShadingRateNV
Capability FragmentDensityEXT
Extension "SPV_NV_shading_rate"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@ -19,10 +19,10 @@ spv.shadingRate.frag
Name 19 "gl_InvocationsPerPixelNV"
Decorate 9(FragmentSize) Location 0
Decorate 13(gl_FragmentSizeNV) Flat
Decorate 13(gl_FragmentSizeNV) BuiltIn FragmentSizeNV
Decorate 13(gl_FragmentSizeNV) BuiltIn FragSizeEXT
Decorate 17(InvocationsPerPixel) Location 2
Decorate 19(gl_InvocationsPerPixelNV) Flat
Decorate 19(gl_InvocationsPerPixelNV) BuiltIn InvocationsPerPixelNV
Decorate 19(gl_InvocationsPerPixelNV) BuiltIn FragInvocationCountEXT
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32

View File

@ -1,8 +1,4 @@
spv.xfb.vert
error: SPIRV-Tools Validation Errors
error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability TransformFeedback
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 16

View File

@ -1,8 +1,4 @@
spv.xfb2.vert
error: SPIRV-Tools Validation Errors
error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability TransformFeedback
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 35

View File

@ -1,8 +1,4 @@
spv.xfb3.vert
error: SPIRV-Tools Validation Errors
error: Capability TransformFeedback is not allowed by Vulkan 1.0 specification (or requires extension)
OpCapability TransformFeedback
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 35

View File

@ -0,0 +1,76 @@
spv.xfbOffsetOnBlockMembersAssignment.vert
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 33
Capability Shader
Capability TransformFeedback
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 10 27 31 32
ExecutionMode 4 Xfb
Source GLSL 450
Name 4 "main"
Name 8 "block2"
MemberName 8(block2) 0 "y1_out"
MemberName 8(block2) 1 "y2_out"
Name 10 ""
Name 25 "gl_PerVertex"
MemberName 25(gl_PerVertex) 0 "gl_Position"
MemberName 25(gl_PerVertex) 1 "gl_PointSize"
MemberName 25(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 25(gl_PerVertex) 3 "gl_CullDistance"
Name 27 ""
Name 31 "gl_VertexID"
Name 32 "gl_InstanceID"
MemberDecorate 8(block2) 0 Offset 0
MemberDecorate 8(block2) 1 Offset 4
Decorate 8(block2) Block
Decorate 10 Location 5
Decorate 10 XfbBuffer 2
Decorate 10 XfbStride 20
MemberDecorate 25(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 25(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 25(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 25(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 25(gl_PerVertex) Block
Decorate 27 XfbBuffer 0
Decorate 27 XfbStride 0
Decorate 31(gl_VertexID) BuiltIn VertexId
Decorate 32(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(block2): TypeStruct 6(float) 7(fvec4)
9: TypePointer Output 8(block2)
10: 9(ptr) Variable Output
11: TypeInt 32 1
12: 11(int) Constant 0
13: 6(float) Constant 1088421888
14: TypePointer Output 6(float)
16: 11(int) Constant 1
17: 6(float) Constant 1065353216
18: 6(float) Constant 0
19: 7(fvec4) ConstantComposite 17 18 18 17
20: TypePointer Output 7(fvec4)
22: TypeInt 32 0
23: 22(int) Constant 1
24: TypeArray 6(float) 23
25(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 24 24
26: TypePointer Output 25(gl_PerVertex)
27: 26(ptr) Variable Output
28: 7(fvec4) ConstantComposite 18 18 18 18
30: TypePointer Input 11(int)
31(gl_VertexID): 30(ptr) Variable Input
32(gl_InstanceID): 30(ptr) Variable Input
4(main): 2 Function None 3
5: Label
15: 14(ptr) AccessChain 10 12
Store 15 13
21: 20(ptr) AccessChain 10 16
Store 21 19
29: 20(ptr) AccessChain 27 12
Store 29 28
Return
FunctionEnd

View File

@ -0,0 +1,88 @@
spv.xfbOverlapOffsetCheckWithBlockAndMember.vert
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 39
Capability Shader
Capability TransformFeedback
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 10 33 37 38
ExecutionMode 4 Xfb
Source GLSL 450
Name 4 "main"
Name 8 "block2"
MemberName 8(block2) 0 "v"
MemberName 8(block2) 1 "u"
MemberName 8(block2) 2 "w"
MemberName 8(block2) 3 "x"
Name 10 ""
Name 31 "gl_PerVertex"
MemberName 31(gl_PerVertex) 0 "gl_Position"
MemberName 31(gl_PerVertex) 1 "gl_PointSize"
MemberName 31(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 31(gl_PerVertex) 3 "gl_CullDistance"
Name 33 ""
Name 37 "gl_VertexID"
Name 38 "gl_InstanceID"
MemberDecorate 8(block2) 0 Offset 12
MemberDecorate 8(block2) 1 Offset 28
MemberDecorate 8(block2) 2 Offset 40
MemberDecorate 8(block2) 3 Offset 56
Decorate 8(block2) Block
Decorate 10 Location 5
Decorate 10 XfbBuffer 3
Decorate 10 XfbStride 72
MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 31(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 31(gl_PerVertex) Block
Decorate 33 XfbBuffer 0
Decorate 33 XfbStride 0
Decorate 37(gl_VertexID) BuiltIn VertexId
Decorate 38(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(block2): TypeStruct 7(fvec4) 6(float) 7(fvec4) 7(fvec4)
9: TypePointer Output 8(block2)
10: 9(ptr) Variable Output
11: TypeInt 32 1
12: 11(int) Constant 0
13: 6(float) Constant 1065353216
14: 6(float) Constant 0
15: 7(fvec4) ConstantComposite 13 14 13 14
16: TypePointer Output 7(fvec4)
18: 11(int) Constant 1
19: 6(float) Constant 1084227584
20: TypePointer Output 6(float)
22: 11(int) Constant 2
23: 7(fvec4) ConstantComposite 13 14 14 13
25: 11(int) Constant 3
26: 7(fvec4) ConstantComposite 19 14 14 14
28: TypeInt 32 0
29: 28(int) Constant 1
30: TypeArray 6(float) 29
31(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 30 30
32: TypePointer Output 31(gl_PerVertex)
33: 32(ptr) Variable Output
34: 7(fvec4) ConstantComposite 14 14 14 14
36: TypePointer Input 11(int)
37(gl_VertexID): 36(ptr) Variable Input
38(gl_InstanceID): 36(ptr) Variable Input
4(main): 2 Function None 3
5: Label
17: 16(ptr) AccessChain 10 12
Store 17 15
21: 20(ptr) AccessChain 10 18
Store 21 19
24: 16(ptr) AccessChain 10 22
Store 24 23
27: 16(ptr) AccessChain 10 25
Store 27 26
35: 16(ptr) AccessChain 33 12
Store 35 34
Return
FunctionEnd

View File

@ -0,0 +1,74 @@
spv.xfbStrideJustOnce.vert
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 33
Capability Shader
Capability TransformFeedback
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 10 27 31 32
ExecutionMode 4 Xfb
Source GLSL 450
Name 4 "main"
Name 8 "block"
MemberName 8(block) 0 "y1_out"
MemberName 8(block) 1 "y2_out"
Name 10 ""
Name 25 "gl_PerVertex"
MemberName 25(gl_PerVertex) 0 "gl_Position"
MemberName 25(gl_PerVertex) 1 "gl_PointSize"
MemberName 25(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 25(gl_PerVertex) 3 "gl_CullDistance"
Name 27 ""
Name 31 "gl_VertexID"
Name 32 "gl_InstanceID"
Decorate 8(block) Block
Decorate 10 Location 5
Decorate 10 XfbBuffer 2
Decorate 10 XfbStride 20
MemberDecorate 25(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 25(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 25(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 25(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 25(gl_PerVertex) Block
Decorate 27 XfbBuffer 0
Decorate 27 XfbStride 0
Decorate 31(gl_VertexID) BuiltIn VertexId
Decorate 32(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(block): TypeStruct 6(float) 7(fvec4)
9: TypePointer Output 8(block)
10: 9(ptr) Variable Output
11: TypeInt 32 1
12: 11(int) Constant 0
13: 6(float) Constant 1088421888
14: TypePointer Output 6(float)
16: 11(int) Constant 1
17: 6(float) Constant 1065353216
18: 6(float) Constant 0
19: 7(fvec4) ConstantComposite 17 18 18 17
20: TypePointer Output 7(fvec4)
22: TypeInt 32 0
23: 22(int) Constant 1
24: TypeArray 6(float) 23
25(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 24 24
26: TypePointer Output 25(gl_PerVertex)
27: 26(ptr) Variable Output
28: 7(fvec4) ConstantComposite 18 18 18 18
30: TypePointer Input 11(int)
31(gl_VertexID): 30(ptr) Variable Input
32(gl_InstanceID): 30(ptr) Variable Input
4(main): 2 Function None 3
5: Label
15: 14(ptr) AccessChain 10 12
Store 15 13
21: 20(ptr) AccessChain 10 16
Store 21 19
29: 20(ptr) AccessChain 27 12
Store 29 28
Return
FunctionEnd

View File

@ -0,0 +1,48 @@
#version 450
#extension GL_KHX_shader_explicit_arithmetic_types : require
const bool bool_init = true;
const int8_t int8_t_init = int8_t(-1);
const int16_t int16_t_init = int16_t(-2);
const int32_t int32_t_init = int32_t(-3);
const int64_t int64_t_init = int64_t(-4);
const uint8_t uint8_t_init = uint8_t(1);
const uint16_t uint16_t_init = uint16_t(2);
const uint32_t uint32_t_init = uint32_t(3);
const uint64_t uint64_t_init = uint64_t(4);
const float16_t float16_t_init = float16_t(42.0);
const float32_t float32_t_init = float32_t(13.0);
const float64_t float64_t_init = float64_t(-4.0);
#define TYPE_TO_TYPE(x, y) \
const x y##_to_##x = x(y##_init)
#define TYPE_TO(x) \
TYPE_TO_TYPE(x, bool); \
TYPE_TO_TYPE(x, int8_t); \
TYPE_TO_TYPE(x, int16_t); \
TYPE_TO_TYPE(x, int32_t); \
TYPE_TO_TYPE(x, int64_t); \
TYPE_TO_TYPE(x, uint8_t); \
TYPE_TO_TYPE(x, uint16_t); \
TYPE_TO_TYPE(x, uint32_t); \
TYPE_TO_TYPE(x, uint64_t); \
TYPE_TO_TYPE(x, float16_t); \
TYPE_TO_TYPE(x, float32_t); \
TYPE_TO_TYPE(x, float64_t)
TYPE_TO(bool);
TYPE_TO(int8_t);
TYPE_TO(int16_t);
TYPE_TO(int32_t);
TYPE_TO(int64_t);
TYPE_TO(uint8_t);
TYPE_TO(uint16_t);
TYPE_TO(uint32_t);
TYPE_TO(uint64_t);
TYPE_TO(float16_t);
TYPE_TO(float32_t);
TYPE_TO(float64_t);
void main() {}

View File

@ -0,0 +1,11 @@
#version 310 es
#extension GL_EXT_fragment_invocation_density : require
layout (location = 0) out highp ivec2 FragSize;
layout (location = 2) out highp int FragInvocationCount;
void main () {
FragSize = gl_FragSizeEXT;
FragInvocationCount = gl_FragInvocationCountEXT;
}

View File

@ -0,0 +1,12 @@
#version 450
//make sure the builtins don't exist if the extension isn't enabled.
//#extension GL_EXT_fragment_invocation_density : require
layout (location = 0) out vec2 FragSize;
layout (location = 2) out int FragInvocationCount;
void main () {
FragSize = gl_FragSizeEXT;
FragInvocationCount = gl_FragInvocationCountEXT;
}

View File

@ -0,0 +1,11 @@
#version 450
#extension GL_EXT_fragment_invocation_density : require
layout (location = 0) out vec2 FragSize;
layout (location = 2) out int FragInvocationCount;
void main () {
FragSize = gl_FragSizeEXT;
FragInvocationCount = gl_FragInvocationCountEXT;
}

View File

@ -0,0 +1,12 @@
#version 450
// try using a fragment-only extension in a vertex shader
#extension GL_EXT_fragment_invocation_density : require
layout (location = 0) out uvec2 FragSize;
layout (location = 2) out int FragInvocationCount;
void main () {
FragSize = gl_FragSizeEXT;
FragInvocationCount = gl_FragInvocationCountEXT;
}

View File

@ -0,0 +1,13 @@
#version 450
layout(xfb_buffer=2) out;
layout(location=5, xfb_offset=0) out block2 {
float y1_out;
vec4 y2_out;
};
void main() {
y1_out = 7.0;
y2_out = vec4(1.0, 0.0, 0.0, 1.0);
gl_Position = vec4(0.0);
}

View File

@ -0,0 +1,19 @@
#version 450
/* block definition from GLSL spec 4.60, section 4.4.2, Output Layout Qualifiers */
layout(location=5, xfb_buffer = 3, xfb_offset = 12) out block2 {
vec4 v; // v will be written to byte offsets 12 through 27 of buffer
float u; // u will be written to offset 28
layout(xfb_offset = 40) vec4 w;
vec4 x; // x will be written to offset 56, the next available offset
};
void main() {
v = vec4(1.0, 0.0, 1.0, 0.0);
u = 5.0;
w = vec4(1.0, 0.0, 0.0, 1.0);
x = vec4(5.0, 0.0, 0.0, 0.0);
gl_Position = vec4(0.0);
}

View File

@ -0,0 +1,14 @@
#version 450
layout(xfb_buffer=2) out;
layout(location=5, xfb_stride=20) out block {
float y1_out;
vec4 y2_out;
};
void main() {
y1_out = 7.0;
y2_out = vec4(1.0, 0.0, 0.0, 1.0);
gl_Position = vec4(0.0);
}

View File

@ -232,6 +232,9 @@ enum TBuiltInVariable {
EbvViewIndex,
EbvDeviceIndex,
EbvFragSizeEXT,
EbvFragInvocationCountEXT,
#ifdef NV_EXTENSIONS
EbvViewportMaskNV,
EbvSecondaryPositionNV,
@ -404,6 +407,9 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
case EbvViewIndex: return "ViewIndex";
case EbvDeviceIndex: return "DeviceIndex";
case EbvFragSizeEXT: return "FragSizeEXT";
case EbvFragInvocationCountEXT: return "FragInvocationCountEXT";
#ifdef NV_EXTENSIONS
case EbvViewportMaskNV: return "ViewportMaskNV";
case EbvSecondaryPositionNV: return "SecondaryPositionNV";

View File

@ -1,3 +1,3 @@
// This header is generated by the make-revision script.
#define GLSLANG_PATCH_LEVEL 2992
#define GLSLANG_PATCH_LEVEL 3009

273
3rdparty/glslang/glslang/MachineIndependent/Constant.cpp vendored Normal file → Executable file
View File

@ -670,6 +670,279 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
break;
}
case EOpConvInt8ToBool:
newConstArray[i].setBConst(unionArray[i].getI8Const() != 0); break;
case EOpConvUint8ToBool:
newConstArray[i].setBConst(unionArray[i].getU8Const() != 0); break;
case EOpConvInt16ToBool:
newConstArray[i].setBConst(unionArray[i].getI16Const() != 0); break;
case EOpConvUint16ToBool:
newConstArray[i].setBConst(unionArray[i].getU16Const() != 0); break;
case EOpConvIntToBool:
newConstArray[i].setBConst(unionArray[i].getIConst() != 0); break;
case EOpConvUintToBool:
newConstArray[i].setBConst(unionArray[i].getUConst() != 0); break;
case EOpConvInt64ToBool:
newConstArray[i].setBConst(unionArray[i].getI64Const() != 0); break;
case EOpConvUint64ToBool:
newConstArray[i].setBConst(unionArray[i].getI64Const() != 0); break;
case EOpConvFloat16ToBool:
newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break;
case EOpConvFloatToBool:
newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break;
case EOpConvDoubleToBool:
newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break;
case EOpConvBoolToInt8:
newConstArray[i].setI8Const(unionArray[i].getBConst()); break;
case EOpConvBoolToUint8:
newConstArray[i].setU8Const(unionArray[i].getBConst()); break;
case EOpConvBoolToInt16:
newConstArray[i].setI16Const(unionArray[i].getBConst()); break;
case EOpConvBoolToUint16:
newConstArray[i].setU16Const(unionArray[i].getBConst()); break;
case EOpConvBoolToInt:
newConstArray[i].setIConst(unionArray[i].getBConst()); break;
case EOpConvBoolToUint:
newConstArray[i].setUConst(unionArray[i].getBConst()); break;
case EOpConvBoolToInt64:
newConstArray[i].setI64Const(unionArray[i].getBConst()); break;
case EOpConvBoolToUint64:
newConstArray[i].setU64Const(unionArray[i].getBConst()); break;
case EOpConvBoolToFloat16:
newConstArray[i].setDConst(unionArray[i].getBConst()); break;
case EOpConvBoolToFloat:
newConstArray[i].setDConst(unionArray[i].getBConst()); break;
case EOpConvBoolToDouble:
newConstArray[i].setDConst(unionArray[i].getBConst()); break;
case EOpConvInt8ToInt16:
newConstArray[i].setI16Const(unionArray[i].getI8Const()); break;
case EOpConvInt8ToInt:
newConstArray[i].setIConst(unionArray[i].getI8Const()); break;
case EOpConvInt8ToInt64:
newConstArray[i].setI64Const(unionArray[i].getI8Const()); break;
case EOpConvInt8ToUint8:
newConstArray[i].setU8Const(unionArray[i].getI8Const()); break;
case EOpConvInt8ToUint16:
newConstArray[i].setU16Const(unionArray[i].getI8Const()); break;
case EOpConvInt8ToUint:
newConstArray[i].setUConst(unionArray[i].getI8Const()); break;
case EOpConvInt8ToUint64:
newConstArray[i].setU64Const(unionArray[i].getI8Const()); break;
case EOpConvUint8ToInt8:
newConstArray[i].setI8Const(unionArray[i].getU8Const()); break;
case EOpConvUint8ToInt16:
newConstArray[i].setI16Const(unionArray[i].getU8Const()); break;
case EOpConvUint8ToInt:
newConstArray[i].setIConst(unionArray[i].getU8Const()); break;
case EOpConvUint8ToInt64:
newConstArray[i].setI64Const(unionArray[i].getU8Const()); break;
case EOpConvUint8ToUint16:
newConstArray[i].setU16Const(unionArray[i].getU8Const()); break;
case EOpConvUint8ToUint:
newConstArray[i].setUConst(unionArray[i].getU8Const()); break;
case EOpConvUint8ToUint64:
newConstArray[i].setU64Const(unionArray[i].getU8Const()); break;
case EOpConvInt8ToFloat16:
newConstArray[i].setDConst(unionArray[i].getI8Const()); break;
case EOpConvInt8ToFloat:
newConstArray[i].setDConst(unionArray[i].getI8Const()); break;
case EOpConvInt8ToDouble:
newConstArray[i].setDConst(unionArray[i].getI8Const()); break;
case EOpConvUint8ToFloat16:
newConstArray[i].setDConst(unionArray[i].getU8Const()); break;
case EOpConvUint8ToFloat:
newConstArray[i].setDConst(unionArray[i].getU8Const()); break;
case EOpConvUint8ToDouble:
newConstArray[i].setDConst(unionArray[i].getU8Const()); break;
case EOpConvInt16ToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getI16Const())); break;
case EOpConvInt16ToInt:
newConstArray[i].setIConst(unionArray[i].getI16Const()); break;
case EOpConvInt16ToInt64:
newConstArray[i].setI64Const(unionArray[i].getI16Const()); break;
case EOpConvInt16ToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getI16Const())); break;
case EOpConvInt16ToUint16:
newConstArray[i].setU16Const(unionArray[i].getI16Const()); break;
case EOpConvInt16ToUint:
newConstArray[i].setUConst(unionArray[i].getI16Const()); break;
case EOpConvInt16ToUint64:
newConstArray[i].setU64Const(unionArray[i].getI16Const()); break;
case EOpConvUint16ToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getU16Const())); break;
case EOpConvUint16ToInt16:
newConstArray[i].setI16Const(unionArray[i].getU16Const()); break;
case EOpConvUint16ToInt:
newConstArray[i].setIConst(unionArray[i].getU16Const()); break;
case EOpConvUint16ToInt64:
newConstArray[i].setI64Const(unionArray[i].getU16Const()); break;
case EOpConvUint16ToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getU16Const())); break;
case EOpConvUint16ToUint:
newConstArray[i].setUConst(unionArray[i].getU16Const()); break;
case EOpConvUint16ToUint64:
newConstArray[i].setU64Const(unionArray[i].getU16Const()); break;
case EOpConvInt16ToFloat16:
newConstArray[i].setDConst(unionArray[i].getI16Const()); break;
case EOpConvInt16ToFloat:
newConstArray[i].setDConst(unionArray[i].getI16Const()); break;
case EOpConvInt16ToDouble:
newConstArray[i].setDConst(unionArray[i].getI16Const()); break;
case EOpConvUint16ToFloat16:
newConstArray[i].setDConst(unionArray[i].getU16Const()); break;
case EOpConvUint16ToFloat:
newConstArray[i].setDConst(unionArray[i].getU16Const()); break;
case EOpConvUint16ToDouble:
newConstArray[i].setDConst(unionArray[i].getU16Const()); break;
case EOpConvIntToInt8:
newConstArray[i].setI8Const(unionArray[i].getIConst()); break;
case EOpConvIntToInt16:
newConstArray[i].setI16Const(unionArray[i].getIConst()); break;
case EOpConvIntToInt64:
newConstArray[i].setI64Const(unionArray[i].getIConst()); break;
case EOpConvIntToUint8:
newConstArray[i].setU8Const(unionArray[i].getIConst()); break;
case EOpConvIntToUint16:
newConstArray[i].setU16Const(unionArray[i].getIConst()); break;
case EOpConvIntToUint:
newConstArray[i].setUConst(unionArray[i].getIConst()); break;
case EOpConvIntToUint64:
newConstArray[i].setU64Const(unionArray[i].getIConst()); break;
case EOpConvUintToInt8:
newConstArray[i].setI8Const(unionArray[i].getUConst()); break;
case EOpConvUintToInt16:
newConstArray[i].setI16Const(unionArray[i].getUConst()); break;
case EOpConvUintToInt:
newConstArray[i].setIConst(unionArray[i].getUConst()); break;
case EOpConvUintToInt64:
newConstArray[i].setI64Const(unionArray[i].getUConst()); break;
case EOpConvUintToUint8:
newConstArray[i].setU8Const(unionArray[i].getUConst()); break;
case EOpConvUintToUint16:
newConstArray[i].setU16Const(unionArray[i].getUConst()); break;
case EOpConvUintToUint64:
newConstArray[i].setU64Const(unionArray[i].getUConst()); break;
case EOpConvIntToFloat16:
newConstArray[i].setDConst(unionArray[i].getIConst()); break;
case EOpConvIntToFloat:
newConstArray[i].setDConst(unionArray[i].getIConst()); break;
case EOpConvIntToDouble:
newConstArray[i].setDConst(unionArray[i].getIConst()); break;
case EOpConvUintToFloat16:
newConstArray[i].setDConst(unionArray[i].getUConst()); break;
case EOpConvUintToFloat:
newConstArray[i].setDConst(unionArray[i].getUConst()); break;
case EOpConvUintToDouble:
newConstArray[i].setDConst(unionArray[i].getUConst()); break;
case EOpConvInt64ToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToInt16:
newConstArray[i].setI16Const(static_cast<int16_t>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToInt:
newConstArray[i].setIConst(static_cast<int32_t>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToUint16:
newConstArray[i].setU16Const(static_cast<uint16_t>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToUint:
newConstArray[i].setUConst(static_cast<uint32_t>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToUint64:
newConstArray[i].setU64Const(unionArray[i].getI64Const()); break;
case EOpConvUint64ToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToInt16:
newConstArray[i].setI16Const(static_cast<int16_t>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToInt:
newConstArray[i].setIConst(static_cast<int32_t>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToInt64:
newConstArray[i].setI64Const(unionArray[i].getU64Const()); break;
case EOpConvUint64ToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToUint16:
newConstArray[i].setU16Const(static_cast<uint16_t>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToUint:
newConstArray[i].setUConst(static_cast<uint32_t>(unionArray[i].getU64Const())); break;
case EOpConvInt64ToFloat16:
newConstArray[i].setDConst(static_cast<double>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToFloat:
newConstArray[i].setDConst(static_cast<double>(unionArray[i].getI64Const())); break;
case EOpConvInt64ToDouble:
newConstArray[i].setDConst(static_cast<double>(unionArray[i].getI64Const())); break;
case EOpConvUint64ToFloat16:
newConstArray[i].setDConst(static_cast<double>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToFloat:
newConstArray[i].setDConst(static_cast<double>(unionArray[i].getU64Const())); break;
case EOpConvUint64ToDouble:
newConstArray[i].setDConst(static_cast<double>(unionArray[i].getU64Const())); break;
case EOpConvFloat16ToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToInt16:
newConstArray[i].setI16Const(static_cast<int16_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToInt:
newConstArray[i].setIConst(static_cast<int32_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToInt64:
newConstArray[i].setI64Const(static_cast<int64_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToUint16:
newConstArray[i].setU16Const(static_cast<uint16_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToUint:
newConstArray[i].setUConst(static_cast<uint32_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToUint64:
newConstArray[i].setU64Const(static_cast<uint64_t>(unionArray[i].getDConst())); break;
case EOpConvFloat16ToFloat:
newConstArray[i].setDConst(unionArray[i].getDConst()); break;
case EOpConvFloat16ToDouble:
newConstArray[i].setDConst(unionArray[i].getDConst()); break;
case EOpConvFloatToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToInt16:
newConstArray[i].setI16Const(static_cast<int16_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToInt:
newConstArray[i].setIConst(static_cast<int32_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToInt64:
newConstArray[i].setI64Const(static_cast<int64_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToUint16:
newConstArray[i].setU16Const(static_cast<uint16_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToUint:
newConstArray[i].setUConst(static_cast<uint32_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToUint64:
newConstArray[i].setU64Const(static_cast<uint64_t>(unionArray[i].getDConst())); break;
case EOpConvFloatToFloat16:
newConstArray[i].setDConst(unionArray[i].getDConst()); break;
case EOpConvFloatToDouble:
newConstArray[i].setDConst(unionArray[i].getDConst()); break;
case EOpConvDoubleToInt8:
newConstArray[i].setI8Const(static_cast<int8_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToInt16:
newConstArray[i].setI16Const(static_cast<int16_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToInt:
newConstArray[i].setIConst(static_cast<int32_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToInt64:
newConstArray[i].setI64Const(static_cast<int64_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToUint8:
newConstArray[i].setU8Const(static_cast<uint8_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToUint16:
newConstArray[i].setU16Const(static_cast<uint16_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToUint:
newConstArray[i].setUConst(static_cast<uint32_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToUint64:
newConstArray[i].setU64Const(static_cast<uint64_t>(unionArray[i].getDConst())); break;
case EOpConvDoubleToFloat16:
newConstArray[i].setDConst(unionArray[i].getDConst()); break;
case EOpConvDoubleToFloat:
newConstArray[i].setDConst(unionArray[i].getDConst()); break;
// TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out
case EOpSinh:

View File

@ -5939,6 +5939,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bool gl_HelperInvocation;" // needs qualifier fixed later
);
if (version >= 450)
stageBuiltins[EShLangFragment].append( // GL_EXT_fragment_invocation_density
"flat in ivec2 gl_FragSizeEXT;"
"flat in int gl_FragInvocationCountEXT;"
);
#ifdef AMD_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangFragment].append(
@ -5959,9 +5965,9 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
);
if (version >= 450)
stageBuiltins[EShLangFragment].append(
"flat in ivec2 gl_FragmentSizeNV;"
"flat in ivec2 gl_FragmentSizeNV;" // GL_NV_shading_rate_image
"flat in int gl_InvocationsPerPixelNV;"
"in vec3 gl_BaryCoordNV;"
"in vec3 gl_BaryCoordNV;" // GL_NV_fragment_shader_barycentric
"in vec3 gl_BaryCoordNoPerspNV;"
);
@ -6006,13 +6012,19 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
stageBuiltins[EShLangFragment].append(
"highp float gl_FragDepthEXT;" // GL_EXT_frag_depth
);
if (version >= 310)
stageBuiltins[EShLangFragment].append( // GL_EXT_fragment_invocation_density
"flat in ivec2 gl_FragSizeEXT;"
"flat in int gl_FragInvocationCountEXT;"
);
#ifdef NV_EXTENSIONS
if (version >= 320)
stageBuiltins[EShLangFragment].append(
stageBuiltins[EShLangFragment].append( // GL_NV_shading_rate_image
"flat in ivec2 gl_FragmentSizeNV;"
"flat in int gl_InvocationsPerPixelNV;"
);
if (version >= 320)
if (version >= 320)
stageBuiltins[EShLangFragment].append(
"in vec3 gl_BaryCoordNV;"
"in vec3 gl_BaryCoordNoPerspNV;"
@ -8342,6 +8354,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
#endif
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 310)) {
symbolTable.setVariableExtensions("gl_FragSizeEXT", 1, &E_GL_EXT_fragment_invocation_density);
symbolTable.setVariableExtensions("gl_FragInvocationCountEXT", 1, &E_GL_EXT_fragment_invocation_density);
BuiltInVariable("gl_FragSizeEXT", EbvFragSizeEXT, symbolTable);
BuiltInVariable("gl_FragInvocationCountEXT", EbvFragInvocationCountEXT, symbolTable);
}
symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth);
if (profile == EEsProfile && version < 320) {

View File

@ -489,7 +489,7 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
// This is 'mechanism' here, it does any conversion told.
// It is about basic type, not about shape.
// The policy comes from the shader or the calling code.
TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const
TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const
{
//
// Add a new newNode for the conversion.
@ -712,7 +712,11 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
TType newType(convertTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows());
newNode = addUnaryNode(newOp, node, node->getLoc(), newType);
// TODO: it seems that some unary folding operations should occur here, but are not
if (node->getAsConstantUnion()) {
TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType);
if (folded)
return folded;
}
// Propagate specialization-constant-ness, if allowed
if (node->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*newNode))
@ -1021,7 +1025,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
//
// Add a new newNode for the conversion.
//
TIntermUnary* newNode = createConversion(promoteTo, node);
TIntermTyped* newNode = createConversion(promoteTo, node);
return newNode;
}

View File

@ -6873,6 +6873,16 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes);
// Ensure that the block has an XfbBuffer assigned. This is needed
// because if the block has a XfbOffset assigned, then it is
// assumed that it has implicitly assigned the current global
// XfbBuffer, and because it's members need to be assigned a
// XfbOffset if they lack it.
if (currentBlockQualifier.storage == EvqVaryingOut && globalOutputDefaults.hasXfbBuffer()) {
if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset())
currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer;
}
// Process the members
fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation);
fixXfbOffsets(currentBlockQualifier, typeList);

View File

@ -205,6 +205,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_EXT_nonuniform_qualifier] = EBhDisable;
extensionBehavior[E_GL_EXT_samplerless_texture_functions] = EBhDisable;
extensionBehavior[E_GL_EXT_scalar_block_layout] = EBhDisable;
extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable;
@ -380,6 +381,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_EXT_shader_8bit_storage 1\n"
"#define GL_EXT_samplerless_texture_functions 1\n"
"#define GL_EXT_scalar_block_layout 1\n"
"#define GL_EXT_fragment_invocation_density 1\n"
// GL_KHR_shader_subgroup
"#define GL_KHR_shader_subgroup_basic 1\n"

View File

@ -167,6 +167,7 @@ const char* const E_GL_EXT_control_flow_attributes = "GL_EXT_control_fl
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";
const char* const E_GL_EXT_scalar_block_layout = "GL_EXT_scalar_block_layout";
const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density";
// Arrays of extensions for the above viewportEXTs duplications

View File

@ -732,7 +732,7 @@ protected:
bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&);
void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root);
bool isConversionAllowed(TOperator op, TIntermTyped* node) const;
TIntermUnary* createConversion(TBasicType convertTo, TIntermTyped* node) const;
TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const;
std::tuple<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
bool extensionRequested(const char *extension) const {return requestedExtensions.find(extension) != requestedExtensions.end();}
static const char* getResourceName(TResourceType);

View File

@ -231,6 +231,7 @@ INSTANTIATE_TEST_CASE_P(
"precise_struct_block.vert",
"maxClipDistances.vert",
"findFunction.frag",
"constantUnaryConversion.comp"
})),
FileNameAsCustomTestSuffix
);

View File

@ -271,6 +271,10 @@ INSTANTIATE_TEST_CASE_P(
"spv.flowControl.frag",
"spv.forLoop.frag",
"spv.forwardFun.frag",
"spv.fragmentDensity.frag",
"spv.fragmentDensity.vert",
"spv.fragmentDensity-es.frag",
"spv.fragmentDensity-neg.frag",
"spv.fullyCovered.frag",
"spv.functionCall.frag",
"spv.functionNestedOpaque.vert",
@ -443,7 +447,10 @@ INSTANTIATE_TEST_CASE_P(
"spv.rankShift.comp",
"spv.specConst.vert",
"spv.OVR_multiview.vert",
"spv.xfbOffsetOnBlockMembersAssignment.vert",
"spv.xfbOffsetOnStructMembersAssignment.vert",
"spv.xfbOverlapOffsetCheckWithBlockAndMember.vert",
"spv.xfbStrideJustOnce.vert",
})),
FileNameAsCustomTestSuffix
);

View File

@ -5,14 +5,14 @@
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Tools",
"subdir" : "External/spirv-tools",
"commit" : "8e9be303b00ba352ee25dbcd352769641637a853"
"commit" : "d543f7dfed9ba02910996121375e57fff92c3c93"
},
{
"name" : "spirv-tools/external/spirv-headers",
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Headers",
"subdir" : "External/spirv-tools/external/spirv-headers",
"commit" : "a2c529b5dda18838ab4b52f816acfebd774eaab3"
"commit" : "282879ca34563020dbe73fd8f7d45bed6755626a"
}
]
}

12
3rdparty/glslang/ndk_test/Android.mk vendored Normal file
View File

@ -0,0 +1,12 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := .cc .cpp .cxx
LOCAL_SRC_FILES:=test.cpp
LOCAL_MODULE:=glslang_ndk_test
LOCAL_LDLIBS:=-landroid
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror
LOCAL_STATIC_LIBRARIES:=glslang SPIRV HLSL
include $(BUILD_SHARED_LIBRARY)
include $(LOCAL_PATH)/../Android.mk

View File

@ -0,0 +1,5 @@
APP_ABI := all
APP_BUILD_SCRIPT := Android.mk
APP_STL := gnustl_static
APP_PLATFORM := android-9
NDK_TOOLCHAIN_VERSION := 4.9

19
3rdparty/glslang/ndk_test/test.cpp vendored Normal file
View File

@ -0,0 +1,19 @@
// Copyright 2018 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "SPIRV/GlslangToSpv.h"
void android_main(struct android_app* state) {
int version = glslang::GetSpirvGeneratorVersion();
}