This commit is contained in:
Tex Riddell 2019-07-12 19:19:14 -07:00
Родитель 7a085056f8
Коммит 397a67082e
5 изменённых файлов: 16 добавлений и 11 удалений

Просмотреть файл

@ -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[];

Просмотреть файл

@ -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.

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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;
}