mirror of https://github.com/PCSX2/pcsx2.git
GS/wx: Change TriFilter name and move it to main renderer tab on wx.
Matches Qt behavior.
This commit is contained in:
parent
aafb7e22df
commit
d908fa5e38
|
@ -549,7 +549,7 @@ struct Pcsx2Config
|
||||||
int UserHacks_TCOffsetX{0};
|
int UserHacks_TCOffsetX{0};
|
||||||
int UserHacks_TCOffsetY{0};
|
int UserHacks_TCOffsetY{0};
|
||||||
int UserHacks_CPUSpriteRenderBW{0};
|
int UserHacks_CPUSpriteRenderBW{0};
|
||||||
TriFiltering UserHacks_TriFilter{TriFiltering::Automatic};
|
TriFiltering TriFilter{TriFiltering::Automatic};
|
||||||
int OverrideTextureBarriers{-1};
|
int OverrideTextureBarriers{-1};
|
||||||
int OverrideGeometryShaders{-1};
|
int OverrideGeometryShaders{-1};
|
||||||
|
|
||||||
|
|
|
@ -2633,7 +2633,7 @@ void FullscreenUI::DrawGraphicsSettingsPage()
|
||||||
DrawIntListSetting(bsi, "Bilinear Filtering", "Selects where bilinear filtering is utilized when rendering textures.", "EmuCore/GS",
|
DrawIntListSetting(bsi, "Bilinear Filtering", "Selects where bilinear filtering is utilized when rendering textures.", "EmuCore/GS",
|
||||||
"filter", static_cast<int>(BiFiltering::PS2), s_bilinear_options, std::size(s_bilinear_options));
|
"filter", static_cast<int>(BiFiltering::PS2), s_bilinear_options, std::size(s_bilinear_options));
|
||||||
DrawIntListSetting(bsi, "Trilinear Filtering", "Selects where trilinear filtering is utilized when rendering textures.",
|
DrawIntListSetting(bsi, "Trilinear Filtering", "Selects where trilinear filtering is utilized when rendering textures.",
|
||||||
"EmuCore/GS", "UserHacks_TriFilter", static_cast<int>(TriFiltering::Automatic), s_trilinear_options,
|
"EmuCore/GS", "TriFilter", static_cast<int>(TriFiltering::Automatic), s_trilinear_options,
|
||||||
std::size(s_trilinear_options), -1);
|
std::size(s_trilinear_options), -1);
|
||||||
DrawStringListSetting(bsi, "Anisotropic Filtering", "Selects where anistropic filtering is utilized when rendering textures.",
|
DrawStringListSetting(bsi, "Anisotropic Filtering", "Selects where anistropic filtering is utilized when rendering textures.",
|
||||||
"EmuCore/GS", "MaxAnisotropy", "0", s_anisotropic_filtering_entries, s_anisotropic_filtering_values,
|
"EmuCore/GS", "MaxAnisotropy", "0", s_anisotropic_filtering_entries, s_anisotropic_filtering_values,
|
||||||
|
|
|
@ -833,7 +833,7 @@ void GSUpdateConfig(const Pcsx2Config::GSOptions& new_config)
|
||||||
if (
|
if (
|
||||||
(GSConfig.UseHardwareRenderer() && GSConfig.HWMipmap != old_config.HWMipmap) ||
|
(GSConfig.UseHardwareRenderer() && GSConfig.HWMipmap != old_config.HWMipmap) ||
|
||||||
GSConfig.TexturePreloading != old_config.TexturePreloading ||
|
GSConfig.TexturePreloading != old_config.TexturePreloading ||
|
||||||
GSConfig.UserHacks_TriFilter != old_config.UserHacks_TriFilter ||
|
GSConfig.TriFilter != old_config.TriFilter ||
|
||||||
GSConfig.GPUPaletteConversion != old_config.GPUPaletteConversion ||
|
GSConfig.GPUPaletteConversion != old_config.GPUPaletteConversion ||
|
||||||
GSConfig.PreloadFrameWithGSData != old_config.PreloadFrameWithGSData ||
|
GSConfig.PreloadFrameWithGSData != old_config.PreloadFrameWithGSData ||
|
||||||
GSConfig.WrapGSMem != old_config.WrapGSMem ||
|
GSConfig.WrapGSMem != old_config.WrapGSMem ||
|
||||||
|
@ -1498,6 +1498,7 @@ void GSApp::Init()
|
||||||
m_default_configuration["SkipDuplicateFrames"] = "0";
|
m_default_configuration["SkipDuplicateFrames"] = "0";
|
||||||
m_default_configuration["texture_preloading"] = "2";
|
m_default_configuration["texture_preloading"] = "2";
|
||||||
m_default_configuration["ThreadedPresentation"] = "0";
|
m_default_configuration["ThreadedPresentation"] = "0";
|
||||||
|
m_default_configuration["TriFilter"] = std::to_string(static_cast<s8>(TriFiltering::Automatic));
|
||||||
m_default_configuration["TVShader"] = "0";
|
m_default_configuration["TVShader"] = "0";
|
||||||
m_default_configuration["upscale_multiplier"] = "1";
|
m_default_configuration["upscale_multiplier"] = "1";
|
||||||
m_default_configuration["UseBlitSwapChain"] = "0";
|
m_default_configuration["UseBlitSwapChain"] = "0";
|
||||||
|
@ -1519,7 +1520,6 @@ void GSApp::Init()
|
||||||
m_default_configuration["UserHacks_TCOffsetX"] = "0";
|
m_default_configuration["UserHacks_TCOffsetX"] = "0";
|
||||||
m_default_configuration["UserHacks_TCOffsetY"] = "0";
|
m_default_configuration["UserHacks_TCOffsetY"] = "0";
|
||||||
m_default_configuration["UserHacks_TextureInsideRt"] = "0";
|
m_default_configuration["UserHacks_TextureInsideRt"] = "0";
|
||||||
m_default_configuration["UserHacks_TriFilter"] = std::to_string(static_cast<s8>(TriFiltering::Automatic));
|
|
||||||
m_default_configuration["UserHacks_WildHack"] = "0";
|
m_default_configuration["UserHacks_WildHack"] = "0";
|
||||||
m_default_configuration["wrap_gs_mem"] = "0";
|
m_default_configuration["wrap_gs_mem"] = "0";
|
||||||
m_default_configuration["vsync"] = "0";
|
m_default_configuration["vsync"] = "0";
|
||||||
|
|
|
@ -1516,7 +1516,7 @@ void GSRendererHW::Draw()
|
||||||
|
|
||||||
m_src = tex_psm.depth ? m_tc->LookupDepthSource(TEX0, env.TEXA, tmm.coverage) :
|
m_src = tex_psm.depth ? m_tc->LookupDepthSource(TEX0, env.TEXA, tmm.coverage) :
|
||||||
m_tc->LookupSource(TEX0, env.TEXA, tmm.coverage, (GSConfig.HWMipmap >= HWMipmapLevel::Basic ||
|
m_tc->LookupSource(TEX0, env.TEXA, tmm.coverage, (GSConfig.HWMipmap >= HWMipmapLevel::Basic ||
|
||||||
GSConfig.UserHacks_TriFilter == TriFiltering::Forced) ? &hash_lod_range : nullptr);
|
GSConfig.TriFilter == TriFiltering::Forced) ? &hash_lod_range : nullptr);
|
||||||
|
|
||||||
const int tw = 1 << TEX0.TW;
|
const int tw = 1 << TEX0.TW;
|
||||||
const int th = 1 << TEX0.TH;
|
const int th = 1 << TEX0.TH;
|
||||||
|
@ -3032,7 +3032,7 @@ void GSRendererHW::EmulateTextureSampler(const GSTextureCache::Source* tex)
|
||||||
bool bilinear = m_vt.IsLinear();
|
bool bilinear = m_vt.IsLinear();
|
||||||
int trilinear = 0;
|
int trilinear = 0;
|
||||||
bool trilinear_auto = false; // Generate mipmaps if needed (basic).
|
bool trilinear_auto = false; // Generate mipmaps if needed (basic).
|
||||||
switch (GSConfig.UserHacks_TriFilter)
|
switch (GSConfig.TriFilter)
|
||||||
{
|
{
|
||||||
case TriFiltering::Forced:
|
case TriFiltering::Forced:
|
||||||
{
|
{
|
||||||
|
|
|
@ -496,7 +496,7 @@ void GSTextureReplacements::PrecacheReplacementTextures()
|
||||||
// predict whether the requests will come with mipmaps
|
// predict whether the requests will come with mipmaps
|
||||||
// TODO: This will be wrong for hw mipmap games like Jak.
|
// TODO: This will be wrong for hw mipmap games like Jak.
|
||||||
const bool mipmap = GSConfig.HWMipmap >= HWMipmapLevel::Basic ||
|
const bool mipmap = GSConfig.HWMipmap >= HWMipmapLevel::Basic ||
|
||||||
GSConfig.UserHacks_TriFilter == TriFiltering::Forced;
|
GSConfig.TriFilter == TriFiltering::Forced;
|
||||||
|
|
||||||
// pretty simple, just go through the filenames and if any aren't cached, cache them
|
// pretty simple, just go through the filenames and if any aren't cached, cache them
|
||||||
for (const auto& it : s_replacement_texture_filenames)
|
for (const auto& it : s_replacement_texture_filenames)
|
||||||
|
|
|
@ -52,6 +52,7 @@ enum
|
||||||
IDC_AFCOMBO,
|
IDC_AFCOMBO,
|
||||||
IDC_DITHERING,
|
IDC_DITHERING,
|
||||||
IDC_MIPMAP_HW,
|
IDC_MIPMAP_HW,
|
||||||
|
IDC_TRI_FILTER,
|
||||||
IDC_CRC_LEVEL,
|
IDC_CRC_LEVEL,
|
||||||
IDC_ACCURATE_BLEND_UNIT,
|
IDC_ACCURATE_BLEND_UNIT,
|
||||||
// Rendering Hacks
|
// Rendering Hacks
|
||||||
|
@ -63,7 +64,6 @@ enum
|
||||||
IDC_MEMORY_WRAPPING,
|
IDC_MEMORY_WRAPPING,
|
||||||
IDC_PRELOAD_GS,
|
IDC_PRELOAD_GS,
|
||||||
IDC_HALF_SCREEN_TS,
|
IDC_HALF_SCREEN_TS,
|
||||||
IDC_TRI_FILTER,
|
|
||||||
IDC_SKIPDRAWEND,
|
IDC_SKIPDRAWEND,
|
||||||
IDC_SKIPDRAWHACKEDIT,
|
IDC_SKIPDRAWHACKEDIT,
|
||||||
IDC_SKIPDRAWSTART,
|
IDC_SKIPDRAWSTART,
|
||||||
|
|
|
@ -293,6 +293,7 @@ RendererTab::RendererTab(wxWindow* parent)
|
||||||
m_ui.addComboBoxAndLabel(hw_choice_grid, "Anisotropic Filtering:", "MaxAnisotropy", &theApp.m_gs_max_anisotropy, IDC_AFCOMBO, aniso_prereq);
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "Anisotropic Filtering:", "MaxAnisotropy", &theApp.m_gs_max_anisotropy, IDC_AFCOMBO, aniso_prereq);
|
||||||
m_ui.addComboBoxAndLabel(hw_choice_grid, "Dithering (PgDn):", "dithering_ps2", &theApp.m_gs_dithering, IDC_DITHERING, hw_prereq);
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "Dithering (PgDn):", "dithering_ps2", &theApp.m_gs_dithering, IDC_DITHERING, hw_prereq);
|
||||||
m_ui.addComboBoxAndLabel(hw_choice_grid, "Mipmapping:", "mipmap_hw", &theApp.m_gs_hw_mipmapping, IDC_MIPMAP_HW, hw_prereq);
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "Mipmapping:", "mipmap_hw", &theApp.m_gs_hw_mipmapping, IDC_MIPMAP_HW, hw_prereq);
|
||||||
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "Trilinear Filtering:", "TriFilter", &theApp.m_gs_trifilter, IDC_TRI_FILTER, hw_prereq);
|
||||||
m_ui.addComboBoxAndLabel(hw_choice_grid, "CRC Hack Level:", "crc_hack_level", &theApp.m_gs_crc_level, IDC_CRC_LEVEL, hw_prereq);
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "CRC Hack Level:", "crc_hack_level", &theApp.m_gs_crc_level, IDC_CRC_LEVEL, hw_prereq);
|
||||||
m_ui.addComboBoxAndLabel(hw_choice_grid, "Blending Accuracy:", "accurate_blending_unit", &theApp.m_gs_acc_blend_level, IDC_ACCURATE_BLEND_UNIT, hw_prereq);
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "Blending Accuracy:", "accurate_blending_unit", &theApp.m_gs_acc_blend_level, IDC_ACCURATE_BLEND_UNIT, hw_prereq);
|
||||||
m_ui.addComboBoxAndLabel(hw_choice_grid, "Texture Preloading:", "texture_preloading", &theApp.m_gs_texture_preloading, IDC_PRELOAD_TEXTURES, hw_prereq);
|
m_ui.addComboBoxAndLabel(hw_choice_grid, "Texture Preloading:", "texture_preloading", &theApp.m_gs_texture_preloading, IDC_PRELOAD_TEXTURES, hw_prereq);
|
||||||
|
@ -371,7 +372,6 @@ HacksTab::HacksTab(wxWindow* parent)
|
||||||
|
|
||||||
// Renderer Hacks:
|
// Renderer Hacks:
|
||||||
m_ui.addComboBoxAndLabel(rend_hack_choice_grid, "Half Screen Fix:", "UserHacks_Half_Bottom_Override", &theApp.m_gs_generic_list, IDC_HALF_SCREEN_TS, hacks_prereq);
|
m_ui.addComboBoxAndLabel(rend_hack_choice_grid, "Half Screen Fix:", "UserHacks_Half_Bottom_Override", &theApp.m_gs_generic_list, IDC_HALF_SCREEN_TS, hacks_prereq);
|
||||||
m_ui.addComboBoxAndLabel(rend_hack_choice_grid, "Trilinear Filtering:", "UserHacks_TriFilter", &theApp.m_gs_trifilter, IDC_TRI_FILTER, hacks_prereq);
|
|
||||||
|
|
||||||
// Skipdraw Range
|
// Skipdraw Range
|
||||||
add_label(this, rend_hack_choice_grid, "Skipdraw Range:", IDC_SKIPDRAWEND);
|
add_label(this, rend_hack_choice_grid, "Skipdraw Range:", IDC_SKIPDRAWEND);
|
||||||
|
|
|
@ -318,14 +318,8 @@ bool GameDatabaseSchema::isUserHackHWFix(GSHWFixId id)
|
||||||
case GSHWFixId::Mipmap:
|
case GSHWFixId::Mipmap:
|
||||||
case GSHWFixId::TexturePreloading:
|
case GSHWFixId::TexturePreloading:
|
||||||
case GSHWFixId::PointListPalette:
|
case GSHWFixId::PointListPalette:
|
||||||
return false;
|
|
||||||
|
|
||||||
#ifdef PCSX2_CORE
|
|
||||||
// Trifiltering isn't a hack in Qt.
|
|
||||||
case GSHWFixId::TrilinearFiltering:
|
case GSHWFixId::TrilinearFiltering:
|
||||||
return false;
|
return false;
|
||||||
#endif
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -479,7 +473,7 @@ bool GameDatabaseSchema::GameEntry::configMatchesHWFix(const Pcsx2Config::GSOpti
|
||||||
return (config.HWMipmap == HWMipmapLevel::Automatic || static_cast<int>(config.HWMipmap) == value);
|
return (config.HWMipmap == HWMipmapLevel::Automatic || static_cast<int>(config.HWMipmap) == value);
|
||||||
|
|
||||||
case GSHWFixId::TrilinearFiltering:
|
case GSHWFixId::TrilinearFiltering:
|
||||||
return (config.UserHacks_TriFilter == TriFiltering::Automatic || static_cast<int>(config.UserHacks_TriFilter) == value);
|
return (config.TriFilter == TriFiltering::Automatic || static_cast<int>(config.TriFilter) == value);
|
||||||
|
|
||||||
case GSHWFixId::SkipDrawStart:
|
case GSHWFixId::SkipDrawStart:
|
||||||
return (config.SkipDrawStart == value);
|
return (config.SkipDrawStart == value);
|
||||||
|
@ -597,9 +591,9 @@ u32 GameDatabaseSchema::GameEntry::applyGSHardwareFixes(Pcsx2Config::GSOptions&
|
||||||
{
|
{
|
||||||
if (value >= 0 && value <= static_cast<int>(TriFiltering::Forced))
|
if (value >= 0 && value <= static_cast<int>(TriFiltering::Forced))
|
||||||
{
|
{
|
||||||
if (config.UserHacks_TriFilter == TriFiltering::Automatic)
|
if (config.TriFilter == TriFiltering::Automatic)
|
||||||
config.UserHacks_TriFilter = static_cast<TriFiltering>(value);
|
config.TriFilter = static_cast<TriFiltering>(value);
|
||||||
else if (config.UserHacks_TriFilter == TriFiltering::Off)
|
else if (config.TriFilter == TriFiltering::Off)
|
||||||
Console.Warning("[GameDB] Game requires trilinear filtering but it has been force disabled.");
|
Console.Warning("[GameDB] Game requires trilinear filtering but it has been force disabled.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -407,6 +407,7 @@ bool Pcsx2Config::GSOptions::OptionsAreEqual(const GSOptions& right) const
|
||||||
OpEqu(MaxAnisotropy) &&
|
OpEqu(MaxAnisotropy) &&
|
||||||
OpEqu(SWExtraThreads) &&
|
OpEqu(SWExtraThreads) &&
|
||||||
OpEqu(SWExtraThreadsHeight) &&
|
OpEqu(SWExtraThreadsHeight) &&
|
||||||
|
OpEqu(TriFilter) &&
|
||||||
OpEqu(TVShader) &&
|
OpEqu(TVShader) &&
|
||||||
OpEqu(SkipDrawEnd) &&
|
OpEqu(SkipDrawEnd) &&
|
||||||
OpEqu(SkipDrawStart) &&
|
OpEqu(SkipDrawStart) &&
|
||||||
|
@ -417,7 +418,6 @@ bool Pcsx2Config::GSOptions::OptionsAreEqual(const GSOptions& right) const
|
||||||
OpEqu(UserHacks_TCOffsetX) &&
|
OpEqu(UserHacks_TCOffsetX) &&
|
||||||
OpEqu(UserHacks_TCOffsetY) &&
|
OpEqu(UserHacks_TCOffsetY) &&
|
||||||
OpEqu(UserHacks_CPUSpriteRenderBW) &&
|
OpEqu(UserHacks_CPUSpriteRenderBW) &&
|
||||||
OpEqu(UserHacks_TriFilter) &&
|
|
||||||
OpEqu(OverrideTextureBarriers) &&
|
OpEqu(OverrideTextureBarriers) &&
|
||||||
OpEqu(OverrideGeometryShaders) &&
|
OpEqu(OverrideGeometryShaders) &&
|
||||||
|
|
||||||
|
@ -603,7 +603,7 @@ void Pcsx2Config::GSOptions::ReloadIniSettings()
|
||||||
GSSettingIntEx(UserHacks_TCOffsetX, "UserHacks_TCOffsetX");
|
GSSettingIntEx(UserHacks_TCOffsetX, "UserHacks_TCOffsetX");
|
||||||
GSSettingIntEx(UserHacks_TCOffsetY, "UserHacks_TCOffsetY");
|
GSSettingIntEx(UserHacks_TCOffsetY, "UserHacks_TCOffsetY");
|
||||||
GSSettingIntEx(UserHacks_CPUSpriteRenderBW, "UserHacks_CPUSpriteRenderBW");
|
GSSettingIntEx(UserHacks_CPUSpriteRenderBW, "UserHacks_CPUSpriteRenderBW");
|
||||||
GSSettingIntEnumEx(UserHacks_TriFilter, "UserHacks_TriFilter");
|
GSSettingIntEnumEx(TriFilter, "TriFilter");
|
||||||
GSSettingIntEx(OverrideTextureBarriers, "OverrideTextureBarriers");
|
GSSettingIntEx(OverrideTextureBarriers, "OverrideTextureBarriers");
|
||||||
GSSettingIntEx(OverrideGeometryShaders, "OverrideGeometryShaders");
|
GSSettingIntEx(OverrideGeometryShaders, "OverrideGeometryShaders");
|
||||||
|
|
||||||
|
@ -652,11 +652,6 @@ void Pcsx2Config::GSOptions::MaskUserHacks()
|
||||||
UserHacks_CPUSpriteRenderBW = 0;
|
UserHacks_CPUSpriteRenderBW = 0;
|
||||||
SkipDrawStart = 0;
|
SkipDrawStart = 0;
|
||||||
SkipDrawEnd = 0;
|
SkipDrawEnd = 0;
|
||||||
|
|
||||||
// in wx, we put trilinear filtering behind user hacks, but not in qt.
|
|
||||||
#ifndef PCSX2_CORE
|
|
||||||
UserHacks_TriFilter = TriFiltering::Automatic;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pcsx2Config::GSOptions::MaskUpscalingHacks()
|
void Pcsx2Config::GSOptions::MaskUpscalingHacks()
|
||||||
|
|
|
@ -1799,7 +1799,7 @@ void VMManager::WarnAboutUnsafeSettings()
|
||||||
messages += ICON_FA_IMAGES " Mipmapping is not set to automatic. This may break rendering in some games.\n";
|
messages += ICON_FA_IMAGES " Mipmapping is not set to automatic. This may break rendering in some games.\n";
|
||||||
if (EmuConfig.GS.TextureFiltering != BiFiltering::PS2)
|
if (EmuConfig.GS.TextureFiltering != BiFiltering::PS2)
|
||||||
messages += ICON_FA_FILTER " Texture filtering is not set to Bilinear (PS2). This will break rendering in some games.\n";
|
messages += ICON_FA_FILTER " Texture filtering is not set to Bilinear (PS2). This will break rendering in some games.\n";
|
||||||
if (EmuConfig.GS.UserHacks_TriFilter != TriFiltering::Automatic)
|
if (EmuConfig.GS.TriFilter != TriFiltering::Automatic)
|
||||||
messages += ICON_FA_PAGER " Trilinear filtering is not set to automatic. This may break rendering in some games.\n";
|
messages += ICON_FA_PAGER " Trilinear filtering is not set to automatic. This may break rendering in some games.\n";
|
||||||
if (EmuConfig.GS.AccurateBlendingUnit <= AccBlendLevel::Minimum)
|
if (EmuConfig.GS.AccurateBlendingUnit <= AccBlendLevel::Minimum)
|
||||||
messages += ICON_FA_BLENDER " Blending is below basic, this may break effects in some games.\n";
|
messages += ICON_FA_BLENDER " Blending is below basic, this may break effects in some games.\n";
|
||||||
|
|
Loading…
Reference in New Issue