Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSD: Add GPU Info #11808

Merged
merged 2 commits into from
Sep 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pcsx2/GS/GS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ void GSUpdateDisplayWindow()
{
if (!g_gs_device->UpdateWindow())
{
Host::ReportErrorAsync("Error", "Failed to change window after update. The log may contain more information.");
Host::ReportErrorAsync("Error", TRANSLATE_SV("GS", "Failed to change window after update. The log may contain more information."));
return;
}

Expand Down
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 = "Unknown";
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
5 changes: 4 additions & 1 deletion pcsx2/GS/Renderers/DX11/GSDevice11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ bool GSDevice11::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
{
Host::ReportErrorAsync("GS",
fmt::format(
"Failed to create D3D device: 0x{:08X}. A GPU which supports Direct3D Feature Level 10.0 is required.",
TRANSLATE_FS("GS", "Failed to create D3D device: 0x{:08X}. A GPU which supports Direct3D Feature Level 10.0 is required."),
hr));
return false;
}
Expand Down Expand Up @@ -147,7 +147,10 @@ bool GSDevice11::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)

wil::com_ptr_nothrow<IDXGIDevice> dxgi_device;
if (m_dev.try_query_to(&dxgi_device) && SUCCEEDED(dxgi_device->GetParent(IID_PPV_ARGS(dxgi_adapter.put()))))
{
Console.WriteLn(fmt::format("D3D Adapter: {}", D3D::GetAdapterName(dxgi_adapter.get())));
m_name = D3D::GetAdapterName(dxgi_adapter.get());
}
else
Console.Error("Failed to obtain D3D adapter name.");

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
4 changes: 3 additions & 1 deletion pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm
Original file line number Diff line number Diff line change
Expand Up @@ -855,8 +855,10 @@ static void OnMainThread(Fn&& fn)
Console.Warning("Metal: Couldn't find adapter %s, using default", GSConfig.Adapter.c_str());
m_dev = GSMTLDevice(MRCTransfer(MTLCreateSystemDefaultDevice()));
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).");
Host::ReportErrorAsync(TRANSLATE_SV("GSDeviceMTL", "No Metal Devices Available"), TRANSLATE_SV("GSDeviceMTL", "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
5 changes: 4 additions & 1 deletion 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 Expand Up @@ -635,7 +638,7 @@ bool GSDeviceOGL::CheckFeatures(bool& buggy_pbo)
if (!GLAD_GL_VERSION_3_3)
{
Host::ReportErrorAsync(
"GS", fmt::format("OpenGL renderer is not supported. Only OpenGL {}.{}\n was found", major_gl, minor_gl));
"GS", fmt::format(TRANSLATE_FS("GSDeviceOGL", "OpenGL renderer is not supported. Only OpenGL {}.{}\n was found"), major_gl, minor_gl));
return false;
}

Expand Down
5 changes: 4 additions & 1 deletion pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2054,7 +2054,7 @@ bool GSDeviceVK::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)

if (!CheckFeatures())
{
Host::ReportErrorAsync("GS", "Your GPU does not support the required Vulkan features.");
Host::ReportErrorAsync("GS", TRANSLATE_SV("GSDeviceVK", "Your GPU does not support the required Vulkan features."));
return false;
}

Expand Down 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
6 changes: 6 additions & 0 deletions pcsx2/ImGui/ImGuiOverlays.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,12 +213,18 @@ __ri void ImGuiManager::DrawPerformanceOverlay(float& position_y, float scale, f

if (GSConfig.OsdShowHardwareInfo)
{
// CPU
text.clear();
text.append_format("CPU: {} ({}C/{}T)",
cpuinfo_get_package(0)->name,
cpuinfo_get_cores_count(),
cpuinfo_get_processors_count());
DRAW_LINE(fixed_font, text.c_str(), IM_COL32(255, 255, 255, 255));

// GPU
text.clear();
text.append_format("GPU: {}", g_gs_device->GetName());
DRAW_LINE(fixed_font, text.c_str(), IM_COL32(255, 255, 255, 255));
}

if (GSConfig.OsdShowCPU)
Expand Down