diff options
author | Greg Fischer <greg@lunarg.com> | 2022-03-25 14:36:01 -0600 |
---|---|---|
committer | Greg Fischer <greg@lunarg.com> | 2022-03-25 14:36:01 -0600 |
commit | b7968b7dbc554a93a27c216306c72e5970f5b133 (patch) | |
tree | 93e0805d8a424b8da349d3844771a77688543eba | |
parent | f1d286fcc27136ca61b294b7510f453ac2baefea (diff) | |
download | glslang-b7968b7dbc554a93a27c216306c72e5970f5b133.tar.gz |
Generate Int8, Int16 and Float16 capabilities for constants
Fixes #2905
-rw-r--r-- | SPIRV/GlslangToSpv.cpp | 10 | ||||
-rw-r--r-- | Test/baseResults/spv.constConstruct.vert.out | 4 |
2 files changed, 13 insertions, 1 deletions
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 39941d37..6cdf2346 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -9078,15 +9078,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const())); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const())); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const())); break; case glslang::EbtInt64: @@ -9099,6 +9103,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; #endif @@ -9127,15 +9132,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant); break; case glslang::EbtInt64: @@ -9148,6 +9157,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtReference: diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out index db637a94..a8d50975 100644 --- a/Test/baseResults/spv.constConstruct.vert.out +++ b/Test/baseResults/spv.constConstruct.vert.out @@ -1,12 +1,14 @@ spv.constConstruct.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 150 Capability Shader + Capability Float16 Capability Float64 Capability Int64 + Capability Int16 + Capability Int8 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" |