Merge pull request #1586 from PCSX2/gsdx-refresh-gui-options

Gsdx refresh gui options
This commit is contained in:
Gregory Hainaut 2016-10-04 18:30:48 +02:00 committed by GitHub
commit 1b8d6a38e7
10 changed files with 13 additions and 21 deletions

View File

@ -352,10 +352,10 @@ void populate_hack_table(GtkWidget* hack_table)
GtkWidget* hack_tco_entry = CreateTextBox("UserHacks_TCOffset"); GtkWidget* hack_tco_entry = CreateTextBox("UserHacks_TCOffset");
GtkWidget* align_sprite_check = CreateCheckBox("Align sprite hack", "UserHacks_align_sprite_X"); GtkWidget* align_sprite_check = CreateCheckBox("Align sprite hack", "UserHacks_align_sprite_X");
GtkWidget* preload_gs_check = CreateCheckBox("Preload Frame", "preload_frame_with_gs_data"); GtkWidget* preload_gs_check = CreateCheckBox("Preload Frame", "preload_frame_with_gs_data");
GtkWidget* hack_safe_fbmask = CreateCheckBox("Safe Accurate Blending", "UserHacks_safe_fbmask");
GtkWidget* hack_fast_inv = CreateCheckBox("Fast Texture Invalidation", "UserHacks_DisablePartialInvalidation"); GtkWidget* hack_fast_inv = CreateCheckBox("Fast Texture Invalidation", "UserHacks_DisablePartialInvalidation");
GtkWidget* hack_depth_check = CreateCheckBox("Disable Depth Emulation", "UserHacks_DisableDepthSupport"); GtkWidget* hack_depth_check = CreateCheckBox("Disable Depth Emulation", "UserHacks_DisableDepthSupport");
GtkWidget* hack_auto_flush = CreateCheckBox("Auto Flush Primitives", "UserHacks_AutoFlush"); GtkWidget* hack_auto_flush = CreateCheckBox("Auto Flush Primitives", "UserHacks_AutoFlush");
GtkWidget* hack_unscale_prim = CreateCheckBox("Unscale Point&Line Primitives", "UserHacks_unscale_point_line");
GtkWidget* hack_sprite_box = CreateComboBoxFromVector(theApp.m_gs_hack, "UserHacks_SpriteHack"); GtkWidget* hack_sprite_box = CreateComboBoxFromVector(theApp.m_gs_hack, "UserHacks_SpriteHack");
GtkWidget* hack_sprite_label = left_label("Alpha-Sprite Hack:"); GtkWidget* hack_sprite_label = left_label("Alpha-Sprite Hack:");
@ -373,16 +373,16 @@ void populate_hack_table(GtkWidget* hack_table)
AddTooltip(align_sprite_check, IDC_ALIGN_SPRITE); AddTooltip(align_sprite_check, IDC_ALIGN_SPRITE);
AddTooltip(stretch_hack_label, stretch_hack_box, IDC_ROUND_SPRITE); AddTooltip(stretch_hack_label, stretch_hack_box, IDC_ROUND_SPRITE);
AddTooltip(preload_gs_check, IDC_PRELOAD_GS); AddTooltip(preload_gs_check, IDC_PRELOAD_GS);
AddTooltip(hack_safe_fbmask, IDC_SAFE_FBMASK);
AddTooltip(hack_fast_inv, IDC_FAST_TC_INV); AddTooltip(hack_fast_inv, IDC_FAST_TC_INV);
AddTooltip(hack_depth_check, IDC_TC_DEPTH); AddTooltip(hack_depth_check, IDC_TC_DEPTH);
AddTooltip(hack_auto_flush, IDC_AUTO_FLUSH); AddTooltip(hack_auto_flush, IDC_AUTO_FLUSH);
AddTooltip(hack_unscale_prim, IDC_UNSCALE_POINT_LINE);
s_table_line = 0; s_table_line = 0;
InsertWidgetInTable(hack_table , hack_wild_check , align_sprite_check); InsertWidgetInTable(hack_table , hack_wild_check , align_sprite_check);
InsertWidgetInTable(hack_table , hack_offset_check , preload_gs_check); InsertWidgetInTable(hack_table , hack_offset_check , preload_gs_check);
InsertWidgetInTable(hack_table , hack_safe_fbmask , hack_fast_inv); InsertWidgetInTable(hack_table , hack_unscale_prim , hack_fast_inv);
InsertWidgetInTable(hack_table , hack_depth_check , hack_auto_flush); InsertWidgetInTable(hack_table , hack_depth_check , hack_auto_flush);
InsertWidgetInTable(hack_table , hack_sprite_label , hack_sprite_box ); InsertWidgetInTable(hack_table , hack_sprite_label , hack_sprite_box );
InsertWidgetInTable(hack_table , stretch_hack_label , stretch_hack_box ); InsertWidgetInTable(hack_table , stretch_hack_label , stretch_hack_box );

