D3D11: Add UMA metrics for Create*Shader's timing Bug: chromium:399642827 Change-Id: Iaf22b598305d8c11ec0ea9bafa6cd1361db571f5 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/265654 Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
diff --git a/src/dawn/native/d3d11/ComputePipelineD3D11.cpp b/src/dawn/native/d3d11/ComputePipelineD3D11.cpp index 95f523b..dcf48ff 100644 --- a/src/dawn/native/d3d11/ComputePipelineD3D11.cpp +++ b/src/dawn/native/d3d11/ComputePipelineD3D11.cpp
@@ -36,6 +36,7 @@ #include "dawn/native/d3d11/DeviceD3D11.h" #include "dawn/native/d3d11/ShaderModuleD3D11.h" #include "dawn/native/d3d11/UtilsD3D11.h" +#include "dawn/platform/DawnPlatform.h" namespace dawn::native::d3d11 { @@ -83,10 +84,13 @@ ToBackend(programmableStage.module) ->Compile(programmableStage, SingleShaderStage::Compute, ToBackend(GetLayout()), compileFlags, GetImmediateMask())); - DAWN_TRY(CheckHRESULT(device->GetD3D11Device()->CreateComputeShader( - compiledShader.shaderBlob.Data(), compiledShader.shaderBlob.Size(), - nullptr, &mComputeShader), - "D3D11 create compute shader")); + { + SCOPED_DAWN_HISTOGRAM_TIMER_MICROS(device->GetPlatform(), "D3D11.CreateComputeShaderUs"); + DAWN_TRY(CheckHRESULT(device->GetD3D11Device()->CreateComputeShader( + compiledShader.shaderBlob.Data(), + compiledShader.shaderBlob.Size(), nullptr, &mComputeShader), + "D3D11 create compute shader")); + } SetLabelImpl();
diff --git a/src/dawn/native/d3d11/RenderPipelineD3D11.cpp b/src/dawn/native/d3d11/RenderPipelineD3D11.cpp index 2e8ef8f..6b87e4c 100644 --- a/src/dawn/native/d3d11/RenderPipelineD3D11.cpp +++ b/src/dawn/native/d3d11/RenderPipelineD3D11.cpp
@@ -44,6 +44,7 @@ #include "dawn/native/d3d11/PipelineLayoutD3D11.h" #include "dawn/native/d3d11/ShaderModuleD3D11.h" #include "dawn/native/d3d11/UtilsD3D11.h" +#include "dawn/platform/DawnPlatform.h" namespace dawn::native::d3d11 { namespace { @@ -482,9 +483,13 @@ ToBackend(GetLayout()), compileFlags | additionalCompileFlags, GetImmediateMask(), usedInterstageVariables)); const Blob& shaderBlob = compiledShader[SingleShaderStage::Vertex].shaderBlob; - DAWN_TRY(CheckHRESULT(device->GetD3D11Device()->CreateVertexShader( - shaderBlob.Data(), shaderBlob.Size(), nullptr, &mVertexShader), - "D3D11 create vertex shader")); + { + SCOPED_DAWN_HISTOGRAM_TIMER_MICROS(device->GetPlatform(), "D3D11.CreateVertexShaderUs"); + DAWN_TRY( + CheckHRESULT(device->GetD3D11Device()->CreateVertexShader( + shaderBlob.Data(), shaderBlob.Size(), nullptr, &mVertexShader), + "D3D11 create vertex shader")); + } DAWN_TRY(InitializeInputLayout(shaderBlob)); } @@ -548,11 +553,14 @@ ->Compile(programmableStage, SingleShaderStage::Fragment, ToBackend(GetLayout()), compileFlags | additionalCompileFlags, GetImmediateMask(), usedInterstageVariables, pixelLocalOptions)); - DAWN_TRY(CheckHRESULT(device->GetD3D11Device()->CreatePixelShader( - compiledShader[SingleShaderStage::Fragment].shaderBlob.Data(), - compiledShader[SingleShaderStage::Fragment].shaderBlob.Size(), - nullptr, &mPixelShader), - "D3D11 create pixel shader")); + { + SCOPED_DAWN_HISTOGRAM_TIMER_MICROS(device->GetPlatform(), "D3D11.CreatePixelShaderUs"); + DAWN_TRY(CheckHRESULT(device->GetD3D11Device()->CreatePixelShader( + compiledShader[SingleShaderStage::Fragment].shaderBlob.Data(), + compiledShader[SingleShaderStage::Fragment].shaderBlob.Size(), + nullptr, &mPixelShader), + "D3D11 create pixel shader")); + } } return {};