Skip to content

Commit 45692c0

Browse files
PipelineStateBase: don't use auto where not necessary
1 parent 088da89 commit 45692c0

File tree

1 file changed

+44
-45
lines changed

1 file changed

+44
-45
lines changed

Graphics/GraphicsEngine/include/PipelineStateBase.hpp

Lines changed: 44 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2024 Diligent Graphics LLC
2+
* Copyright 2019-2025 Diligent Graphics LLC
33
* Copyright 2015-2019 Egor Yusov
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -545,7 +545,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
545545
VERIFY_EXPR(this->m_Desc.IsRayTracingPipeline());
546546
VERIFY_EXPR(m_pRayTracingPipelineData != nullptr);
547547

548-
const auto ShaderHandleSize = m_pRayTracingPipelineData->ShaderHandleSize;
548+
const Uint32 ShaderHandleSize = m_pRayTracingPipelineData->ShaderHandleSize;
549549
VERIFY(ShaderHandleSize <= DataSize, "DataSize (", DataSize, ") must be at least as large as the shader handle size (", ShaderHandleSize, ").");
550550

551551
if (Name == nullptr || Name[0] == '\0')
@@ -707,7 +707,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
707707
return;
708708
}
709709

710-
auto* pDstSign = static_cast<PipelineStateImplType*>(pDstPipeline)->GetResourceSignature(0);
710+
PipelineResourceSignatureImplType* pDstSign = static_cast<PipelineStateImplType*>(pDstPipeline)->GetResourceSignature(0);
711711
return this->GetResourceSignature(0)->CopyStaticResources(pDstSign);
712712
}
713713

@@ -738,17 +738,17 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
738738
RefCntAutoPtr<PipelineStateImplType> pPSOImpl{const_cast<IPipelineState*>(pPSO), PipelineStateImplType::IID_InternalImpl};
739739
VERIFY(pPSOImpl, "Unknown PSO implementation type");
740740

741-
const auto& lhs = *static_cast<const PipelineStateImplType*>(this);
742-
const auto& rhs = *pPSOImpl;
741+
const PipelineStateImplType& lhs = *static_cast<const PipelineStateImplType*>(this);
742+
const PipelineStateImplType& rhs = *pPSOImpl;
743743

744-
const auto SignCount = lhs.GetResourceSignatureCount();
744+
const Uint32 SignCount = lhs.GetResourceSignatureCount();
745745
if (SignCount != rhs.GetResourceSignatureCount())
746746
return false;
747747

748748
for (Uint32 s = 0; s < SignCount; ++s)
749749
{
750-
const auto* pLhsSign = GetResourceSignature(s);
751-
const auto* pRhsSign = rhs.GetResourceSignature(s);
750+
const PipelineResourceSignatureImplType* pLhsSign = GetResourceSignature(s);
751+
const PipelineResourceSignatureImplType* pRhsSign = rhs.GetResourceSignature(s);
752752
if (!PipelineResourceSignatureImplType::SignaturesCompatible(pLhsSign, pRhsSign))
753753
return false;
754754
}
@@ -782,14 +782,14 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
782782
ReserveResourceLayout(CreateInfo.PSODesc.ResourceLayout, MemPool);
783783
ReserveResourceSignatures(CreateInfo, MemPool);
784784

