mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-01 07:13:36 +00:00
dx12: Fix error reporting
This commit is contained in:
parent
89f676de75
commit
74d8619240
@ -21,6 +21,8 @@ PFN_D3D12_SERIALIZE_ROOT_SIGNATURE wrapD3D12SerializeRootSignature;
|
|||||||
PFN_D3D11ON12_CREATE_DEVICE wrapD3D11On12CreateDevice;
|
PFN_D3D11ON12_CREATE_DEVICE wrapD3D11On12CreateDevice;
|
||||||
pD3DCompile wrapD3DCompile;
|
pD3DCompile wrapD3DCompile;
|
||||||
|
|
||||||
|
ID3D12Device* g_d3d12_device = nullptr;
|
||||||
|
|
||||||
#define VERTEX_BUFFERS_SLOT 0
|
#define VERTEX_BUFFERS_SLOT 0
|
||||||
#define FRAGMENT_CONSTANT_BUFFERS_SLOT 1
|
#define FRAGMENT_CONSTANT_BUFFERS_SLOT 1
|
||||||
#define VERTEX_CONSTANT_BUFFERS_SLOT 2
|
#define VERTEX_CONSTANT_BUFFERS_SLOT 2
|
||||||
@ -181,6 +183,8 @@ D3D12GSRender::D3D12GSRender()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_d3d12_device = m_device.Get();
|
||||||
|
|
||||||
// Queues
|
// Queues
|
||||||
D3D12_COMMAND_QUEUE_DESC graphic_queue_desc = { D3D12_COMMAND_LIST_TYPE_DIRECT };
|
D3D12_COMMAND_QUEUE_DESC graphic_queue_desc = { D3D12_COMMAND_LIST_TYPE_DIRECT };
|
||||||
CHECK_HRESULT(m_device->CreateCommandQueue(&graphic_queue_desc, IID_PPV_ARGS(m_command_queue.GetAddressOf())));
|
CHECK_HRESULT(m_device->CreateCommandQueue(&graphic_queue_desc, IID_PPV_ARGS(m_command_queue.GetAddressOf())));
|
||||||
|
@ -14,7 +14,6 @@ namespace
|
|||||||
ComPtr<ID3D11Device> g_d3d11_device;
|
ComPtr<ID3D11Device> g_d3d11_device;
|
||||||
ComPtr<ID3D11DeviceContext> g_d3d11_device_context;
|
ComPtr<ID3D11DeviceContext> g_d3d11_device_context;
|
||||||
ComPtr<ID3D11On12Device> g_d3d11on12_device;
|
ComPtr<ID3D11On12Device> g_d3d11on12_device;
|
||||||
ComPtr<ID3D12Device> g_d3d12_device;
|
|
||||||
ComPtr<IDWriteFactory> g_dwrite_factory;
|
ComPtr<IDWriteFactory> g_dwrite_factory;
|
||||||
ComPtr<ID2D1Factory3> g_d2d_factory;
|
ComPtr<ID2D1Factory3> g_d2d_factory;
|
||||||
ComPtr<ID2D1Device2> g_d2d_device;
|
ComPtr<ID2D1Device2> g_d2d_device;
|
||||||
@ -136,7 +135,6 @@ void D3D12GSRender::release_d2d_structures()
|
|||||||
g_d3d11_device.Reset();
|
g_d3d11_device.Reset();
|
||||||
g_d3d11_device_context.Reset();
|
g_d3d11_device_context.Reset();
|
||||||
g_d3d11on12_device.Reset();
|
g_d3d11on12_device.Reset();
|
||||||
g_d3d12_device.Reset();
|
|
||||||
g_dwrite_factory.Reset();
|
g_dwrite_factory.Reset();
|
||||||
g_d2d_factory.Reset();
|
g_d2d_factory.Reset();
|
||||||
g_d2d_device.Reset();
|
g_d2d_device.Reset();
|
||||||
|
@ -10,14 +10,21 @@
|
|||||||
|
|
||||||
|
|
||||||
using namespace Microsoft::WRL;
|
using namespace Microsoft::WRL;
|
||||||
|
extern ID3D12Device* g_d3d12_device;
|
||||||
|
|
||||||
inline std::string get_hresult_message(HRESULT hr)
|
inline std::string get_hresult_message(HRESULT hr)
|
||||||
{
|
{
|
||||||
|
if (hr == DXGI_ERROR_DEVICE_REMOVED)
|
||||||
|
{
|
||||||
|
hr = g_d3d12_device->GetDeviceRemovedReason();
|
||||||
|
return fmt::format("D3D12 device was removed with error status 0x%X", hr);
|
||||||
|
}
|
||||||
|
|
||||||
_com_error error(hr);
|
_com_error error(hr);
|
||||||
#ifndef UNICODE
|
#ifndef UNICODE
|
||||||
return error.ErrorMessage();
|
return error.ErrorMessage();
|
||||||
#else
|
#else
|
||||||
using convert_type = std::codecvt<wchar_t, char, mbstate_t>;
|
using convert_type = std::codecvt<wchar_t, char, std::mbstate_t>;
|
||||||
return std::wstring_convert<convert_type>().to_bytes(error.ErrorMessage());
|
return std::wstring_convert<convert_type>().to_bytes(error.ErrorMessage());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user