2
0
Эх сурвалжийг харах

Misc cleanup during review

Tex Riddell 6 жил өмнө
parent
commit
397a67082e

+ 1 - 4
include/dxc/DXIL/DxilMetadataHelper.h

@@ -197,10 +197,7 @@ public:
   // TemplateArgument tags
   static const unsigned kDxilTemplateArgTypeTag                   = 0;  // Type template argument, followed by undef of type
   static const unsigned kDxilTemplateArgIntegralTag               = 1;  // Integral template argument, followed by i64 value
-  // TemplateArgType
-  static const unsigned kDxilTemplateArgType                      = 1;  // Position of type for template arg that is type
-  static const unsigned kDxilTemplateArgIntegral                  = 1;  // Position of i64 for template arg that is integral
-
+  static const unsigned kDxilTemplateArgValue                     = 1;  // Position of template arg value (type or int)
 
   // Control flow hint.
   static const char kDxilControlFlowHintMDName[];

+ 3 - 3
include/dxc/DXIL/DxilShaderFlags.h

@@ -108,10 +108,10 @@ namespace hlsl {
     void SetShadingRate(bool flag) { m_bShadingRate = flag; }
     bool GetShadingRate() const { return m_bShadingRate; }
 
-	void SetRaytracingTier1_1(bool flag) { m_bRaytracingTier1_1 = flag; }
+    void SetRaytracingTier1_1(bool flag) { m_bRaytracingTier1_1 = flag; }
     bool GetRaytracingTier1_1() const { return m_bRaytracingTier1_1; }
 
-	void SetSamplerFeedback(bool flag) { m_bSamplerFeedback = flag; }
+    void SetSamplerFeedback(bool flag) { m_bSamplerFeedback = flag; }
     bool GetSamplerFeedback() const { return m_bSamplerFeedback; }
 
   private:
@@ -149,7 +149,7 @@ namespace hlsl {
 
     unsigned m_bShadingRate : 1;      // SHADER_FEATURE_SHADINGRATE
 
-	unsigned m_bRaytracingTier1_1 : 1; // SHADER_FEATURE_RAYTRACING_TIER_1_1
+    unsigned m_bRaytracingTier1_1 : 1; // SHADER_FEATURE_RAYTRACING_TIER_1_1
     unsigned m_bSamplerFeedback : 1; // SHADER_FEATURE_SAMPLER_FEEDBACK
 
     unsigned m_align0 : 5;        // align to 32 bit.

+ 2 - 2
lib/DXIL/DxilMetadataHelper.cpp

@@ -795,11 +795,11 @@ void DxilMDHelper::LoadDxilTemplateArgAnnotation(const llvm::MDOperand &MDO, Dxi
   case kDxilTemplateArgTypeTag:
     IFTBOOL(pTupleMD->getNumOperands() == 2, DXC_E_INCORRECT_DXIL_METADATA);
     annotation.SetType(MetadataAsValue::get(m_Ctx,
-      pTupleMD->getOperand(kDxilTemplateArgType))->getType());
+      pTupleMD->getOperand(kDxilTemplateArgValue))->getType());
     break;
   case kDxilTemplateArgIntegralTag:
     IFTBOOL(pTupleMD->getNumOperands() == 2, DXC_E_INCORRECT_DXIL_METADATA);
-    annotation.SetIntegral((int64_t)ConstMDToUint64(pTupleMD->getOperand(kDxilTemplateArgType)));
+    annotation.SetIntegral((int64_t)ConstMDToUint64(pTupleMD->getOperand(kDxilTemplateArgValue)));
     break;
   }
 }

+ 1 - 1
lib/DXIL/DxilUtil.cpp

@@ -565,7 +565,7 @@ bool IsHLSLRayQueryType(llvm::Type *Ty) {
   if (llvm::StructType *ST = dyn_cast<llvm::StructType>(Ty)) {
     StringRef name = ST->getName();
     // TODO: don't check names.
-    name = name.ltrim("class.");
+    ConsumePrefix(name, "class.");
     if (name.startswith("RayQuery<"))
       return true;
   }

+ 9 - 1
lib/HLSL/DxilContainerReflection.cpp

@@ -2171,7 +2171,15 @@ UINT DxilShaderReflection::GetThreadGroupSize(UINT *pSizeX, UINT *pSizeY, UINT *
 }
 
 UINT64 DxilShaderReflection::GetRequiresFlags() {
-  return m_pDxilModule->m_ShaderFlags.GetFeatureInfo();
+  UINT64 result = m_pDxilModule->m_ShaderFlags.GetFeatureInfo();
+  // FeatureInfo flags are identical, with the exception of a collision between:
+  // SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X
+  // and D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL
+  // We keep track of the flag elsewhere, so use that instead.
+  result &= ~(UINT64)D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL;
+  if (m_pDxilModule->m_ShaderFlags.GetForceEarlyDepthStencil())
+    result |= D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL;
+  return result;
 }