浏览代码

spirv: Generate missing SampleMaskOverrideCoverageNV capability op

The SampleMaskOverrideCoverageNV capability should be declared when
gl_SampleMask is used.
Jason Macnak 6 年之前
父节点
当前提交
dbd4c3ce11
共有 4 个文件被更改,包括 4 次插入1 次删除
  1. 1 0
      SPIRV/GlslangToSpv.cpp
  2. 1 0
      SPIRV/disassemble.cpp
  3. 1 0
      SPIRV/doc.cpp
  4. 1 1
      Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out

+ 1 - 0
SPIRV/GlslangToSpv.cpp

@@ -7738,6 +7738,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
               decoration = (spv::Decoration)spv::DecorationMax;
         builder.addDecoration(id, decoration);
         if (decoration != spv::DecorationMax) {
+            builder.addCapability(spv::CapabilitySampleMaskOverrideCoverageNV);
             builder.addExtension(spv::E_SPV_NV_sample_mask_override_coverage);
         }
     }

+ 1 - 0
SPIRV/disassemble.cpp

@@ -734,6 +734,7 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
         case CapabilityFragmentBarycentricNV:       return "FragmentBarycentricNV";
         case CapabilityMeshShadingNV:               return "MeshShadingNV";
         case CapabilityImageFootprintNV:            return "ImageFootprintNV";
+        case CapabilitySampleMaskOverrideCoverageNV:return "SampleMaskOverrideCoverageNV";
 
         // NV Decorations
         case DecorationOverrideCoverageNV:          return "OverrideCoverageNV";

+ 1 - 0
SPIRV/doc.cpp

@@ -926,6 +926,7 @@ const char* CapabilityString(int info)
     case CapabilityMeshShadingNV:                   return "MeshShadingNV";
     case CapabilityImageFootprintNV:                return "ImageFootprintNV";
 //    case CapabilityShadingRateNV:                   return "ShadingRateNV";  // superseded by FragmentDensityEXT
+    case CapabilitySampleMaskOverrideCoverageNV:    return "SampleMaskOverrideCoverageNV";
 #endif
     case CapabilityFragmentDensityEXT:              return "FragmentDensityEXT";
 

+ 1 - 1
Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out

@@ -1,10 +1,10 @@
 spv.sampleMaskOverrideCoverage.frag
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 80007
 // Id's are bound by 20
 
                               Capability Shader
+                              Capability SampleMaskOverrideCoverageNV
                               Extension  "SPV_NV_sample_mask_override_coverage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450