From 5e1592b05de17956ac8444ce46d83e68f1150c30 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 27 Aug 2024 23:46:34 +1000 Subject: [PATCH] GPU/HW: Fix assert with accurate blending + true colour on --- src/core/gpu_hw.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/core/gpu_hw.cpp b/src/core/gpu_hw.cpp index 2a98d7ca5..84c05a926 100644 --- a/src/core/gpu_hw.cpp +++ b/src/core/gpu_hw.cpp @@ -24,6 +24,7 @@ #include "common/timer.h" #include "IconsFontAwesome5.h" +#include "IconsEmoji.h" #include "imgui.h" #include @@ -530,7 +531,7 @@ void GPU_HW::CheckSettings() if (m_multisamples != g_settings.gpu_multisamples) { - Host::AddIconOSDMessage("MSAAUnsupported", ICON_FA_EXCLAMATION_TRIANGLE, + Host::AddIconOSDMessage("MSAAUnsupported", ICON_EMOJI_WARNING, fmt::format(TRANSLATE_FS("GPU_HW", "{}x MSAA is not supported, using {}x instead."), g_settings.gpu_multisamples, m_multisamples), Host::OSD_CRITICAL_ERROR_DURATION); @@ -542,7 +543,7 @@ void GPU_HW::CheckSettings() if (g_settings.gpu_per_sample_shading && !features.per_sample_shading) { - Host::AddIconOSDMessage("SSAAUnsupported", ICON_FA_EXCLAMATION_TRIANGLE, + Host::AddIconOSDMessage("SSAAUnsupported", ICON_EMOJI_WARNING, TRANSLATE_STR("GPU_HW", "SSAA is not supported, using MSAA instead."), Host::OSD_ERROR_DURATION); } @@ -550,7 +551,7 @@ void GPU_HW::CheckSettings() (IsBlendedTextureFiltering(m_texture_filtering) || IsBlendedTextureFiltering(m_sprite_texture_filtering))) { Host::AddIconOSDMessage( - "TextureFilterUnsupported", ICON_FA_EXCLAMATION_TRIANGLE, + "TextureFilterUnsupported", ICON_EMOJI_WARNING, fmt::format(TRANSLATE_FS("GPU_HW", "Texture filter '{}/{}' is not supported with the current renderer."), Settings::GetTextureFilterDisplayName(m_texture_filtering), Settings::GetTextureFilterName(m_sprite_texture_filtering), Host::OSD_ERROR_DURATION)); @@ -564,7 +565,7 @@ void GPU_HW::CheckSettings() { // m_allow_shader_blend/m_prefer_shader_blend will be cleared in pipeline compile. Host::AddIconOSDMessage( - "AccurateBlendingUnsupported", ICON_FA_PAINT_BRUSH, + "AccurateBlendingUnsupported", ICON_EMOJI_WARNING, TRANSLATE_STR("GPU_HW", "Accurate blending is not supported by your current GPU.\nIt requires framebuffer fetch, " "feedback loops, or rasterizer order views."), Host::OSD_WARNING_DURATION); @@ -574,7 +575,7 @@ void GPU_HW::CheckSettings() (m_pgxp_depth_buffer && features.raster_order_views && !features.feedback_loops))) { Host::AddIconOSDMessage( - "AccurateBlendingUnsupported", ICON_FA_PAINT_BRUSH, + "AccurateBlendingUnsupported", ICON_EMOJI_WARNING, TRANSLATE_STR("GPU_HW", "Multisample anti-aliasing is not supported when using ROV blending."), Host::OSD_WARNING_DURATION); m_multisamples = 1; @@ -583,7 +584,7 @@ void GPU_HW::CheckSettings() if (m_pgxp_depth_buffer && !features.feedback_loops && !features.framebuffer_fetch && !features.raster_order_views) { Host::AddIconOSDMessage( - "AccurateBlendingUnsupported", ICON_FA_PAINT_BRUSH, + "AccurateBlendingUnsupported", ICON_EMOJI_WARNING, TRANSLATE_STR("GPU_HW", "PGXP depth buffer is not supported by your current GPU or renderer.\nIt requires " "framebuffer fetch, feedback loops, or rasterizer order views."), Host::OSD_WARNING_DURATION); @@ -596,7 +597,7 @@ void GPU_HW::CheckSettings() if (!features.geometry_shaders && m_wireframe_mode != GPUWireframeMode::Disabled) { Host::AddIconOSDMessage( - "GeometryShadersUnsupported", ICON_FA_EXCLAMATION_TRIANGLE, + "GeometryShadersUnsupported", ICON_EMOJI_WARNING, TRANSLATE("GPU_HW", "Geometry shaders are not supported by your GPU, and are required for wireframe rendering."), Host::OSD_CRITICAL_ERROR_DURATION); m_wireframe_mode = GPUWireframeMode::Disabled; @@ -950,10 +951,10 @@ bool GPU_HW::CompilePipelines(Error* error) // Abuse the depth buffer for the mask bit when it's free (FBFetch), or PGXP depth buffering is enabled. m_allow_shader_blend = features.framebuffer_fetch || ((features.feedback_loops || features.raster_order_views) && - (m_pgxp_depth_buffer || g_settings.gpu_accurate_blending || + (m_pgxp_depth_buffer || g_settings.IsUsingAccurateBlending() || (!m_supports_dual_source_blend && (IsBlendedTextureFiltering(m_texture_filtering) || IsBlendedTextureFiltering(m_sprite_texture_filtering))))); - m_prefer_shader_blend = (m_allow_shader_blend && g_settings.gpu_accurate_blending && !g_settings.gpu_true_color); + m_prefer_shader_blend = (m_allow_shader_blend && g_settings.IsUsingAccurateBlending()); m_use_rov_for_shader_blend = (m_allow_shader_blend && !features.framebuffer_fetch && features.raster_order_views && (m_prefer_shader_blend || !features.feedback_loops)); m_write_mask_as_depth = (!m_pgxp_depth_buffer && !features.framebuffer_fetch && !m_prefer_shader_blend);