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