View File

@ -37,7 +37,6 @@ GSRendererOGL::GSRendererOGL()
UserHacks_TCOffset = theApp.GetConfigI("UserHacks_TCOffset"); UserHacks_TCOffset = theApp.GetConfigI("UserHacks_TCOffset");
UserHacks_TCO_x = (UserHacks_TCOffset & 0xFFFF) / -1000.0f; UserHacks_TCO_x = (UserHacks_TCOffset & 0xFFFF) / -1000.0f;
UserHacks_TCO_y = ((UserHacks_TCOffset >> 16) & 0xFFFF) / -1000.0f; UserHacks_TCO_y = ((UserHacks_TCOffset >> 16) & 0xFFFF) / -1000.0f;
UserHacks_safe_fbmask = theApp.GetConfigB("UserHacks_safe_fbmask");
UserHacks_merge_sprite = theApp.GetConfigB("UserHacks_merge_pp_sprite"); UserHacks_merge_sprite = theApp.GetConfigB("UserHacks_merge_pp_sprite");
UserHacks_unscale_pt_ln = theApp.GetConfigB("UserHacks_unscale_point_line"); UserHacks_unscale_pt_ln = theApp.GetConfigB("UserHacks_unscale_point_line");
@ -48,7 +47,6 @@ GSRendererOGL::GSRendererOGL()
UserHacks_TCOffset = 0; UserHacks_TCOffset = 0;
UserHacks_TCO_x = 0; UserHacks_TCO_x = 0;
UserHacks_TCO_y = 0; UserHacks_TCO_y = 0;
UserHacks_safe_fbmask = false;
UserHacks_merge_sprite = false; UserHacks_merge_sprite = false;
UserHacks_unscale_pt_ln = false; UserHacks_unscale_pt_ln = false;
} }
@ -455,7 +453,8 @@ void GSRendererOGL::EmulateTextureShuffleAndFbmask()
TextureBarrier() will guarantee that writes have completed and caches TextureBarrier() will guarantee that writes have completed and caches
have been invalidated before subsequent Draws are executed. have been invalidated before subsequent Draws are executed.
*/ */
if (!(~ff_fbmask & ~zero_fbmask & 0x7) && !UserHacks_safe_fbmask) { // Safe option was removed. Likely nobody never use it. Keep the code commented if it becomes useful one day
if (!(~ff_fbmask & ~zero_fbmask & 0x7) /*&& !UserHacks_safe_fbmask*/) {
GL_INS("FBMASK Unsafe SW emulated fb_mask:%x on %d bits format", m_context->FRAME.FBMSK, GL_INS("FBMASK Unsafe SW emulated fb_mask:%x on %d bits format", m_context->FRAME.FBMSK,
(GSLocalMemory::m_psm[m_context->FRAME.PSM].fmt == 2) ? 16 : 32); (GSLocalMemory::m_psm[m_context->FRAME.PSM].fmt == 2) ? 16 : 32);
m_require_one_barrier = true; m_require_one_barrier = true;

View File

@ -52,7 +52,6 @@ class GSRendererOGL final : public GSRendererHW
unsigned int UserHacks_TCOffset; unsigned int UserHacks_TCOffset;
float UserHacks_TCO_x, UserHacks_TCO_y; float UserHacks_TCO_x, UserHacks_TCO_y;
bool UserHacks_safe_fbmask;
bool UserHacks_merge_sprite; bool UserHacks_merge_sprite;
bool UserHacks_unscale_pt_ln; bool UserHacks_unscale_pt_ln;

View File

@ -102,9 +102,6 @@ const char* dialog_message(int ID, bool* updateText) {
"High:\nExtend it to destination alpha blending and color wrapping. (help shadow and fog effect). A good CPU is required.\n\n" "High:\nExtend it to destination alpha blending and color wrapping. (help shadow and fog effect). A good CPU is required.\n\n"
"Full:\nExcept few cases, the blending unit will be fully emulated by the shader. It is ultra slow! It is intended for debug.\n\n" "Full:\nExcept few cases, the blending unit will be fully emulated by the shader. It is ultra slow! It is intended for debug.\n\n"
"Ultra:\nThe blending unit will be completely emulated by the shader. It is ultra slow! It is intended for debug."; "Ultra:\nThe blending unit will be completely emulated by the shader. It is ultra slow! It is intended for debug.";
case IDC_SAFE_FBMASK:
return "By default, accurate blending relies on undefined hardware behavior to be fast.\n"
"This option enables a slower but safer behavior if anyone encounters an issue.\n";
case IDC_TC_DEPTH: case IDC_TC_DEPTH:
return "Disable the support of Depth buffer in the texture cache.\n" return "Disable the support of Depth buffer in the texture cache.\n"
"It can help to increase speed but it will likely create various glitches."; "It can help to increase speed but it will likely create various glitches.";

View File

@ -60,7 +60,6 @@ enum {
IDC_TCOFFSETY2, IDC_TCOFFSETY2,
IDC_PALTEX, IDC_PALTEX,
IDC_ACCURATE_BLEND_UNIT, IDC_ACCURATE_BLEND_UNIT,
IDC_SAFE_FBMASK,
IDC_ACCURATE_DATE, IDC_ACCURATE_DATE,
IDC_TC_DEPTH, IDC_TC_DEPTH,
IDC_CRC_LEVEL, IDC_CRC_LEVEL,

View File

@ -667,7 +667,6 @@ void GSHacksDlg::OnInit()
CheckDlgButton(m_hWnd, IDC_ALPHASTENCIL, theApp.GetConfigB("UserHacks_AlphaStencil")); CheckDlgButton(m_hWnd, IDC_ALPHASTENCIL, theApp.GetConfigB("UserHacks_AlphaStencil"));
CheckDlgButton(m_hWnd, IDC_PRELOAD_GS, theApp.GetConfigB("preload_frame_with_gs_data")); CheckDlgButton(m_hWnd, IDC_PRELOAD_GS, theApp.GetConfigB("preload_frame_with_gs_data"));
CheckDlgButton(m_hWnd, IDC_ALIGN_SPRITE, theApp.GetConfigB("UserHacks_align_sprite_X")); CheckDlgButton(m_hWnd, IDC_ALIGN_SPRITE, theApp.GetConfigB("UserHacks_align_sprite_X"));
CheckDlgButton(m_hWnd, IDC_SAFE_FBMASK, theApp.GetConfigB("UserHacks_safe_fbmask"));
CheckDlgButton(m_hWnd, IDC_TC_DEPTH, theApp.GetConfigB("UserHacks_DisableDepthSupport")); CheckDlgButton(m_hWnd, IDC_TC_DEPTH, theApp.GetConfigB("UserHacks_DisableDepthSupport"));
CheckDlgButton(m_hWnd, IDC_FAST_TC_INV, theApp.GetConfigB("UserHacks_DisablePartialInvalidation")); CheckDlgButton(m_hWnd, IDC_FAST_TC_INV, theApp.GetConfigB("UserHacks_DisablePartialInvalidation"));
CheckDlgButton(m_hWnd, IDC_AUTO_FLUSH, theApp.GetConfigB("UserHacks_AutoFlush")); CheckDlgButton(m_hWnd, IDC_AUTO_FLUSH, theApp.GetConfigB("UserHacks_AutoFlush"));
@ -687,7 +686,6 @@ void GSHacksDlg::OnInit()
ShowWindow(GetDlgItem(m_hWnd, IDC_ALPHASTENCIL), ogl ? SW_HIDE : SW_SHOW); ShowWindow(GetDlgItem(m_hWnd, IDC_ALPHASTENCIL), ogl ? SW_HIDE : SW_SHOW);
ShowWindow(GetDlgItem(m_hWnd, IDC_ALPHAHACK), ogl ? SW_HIDE : SW_SHOW); ShowWindow(GetDlgItem(m_hWnd, IDC_ALPHAHACK), ogl ? SW_HIDE : SW_SHOW);
ShowWindow(GetDlgItem(m_hWnd, IDC_SAFE_FBMASK), ogl ? SW_SHOW : SW_HIDE);
EnableWindow(GetDlgItem(m_hWnd, IDC_TC_DEPTH), ogl); EnableWindow(GetDlgItem(m_hWnd, IDC_TC_DEPTH), ogl);
EnableWindow(GetDlgItem(m_hWnd, IDC_UNSCALE_POINT_LINE), ogl && !native); EnableWindow(GetDlgItem(m_hWnd, IDC_UNSCALE_POINT_LINE), ogl && !native);
EnableWindow(GetDlgItem(m_hWnd, IDC_MSAACB), !ogl); EnableWindow(GetDlgItem(m_hWnd, IDC_MSAACB), !ogl);
@ -715,7 +713,6 @@ void GSHacksDlg::OnInit()
AddTooltip(IDC_TCOFFSETY); AddTooltip(IDC_TCOFFSETY);
AddTooltip(IDC_TCOFFSETY2); AddTooltip(IDC_TCOFFSETY2);
AddTooltip(IDC_PRELOAD_GS); AddTooltip(IDC_PRELOAD_GS);
AddTooltip(IDC_SAFE_FBMASK);
AddTooltip(IDC_TC_DEPTH); AddTooltip(IDC_TC_DEPTH);
AddTooltip(IDC_FAST_TC_INV); AddTooltip(IDC_FAST_TC_INV);
AddTooltip(IDC_AUTO_FLUSH); AddTooltip(IDC_AUTO_FLUSH);
@ -754,7 +751,6 @@ bool GSHacksDlg::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)
theApp.SetConfig("UserHacks_AlphaStencil", (int)IsDlgButtonChecked(m_hWnd, IDC_ALPHASTENCIL)); theApp.SetConfig("UserHacks_AlphaStencil", (int)IsDlgButtonChecked(m_hWnd, IDC_ALPHASTENCIL));
theApp.SetConfig("preload_frame_with_gs_data", (int)IsDlgButtonChecked(m_hWnd, IDC_PRELOAD_GS)); theApp.SetConfig("preload_frame_with_gs_data", (int)IsDlgButtonChecked(m_hWnd, IDC_PRELOAD_GS));
theApp.SetConfig("Userhacks_align_sprite_X", (int)IsDlgButtonChecked(m_hWnd, IDC_ALIGN_SPRITE)); theApp.SetConfig("Userhacks_align_sprite_X", (int)IsDlgButtonChecked(m_hWnd, IDC_ALIGN_SPRITE));
theApp.SetConfig("UserHacks_safe_fbmask", (int)IsDlgButtonChecked(m_hWnd, IDC_SAFE_FBMASK));
theApp.SetConfig("UserHacks_DisableDepthSupport", (int)IsDlgButtonChecked(m_hWnd, IDC_TC_DEPTH)); theApp.SetConfig("UserHacks_DisableDepthSupport", (int)IsDlgButtonChecked(m_hWnd, IDC_TC_DEPTH));
theApp.SetConfig("UserHacks_DisablePartialInvalidation", (int)IsDlgButtonChecked(m_hWnd, IDC_FAST_TC_INV)); theApp.SetConfig("UserHacks_DisablePartialInvalidation", (int)IsDlgButtonChecked(m_hWnd, IDC_FAST_TC_INV));
theApp.SetConfig("UserHacks_AutoFlush", (int)IsDlgButtonChecked(m_hWnd, IDC_AUTO_FLUSH)); theApp.SetConfig("UserHacks_AutoFlush", (int)IsDlgButtonChecked(m_hWnd, IDC_AUTO_FLUSH));

View File

@ -446,6 +446,11 @@ void GSVertexTrace::FindMinMax(const void* vertex, const uint32* index, int coun
} }
} }
// FIXME/WARNING. A division by 2 is done on the depth. I suspect to avoid
// negative value. However it means that we lost the lsb bit. m_eq.z could
// be true if depth isn't constant but close enough. It also imply that
// pmin.z & 1 == 0 and pax.z & 1 == 0
#if _M_SSE >= 0x401 #if _M_SSE >= 0x401
pmin = pmin.blend16<0x30>(pmin.srl32(1)); pmin = pmin.blend16<0x30>(pmin.srl32(1));

