From 6d08be28f7a6975a13bac52017aa4404f5d09efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sat, 3 Dec 2022 09:22:27 -0800 Subject: [PATCH] D3D12: Dump all feature support options. --- src/renderer_d3d12.cpp | 145 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 141 insertions(+), 4 deletions(-) diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index e29b14972..fbaf5c2a3 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -850,6 +850,7 @@ namespace bgfx { namespace d3d12 D3D_FEATURE_LEVEL featureLevel[] = { + D3D_FEATURE_LEVEL_12_2, D3D_FEATURE_LEVEL_12_1, D3D_FEATURE_LEVEL_12_0, D3D_FEATURE_LEVEL_11_1, @@ -909,10 +910,6 @@ namespace bgfx { namespace d3d12 if (FAILED(hr) ) { BX_TRACE("Init error: Unable to create Direct3D12 device."); - if (BX_ENABLED(BX_PLATFORM_WINRT) ) - { - BX_TRACE("Hint: Change UWP app to game?"); - } goto error; } @@ -972,6 +969,146 @@ namespace bgfx { namespace d3d12 BX_TRACE("\tCrossNodeSharingTier %d", m_options.CrossNodeSharingTier); BX_TRACE("\tResourceHeapTier %d", m_options.ResourceHeapTier); + for (D3D12_FEATURE_DATA_D3D12_OPTIONS1 options1; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &options1, sizeof(options1)));) + { + BX_TRACE("D3D12 options 1:"); + BX_TRACE("\tWaveOps %d", options1.WaveOps); + BX_TRACE("\tWaveLaneCountMin %d", options1.WaveLaneCountMin); + BX_TRACE("\tWaveLaneCountMax %d", options1.WaveLaneCountMax); + BX_TRACE("\tTotalLaneCount %d", options1.TotalLaneCount); + BX_TRACE("\tExpandedComputeResourceStates %d", options1.ExpandedComputeResourceStates); + BX_TRACE("\tInt64ShaderOps %d", options1.Int64ShaderOps); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS2 options2; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2, &options2, sizeof(options2)));) + { + BX_TRACE("D3D12 options 2:"); + BX_TRACE("\tCopyQueueTimestampQueriesSupported %d", options2.DepthBoundsTestSupported); + BX_TRACE("\tCastingFullyTypedFormatSupported %d", options2.ProgrammableSamplePositionsTier); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS3 options3; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &options3, sizeof(options3)));) + { + BX_TRACE("D3D12 options 3:"); + BX_TRACE("\tCopyQueueTimestampQueriesSupported %d", options3.CopyQueueTimestampQueriesSupported); + BX_TRACE("\tCastingFullyTypedFormatSupported %d", options3.CastingFullyTypedFormatSupported); + BX_TRACE("\tWriteBufferImmediateSupportFlags %d", options3.WriteBufferImmediateSupportFlags); + BX_TRACE("\tViewInstancingTier %d", options3.ViewInstancingTier); + BX_TRACE("\tBarycentricsSupported %d", options3.BarycentricsSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS4 options4; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4, &options4, sizeof(options4)));) + { + BX_TRACE("D3D12 options 4:"); + BX_TRACE("\tMSAA64KBAlignedTextureSupported %d", options4.MSAA64KBAlignedTextureSupported); + BX_TRACE("\tSharedResourceCompatibilityTier %d", options4.SharedResourceCompatibilityTier); + BX_TRACE("\tNative16BitShaderOpsSupported %d", options4.Native16BitShaderOpsSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS5 options5; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &options5, sizeof(options5) ) );) + { + BX_TRACE("D3D12 options 5:"); + BX_TRACE("\tSRVOnlyTiledResourceTier3 %d", options5.SRVOnlyTiledResourceTier3); + BX_TRACE("\tRenderPassesTier %d", options5.RenderPassesTier); + BX_TRACE("\tRaytracingTier %d", options5.RaytracingTier); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS6 options6; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS6, &options6, sizeof(options6)));) + { + BX_TRACE("D3D12 options 6:"); + BX_TRACE("\tAdditionalShadingRatesSupported %d", options6.AdditionalShadingRatesSupported); + BX_TRACE("\tPerPrimitiveShadingRateSupportedWithViewportIndexing %d", options6.PerPrimitiveShadingRateSupportedWithViewportIndexing); + BX_TRACE("\tVariableShadingRateTier %d", options6.VariableShadingRateTier); + BX_TRACE("\tShadingRateImageTileSize %d", options6.ShadingRateImageTileSize); + BX_TRACE("\tBackgroundProcessingSupported %d", options6.BackgroundProcessingSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS7 options7; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &options7, sizeof(options7)));) + { + BX_TRACE("D3D12 options 7:"); + BX_TRACE("\tMeshShaderTier %d", options7.MeshShaderTier); + BX_TRACE("\tSamplerFeedbackTier %d", options7.SamplerFeedbackTier); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS8 options8; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS8, &options8, sizeof(options8)));) + { + BX_TRACE("D3D12 options 8:"); + BX_TRACE("\tUnalignedBlockTexturesSupported %d", options8.UnalignedBlockTexturesSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS9 options9; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS9, &options9, sizeof(options9)));) + { + BX_TRACE("D3D12 options 9:"); + BX_TRACE("\tMeshShaderPipelineStatsSupported %d", options9.MeshShaderPipelineStatsSupported); + BX_TRACE("\tMeshShaderSupportsFullRangeRenderTargetArrayIndex %d", options9.MeshShaderSupportsFullRangeRenderTargetArrayIndex); + BX_TRACE("\tAtomicInt64OnTypedResourceSupported %d", options9.AtomicInt64OnTypedResourceSupported); + BX_TRACE("\tAtomicInt64OnGroupSharedSupported %d", options9.AtomicInt64OnGroupSharedSupported); + BX_TRACE("\tDerivativesInMeshAndAmplificationShadersSupported %d", options9.DerivativesInMeshAndAmplificationShadersSupported); + BX_TRACE("\tWaveMMATier %d", options9.WaveMMATier); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS10 options10; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS10, &options10, sizeof(options10)));) + { + BX_TRACE("D3D12 options 10:"); + BX_TRACE("\tVariableRateShadingSumCombinerSupported %d", options10.VariableRateShadingSumCombinerSupported); + BX_TRACE("\tMeshShaderPerPrimitiveShadingRateSupported %d", options10.MeshShaderPerPrimitiveShadingRateSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS11 options11; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS11, &options11, sizeof(options11)));) + { + BX_TRACE("D3D12 options 11:"); + BX_TRACE("\tAtomicInt64OnDescriptorHeapResourceSupported %d", options11.AtomicInt64OnDescriptorHeapResourceSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS12 options12; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &options12, sizeof(options12)));) + { + BX_TRACE("D3D12 options 12:"); + BX_TRACE("\tMSPrimitivesPipelineStatisticIncludesCulledPrimitives %d", options12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives); + BX_TRACE("\tEnhancedBarriersSupported %d", options12.EnhancedBarriersSupported); + BX_TRACE("\tRelaxedFormatCastingSupported %d", options12.RelaxedFormatCastingSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS13 options13; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &options13, sizeof(options13)));) + { + BX_TRACE("D3D12 options 13:"); + BX_TRACE("\tUnrestrictedBufferTextureCopyPitchSupported %d", options13.UnrestrictedBufferTextureCopyPitchSupported); + BX_TRACE("\tUnrestrictedVertexElementAlignmentSupported %d", options13.UnrestrictedVertexElementAlignmentSupported); + BX_TRACE("\tInvertedViewportHeightFlipsYSupported %d", options13.InvertedViewportHeightFlipsYSupported); + BX_TRACE("\tInvertedViewportDepthFlipsZSupported %d", options13.InvertedViewportDepthFlipsZSupported); + BX_TRACE("\tTextureCopyBetweenDimensionsSupported %d", options13.TextureCopyBetweenDimensionsSupported); + BX_TRACE("\tAlphaBlendFactorSupported %d", options13.AlphaBlendFactorSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS14 options14; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &options14, sizeof(options14)));) + { + BX_TRACE("D3D12 options 14:"); + BX_TRACE("\tAdvancedTextureOpsSupported %d", options14.AdvancedTextureOpsSupported); + BX_TRACE("\tWriteableMSAATexturesSupported %d", options14.WriteableMSAATexturesSupported); + BX_TRACE("\tIndependentFrontAndBackStencilRefMaskSupported %d", options14.IndependentFrontAndBackStencilRefMaskSupported); + break; + } + + for (D3D12_FEATURE_DATA_D3D12_OPTIONS15 options15; SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &options15, sizeof(options15)));) + { + BX_TRACE("D3D12 options 15:"); + BX_TRACE("\tTriangleFanSupported %d", options15.TriangleFanSupported); + BX_TRACE("\tDynamicIndexBufferStripCutSupported %d", options15.DynamicIndexBufferStripCutSupported); + break; + } + initHeapProperties(m_device); m_cmd.init(m_device);