summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/D3D/DXShader.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2021-08-28 00:30:05 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2021-08-30 13:47:48 -0500
commit1f2f5053735b4e94dac29237e9482befd9a2687b (patch)
treedfe18ba017a6cda4a79c01c10431c7c37e8f74a3 /Source/Core/VideoBackends/D3D/DXShader.cpp
parent9b83cf3e7fdf6fc4d15b78193461fd1081d61008 (diff)
VideoBackends / VideoCommon: allow the ability to set debug names for shaders / textures. These names are visible in applications like RenderDoc
Diffstat (limited to 'Source/Core/VideoBackends/D3D/DXShader.cpp')
-rw-r--r--Source/Core/VideoBackends/D3D/DXShader.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/Core/VideoBackends/D3D/DXShader.cpp b/Source/Core/VideoBackends/D3D/DXShader.cpp
index 569cc65946..58d2ed6bf8 100644
--- a/Source/Core/VideoBackends/D3D/DXShader.cpp
+++ b/Source/Core/VideoBackends/D3D/DXShader.cpp
@@ -7,9 +7,15 @@
namespace DX11
{
-DXShader::DXShader(ShaderStage stage, BinaryData bytecode, ID3D11DeviceChild* shader)
- : D3DCommon::Shader(stage, std::move(bytecode)), m_shader(shader)
+DXShader::DXShader(ShaderStage stage, BinaryData bytecode, ID3D11DeviceChild* shader,
+ std::string_view name)
+ : D3DCommon::Shader(stage, std::move(bytecode)), m_shader(shader), m_name(name)
{
+ if (!m_name.empty())
+ {
+ m_shader->SetPrivateData(WKPDID_D3DDebugObjectName, static_cast<UINT>(m_name.size()),
+ m_name.data());
+ }
}
DXShader::~DXShader() = default;
@@ -38,7 +44,8 @@ ID3D11ComputeShader* DXShader::GetD3DComputeShader() const
return static_cast<ID3D11ComputeShader*>(m_shader.Get());
}
-std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, BinaryData bytecode)
+std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, BinaryData bytecode,
+ std::string_view name)
{
switch (stage)
{
@@ -50,7 +57,7 @@ std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, Binary
if (FAILED(hr))
return nullptr;
- return std::make_unique<DXShader>(ShaderStage::Vertex, std::move(bytecode), vs.Get());
+ return std::make_unique<DXShader>(ShaderStage::Vertex, std::move(bytecode), vs.Get(), name);
}
case ShaderStage::Geometry:
@@ -61,7 +68,7 @@ std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, Binary
if (FAILED(hr))
return nullptr;
- return std::make_unique<DXShader>(ShaderStage::Geometry, std::move(bytecode), gs.Get());
+ return std::make_unique<DXShader>(ShaderStage::Geometry, std::move(bytecode), gs.Get(), name);
}
break;
@@ -73,7 +80,7 @@ std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, Binary
if (FAILED(hr))
return nullptr;
- return std::make_unique<DXShader>(ShaderStage::Pixel, std::move(bytecode), ps.Get());
+ return std::make_unique<DXShader>(ShaderStage::Pixel, std::move(bytecode), ps.Get(), name);
}
break;
@@ -85,7 +92,7 @@ std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, Binary
if (FAILED(hr))
return nullptr;
- return std::make_unique<DXShader>(ShaderStage::Compute, std::move(bytecode), cs.Get());
+ return std::make_unique<DXShader>(ShaderStage::Compute, std::move(bytecode), cs.Get(), name);
}
break;