diff --git a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h index 3f9079422c..85b782aa6b 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h +++ b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h @@ -19,6 +19,7 @@ #include #include +#include // This define is enabled if LY_PIX_ENABLED is enabled during configure. You can use LY_PIX_PATH to point where pix is downloaded. // Enabling this define will allow the runtime code to add PIX markers which will help with pix and renderdoc gpu captures diff --git a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake index d792c3d2aa..c94b2a020e 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake +++ b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake @@ -10,4 +10,5 @@ set(LY_BUILD_DEPENDENCIES PRIVATE d3d12 dxgi + dxguid ) diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp index 5692befedf..2715b7063b 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp @@ -51,7 +51,7 @@ namespace AZ if (memoryView.IsValid()) { heapMemoryUsage.m_residentInBytes += m_descriptor.m_pageSizeInBytes; - memoryView.SetName("BufferPage"); + memoryView.SetName(L"BufferPage"); } else { diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp index c9d932afb1..6389076408 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -95,7 +96,17 @@ namespace AZ { AZStd::wstring wname; AZStd::to_wstring(wname, name); - m_memoryAllocation.m_memory->SetName(wname.data()); + m_memoryAllocation.m_memory->SetPrivateData( + WKPDID_D3DDebugObjectNameW, aznumeric_cast(wname.size() * sizeof(wchar_t)), wname.data()); + } + } + + void MemoryView::SetName(const AZStd::wstring_view& name) + { + if (m_memoryAllocation.m_memory) + { + m_memoryAllocation.m_memory->SetPrivateData( + WKPDID_D3DDebugObjectNameW, aznumeric_cast(name.size() * sizeof(wchar_t)), name.data()); } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h index a5162d53de..f418af6058 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h @@ -77,6 +77,9 @@ namespace AZ /// Sets the name of the ID3D12Resource. void SetName(const AZStd::string_view& name); + /// Sets the name of the ID3D12Resource. + void SetName(const AZStd::wstring_view& name); + private: void Construct(); diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp index 917e1a4d98..0f651f9be3 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp @@ -83,7 +83,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create BLAS scratch buffer"); MemoryView& scratchMemoryView = static_cast(buffers.m_scratchBuffer.get())->GetMemoryView(); - scratchMemoryView.SetName("BLAS Scratch"); + scratchMemoryView.SetName(L"BLAS Scratch"); // create BLAS buffer buffers.m_blasBuffer = RHI::Factory::Get().CreateBuffer(); @@ -98,7 +98,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create BLAS buffer"); MemoryView& blasMemoryView = static_cast(buffers.m_blasBuffer.get())->GetMemoryView(); - blasMemoryView.SetName("BLAS"); + blasMemoryView.SetName(L"BLAS"); #endif return RHI::ResultCode::Success; } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp index 21e7dbc82e..0a9ea63d2f 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp @@ -72,7 +72,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create shader table buffer"); MemoryView& shaderTableMemoryView = static_cast(shaderTableBuffer.get())->GetMemoryView(); - shaderTableMemoryView.SetName("RayTracingShaderTable"); + shaderTableMemoryView.SetName(L"RayTracingShaderTable"); // copy records RHI::BufferMapResponse mapResponse; diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp index 8c4f63aacc..52e4aa4881 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp @@ -66,7 +66,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create TLAS instances buffer"); MemoryView& tlasInstancesMemoryView = static_cast(buffers.m_tlasInstancesBuffer.get())->GetMemoryView(); - tlasInstancesMemoryView.SetName("TLAS Instance"); + tlasInstancesMemoryView.SetName(L"TLAS Instance"); RHI::BufferMapResponse mapResponse; resultCode = bufferPools.GetTlasInstancesBufferPool()->MapBuffer(RHI::BufferMapRequest(*buffers.m_tlasInstancesBuffer, 0, instanceDescsSizeInBytes), mapResponse); @@ -130,7 +130,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create TLAS scratch buffer"); MemoryView& scratchMemoryView = static_cast(buffers.m_scratchBuffer.get())->GetMemoryView(); - scratchMemoryView.SetName("TLAS Scratch"); + scratchMemoryView.SetName(L"TLAS Scratch"); // create TLAS buffer buffers.m_tlasBuffer = RHI::Factory::Get().CreateBuffer(); @@ -145,7 +145,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create TLAS buffer"); MemoryView& tlasMemoryView = static_cast(buffers.m_tlasBuffer.get())->GetMemoryView(); - tlasMemoryView.SetName("TLAS"); + tlasMemoryView.SetName(L"TLAS"); #endif return RHI::ResultCode::Success; }