Compare commits

...
5 Commits
Author SHA1 Message Date
TheLastRarandlightningterror 779d5c4339 GS/VK: Workaround Nvidia issue when swapping ROV targets 2026-07-31 23:20:42 +02:00
lightningterror fe55f87289 GS/VK: Remove undefined unused shader macro. 2026-07-31 17:29:28 +02:00
TJnotJTandlightningterror ab6bc30aec GS:DX11: Fix typo in query destruction.
Fixes a bug when disabling then enabling pipeline stats.
2026-07-31 17:28:57 +02:00
TJnotJTandlightningterror 5793dbc1ef GS:HW: Only enable GPU timing/stats in backend if the option is enabled.
Helps prevent a crash in Mesa3D Windows drivers.
2026-07-31 17:28:57 +02:00
PCSX2 BotandTy 773f96a312 [ci skip] Qt: Update Base Translation. 2026-07-30 20:43:11 -04:00
7 changed files with 28 additions and 17 deletions
+1 -1
View File
@@ -587,7 +587,7 @@ void main()
#define PS_FEEDBACK_LOOP_IS_NEEDED_RT (PS_TEX_IS_FB == 1 || AFAIL_NEEDS_RT || PS_FBMASK || SW_BLEND_NEEDS_RT || SW_AD_TO_HW || (PS_DATE >= 5))
#define PS_FEEDBACK_LOOP_IS_NEEDED_DEPTH (AFAIL_NEEDS_DEPTH || ZTST_NEEDS_DEPTH || AA1_NEEDS_DEPTH)
#define ZWRITE (PS_ZCLAMP || PS_ZFLOOR || SW_DEPTH || PS_FEEDBACK_LOOP_IS_NEEDED_DEPTH)
#define ZWRITE (PS_ZCLAMP || PS_ZFLOOR || PS_FEEDBACK_LOOP_IS_NEEDED_DEPTH)
#define PS_RETURN_COLOR_ROV (!PS_NO_COLOR && PS_ROV_COLOR)
#define PS_RETURN_COLOR (!PS_NO_COLOR && !PS_ROV_COLOR)
+2 -2
View File
@@ -806,12 +806,12 @@ Leaderboard Position: {1} of {2}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="838"/>
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="839"/>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="839"/>
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="840"/>
<source>No</source>
<translation type="unfinished"></translation>
</message>
+4 -4
View File
@@ -161,9 +161,9 @@ static bool OpenGSDevice(GSRendererType renderer, bool clear_state_on_fail, bool
return false;
}
if (!g_gs_device->SetGPUTimingEnabled(true))
if (GSConfig.OsdShowGPU && !g_gs_device->SetGPUTimingEnabled(true))
GSConfig.OsdShowGPU = false;
if (!g_gs_device->SetGPUPipelineStatisticsEnabled(true))
if (GSConfig.OsdShowGPUStats && !g_gs_device->SetGPUPipelineStatisticsEnabled(true))
GSConfig.OsdShowGPUStats = false;
Console.WriteLn(Color_StrongGreen, "%s Graphics Driver Info:", GSDevice::RenderAPIToString(new_api));
@@ -881,9 +881,9 @@ void GSUpdateConfig(const Pcsx2Config::GSOptions& new_config)
g_gs_renderer->PurgeTextureCache(true, false, true);
}
if (GSConfig.OsdShowGPU && !old_config.OsdShowGPU)
if (GSConfig.OsdShowGPU != old_config.OsdShowGPU)
{
if (!g_gs_device->SetGPUTimingEnabled(true))
if (!g_gs_device->SetGPUTimingEnabled(GSConfig.OsdShowGPU))
GSConfig.OsdShowGPU = false;
}
+7 -7
View File
@@ -1167,7 +1167,7 @@ void GSDevice11::DestroyTimestampQueries()
m_read_timestamp_query = 0;
m_write_timestamp_query = 0;
m_waiting_timestamp_queries = 0;
m_timestamp_query_started = 0;
m_timestamp_query_started = false;
}
void GSDevice11::PopTimestampQuery()
@@ -1286,13 +1286,13 @@ void GSDevice11::DestroyPipelineStatisticsQueries()
return;
if (m_pipeline_statistics_query_started)
m_ctx->End(m_pipeline_statistics_queries[m_write_timestamp_query].get());
m_ctx->End(m_pipeline_statistics_queries[m_write_pipeline_statistics_query].get());
m_timestamp_queries = {};
m_read_timestamp_query = 0;
m_write_timestamp_query = 0;
m_waiting_timestamp_queries = 0;
m_timestamp_query_started = 0;
m_pipeline_statistics_queries = {};
m_read_pipeline_statistics_query = 0;
m_write_pipeline_statistics_query = 0;
m_waiting_pipeline_statistics_queries = 0;
m_pipeline_statistics_query_started = false;
}
void GSDevice11::PopPipelineStatisticsQuery()
+1 -1
View File
@@ -1292,7 +1292,7 @@ bool GSDeviceOGL::SetGPUPipelineStatisticsEnabled(bool enabled)
else
DestroyPipelineStatisticsQueries();
return true;
return (enabled == m_gpu_pipeline_statistics_enabled);
}
void GSDeviceOGL::DrawPrimitive()
+12 -1
View File
@@ -1150,7 +1150,7 @@ GPUPipelineStatistics GSDeviceVK::GetAndResetAccumulatedGPUPipelineStatistics()
bool GSDeviceVK::SetGPUPipelineStatisticsEnabled(bool enabled)
{
m_gpu_pipeline_statistics_enabled = enabled && m_gpu_pipeline_statistics_supported;
return true;
return (enabled == m_gpu_pipeline_statistics_enabled);
}
void GSDeviceVK::ScanForCommandBufferCompletion()
@@ -5418,6 +5418,17 @@ void GSDeviceVK::PSSetROVs(GSTexture* rt, GSTexture* ds, bool write_rt, bool wri
PSSetShaderResource(TFX_TEXTURE_DEPTH_ROV, nullptr, false);
}
if (IsDeviceNVIDIA() && InRenderPass())
{
// Nvidia doesn't like switching ROV targets mid-render pass, doing so causes flickering or missing geometry.
// End the render pass to avoid such issues.
if (vkRt != oldVkRt || vkDs != oldVkDs)
{
GL_INS("VK: Ending render pass due to UAV switch");
EndRenderPass();
}
}
if (GSConfig.HWROVBarriersVK)
{
// This is to fix issues with some systems that seem to require barriers even with FSI.
+1 -1
View File
@@ -3,4 +3,4 @@
/// Version number for GS and other shaders. Increment whenever any of the contents of the
/// shaders change, to invalidate the cache.
static constexpr u32 SHADER_CACHE_VERSION = 108; // Last changed in PR 14688
static constexpr u32 SHADER_CACHE_VERSION = 109; // Last changed in PR 14795