gsdx-ogl: invert behavior of unsafe user hack

It would be on by default. Unsafe & fast path.

The hack is a security if someone encounters any issue

v2: update Windows gui file
v3: fix typo in tooltip and linux gui
This commit is contained in:
Gregory Hainaut 2016-02-17 21:59:03 +01:00
parent 44e6445180
commit 0dadc124d3
8 changed files with 15 additions and 16 deletions

View File

@ -351,7 +351,7 @@ 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_unsafe_fbmask = CreateCheckBox("Fast Accurate Blending", "UserHacks_unsafe_fbmask"); GtkWidget* hack_safe_fbmask = CreateCheckBox("Safe Accurate Blending", "UserHacks_safe_fbmask");
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:");
@ -376,7 +376,7 @@ void populate_hack_table(GtkWidget* hack_table)
InsertWidgetInTable(hack_table , hack_enble_check); InsertWidgetInTable(hack_table , hack_enble_check);
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_unsafe_fbmask); InsertWidgetInTable(hack_table , hack_safe_fbmask);
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 );
InsertWidgetInTable(hack_table , hack_skipdraw_label , hack_skipdraw_spin); InsertWidgetInTable(hack_table , hack_skipdraw_label , hack_skipdraw_spin);

View File

@ -37,7 +37,7 @@ GSRendererOGL::GSRendererOGL()
UserHacks_TCOffset = theApp.GetConfig("UserHacks_TCOffset", 0); UserHacks_TCOffset = theApp.GetConfig("UserHacks_TCOffset", 0);
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_unsafe_fbmask = theApp.GetConfig("UserHacks_unsafe_fbmask", false); UserHacks_safe_fbmask = theApp.GetConfig("UserHacks_safe_fbmask", false);
m_prim_overlap = PRIM_OVERLAP_UNKNOW; m_prim_overlap = PRIM_OVERLAP_UNKNOW;
@ -45,7 +45,7 @@ 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_unsafe_fbmask = false; UserHacks_safe_fbmask = false;
} }
} }
@ -324,7 +324,7 @@ bool GSRendererOGL::EmulateTextureShuffleAndFbmask(GSDeviceOGL::PSSelector& ps_s
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_unsafe_fbmask) { 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_unsafe_fbmask = true; m_unsafe_fbmask = true;

View File

@ -53,7 +53,7 @@ class GSRendererOGL : 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_unsafe_fbmask; bool UserHacks_safe_fbmask;
GSDeviceOGL::VSConstantBuffer vs_cb; GSDeviceOGL::VSConstantBuffer vs_cb;
GSDeviceOGL::PSConstantBuffer ps_cb; GSDeviceOGL::PSConstantBuffer ps_cb;

View File

@ -102,9 +102,8 @@ 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_UNSAFE_FBMASK: case IDC_SAFE_FBMASK:
return "Relies on undefined hardware behavior to accelerate accurate blending operation.\n\n" return "By default, accurate blending relies on undefined hardware behavior to be fast.\nThis option enables a slower but safer behavior if anyone encounters an issue.\n";
"It provides a major boost on the Xenosaga Series.\n";
case IDC_TC_DEPTH: case IDC_TC_DEPTH:
return "Allows the conversion of Depth buffer from/to Color buffer. It is used for blur & depth of field effects"; return "Allows the conversion of Depth buffer from/to Color buffer. It is used for blur & depth of field effects";
case IDC_AFCOMBO: case IDC_AFCOMBO:

View File

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

View File

@ -658,7 +658,7 @@ void GSHacksDlg::OnInit()
CheckDlgButton(m_hWnd, IDC_ALPHASTENCIL, theApp.GetConfig("UserHacks_AlphaStencil", 0)); CheckDlgButton(m_hWnd, IDC_ALPHASTENCIL, theApp.GetConfig("UserHacks_AlphaStencil", 0));
CheckDlgButton(m_hWnd, IDC_PRELOAD_GS, theApp.GetConfig("preload_frame_with_gs_data", 0)); CheckDlgButton(m_hWnd, IDC_PRELOAD_GS, theApp.GetConfig("preload_frame_with_gs_data", 0));
CheckDlgButton(m_hWnd, IDC_ALIGN_SPRITE, theApp.GetConfig("UserHacks_align_sprite_X", 0)); CheckDlgButton(m_hWnd, IDC_ALIGN_SPRITE, theApp.GetConfig("UserHacks_align_sprite_X", 0));
CheckDlgButton(m_hWnd, IDC_UNSAFE_FBMASK, theApp.GetConfig("UserHacks_unsafe_fbmask", 0)); CheckDlgButton(m_hWnd, IDC_SAFE_FBMASK, theApp.GetConfig("UserHacks_safe_fbmask", 0));
ComboBoxInit(IDC_ROUND_SPRITE, theApp.m_gs_hack, theApp.GetConfig("UserHacks_round_sprite_offset", 0)); ComboBoxInit(IDC_ROUND_SPRITE, theApp.m_gs_hack, theApp.GetConfig("UserHacks_round_sprite_offset", 0));
@ -675,7 +675,7 @@ 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_UNSAFE_FBMASK), ogl ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(m_hWnd, IDC_SAFE_FBMASK), ogl ? SW_SHOW : SW_HIDE);
AddTooltip(IDC_SKIPDRAWHACKEDIT); AddTooltip(IDC_SKIPDRAWHACKEDIT);
@ -693,7 +693,7 @@ 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_UNSAFE_FBMASK); AddTooltip(IDC_SAFE_FBMASK);
} }
void GSHacksDlg::UpdateControls() void GSHacksDlg::UpdateControls()
@ -728,7 +728,7 @@ 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_unsafe_fbmask", (int)IsDlgButtonChecked(m_hWnd, IDC_UNSAFE_FBMASK)); theApp.SetConfig("UserHacks_safe_fbmask", (int)IsDlgButtonChecked(m_hWnd, IDC_SAFE_FBMASK));
unsigned int TCOFFSET = SendMessage(GetDlgItem(m_hWnd, IDC_TCOFFSETX), UDM_GETPOS, 0, 0) & 0xFFFF; unsigned int TCOFFSET = SendMessage(GetDlgItem(m_hWnd, IDC_TCOFFSETX), UDM_GETPOS, 0, 0) & 0xFFFF;

View File

@ -105,7 +105,7 @@ 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 "Fast accurate blending",IDC_UNSAFE_FBMASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,90,8 CONTROL "Safe accurate blending",IDC_SAFE_FBMASK,"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,14,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
RTEXT "TC Offset X:",IDC_STATIC,40,146,44,8 RTEXT "TC Offset X:",IDC_STATIC,40,146,44,8

View File

@ -89,7 +89,7 @@
#define IDC_MIPMAP 2084 #define IDC_MIPMAP 2084
#define IDC_PRELOAD_GS 2085 #define IDC_PRELOAD_GS 2085
#define IDC_TVSHADER 2086 #define IDC_TVSHADER 2086
#define IDC_UNSAFE_FBMASK 2087 #define IDC_SAFE_FBMASK 2087
#define IDR_CONVERT_FX 10000 #define IDR_CONVERT_FX 10000
#define IDR_TFX_FX 10001 #define IDR_TFX_FX 10001
#define IDR_MERGE_FX 10002 #define IDR_MERGE_FX 10002