From 8919c19440dea9a62578905d365fe80bcd58e316 Mon Sep 17 00:00:00 2001 From: Yong He Date: Sat, 8 Jan 2022 17:07:33 -0800 Subject: Fix random d3d12 crash related to readTextureResource(). (#2075) * Fix D3D12 random crash. * Trigger * Trigger * Trigger1 * Trigger2 * Trigger3 * Trigger4 * Trigger5 * Trigger6 * Trigger7 * Trigger8 * Trigger9 * Trigger10 Co-authored-by: Yong He --- tools/gfx/d3d12/render-d3d12.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/gfx/d3d12/render-d3d12.cpp b/tools/gfx/d3d12/render-d3d12.cpp index 90bfb9bc6..765be5db5 100644 --- a/tools/gfx/d3d12/render-d3d12.cpp +++ b/tools/gfx/d3d12/render-d3d12.cpp @@ -4881,7 +4881,7 @@ Result D3D12Device::captureTextureToSurface( size_t* outRowPitch, size_t* outPixelSize) { - auto resource = resourceImpl->m_resource; + auto& resource = resourceImpl->m_resource; const D3D12_RESOURCE_STATES initialState = D3DUtil::translateResourceState(state); @@ -4986,6 +4986,11 @@ Result D3D12Device::getNativeDeviceHandles(InteropHandles* outHandles) Result D3D12Device::_createDevice(DeviceCheckFlags deviceCheckFlags, const UnownedStringSlice& nameMatch, D3D_FEATURE_LEVEL featureLevel, DeviceInfo& outDeviceInfo) { + if (m_dxDebug && (deviceCheckFlags & DeviceCheckFlag::UseDebug)) + { + m_dxDebug->EnableDebugLayer(); + } + outDeviceInfo.clear(); ComPtr dxgiFactory; @@ -5014,8 +5019,6 @@ Result D3D12Device::_createDevice(DeviceCheckFlags deviceCheckFlags, const Unown if (m_dxDebug && (deviceCheckFlags & DeviceCheckFlag::UseDebug)) { - m_dxDebug->EnableDebugLayer(); - ComPtr infoQueue; if (SLANG_SUCCEEDED(device->QueryInterface(infoQueue.writeRef()))) { @@ -5129,7 +5132,8 @@ Result D3D12Device::initialize(const Desc& desc) } #if ENABLE_DEBUG_LAYER - m_D3D12GetDebugInterface = (PFN_D3D12_GET_DEBUG_INTERFACE)loadProc(d3dModule, "D3D12GetDebugInterface"); + m_D3D12GetDebugInterface = + (PFN_D3D12_GET_DEBUG_INTERFACE)loadProc(d3dModule, "D3D12GetDebugInterface"); if (m_D3D12GetDebugInterface) { if (SLANG_SUCCEEDED(m_D3D12GetDebugInterface(IID_PPV_ARGS(m_dxDebug.writeRef())))) @@ -5148,7 +5152,6 @@ Result D3D12Device::initialize(const Desc& desc) debug1->SetEnableGPUBasedValidation(true); } #endif - m_dxDebug->EnableDebugLayer(); } } #endif -- cgit v1.2.3