diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2021-08-28 00:30:05 -0500 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2021-08-30 13:47:48 -0500 |
| commit | 1f2f5053735b4e94dac29237e9482befd9a2687b (patch) | |
| tree | dfe18ba017a6cda4a79c01c10431c7c37e8f74a3 /Source/Core/VideoBackends/D3D/DXShader.cpp | |
| parent | 9b83cf3e7fdf6fc4d15b78193461fd1081d61008 (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.cpp | 21 |
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; |
