@@ -245,21 +245,21 @@ void GetShaderIdentifiers(ID3D12DeviceChild* pSO,
245
245
{
246
246
CComPtr<ID3D12StateObjectProperties> pStateObjectProperties;
247
247
248
- auto hr = pSO->QueryInterface (IID_PPV_ARGS (&pStateObjectProperties));
248
+ HRESULT hr = pSO->QueryInterface (IID_PPV_ARGS (&pStateObjectProperties));
249
249
if (FAILED (hr))
250
250
LOG_ERROR_AND_THROW (" Failed to get state object properties" );
251
251
252
252
for (Uint32 i = 0 ; i < CreateInfo.GeneralShaderCount ; ++i)
253
253
{
254
- const auto & GeneralShader = CreateInfo.pGeneralShaders [i];
254
+ const RayTracingGeneralShaderGroup & GeneralShader = CreateInfo.pGeneralShaders [i];
255
255
256
256
auto iter = NameToGroupIndex.find (GeneralShader.Name );
257
257
VERIFY (iter != NameToGroupIndex.end (),
258
258
" Can't find general shader '" , GeneralShader.Name ,
259
259
" '. This looks to be a bug as NameToGroupIndex is initialized by "
260
260
" CopyRTShaderGroupNames() that processes the same general shaders." );
261
261
262
- const auto * ShaderID = pStateObjectProperties->GetShaderIdentifier (WidenString (GeneralShader.Name ).c_str ());
262
+ const void * ShaderID = pStateObjectProperties->GetShaderIdentifier (WidenString (GeneralShader.Name ).c_str ());
263
263
if (ShaderID == nullptr )
264
264
LOG_ERROR_AND_THROW (" Failed to get shader identifier for general shader group '" , GeneralShader.Name , " '" );
265
265
@@ -268,15 +268,15 @@ void GetShaderIdentifiers(ID3D12DeviceChild* pSO,
268
268
269
269
for (Uint32 i = 0 ; i < CreateInfo.TriangleHitShaderCount ; ++i)
270
270
{
271
- const auto & TriHitShader = CreateInfo.pTriangleHitShaders [i];
271
+ const RayTracingTriangleHitShaderGroup & TriHitShader = CreateInfo.pTriangleHitShaders [i];
272
272
273
273
auto iter = NameToGroupIndex.find (TriHitShader.Name );
274
274
VERIFY (iter != NameToGroupIndex.end (),
275
275
" Can't find triangle hit group '" , TriHitShader.Name ,
276
276
" '. This looks to be a bug as NameToGroupIndex is initialized by "
277
277
" CopyRTShaderGroupNames() that processes the same hit groups." );
278
278
279
- const auto * ShaderID = pStateObjectProperties->GetShaderIdentifier (WidenString (TriHitShader.Name ).c_str ());
279
+ const void * ShaderID = pStateObjectProperties->GetShaderIdentifier (WidenString (TriHitShader.Name ).c_str ());
280
280
if (ShaderID == nullptr )
281
281
LOG_ERROR_AND_THROW (" Failed to get shader identifier for triangle hit group '" , TriHitShader.Name , " '" );
282
282
@@ -285,15 +285,15 @@ void GetShaderIdentifiers(ID3D12DeviceChild* pSO,
285
285
286
286
for (Uint32 i = 0 ; i < CreateInfo.ProceduralHitShaderCount ; ++i)
287
287
{
288
- const auto & ProcHitShader = CreateInfo.pProceduralHitShaders [i];
288
+ const RayTracingProceduralHitShaderGroup & ProcHitShader = CreateInfo.pProceduralHitShaders [i];
289
289
290
290
auto iter = NameToGroupIndex.find (ProcHitShader.Name );
291
291
VERIFY (iter != NameToGroupIndex.end (),
292
292
" Can't find procedural hit group '" , ProcHitShader.Name ,
293
293
" '. This looks to be a bug as NameToGroupIndex is initialized by "
294
294
" CopyRTShaderGroupNames() that processes the same hit groups." );
295
295
296
- const auto * ShaderID = pStateObjectProperties->GetShaderIdentifier (WidenString (ProcHitShader.Name ).c_str ());
296
+ const void * ShaderID = pStateObjectProperties->GetShaderIdentifier (WidenString (ProcHitShader.Name ).c_str ());
297
297
if (ShaderID == nullptr )
298
298
LOG_ERROR_AND_THROW (" Failed to get shader identifier for procedural hit shader group '" , ProcHitShader.Name , " '" );
299
299
@@ -316,7 +316,7 @@ void PipelineStateD3D12Impl::ShaderStageInfo::Append(const ShaderD3D12Impl* pSha
316
316
VERIFY (std::find (Shaders.begin (), Shaders.end (), pShader) == Shaders.end (),
317
317
" Shader '" , pShader->GetDesc ().Name , " ' already exists in the stage. Shaders must be deduplicated." );
318
318
319
- const auto NewShaderType = pShader->GetDesc ().ShaderType ;
319
+ const SHADER_TYPE NewShaderType = pShader->GetDesc ().ShaderType ;
320
320
if (Type == SHADER_TYPE_UNKNOWN)
321
321
{
322
322
VERIFY_EXPR (Shaders.empty ());
@@ -352,9 +352,9 @@ PipelineResourceSignatureDescWrapper PipelineStateD3D12Impl::GetDefaultResourceS
352
352
std::unordered_map<ShaderResourceHashKey, const D3DShaderResourceAttribs&, ShaderResourceHashKey::Hasher> UniqueResources;
353
353
for (auto & Stage : ShaderStages)
354
354
{
355
- for (auto * pShader : Stage.Shaders )
355
+ for (const ShaderD3D12Impl * pShader : Stage.Shaders )
356
356
{
357
- const auto & ShaderResources = *pShader->GetShaderResources ();
357
+ const ShaderResourcesD3D12 & ShaderResources = *pShader->GetShaderResources ();
358
358
359
359
ShaderResources.ProcessResources (
360
360
[&](const D3DShaderResourceAttribs& Attribs, Uint32) //
@@ -367,7 +367,7 @@ PipelineResourceSignatureDescWrapper PipelineStateD3D12Impl::GetDefaultResourceS
367
367
ShaderResources.GetCombinedSamplerSuffix () :
368
368
nullptr ;
369
369
370
- const auto VarDesc = FindPipelineResourceLayoutVariable (ResourceLayout, Attribs.Name , Stage.Type , SamplerSuffix);
370
+ const ShaderResourceVariableDesc VarDesc = FindPipelineResourceLayoutVariable (ResourceLayout, Attribs.Name , Stage.Type , SamplerSuffix);
371
371
// Note that Attribs.Name != VarDesc.Name for combined samplers
372
372
const auto it_assigned = UniqueResources.emplace (ShaderResourceHashKey{VarDesc.ShaderStages , Attribs.Name }, Attribs);
373
373
if (it_assigned.second )
@@ -378,8 +378,8 @@ PipelineResourceSignatureDescWrapper PipelineStateD3D12Impl::GetDefaultResourceS
378
378
" Use explicit resource signature to specify the array size." );
379
379
}
380
380
381
- const auto ResType = Attribs.GetShaderResourceType ();
382
- const auto ResFlags = Attribs.GetPipelineResourceFlags () | ShaderVariableFlagsToPipelineResourceFlags (VarDesc.Flags );
381
+ const SHADER_RESOURCE_TYPE ResType = Attribs.GetShaderResourceType ();
382
+ const PIPELINE_RESOURCE_FLAGS ResFlags = Attribs.GetPipelineResourceFlags () | ShaderVariableFlagsToPipelineResourceFlags (VarDesc.Flags );
383
383
SignDesc.AddResource (VarDesc.ShaderStages , Attribs.Name , Attribs.BindCount , ResType, VarDesc.Type , ResFlags);
384
384
}
385
385
else
@@ -411,9 +411,9 @@ void PipelineStateD3D12Impl::RemapOrVerifyShaderResources(TShaderStages&
411
411
{
412
412
for (size_t s = 0 ; s < ShaderStages.size (); ++s)
413
413
{
414
- const auto & Shaders = ShaderStages[s].Shaders ;
415
- auto & ByteCodes = ShaderStages[s].ByteCodes ;
416
- const auto ShaderType = ShaderStages[s].Type ;
414
+ const auto & Shaders = ShaderStages[s].Shaders ;
415
+ auto & ByteCodes = ShaderStages[s].ByteCodes ;
416
+ const SHADER_TYPE ShaderType = ShaderStages[s].Type ;
417
417
418
418
bool HasImtblSamArray = false ;
419
419
ResourceBinding::TMap ResourceMap;
@@ -448,7 +448,7 @@ void PipelineStateD3D12Impl::RemapOrVerifyShaderResources(TShaderStages&
448
448
449
449
for (size_t i = 0 ; i < Shaders.size (); ++i)
450
450
{
451
- const auto * const pShader = Shaders[i];
451
+ const ShaderD3D12Impl * const pShader = Shaders[i];
452
452
453
453
Uint32 VerMajor, VerMinor;
454
454
pShader->GetShaderResources ()->GetShaderModel (VerMajor, VerMinor);
@@ -476,7 +476,7 @@ void PipelineStateD3D12Impl::RemapOrVerifyShaderResources(TShaderStages&
476
476
}
477
477
else
478
478
{
479
- auto & pBytecode = ByteCodes[i];
479
+ RefCntAutoPtr<IDataBlob> & pBytecode = ByteCodes[i];
480
480
if (IsDXILBytecode (pBytecode->GetConstDataPtr (), pBytecode->GetSize ()))
481
481
{
482
482
if (!pDxCompiler)
@@ -504,10 +504,11 @@ void PipelineStateD3D12Impl::InitRootSignature(const PipelineStateCreateInfo& Cr
504
504
TShaderStages& ShaderStages,
505
505
LocalRootSignatureD3D12* pLocalRootSig) noexcept (false )
506
506
{
507
- const auto InternalFlags = GetInternalCreateFlags (CreateInfo);
507
+ const PSO_CREATE_INTERNAL_FLAGS InternalFlags = GetInternalCreateFlags (CreateInfo);
508
508
if (m_UsingImplicitSignature && (InternalFlags & PSO_CREATE_INTERNAL_FLAG_IMPLICIT_SIGNATURE0) == 0 )
509
509
{
510
- const auto SignDesc = GetDefaultResourceSignatureDesc (ShaderStages, m_Desc.Name , m_Desc.ResourceLayout , m_Desc.SRBAllocationGranularity , pLocalRootSig);
510
+ const PipelineResourceSignatureDescWrapper SignDesc =
511
+ GetDefaultResourceSignatureDesc (ShaderStages, m_Desc.Name , m_Desc.ResourceLayout , m_Desc.SRBAllocationGranularity , pLocalRootSig);
511
512
512
513
// Always initialize default resource signature as internal device object.
513
514
// This is necessary to avoid cyclic references from GenerateMips.
@@ -527,13 +528,13 @@ void PipelineStateD3D12Impl::InitRootSignature(const PipelineStateCreateInfo& Cr
527
528
LOG_ERROR_AND_THROW (" Failed to create local root signature for pipeline '" , m_Desc.Name , " '." );
528
529
}
529
530
530
- const auto RemapResources = (CreateInfo.Flags & PSO_CREATE_FLAG_DONT_REMAP_SHADER_RESOURCES) == 0 ;
531
+ const bool RemapResources = (CreateInfo.Flags & PSO_CREATE_FLAG_DONT_REMAP_SHADER_RESOURCES) == 0 ;
531
532
532
533
const auto ValidateBindings = [this ](const ShaderD3D12Impl* pShader, const ResourceBinding::TMap& BindingsMap) //
533
534
{
534
535
ValidateShaderResourceBindings (m_Desc.Name , *pShader->GetShaderResources (), BindingsMap);
535
536
};
536
- const auto ValidateBindingsFn = !RemapResources && (InternalFlags & PSO_CREATE_INTERNAL_FLAG_NO_SHADER_REFLECTION) == 0 ?
537
+ const TValidateShaderBindingsFn ValidateBindingsFn = !RemapResources && (InternalFlags & PSO_CREATE_INTERNAL_FLAG_NO_SHADER_REFLECTION) == 0 ?
537
538
TValidateShaderBindingsFn{ValidateBindings} :
538
539
TValidateShaderBindingsFn{nullptr };
539
540
@@ -556,8 +557,8 @@ void PipelineStateD3D12Impl::InitRootSignature(const PipelineStateCreateInfo& Cr
556
557
557
558
void PipelineStateD3D12Impl::ValidateShaderResources (const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig)
558
559
{
559
- const auto & pShaderResources = pShader->GetShaderResources ();
560
- const auto ShaderType = pShader->GetDesc ().ShaderType ;
560
+ const auto & pShaderResources = pShader->GetShaderResources ();
561
+ const SHADER_TYPE ShaderType = pShader->GetDesc ().ShaderType ;
561
562
562
563
#ifdef DILIGENT_DEVELOPMENT
563
564
m_ShaderResources.emplace_back (pShaderResources);
@@ -569,15 +570,15 @@ void PipelineStateD3D12Impl::ValidateShaderResources(const ShaderD3D12Impl* pSha
569
570
{
570
571
#ifdef DILIGENT_DEVELOPMENT
571
572
m_ResourceAttibutions.emplace_back ();
572
- auto & ResAttribution = m_ResourceAttibutions.back ();
573
+ ResourceAttribution & ResAttribution = m_ResourceAttibutions.back ();
573
574
#else
574
575
ResourceAttribution ResAttribution;
575
576
#endif
576
577
577
578
if (pLocalRootSig != nullptr && pLocalRootSig->IsShaderRecord (Attribs))
578
579
return ;
579
580
580
- const auto IsSampler = Attribs.GetInputType () == D3D_SIT_SAMPLER;
581
+ const bool IsSampler = Attribs.GetInputType () == D3D_SIT_SAMPLER;
581
582
if (IsSampler && pShaderResources->IsUsingCombinedTextureSamplers ())
582
583
return ;
583
584
@@ -589,15 +590,15 @@ void PipelineStateD3D12Impl::ValidateShaderResources(const ShaderD3D12Impl* pSha
589
590
m_Desc.Name , " '." );
590
591
}
591
592
592
- const auto ResType = Attribs.GetShaderResourceType ();
593
- const auto ResFlags = Attribs.GetPipelineResourceFlags ();
593
+ const SHADER_RESOURCE_TYPE ResType = Attribs.GetShaderResourceType ();
594
+ const PIPELINE_RESOURCE_FLAGS ResFlags = Attribs.GetPipelineResourceFlags ();
594
595
595
- const auto * const pSignature = ResAttribution.pSignature ;
596
+ const PipelineResourceSignatureD3D12Impl * const pSignature = ResAttribution.pSignature ;
596
597
VERIFY_EXPR (pSignature != nullptr );
597
598
598
599
if (ResAttribution.ResourceIndex != ResourceAttribution::InvalidResourceIndex)
599
600
{
600
- auto ResDesc = pSignature->GetResourceDesc (ResAttribution.ResourceIndex );
601
+ PipelineResourceDesc ResDesc = pSignature->GetResourceDesc (ResAttribution.ResourceIndex );
601
602
if (ResDesc.ResourceType == SHADER_RESOURCE_TYPE_INPUT_ATTACHMENT)
602
603
ResDesc.ResourceType = SHADER_RESOURCE_TYPE_TEXTURE_SRV;
603
604
ValidatePipelineResourceCompatibility (ResDesc, ResType, ResFlags, Attribs.BindCount ,
@@ -635,7 +636,7 @@ void PipelineStateD3D12Impl::DvpVerifySRBResources(const DeviceContextD3D12Impl*
635
636
{
636
637
VERIFY_EXPR (attrib_it->pSignature != nullptr );
637
638
VERIFY_EXPR (attrib_it->pSignature ->GetDesc ().BindingIndex == attrib_it->SignatureIndex );
638
- const auto * pResourceCache = ResourceCaches[attrib_it->SignatureIndex ];
639
+ const ShaderResourceCacheD3D12 * pResourceCache = ResourceCaches[attrib_it->SignatureIndex ];
639
640
DEV_CHECK_ERR (pResourceCache != nullptr , " Resource cache at index " , attrib_it->SignatureIndex , " is null." );
640
641
attrib_it->pSignature ->DvpValidateCommittedResource (pDeviceCtx, Attribs, attrib_it->ResourceIndex , *pResourceCache,
641
642
pResources->GetShaderName (), m_Desc.Name );
@@ -674,27 +675,27 @@ void PipelineStateD3D12Impl::InitInternalObjects(const PSOCreateInfoType& Create
674
675
675
676
void PipelineStateD3D12Impl::InitializePipeline (const GraphicsPipelineStateCreateInfo& CreateInfo)
676
677
{
677
- const auto WName = WidenString (m_Desc.Name );
678
+ const std::wstring WName = WidenString (m_Desc.Name );
678
679
679
680
TShaderStages ShaderStages;
680
681
InitInternalObjects (CreateInfo, ShaderStages);
681
682
682
- auto * pd3d12Device = m_pDevice->GetD3D12Device ();
683
+ ID3D12Device * pd3d12Device = m_pDevice->GetD3D12Device ();
683
684
if (m_Desc.PipelineType == PIPELINE_TYPE_GRAPHICS)
684
685
{
685
686
const GraphicsPipelineDesc& GraphicsPipeline = m_pGraphicsPipelineData->Desc ;
686
687
687
688
D3D12_GRAPHICS_PIPELINE_STATE_DESC d3d12PSODesc = {};
688
689
689
- for (const auto & Stage : ShaderStages)
690
+ for (const ShaderStageInfo & Stage : ShaderStages)
690
691
{
691
692
VERIFY_EXPR (Stage.Count () == 1 );
692
693
const IDataBlob* pByteCode = Stage.ByteCodes [0 ];
693
694
694
695
D3D12_SHADER_BYTECODE* pd3d12ShaderBytecode = nullptr ;
695
696
switch (Stage.Type )
696
697
{
697
- // clang-format off
698
+ // clang-format off
698
699
case SHADER_TYPE_VERTEX: pd3d12ShaderBytecode = &d3d12PSODesc.VS ; break ;
699
700
case SHADER_TYPE_PIXEL: pd3d12ShaderBytecode = &d3d12PSODesc.PS ; break ;
700
701
case SHADER_TYPE_GEOMETRY: pd3d12ShaderBytecode = &d3d12PSODesc.GS ; break ;
@@ -721,7 +722,7 @@ void PipelineStateD3D12Impl::InitializePipeline(const GraphicsPipelineStateCreat
721
722
722
723
std::vector<D3D12_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D12_INPUT_ELEMENT_DESC>> d312InputElements (STD_ALLOCATOR_RAW_MEM (D3D12_INPUT_ELEMENT_DESC, GetRawAllocator (), " Allocator for vector<D3D12_INPUT_ELEMENT_DESC>" ));
723
724
724
- const auto & InputLayout = GraphicsPipeline.InputLayout ;
725
+ const InputLayoutDesc & InputLayout = GraphicsPipeline.InputLayout ;
725
726
if (InputLayout.NumElements > 0 )
726
727
{
727
728
LayoutElements_To_D3D12_INPUT_ELEMENT_DESCs (InputLayout, d312InputElements);
@@ -765,7 +766,7 @@ void PipelineStateD3D12Impl::InitializePipeline(const GraphicsPipelineStateCreat
765
766
d3d12PSODesc.Flags = D3D12_PIPELINE_STATE_FLAG_NONE;
766
767
767
768
// Try to load from the cache
768
- auto * const pPSOCacheD3D12 = ClassPtrCast<PipelineStateCacheD3D12Impl>(CreateInfo.pPSOCache );
769
+ PipelineStateCacheD3D12Impl * const pPSOCacheD3D12 = ClassPtrCast<PipelineStateCacheD3D12Impl>(CreateInfo.pPSOCache );
769
770
if (pPSOCacheD3D12 != nullptr && !WName.empty ())
770
771
m_pd3d12PSO = pPSOCacheD3D12->LoadGraphicsPipeline (WName.c_str (), d3d12PSODesc);
771
772
if (!m_pd3d12PSO)
@@ -804,15 +805,15 @@ void PipelineStateD3D12Impl::InitializePipeline(const GraphicsPipelineStateCreat
804
805
};
805
806
MESH_SHADER_PIPELINE_STATE_DESC d3d12PSODesc = {};
806
807
807
- for (const auto & Stage : ShaderStages)
808
+ for (const ShaderStageInfo & Stage : ShaderStages)
808
809
{
809
810
VERIFY_EXPR (Stage.Count () == 1 );
810
811
const IDataBlob* pByteCode = Stage.ByteCodes [0 ];
811
812
812
813
D3D12_SHADER_BYTECODE* pd3d12ShaderBytecode = nullptr ;
813
814
switch (Stage.Type )
814
815
{
815
- // clang-format off
816
+ // clang-format off
816
817
case SHADER_TYPE_AMPLIFICATION: pd3d12ShaderBytecode = &d3d12PSODesc.AS ; break ;
817
818
case SHADER_TYPE_MESH: pd3d12ShaderBytecode = &d3d12PSODesc.MS ; break ;
818
819
case SHADER_TYPE_PIXEL: pd3d12ShaderBytecode = &d3d12PSODesc.PS ; break ;
@@ -857,7 +858,7 @@ void PipelineStateD3D12Impl::InitializePipeline(const GraphicsPipelineStateCreat
857
858
streamDesc.SizeInBytes = sizeof (d3d12PSODesc);
858
859
streamDesc.pPipelineStateSubobjectStream = &d3d12PSODesc;
859
860
860
- auto * pd3d12Device2 = m_pDevice->GetD3D12Device2 ();
861
+ ID3D12Device2 * pd3d12Device2 = m_pDevice->GetD3D12Device2 ();
861
862
// Note: renderdoc frame capture fails if any interface but IID_ID3D12PipelineState is requested
862
863
HRESULT hr = pd3d12Device2->CreatePipelineState (&streamDesc, __uuidof (ID3D12PipelineState), IID_PPV_ARGS_Helper (&m_pd3d12PSO));
863
864
if (FAILED (hr))
@@ -880,7 +881,7 @@ void PipelineStateD3D12Impl::InitializePipeline(const ComputePipelineStateCreate
880
881
TShaderStages ShaderStages;
881
882
InitInternalObjects (CreateInfo, ShaderStages);
882
883
883
- auto * pd3d12Device = m_pDevice->GetD3D12Device ();
884
+ ID3D12Device * pd3d12Device = m_pDevice->GetD3D12Device ();
884
885
885
886
D3D12_COMPUTE_PIPELINE_STATE_DESC d3d12PSODesc = {};
886
887
@@ -904,8 +905,8 @@ void PipelineStateD3D12Impl::InitializePipeline(const ComputePipelineStateCreate
904
905
d3d12PSODesc.pRootSignature = m_RootSig->GetD3D12RootSignature ();
905
906
906
907
// Try to load from the cache
907
- const auto WName = WidenString (m_Desc.Name );
908
- auto * const pPSOCacheD3D12 = ClassPtrCast<PipelineStateCacheD3D12Impl>(CreateInfo.pPSOCache );
908
+ const std::wstring WName = WidenString (m_Desc.Name );
909
+ PipelineStateCacheD3D12Impl * const pPSOCacheD3D12 = ClassPtrCast<PipelineStateCacheD3D12Impl>(CreateInfo.pPSOCache );
909
910
if (pPSOCacheD3D12 != nullptr && !WName.empty ())
910
911
m_pd3d12PSO = pPSOCacheD3D12->LoadComputePipeline (WName.c_str (), d3d12PSODesc);
911
912
if (!m_pd3d12PSO)
@@ -932,7 +933,7 @@ void PipelineStateD3D12Impl::InitializePipeline(const RayTracingPipelineStateCre
932
933
TShaderStages ShaderStages;
933
934
InitInternalObjects (CreateInfo, ShaderStages, &LocalRootSig);
934
935
935
- auto * pd3d12Device = m_pDevice->GetD3D12Device5 ();
936
+ ID3D12Device5 * pd3d12Device = m_pDevice->GetD3D12Device5 ();
936
937
937
938
DynamicLinearAllocator TempPool{GetRawAllocator (), 4 << 10 };
938
939
std::vector<D3D12_STATE_SUBOBJECT> Subobjects;
0 commit comments