785-
const auto& InputLayout = CreateInfo.GraphicsPipeline.InputLayout;
785+
const InputLayoutDesc& InputLayout = CreateInfo.GraphicsPipeline.InputLayout;
786786
if (InputLayout.NumElements > 0)
787787
{
788788
Uint32 BufferSlotsUsed = 0;
789789
MemPool.AddSpace<LayoutElement>(InputLayout.NumElements);
790790
for (Uint32 i = 0; i < InputLayout.NumElements; ++i)
791791
{
792-
auto& LayoutElem = InputLayout.LayoutElements[i];
792+
const LayoutElement& LayoutElem = InputLayout.LayoutElements[i];
793793
MemPool.AddSpaceForString(LayoutElem.HLSLSemantic);
794794
BufferSlotsUsed = std::max(BufferSlotsUsed, LayoutElem.BufferSlot + 1);
795795
}
@@ -812,7 +812,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
812812
{
813813
size_t RTDataSize = sizeof(RayTracingPipelineData);
814814
// Reserve space for shader handles
815-
const auto ShaderHandleSize = this->GetDevice()->GetAdapterInfo().RayTracing.ShaderGroupHandleSize;
815+
const Uint32 ShaderHandleSize = this->GetDevice()->GetAdapterInfo().RayTracing.ShaderGroupHandleSize;
816816
RTDataSize += size_t{ShaderHandleSize} *
817817
(size_t{CreateInfo.GeneralShaderCount} +
818818
size_t{CreateInfo.TriangleHitShaderCount} +
@@ -846,12 +846,11 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
846846
ReserveResourceSignatures(CreateInfo, MemPool);
847847
}
848848

849-
public:
850849
protected:
851850
template <typename ShaderImplType, typename PSOCreateInfoType>
852851
void Construct(const PSOCreateInfoType& CreateInfo)
853852
{
854-
auto* const pThisImpl = static_cast<PipelineStateImplType*>(this);
853+
PipelineStateImplType* const pThisImpl = static_cast<PipelineStateImplType*>(this);
855854

856855
m_Status.store(PIPELINE_STATE_STATUS_COMPILING);
857856
if ((CreateInfo.Flags & PSO_CREATE_FLAG_ASYNCHRONOUS) != 0 && this->m_pDevice->GetShaderCompilationThreadPool() != nullptr)
@@ -937,10 +936,10 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
937936
void* Ptr = MemPool.ReleaseOwnership();
938937
VERIFY_EXPR(Ptr == m_pPipelineDataRawMem);
939938

940-
auto& GraphicsPipeline = this->m_pGraphicsPipelineData->Desc;
941-
auto& pRenderPass = this->m_pGraphicsPipelineData->pRenderPass;
942-
auto& BufferSlotsUsed = this->m_pGraphicsPipelineData->BufferSlotsUsed;
943-
auto& pStrides = this->m_pGraphicsPipelineData->pStrides;
939+
GraphicsPipelineDesc& GraphicsPipeline = this->m_pGraphicsPipelineData->Desc;
940+
RefCntAutoPtr<IRenderPass>& pRenderPass = this->m_pGraphicsPipelineData->pRenderPass;
941+
Uint8& BufferSlotsUsed = this->m_pGraphicsPipelineData->BufferSlotsUsed;
942+
Uint32*& pStrides = this->m_pGraphicsPipelineData->pStrides;
944943

945944
GraphicsPipeline = CreateInfo.GraphicsPipeline;
946945
CorrectGraphicsPipelineDesc(GraphicsPipeline, this->GetDevice()->GetDeviceInfo().Features);
@@ -951,14 +950,14 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
951950
pRenderPass = GraphicsPipeline.pRenderPass;
952951
if (pRenderPass)
953952
{
954-
const auto& RPDesc = pRenderPass->GetDesc();
953+
const RenderPassDesc& RPDesc = pRenderPass->GetDesc();
955954
VERIFY_EXPR(GraphicsPipeline.SubpassIndex < RPDesc.SubpassCount);
956-
const auto& Subpass = pRenderPass.template RawPtr<RenderPassImplType>()->GetSubpass(GraphicsPipeline.SubpassIndex);
955+
const SubpassDesc& Subpass = pRenderPass.template RawPtr<RenderPassImplType>()->GetSubpass(GraphicsPipeline.SubpassIndex);
957956

958957
GraphicsPipeline.NumRenderTargets = static_cast<Uint8>(Subpass.RenderTargetAttachmentCount);
959958
for (Uint32 rt = 0; rt < Subpass.RenderTargetAttachmentCount; ++rt)
960959
{
961-
const auto& RTAttachmentRef = Subpass.pRenderTargetAttachments[rt];
960+
const AttachmentReference& RTAttachmentRef = Subpass.pRenderTargetAttachments[rt];
962961
if (RTAttachmentRef.AttachmentIndex != ATTACHMENT_UNUSED)
963962
{
964963
VERIFY_EXPR(RTAttachmentRef.AttachmentIndex < RPDesc.AttachmentCount);
@@ -968,7 +967,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
968967

969968
if (Subpass.pDepthStencilAttachment != nullptr)
970969
{
971-
const auto& DSAttachmentRef = *Subpass.pDepthStencilAttachment;
970+
const AttachmentReference& DSAttachmentRef = *Subpass.pDepthStencilAttachment;
972971
if (DSAttachmentRef.AttachmentIndex != ATTACHMENT_UNUSED)
973972
{
974973
VERIFY_EXPR(DSAttachmentRef.AttachmentIndex < RPDesc.AttachmentCount);
@@ -977,22 +976,22 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
977976
}
978977
}
979978

980-
const auto& InputLayout = GraphicsPipeline.InputLayout;
981-
LayoutElement* pLayoutElements = nullptr;
979+
const InputLayoutDesc& InputLayout = GraphicsPipeline.InputLayout;
980+
LayoutElement* pLayoutElements = nullptr;
982981
if (InputLayout.NumElements > 0)
983982
{
984983
pLayoutElements = MemPool.ConstructArray<LayoutElement>(InputLayout.NumElements);
985984
for (size_t Elem = 0; Elem < InputLayout.NumElements; ++Elem)
986985
{
987-
const auto& SrcElem = InputLayout.LayoutElements[Elem];
988-
pLayoutElements[Elem] = SrcElem;
986+
const LayoutElement& SrcElem = InputLayout.LayoutElements[Elem];
987+
pLayoutElements[Elem] = SrcElem;
989988
VERIFY_EXPR(SrcElem.HLSLSemantic != nullptr);
990989
pLayoutElements[Elem].HLSLSemantic = MemPool.CopyString(SrcElem.HLSLSemantic);
991990
}
992991

993992
// Correct description and compute offsets and tight strides
994-
const auto Strides = ResolveInputLayoutAutoOffsetsAndStrides(pLayoutElements, InputLayout.NumElements);
995-
BufferSlotsUsed = static_cast<Uint8>(Strides.size());
993+
const std::vector<Uint32> Strides = ResolveInputLayoutAutoOffsetsAndStrides(pLayoutElements, InputLayout.NumElements);
994+
BufferSlotsUsed = static_cast<Uint8>(Strides.size());
996995

997996
pStrides = MemPool.CopyConstructArray<Uint32>(Strides.data(), BufferSlotsUsed);
998997
}
@@ -1013,8 +1012,8 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
10131012
{
10141013
size_t RTDataSize = sizeof(RayTracingPipelineData);
10151014
// Allocate space for shader handles
1016-
const auto ShaderHandleSize = this->GetDevice()->GetAdapterInfo().RayTracing.ShaderGroupHandleSize;
1017-
const auto ShaderDataSize = ShaderHandleSize * (CreateInfo.GeneralShaderCount + CreateInfo.TriangleHitShaderCount + CreateInfo.ProceduralHitShaderCount);
1015+
const Uint32 ShaderHandleSize = this->GetDevice()->GetAdapterInfo().RayTracing.ShaderGroupHandleSize;
1016+
const Uint32 ShaderDataSize = ShaderHandleSize * (CreateInfo.GeneralShaderCount + CreateInfo.TriangleHitShaderCount + CreateInfo.ProceduralHitShaderCount);
10181017
RTDataSize += ShaderDataSize;
10191018
// Extra bytes were reserved to avoid compiler errors on zero-sized arrays
10201019
RTDataSize -= sizeof(RayTracingPipelineData::ShaderHandles);
@@ -1100,12 +1099,12 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
11001099
if (pSignature == nullptr)
11011100
continue;
11021101

1103-
const auto ResIndex = pSignature->FindResource(Stage, Name);
1102+
const Uint32 ResIndex = pSignature->FindResource(Stage, Name);
11041103
if (ResIndex != ResourceAttribution::InvalidResourceIndex)
11051104
return ResourceAttribution{pSignature, sign, ResIndex};
11061105
else
11071106
{
1108-
const auto ImtblSamIndex = pSignature->FindImmutableSampler(Stage, Name);
1107+
const Uint32 ImtblSamIndex = pSignature->FindImmutableSampler(Stage, Name);
11091108
if (ImtblSamIndex != ResourceAttribution::InvalidSamplerIndex)
11101109
return ResourceAttribution{pSignature, sign, ResourceAttribution::InvalidResourceIndex, ImtblSamIndex};
11111110
}
@@ -1115,7 +1114,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
11151114

11161115
ResourceAttribution GetResourceAttribution(const char* Name, SHADER_TYPE Stage) const
11171116
{
1118-
const auto* const pThis = static_cast<const PipelineStateImplType*>(this);
1117+
const PipelineStateImplType* const pThis = static_cast<const PipelineStateImplType*>(this);
11191118
return GetResourceAttribution(Name, Stage, pThis->m_Signatures, pThis->m_SignatureCount);
11201119
}
11211120

@@ -1138,7 +1137,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
11381137

11391138
static PSO_CREATE_INTERNAL_FLAGS GetInternalCreateFlags(const PipelineStateCreateInfo& CreateInfo)
11401139
{
1141-
const auto* pInternalCI = static_cast<PSOCreateInternalInfo*>(CreateInfo.pInternalData);
1140+
const PSOCreateInternalInfo* pInternalCI = static_cast<PSOCreateInternalInfo*>(CreateInfo.pInternalData);
11421141
return pInternalCI != nullptr ? pInternalCI->Flags : PSO_CREATE_INTERNAL_FLAG_NONE;
11431142
}
11441143

@@ -1181,26 +1180,26 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
11811180
{
11821181
if (SrcLayout.Variables != nullptr)
11831182
{
1184-
auto* const Variables = MemPool.ConstructArray<ShaderResourceVariableDesc>(SrcLayout.NumVariables);
1185-
DstLayout.Variables = Variables;
1183+
ShaderResourceVariableDesc* const Variables = MemPool.ConstructArray<ShaderResourceVariableDesc>(SrcLayout.NumVariables);
1184+
DstLayout.Variables = Variables;
11861185
for (Uint32 i = 0; i < SrcLayout.NumVariables; ++i)
11871186
{
1188-
const auto& SrcVar = SrcLayout.Variables[i];
1189-
Variables[i] = SrcVar;
1190-
Variables[i].Name = MemPool.CopyString(SrcVar.Name);
1187+
const ShaderResourceVariableDesc& SrcVar{SrcLayout.Variables[i]};
1188+
Variables[i] = SrcVar;
1189+
Variables[i].Name = MemPool.CopyString(SrcVar.Name);
11911190
}
11921191
}
11931192

11941193
if (SrcLayout.ImmutableSamplers != nullptr)
11951194
{
1196-
auto* const ImmutableSamplers = MemPool.ConstructArray<ImmutableSamplerDesc>(SrcLayout.NumImmutableSamplers);
1197-
DstLayout.ImmutableSamplers = ImmutableSamplers;
1195+
ImmutableSamplerDesc* const ImmutableSamplers = MemPool.ConstructArray<ImmutableSamplerDesc>(SrcLayout.NumImmutableSamplers);
1196+
DstLayout.ImmutableSamplers = ImmutableSamplers;
11981197
for (Uint32 i = 0; i < SrcLayout.NumImmutableSamplers; ++i)
11991198
{
1200-
const auto& SrcSmplr = SrcLayout.ImmutableSamplers[i];
1199+
const ImmutableSamplerDesc& SrcSmplr = SrcLayout.ImmutableSamplers[i];
12011200
#ifdef DILIGENT_DEVELOPMENT
12021201
{
1203-
const auto& BorderColor = SrcSmplr.Desc.BorderColor;
1202+
const Float32* BorderColor = SrcSmplr.Desc.BorderColor;
12041203
if (!((BorderColor[0] == 0 && BorderColor[1] == 0 && BorderColor[2] == 0 && BorderColor[3] == 0) ||
12051204
(BorderColor[0] == 0 && BorderColor[1] == 0 && BorderColor[2] == 0 && BorderColor[3] == 1) ||
12061205
(BorderColor[0] == 1 && BorderColor[1] == 1 && BorderColor[2] == 1 && BorderColor[3] == 1)))
@@ -1231,7 +1230,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
12311230
Uint32 MaxSignatureBindingIndex = 0;
12321231
for (Uint32 i = 0; i < CreateInfo.ResourceSignaturesCount; ++i)
12331232
{
1234-
const auto* pSignature = ClassPtrCast<PipelineResourceSignatureImplType>(CreateInfo.ppResourceSignatures[i]);
1233+
const PipelineResourceSignatureImplType* pSignature = ClassPtrCast<PipelineResourceSignatureImplType>(CreateInfo.ppResourceSignatures[i]);
12351234
VERIFY(pSignature != nullptr, "Pipeline resource signature at index ", i, " is null. This error should've been caught by ValidatePipelineResourceSignatures.");
12361235

12371236
Uint32 Index = pSignature->GetDesc().BindingIndex;
@@ -1257,7 +1256,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
12571256
VERIFY_EXPR(CreateInfo.ResourceSignaturesCount != 0 && CreateInfo.ppResourceSignatures != nullptr);
12581257
for (Uint32 i = 0; i < CreateInfo.ResourceSignaturesCount; ++i)
12591258
{
1260-
auto* pSignature = ClassPtrCast<PipelineResourceSignatureImplType>(CreateInfo.ppResourceSignatures[i]);
1259+
PipelineResourceSignatureImplType* pSignature = ClassPtrCast<PipelineResourceSignatureImplType>(CreateInfo.ppResourceSignatures[i]);
12611260
VERIFY_EXPR(pSignature != nullptr);
12621261

12631262
const Uint32 Index = pSignature->GetDesc().BindingIndex;
@@ -1272,7 +1271,7 @@ class PipelineStateBase : public DeviceObjectBase<typename EngineImplTraits::Pip
12721271

12731272
for (Uint32 s = 0, StageCount = pSignature->GetNumActiveShaderStages(); s < StageCount; ++s)
12741273
{
1275-
const auto ShaderType = pSignature->GetActiveShaderStageType(s);
1274+
const SHADER_TYPE ShaderType = pSignature->GetActiveShaderStageType(s);
12761275
VERIFY(IsConsistentShaderType(ShaderType, CreateInfo.PSODesc.PipelineType),
12771276
"Pipeline resource signature '", pSignature->GetDesc().Name, "' at index ", Uint32{Index},
12781277
" has shader stage '", GetShaderTypeLiteralName(ShaderType), "' that is not compatible with pipeline type '",

0 commit comments

Comments
 (0)