diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp index 0b838b6efa..8b6bc6b54d 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp @@ -159,20 +159,9 @@ D3D12GSRender::D3D12GSRender() Microsoft::WRL::ComPtr dxgiFactory; ThrowIfFailed(CreateDXGIFactory(IID_PPV_ARGS(&dxgiFactory))); // Create adapter - IDXGIAdapter* adaptater = nullptr; - switch (Ini.GSD3DAdaptater.GetValue()) - { - case 0: // WARP - ThrowIfFailed(dxgiFactory->EnumWarpAdapter(IID_PPV_ARGS(&adaptater))); - break; - case 1: // Default - dxgiFactory->EnumAdapters(0, &adaptater); - break; - default: // Adaptater 0, 1, ... - dxgiFactory->EnumAdapters(Ini.GSD3DAdaptater.GetValue() - 2,&adaptater); - break; - } - ThrowIfFailed(wrapD3D12CreateDevice(adaptater, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device))); + ComPtr adaptater = nullptr; + ThrowIfFailed(dxgiFactory->EnumAdapters(Ini.GSD3DAdaptater.GetValue(), adaptater.GetAddressOf())); + ThrowIfFailed(wrapD3D12CreateDevice(adaptater.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device))); // Queues D3D12_COMMAND_QUEUE_DESC copyQueueDesc = {}, graphicQueueDesc = {}; @@ -186,9 +175,6 @@ D3D12GSRender::D3D12GSRender() g_descriptorStrideSamplers = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER); m_frame = GetGSFrame(); - DXGI_ADAPTER_DESC adaptaterDesc; - adaptater->GetDesc(&adaptaterDesc); - m_frame->SetAdaptaterName(adaptaterDesc.Description); // Create swap chain and put them in a descriptor heap as rendertarget DXGI_SWAP_CHAIN_DESC swapChain = {}; diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.h b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.h index 889af8890c..a571b2fadc 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.h +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.h @@ -57,7 +57,6 @@ public: virtual void DeleteContext(void* ctx) = 0; virtual void Flip(void* ctx) = 0; virtual HWND getHandle() const = 0; - virtual void SetAdaptaterName(const wchar_t *) = 0; }; typedef GSFrameBase2*(*GetGSFrameCb2)(); diff --git a/rpcs3/Gui/D3DGSFrame.cpp b/rpcs3/Gui/D3DGSFrame.cpp index 808251f130..f4327da252 100644 --- a/rpcs3/Gui/D3DGSFrame.cpp +++ b/rpcs3/Gui/D3DGSFrame.cpp @@ -20,11 +20,6 @@ D3DGSFrame::~D3DGSFrame() { } -void D3DGSFrame::SetAdaptaterName(const wchar_t *name) -{ - AdaptaterName = name; -} - void D3DGSFrame::Close() { GSFrame::Close(); @@ -69,7 +64,7 @@ void D3DGSFrame::Flip(void* context) // canvas->SwapBuffers(); m_frames++; - const std::string sub_title = Emu.GetTitle() + (Emu.GetTitleID().length() ? " [" + Emu.GetTitleID() + "] | " : " | ") + AdaptaterName.ToStdString() + " | "; + const std::string sub_title = Emu.GetTitle() + (Emu.GetTitleID().length() ? " [" + Emu.GetTitleID() + "] | " : " | ") + " | "; if (fps_t.GetElapsedTimeInSec() >= 0.5) { diff --git a/rpcs3/Gui/D3DGSFrame.h b/rpcs3/Gui/D3DGSFrame.h index fecd729d22..47de197d0a 100644 --- a/rpcs3/Gui/D3DGSFrame.h +++ b/rpcs3/Gui/D3DGSFrame.h @@ -9,7 +9,6 @@ struct D3DGSFrame : public GSFrame, public GSFrameBase2 { wxWindow* canvas; u32 m_frames; - wxString AdaptaterName; D3DGSFrame(); ~D3DGSFrame(); @@ -29,7 +28,6 @@ struct D3DGSFrame : public GSFrame, public GSFrameBase2 virtual void SetViewport(int x, int y, u32 w, u32 h) override; virtual HWND getHandle() const override; - virtual void SetAdaptaterName(const wchar_t *) override; private: virtual void OnSize(wxSizeEvent& event); diff --git a/rpcs3/Gui/SettingsDialog.cpp b/rpcs3/Gui/SettingsDialog.cpp index b9a1fadf62..f9762d9698 100644 --- a/rpcs3/Gui/SettingsDialog.cpp +++ b/rpcs3/Gui/SettingsDialog.cpp @@ -7,6 +7,13 @@ #include "Utilities/Log.h" #include +#if defined(DX12_SUPPORT) +#undef GetHwnd +#include +#include +#include +#endif + SettingsDialog::SettingsDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, "Settings", wxDefaultPosition) { @@ -159,11 +166,20 @@ SettingsDialog::SettingsDialog(wxWindow *parent) cbox_gs_render->Append("DirectX 12"); #endif - cbox_gs_d3d_adaptater->Append("WARP"); - cbox_gs_d3d_adaptater->Append("Default"); - cbox_gs_d3d_adaptater->Append("Renderer 0"); - cbox_gs_d3d_adaptater->Append("Renderer 1"); - cbox_gs_d3d_adaptater->Append("Renderer 2"); +#if defined(DX12_SUPPORT) + unsigned id = 0; + Microsoft::WRL::ComPtr dxgiFactory; + CreateDXGIFactory(IID_PPV_ARGS(&dxgiFactory)); + Microsoft::WRL::ComPtr adapter; + + while (dxgiFactory->EnumAdapters(id, adapter.GetAddressOf()) != DXGI_ERROR_NOT_FOUND) + { + DXGI_ADAPTER_DESC adapterDesc; + adapter->GetDesc(&adapterDesc); + cbox_gs_d3d_adaptater->Append(adapterDesc.Description); + id++; + } +#endif #if !defined(DX12_SUPPORT) cbox_gs_d3d_adaptater->Enable(false);