GSdx-GUI: Conservative Buffer Allocation + GPU Palette Conversion + Misc fixes

- Conservative Buffer Allocation will be enabled by default.
- Unscaled has a lesser visual impact but will be moved to the middle so it is more consistent with the other options in the GUI.
- Monitor will hence be named Statistics Monitor which makes it more obvious that it's similar to RivaTuner Statistics Server.
- The monitor will print the stats of the emulated components EE (roughly CPU-usage) , GS (roughly GPU-usage).
- Make room for the new checkboxes with revision of names and tooltips.
- GPU (color) Palette Conversion instead of 8bit textures (the name didn't make much sense).
This commit is contained in:
RedDevilus 2021-01-05 19:29:10 +01:00 committed by Kojin
parent 1f236cab75
commit 170d1cb94c
9 changed files with 63 additions and 58 deletions

View File

@ -244,8 +244,8 @@ void GSdxApp::Init()
m_gs_max_anisotropy.push_back(GSSetting(16, "16x", ""));
m_gs_dithering.push_back(GSSetting(0, "Off", ""));
m_gs_dithering.push_back(GSSetting(1, "Scaled", ""));
m_gs_dithering.push_back(GSSetting(2, "Unscaled", "Default"));
m_gs_dithering.push_back(GSSetting(1, "Scaled", ""));
m_gs_bifilter.push_back(GSSetting(static_cast<uint32>(BiFiltering::Nearest), "Nearest", ""));
m_gs_bifilter.push_back(GSSetting(static_cast<uint32>(BiFiltering::Forced_But_Sprite), "Bilinear", "Forced excluding sprite"));
@ -339,7 +339,7 @@ void GSdxApp::Init()
m_default_configuration["force_texture_clear"] = "0";
m_default_configuration["fxaa"] = "0";
m_default_configuration["interlace"] = "7";
m_default_configuration["large_framebuffer"] = "0";
m_default_configuration["conservative_framebuffer"] = "1";
m_default_configuration["linear_present"] = "1";
m_default_configuration["MaxAnisotropy"] = "0";
m_default_configuration["mipmap"] = "1";

View File

@ -203,7 +203,7 @@ CAPTION "OSD Configuration"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
// Enable/Disable
CONTROL "Enable Monitor",IDC_OSD_MONITOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,7,65,10
CONTROL "Enable Statistics Monitor",IDC_OSD_MONITOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,7,88,10
CONTROL "Enable Log",IDC_OSD_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,112,7,54,10
// Font Settings
GROUPBOX "Font",IDC_STATIC,7,20,196,100,0,WS_EX_TRANSPARENT
@ -269,38 +269,38 @@ BEGIN
COMBOBOX IDC_INTERLACE,70,85,166,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Texture Filtering:",IDC_FILTER_TEXT,6,102,79,8
COMBOBOX IDC_FILTER,70,100,166,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "OSD Configuration",IDC_OSDBUTTON,10,317,108,14
PUSHBUTTON "Shader Configuration",IDC_SHADEBUTTON,124,317,108,14
DEFPUSHBUTTON "OK",IDOK,68,337,50,14
PUSHBUTTON "Cancel",IDCANCEL,124,337,50,14
PUSHBUTTON "OSD Configuration",IDC_OSDBUTTON,10,321,108,14
PUSHBUTTON "Shader Configuration",IDC_SHADEBUTTON,124,321,108,14
DEFPUSHBUTTON "OK",IDOK,68,341,50,14
PUSHBUTTON "Cancel",IDCANCEL,124,341,50,14
// Hardware Renderer Settings:
GROUPBOX "Hardware Renderer Settings",IDC_STATIC,6,121,230,140,BS_CENTER
CONTROL "Accurate DATE",IDC_ACCURATE_DATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,132,63,10
CONTROL "Allow 8-Bit Textures",IDC_PALTEX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,77,132,76,10
CONTROL "Large Framebuffer",IDC_LARGE_FB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,132,75,10
LTEXT "Internal Resolution:",IDC_UPSCALE_MULTIPLIER_TEXT,22,149,79,8
COMBOBOX IDC_UPSCALE_MULTIPLIER,104,147,127,98,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Anisotropic Filtering:",IDC_AFCOMBO_TEXT,22,165,79,8
COMBOBOX IDC_AFCOMBO,104,163,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Dithering (PgDn):",IDC_DITHERING_TEXT,22,181,79,8
COMBOBOX IDC_DITHERING,104,179,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Mipmapping (Ins):",IDC_MIPMAP_HW_TEXT,22,197,79,8
COMBOBOX IDC_MIPMAP_HW,104,195,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "CRC Hack Level:",IDC_CRC_LEVEL_TEXT,22,213,79,8
COMBOBOX IDC_CRC_LEVEL,104,211,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Blending Accuracy:",IDC_ACCURATE_BLEND_UNIT_TEXT,22,229,79,8
COMBOBOX IDC_ACCURATE_BLEND_UNIT,104,227,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_ACCURATE_BLEND_UNIT_D3D11,104,227,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Enable HW Hacks",IDC_HACKS_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,245,71,10
PUSHBUTTON "Advanced Settings and Hacks",IDC_HACKSBUTTON,104,243,127,14
GROUPBOX "Hardware Renderer Settings",IDC_STATIC,6,114,230,154,BS_CENTER
CONTROL "Accurate DATE",IDC_ACCURATE_DATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,124,63,10
CONTROL "GPU Palette Conversion",IDC_PALTEX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,140,87,10
CONTROL "Conservative Buffer Allocation",IDC_CONSERVATIVE_FB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,104,140,108,10
LTEXT "Internal Resolution:",IDC_UPSCALE_MULTIPLIER_TEXT,22,156,79,8
COMBOBOX IDC_UPSCALE_MULTIPLIER,104,154,127,98,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Anisotropic Filtering:",IDC_AFCOMBO_TEXT,22,172,79,8
COMBOBOX IDC_AFCOMBO,104,170,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Dithering (PgDn):",IDC_DITHERING_TEXT,22,188,79,8
COMBOBOX IDC_DITHERING,104,186,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Mipmapping (Ins):",IDC_MIPMAP_HW_TEXT,22,204,79,8
COMBOBOX IDC_MIPMAP_HW,104,202,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "CRC Hack Level:",IDC_CRC_LEVEL_TEXT,22,220,79,8
COMBOBOX IDC_CRC_LEVEL,104,218,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Blending Accuracy:",IDC_ACCURATE_BLEND_UNIT_TEXT,22,236,79,8
COMBOBOX IDC_ACCURATE_BLEND_UNIT,104,234,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_ACCURATE_BLEND_UNIT_D3D11,104,234,127,118,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Enable HW Hacks",IDC_HACKS_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,252,71,10
PUSHBUTTON "Advanced Settings and Hacks",IDC_HACKSBUTTON,104,250,127,14
// Software Renderer Settings:
GROUPBOX "Software Renderer Settings",IDC_STATIC,6,267,230,44,BS_CENTER
CONTROL "Auto Flush",IDC_AUTO_FLUSH_SW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,279,90,10
CONTROL "Edge Anti-aliasing (Del)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,124,279,90,10
LTEXT "Rendering threads:",IDC_SWTHREADS_TEXT,124,295,65,8
EDITTEXT IDC_SWTHREADS_EDIT,197,293,34,13,ES_AUTOHSCROLL | ES_NUMBER
GROUPBOX "Software Renderer Settings",IDC_STATIC,6,271,230,44,BS_CENTER
CONTROL "Auto Flush",IDC_AUTO_FLUSH_SW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,283,90,10
CONTROL "Edge Anti-aliasing (Del)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,124,283,90,10
LTEXT "Rendering threads:",IDC_SWTHREADS_TEXT,124,299,65,8
EDITTEXT IDC_SWTHREADS_EDIT,197,297,34,13,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "",IDC_SWTHREADS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,0,0,11,14
CONTROL "Mipmapping",IDC_MIPMAP_SW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,295,90,10
CONTROL "Mipmapping",IDC_MIPMAP_SW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,297,90,10
END

View File

@ -41,7 +41,7 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc)
{
m_mipmap = theApp.GetConfigI("mipmap_hw");
m_upscale_multiplier = theApp.GetConfigI("upscale_multiplier");
m_large_framebuffer = theApp.GetConfigB("large_framebuffer");
m_conservative_framebuffer = theApp.GetConfigB("conservative_framebuffer");
m_accurate_date = theApp.GetConfigB("accurate_date");
if (theApp.GetConfigB("UserHacks")) {
@ -125,8 +125,13 @@ void GSRendererHW::SetScaling()
// int fb_height = (fb_width < 1024) ? 1280 : 1024;
//
// Until performance issue is properly fixed, let's keep an option to reduce the framebuffer size.
int fb_height = m_large_framebuffer ? 1280 :
(fb_width < 1024) ? std::max(512, crtc_size.y) : 1024;
//
// m_large_framebuffer has been inverted to m_conservative_framebuffer, it isn't an option that benefits being enabled all the time for everyone.
int fb_height = 1280;
if (m_conservative_framebuffer)
{
fb_height = fb_width < 1024 ? std::max(512, crtc_size.y) : 1024;
}
int upscaled_fb_w = fb_width * m_upscale_multiplier;
int upscaled_fb_h = fb_height * m_upscale_multiplier;

View File

@ -36,7 +36,7 @@ private:
int m_upscale_multiplier;
int m_userhacks_ts_half_bottom;
bool m_large_framebuffer;
bool m_conservative_framebuffer;
bool m_userhacks_align_sprite_X;
bool m_userhacks_enabled_gs_mem_clear;
bool m_userHacks_merge_sprite;

View File

@ -285,8 +285,8 @@ void populate_hw_table(GtkWidget* hw_table)
{
GtkWidget* hack_enable_check = CreateCheckBox("Enable User Hacks", "UserHacks");
GtkWidget* acc_date_check = CreateCheckBox("Accurate DATE", "accurate_date");
GtkWidget* paltex_check = CreateCheckBox("Allow 8 bits textures", "paltex");
GtkWidget* large_fb_check = CreateCheckBox("Large Framebuffer", "large_framebuffer");
GtkWidget* paltex_check = CreateCheckBox("GPU Palette Conversion", "paltex");
GtkWidget* conservative_fb_check = CreateCheckBox("Conservative Buffer Allocation", "conservative_framebuffer");
GtkWidget* fsaa_label = left_label("Internal Resolution:");
GtkWidget* fsaa_combo_box = CreateComboBoxFromVector(theApp.m_gs_upscale_multiplier, "upscale_multiplier");
@ -310,7 +310,7 @@ void populate_hw_table(GtkWidget* hw_table)
gtk_widget_set_tooltip_text(hack_enable_check, "Enable the HW hack option panel");
AddTooltip(acc_date_check, IDC_ACCURATE_DATE);
AddTooltip(paltex_check, IDC_PALTEX);
AddTooltip(large_fb_check, IDC_LARGE_FB);
AddTooltip(conservative_fb_check, IDC_CONSERVATIVE_FB);
AddTooltip(crc_label, crc_combo_box, IDC_CRC_LEVEL);
AddTooltip(af_label, af_combo_box, IDC_AFCOMBO);
AddTooltip(mipmap_label, IDC_MIPMAP_HW);
@ -319,7 +319,7 @@ void populate_hw_table(GtkWidget* hw_table)
s_table_line = 0;
InsertWidgetInTable(hw_table, hack_enable_check, acc_date_check);
InsertWidgetInTable(hw_table, paltex_check, large_fb_check);
InsertWidgetInTable(hw_table, paltex_check, conservative_fb_check);
InsertWidgetInTable(hw_table, fsaa_label, fsaa_combo_box);
InsertWidgetInTable(hw_table, af_label, af_combo_box);
InsertWidgetInTable(hw_table, dither_label, dither_combo_box);

View File

@ -90,11 +90,11 @@ const char* dialog_message(int ID, bool* updateText) {
case IDC_OSD_LOG:
return "Prints log messages from the Function keys onscreen.";
case IDC_OSD_MONITOR:
return "Continuously prints the FPS and the EE, GS and VU(if the MTVU speedhack is enabled) percentages onscreen.";
return "Continuously prints/overlays the FPS counter and the EE ('CPU-usage') ,\nGS ('GPU-usage') and VU(if the MTVU speedhack is enabled) percentages onscreen.";
case IDC_PALTEX:
return "Enabled: GPU will handle 4/8 bits textures while CPU does the rest.\n"
"Disabled: CPU will have full control and directly convert the textures to 32 bits.\n\n"
"It is basically a trade-off between GPU/CPU vs CPU alone.";
return "Enabled: GPU converts colormap-textures.\n"
"Disabled: CPU converts colormap-textures.\n\n"
"It is a trade-off between GPU and CPU.";
case IDC_ACCURATE_DATE:
return "Implement a more accurate algorithm to compute GS destination alpha testing.\n"
"It improves shadow and transparency rendering.\n\n"
@ -191,14 +191,14 @@ const char* dialog_message(int ID, bool* updateText) {
"Full (Slow):\nCompletely emulates the mipmapping function of the GS, might significantly impact performance.";
case IDC_FAST_TC_INV:
return "By default, the texture cache handles partial invalidations. Unfortunately it is very costly to compute CPU wise."
"\n\nThis hack replaces the partial invalidation with a complete deletion of the texture to reduce the CPU load.\n\nIt helps snowblind engine games.";
case IDC_LARGE_FB:
return "Reserves a larger framebuffer to prevent FMV flickers.\n"
"Increases GPU/memory requirements.\n"
"Enabling this can amplify stuttering due to low RAM/VRAM.\n\n"
"Note: It should be disabled for Armored Core, Destroy All Humans, Gran Turismo and possibly others.\n"
"This option does not improve the graphics or the FPS.";
// Windows only options.
"\n\nThis hack replaces the partial invalidation with a complete deletion of the texture to reduce the CPU load.\n\nIt helps snowblind engine games.";
case IDC_CONSERVATIVE_FB:
return "Disabled: Reserves a larger framebuffer to prevent FMV flickers.\n"
"Increases GPU/memory requirements.\n"
"Disabling this can amplify stuttering due to low RAM/VRAM.\n\n"
"Note: It should be enabled for Armored Core, Destroy All Humans, Gran Turismo and possibly others.\n"
"This option does not improve the graphics or the FPS.";
// Windows only options.
#ifdef _WIN32
case IDC_ACCURATE_BLEND_UNIT_D3D11:
return "Control the accuracy level of the GS blending unit emulation.\n\n"

View File

@ -74,7 +74,7 @@ enum {
IDC_MIPMAP_HW,
IDC_PRELOAD_GS,
IDC_FAST_TC_INV,
IDC_LARGE_FB,
IDC_CONSERVATIVE_FB,
IDC_LINEAR_PRESENT,
IDC_AUTO_FLUSH_HW,
IDC_AUTO_FLUSH_SW,

View File

@ -104,7 +104,7 @@ void GSSettingsDlg::OnInit()
CheckDlgButton(m_hWnd, IDC_ACCURATE_DATE, theApp.GetConfigB("accurate_date"));
CheckDlgButton(m_hWnd, IDC_PALTEX, theApp.GetConfigB("paltex"));
CheckDlgButton(m_hWnd, IDC_LARGE_FB, theApp.GetConfigB("large_framebuffer"));
CheckDlgButton(m_hWnd, IDC_CONSERVATIVE_FB, theApp.GetConfigB("conservative_framebuffer"));
CheckDlgButton(m_hWnd, IDC_MIPMAP_SW, theApp.GetConfigB("mipmap"));
CheckDlgButton(m_hWnd, IDC_AA1, theApp.GetConfigB("aa1"));
CheckDlgButton(m_hWnd, IDC_AUTO_FLUSH_SW, theApp.GetConfigB("autoflush_sw"));
@ -128,7 +128,7 @@ void GSSettingsDlg::OnInit()
AddTooltip(IDC_SWTHREADS);
AddTooltip(IDC_SWTHREADS_EDIT);
AddTooltip(IDC_AUTO_FLUSH_SW);
AddTooltip(IDC_LARGE_FB);
AddTooltip(IDC_CONSERVATIVE_FB);
UpdateControls();
}
@ -249,7 +249,7 @@ bool GSSettingsDlg::OnCommand(HWND hWnd, UINT id, UINT code)
theApp.SetConfig("accurate_date", (int)IsDlgButtonChecked(m_hWnd, IDC_ACCURATE_DATE));
theApp.SetConfig("paltex", (int)IsDlgButtonChecked(m_hWnd, IDC_PALTEX));
theApp.SetConfig("large_framebuffer", (int)IsDlgButtonChecked(m_hWnd, IDC_LARGE_FB));
theApp.SetConfig("conservative_framebuffer", (int)IsDlgButtonChecked(m_hWnd, IDC_CONSERVATIVE_FB));
theApp.SetConfig("UserHacks", (int)IsDlgButtonChecked(m_hWnd, IDC_HACKS_ENABLED));
theApp.SetConfig("aa1", (int)IsDlgButtonChecked(m_hWnd, IDC_AA1));
@ -334,7 +334,7 @@ void GSSettingsDlg::UpdateControls()
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_HW), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_MIPMAP_HW_TEXT), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_CRC_LEVEL), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_LARGE_FB), integer_scaling > 1 && hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_CONSERVATIVE_FB), integer_scaling > 1 && hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_CRC_LEVEL_TEXT), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_UPSCALE_MULTIPLIER), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_UPSCALE_MULTIPLIER_TEXT), hw);

View File

@ -22,7 +22,7 @@
#define IDC_SHADEBUTTON 2017
// Hardware Renderer Settings:
#define IDC_PALTEX 2030
#define IDC_LARGE_FB 2031
#define IDC_CONSERVATIVE_FB 2031
#define IDC_UPSCALE_MULTIPLIER 2032
#define IDC_UPSCALE_MULTIPLIER_TEXT 2033
#define IDC_AFCOMBO_TEXT 2034