Merge pull request #1025 from amdrexu/feature

SPV: Implement extension SPV_EXT_shader_stencil_export
This commit is contained in:
John Kessenich 2017-08-23 17:58:31 -06:00 committed by GitHub
commit 00b3e384a3
5 changed files with 15 additions and 5 deletions

View File

@ -42,5 +42,6 @@ static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shade
static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage"; static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage";
static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class"; static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage"; static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage";
static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shader_stencil_export";
#endif // #ifndef GLSLextKHR_H #endif // #ifndef GLSLextKHR_H

View File

@ -522,8 +522,9 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
return spv::BuiltInPrimitiveId; return spv::BuiltInPrimitiveId;
case glslang::EbvFragStencilRef: case glslang::EbvFragStencilRef:
logger->missingFunctionality("shader stencil export"); builder.addExtension(spv::E_SPV_EXT_shader_stencil_export);
return spv::BuiltInMax; builder.addCapability(spv::CapabilityStencilExportEXT);
return spv::BuiltInFragStencilRefEXT;
case glslang::EbvInvocationId: return spv::BuiltInInvocationId; case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner; case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;

View File

@ -331,6 +331,7 @@ const char* BuiltInString(int builtIn)
case 4424: return "BaseVertex"; case 4424: return "BaseVertex";
case 4425: return "BaseInstance"; case 4425: return "BaseInstance";
case 4426: return "DrawIndex"; case 4426: return "DrawIndex";
case 5014: return "FragStencilRefEXT";
#ifdef AMD_EXTENSIONS #ifdef AMD_EXTENSIONS
case 4992: return "BaryCoordNoPerspAMD"; case 4992: return "BaryCoordNoPerspAMD";
@ -842,6 +843,8 @@ const char* CapabilityString(int info)
case 4437: return "DeviceGroup"; case 4437: return "DeviceGroup";
case 4439: return "MultiView"; case 4439: return "MultiView";
case 5013: return "StencilExportEXT";
#ifdef AMD_EXTENSIONS #ifdef AMD_EXTENSIONS
case 5009: return "ImageGatherBiasLodAMD"; case 5009: return "ImageGatherBiasLodAMD";
#endif #endif

View File

@ -47,11 +47,11 @@ namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 0x10000 #define SPV_VERSION 0x10000
#define SPV_REVISION 11 #define SPV_REVISION 12
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000; static const unsigned int Version = 0x00010000;
static const unsigned int Revision = 11; static const unsigned int Revision = 12;
static const unsigned int OpCodeMask = 0xffff; static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
@ -444,6 +444,7 @@ enum BuiltIn {
BuiltInBaryCoordSmoothCentroidAMD = 4996, BuiltInBaryCoordSmoothCentroidAMD = 4996,
BuiltInBaryCoordSmoothSampleAMD = 4997, BuiltInBaryCoordSmoothSampleAMD = 4997,
BuiltInBaryCoordPullModelAMD = 4998, BuiltInBaryCoordPullModelAMD = 4998,
BuiltInFragStencilRefEXT = 5014,
BuiltInViewportMaskNV = 5253, BuiltInViewportMaskNV = 5253,
BuiltInSecondaryPositionNV = 5257, BuiltInSecondaryPositionNV = 5257,
BuiltInSecondaryViewportMaskNV = 5258, BuiltInSecondaryViewportMaskNV = 5258,
@ -640,8 +641,10 @@ enum Capability {
CapabilityAtomicStorageOps = 4445, CapabilityAtomicStorageOps = 4445,
CapabilitySampleMaskPostDepthCoverage = 4447, CapabilitySampleMaskPostDepthCoverage = 4447,
CapabilityImageGatherBiasLodAMD = 5009, CapabilityImageGatherBiasLodAMD = 5009,
CapabilityStencilExportEXT = 5013,
CapabilitySampleMaskOverrideCoverageNV = 5249, CapabilitySampleMaskOverrideCoverageNV = 5249,
CapabilityGeometryShaderPassthroughNV = 5251, CapabilityGeometryShaderPassthroughNV = 5251,
CapabilityShaderViewportIndexLayerEXT = 5254,
CapabilityShaderViewportIndexLayerNV = 5254, CapabilityShaderViewportIndexLayerNV = 5254,
CapabilityShaderViewportMaskNV = 5255, CapabilityShaderViewportMaskNV = 5255,
CapabilityShaderStereoViewNV = 5259, CapabilityShaderStereoViewNV = 5259,

View File

@ -1,10 +1,11 @@
spv.shaderStencilExport.frag spv.shaderStencilExport.frag
Missing functionality: shader stencil export
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 10 // Id's are bound by 10
Capability Shader Capability Shader
Capability StencilExportEXT
Extension "SPV_EXT_shader_stencil_export"
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 8 EntryPoint Fragment 4 "main" 8
@ -13,6 +14,7 @@ Missing functionality: shader stencil export
SourceExtension "GL_ARB_shader_stencil_export" SourceExtension "GL_ARB_shader_stencil_export"
Name 4 "main" Name 4 "main"
Name 8 "gl_FragStencilRefARB" Name 8 "gl_FragStencilRefARB"
Decorate 8(gl_FragStencilRefARB) BuiltIn FragStencilRefEXT
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1