Skip to content

Commit

Permalink
GSDevice: Add GetName() Function
Browse files Browse the repository at this point in the history
This function allows you to retrieve the currently used GPU string name.
  • Loading branch information
kamfretoz committed Sep 13, 2024
1 parent 0cf4b76 commit 1d948a4
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 0 deletions.
4 changes: 4 additions & 0 deletions pcsx2/GS/Renderers/Common/GSDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -805,6 +805,7 @@ class GSDevice : public GSAlignedClass<32>
// clang-format on

protected:
std::string m_name;
FeatureSupport m_features;
u32 m_max_texture_size = 0;

Expand Down Expand Up @@ -870,6 +871,9 @@ class GSDevice : public GSAlignedClass<32>
GSDevice();
virtual ~GSDevice();

/// Returns a string containing current adapter in use.
const std::string& GetName() const { return m_name; }

/// Returns a string representing the specified API.
static const char* RenderAPIToString(RenderAPI api);

Expand Down
2 changes: 2 additions & 0 deletions pcsx2/GS/Renderers/DX11/GSDevice11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,8 @@ bool GSDevice11::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
temp_dev.reset();
temp_ctx.reset();

m_name = D3D::GetAdapterName(dxgi_adapter.get());

if (GSConfig.UseDebugDevice && IsDebuggerPresent())
{
wil::com_ptr_nothrow<ID3D11InfoQueue> info;
Expand Down
2 changes: 2 additions & 0 deletions pcsx2/GS/Renderers/DX12/GSDevice12.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,8 @@ bool GSDevice12::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
return false;
}

m_name = D3D::GetAdapterName(m_adapter.get());

if (!CreateDescriptorHeaps() || !CreateCommandLists() || !CreateTimestampQuery())
return false;

Expand Down
2 changes: 2 additions & 0 deletions pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm
Original file line number Diff line number Diff line change
Expand Up @@ -857,6 +857,8 @@ static void OnMainThread(Fn&& fn)
if (!m_dev.dev)
Host::ReportErrorAsync("No Metal Devices Available", "No Metal-supporting GPUs were found. PCSX2 requires a Metal GPU (available on all macs from 2012 onwards).");
}

m_name = [[m_dev.dev name] UTF8String];
m_queue = MRCTransfer([m_dev.dev newCommandQueue]);

m_pass_desc = MRCTransfer([MTLRenderPassDescriptor new]);
Expand Down
3 changes: 3 additions & 0 deletions pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,9 @@ bool GSDeviceOGL::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
if (!CheckFeatures(buggy_pbo))
return false;

// Store adapter name currently in use
m_name = reinterpret_cast<const char*>(glGetString(GL_RENDERER));

SetSwapInterval();

// Render a frame as soon as possible to clear out whatever was previously being displayed.
Expand Down
3 changes: 3 additions & 0 deletions pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2539,6 +2539,9 @@ bool GSDeviceVK::CreateDeviceAndSwapChain()
// Read device physical memory properties, we need it for allocating buffers
vkGetPhysicalDeviceProperties(m_physical_device, &m_device_properties);

// Stores the GPU name
m_name = m_device_properties.deviceName;

// We need this to be at least 32 byte aligned for AVX2 stores.
m_device_properties.limits.minUniformBufferOffsetAlignment =
std::max(m_device_properties.limits.minUniformBufferOffsetAlignment, static_cast<VkDeviceSize>(32));
Expand Down

0 comments on commit 1d948a4

Please sign in to comment.