From 1f2f5053735b4e94dac29237e9482befd9a2687b Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sat, 28 Aug 2021 00:30:05 -0500 Subject: VideoBackends / VideoCommon: allow the ability to set debug names for shaders / textures. These names are visible in applications like RenderDoc --- Source/Core/VideoBackends/D3D/DXTexture.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'Source/Core/VideoBackends/D3D/DXTexture.cpp') diff --git a/Source/Core/VideoBackends/D3D/DXTexture.cpp b/Source/Core/VideoBackends/D3D/DXTexture.cpp index 72fe7958c2..1247b32fc7 100644 --- a/Source/Core/VideoBackends/D3D/DXTexture.cpp +++ b/Source/Core/VideoBackends/D3D/DXTexture.cpp @@ -15,9 +15,15 @@ namespace DX11 { -DXTexture::DXTexture(const TextureConfig& config, ComPtr texture) - : AbstractTexture(config), m_texture(std::move(texture)) +DXTexture::DXTexture(const TextureConfig& config, ComPtr texture, + std::string_view name) + : AbstractTexture(config), m_texture(std::move(texture)), m_name(name) { + if (!m_name.empty()) + { + m_texture->SetPrivateData(WKPDID_D3DDebugObjectName, static_cast(m_name.size()), + m_name.c_str()); + } } DXTexture::~DXTexture() @@ -26,7 +32,7 @@ DXTexture::~DXTexture() D3D::stateman->ApplyTextures(); } -std::unique_ptr DXTexture::Create(const TextureConfig& config) +std::unique_ptr DXTexture::Create(const TextureConfig& config, std::string_view name) { // Use typeless to create the texture when it's a render target, so we can alias it with an // integer format (for EFB). @@ -49,7 +55,7 @@ std::unique_ptr DXTexture::Create(const TextureConfig& config) return nullptr; } - std::unique_ptr tex(new DXTexture(config, std::move(d3d_texture))); + std::unique_ptr tex(new DXTexture(config, std::move(d3d_texture), name)); if (!tex->CreateSRV() || (config.IsComputeImage() && !tex->CreateUAV())) return nullptr; @@ -70,7 +76,7 @@ std::unique_ptr DXTexture::CreateAdopted(ComPtr text if (desc.BindFlags & D3D11_BIND_UNORDERED_ACCESS) config.flags |= AbstractTextureFlag_ComputeImage; - std::unique_ptr tex(new DXTexture(config, std::move(texture))); + std::unique_ptr tex(new DXTexture(config, std::move(texture), "")); if (desc.BindFlags & D3D11_BIND_SHADER_RESOURCE && !tex->CreateSRV()) return nullptr; if (desc.BindFlags & D3D11_BIND_UNORDERED_ACCESS && !tex->CreateUAV()) -- cgit v1.2.3