mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-01 04:51:49 +01: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;
|
||||
pD3DCompile wrapD3DCompile;
|
||||
|
||||
ID3D12Device* g_d3d12_device = nullptr;
|
||||
|
||||
#define VERTEX_BUFFERS_SLOT 0
|
||||
#define FRAGMENT_CONSTANT_BUFFERS_SLOT 1
|
||||
#define VERTEX_CONSTANT_BUFFERS_SLOT 2
|
||||
@ -181,6 +183,8 @@ D3D12GSRender::D3D12GSRender()
|
||||
}
|
||||
}
|
||||
|
||||
g_d3d12_device = m_device.Get();
|
||||
|
||||
// Queues
|
||||
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())));
|
||||
|
@ -14,7 +14,6 @@ namespace
|
||||
ComPtr<ID3D11Device> g_d3d11_device;
|
||||
ComPtr<ID3D11DeviceContext> g_d3d11_device_context;
|
||||
ComPtr<ID3D11On12Device> g_d3d11on12_device;
|
||||
ComPtr<ID3D12Device> g_d3d12_device;
|
||||
ComPtr<IDWriteFactory> g_dwrite_factory;
|
||||
ComPtr<ID2D1Factory3> g_d2d_factory;
|
||||
ComPtr<ID2D1Device2> g_d2d_device;
|
||||
@ -136,7 +135,6 @@ void D3D12GSRender::release_d2d_structures()
|
||||
g_d3d11_device.Reset();
|
||||
g_d3d11_device_context.Reset();
|
||||
g_d3d11on12_device.Reset();
|
||||
g_d3d12_device.Reset();
|
||||
g_dwrite_factory.Reset();
|
||||
g_d2d_factory.Reset();
|
||||
g_d2d_device.Reset();
|
||||
|
@ -10,14 +10,21 @@
|
||||
|
||||
|
||||
using namespace Microsoft::WRL;
|
||||
extern ID3D12Device* g_d3d12_device;
|
||||
|
||||
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);
|
||||
#ifndef UNICODE
|
||||
return error.ErrorMessage();
|
||||
#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());
|
||||
#endif
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user