View File

@ -346,7 +346,6 @@ void GSdxApp::Init()
m_default_configuration["UserHacks_MSAA"] = "0"; m_default_configuration["UserHacks_MSAA"] = "0";
m_default_configuration["UserHacks_unscale_point_line"] = "0"; m_default_configuration["UserHacks_unscale_point_line"] = "0";
m_default_configuration["UserHacks_round_sprite_offset"] = "0"; m_default_configuration["UserHacks_round_sprite_offset"] = "0";
m_default_configuration["UserHacks_safe_fbmask"] = "0";
m_default_configuration["UserHacks_SkipDraw"] = "0"; m_default_configuration["UserHacks_SkipDraw"] = "0";
m_default_configuration["UserHacks_SpriteHack"] = "0"; m_default_configuration["UserHacks_SpriteHack"] = "0";
m_default_configuration["UserHacks_TCOffset"] = "0"; m_default_configuration["UserHacks_TCOffset"] = "0";

View File

@ -128,8 +128,8 @@ BEGIN
CONTROL "Half-pixel Offset",IDC_OFFSETHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,51,70,8 CONTROL "Half-pixel Offset",IDC_OFFSETHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,51,70,8
COMBOBOX IDC_MSAACB,88,17,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_MSAACB,88,17,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Wild Arms Offset",IDC_WILDHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,64,70,8 CONTROL "Wild Arms Offset",IDC_WILDHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,64,70,8
CONTROL "Safe Accurate Blending",IDC_SAFE_FBMASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,90,8 CONTROL "Unscale Point Line", IDC_UNSCALE_POINT_LINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,90,8
CONTROL "Alpha Stencil",IDC_ALPHASTENCIL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,57,8 CONTROL "Alpha Stencil",IDC_ALPHASTENCIL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,77,57,8
CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,51,58,8 CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,51,58,8
CONTROL "Disable Depth Emulation",IDC_TC_DEPTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,90,92,8 CONTROL "Disable Depth Emulation",IDC_TC_DEPTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,90,92,8
RTEXT "TC Offset X:",IDC_STATIC,40,179,44,8 RTEXT "TC Offset X:",IDC_STATIC,40,179,44,8
@ -142,8 +142,7 @@ BEGIN
RTEXT "Sprite:",IDC_SPRITEHACK_TEXT,62,160,22,8 RTEXT "Sprite:",IDC_SPRITEHACK_TEXT,62,160,22,8
COMBOBOX IDC_SPRITEHACK,88,158,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_SPRITEHACK,88,158,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Fast Texture Invalidation",IDC_FAST_TC_INV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,102,92,8 CONTROL "Fast Texture Invalidation",IDC_FAST_TC_INV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,102,92,8
CONTROL "Auto Flush", IDC_AUTO_FLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,128,45,8 CONTROL "Auto Flush", IDC_AUTO_FLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,128,70,8
CONTROL "Unscale Point Line", IDC_UNSCALE_POINT_LINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,128,70,8
RTEXT "TC Offset Y:",IDC_STATIC,40,197,44,8 RTEXT "TC Offset Y:",IDC_STATIC,40,197,44,8
END END

View File

@ -101,7 +101,6 @@
#define IDC_MIPMAP 2097 #define IDC_MIPMAP 2097
#define IDC_PRELOAD_GS 2098 #define IDC_PRELOAD_GS 2098
#define IDC_TVSHADER 2099 #define IDC_TVSHADER 2099
#define IDC_SAFE_FBMASK 2100
#define IDC_FAST_TC_INV 2101 #define IDC_FAST_TC_INV 2101
#define IDC_LARGE_FB 2102 #define IDC_LARGE_FB 2102
#define IDC_AUTO_FLUSH 2103 #define IDC_AUTO_FLUSH 2103