dx12: Fix error reporting

This commit is contained in:
kd-11 2017-04-11 14:05:09 +03:00
parent 89f676de75
commit 74d8619240
3 changed files with 12 additions and 3 deletions

View File

@ -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())));

View File

@ -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();

View File

@ -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
}