gsdx-linux: add a new combo box to select the blend accuracy level

This commit is contained in:
Gregory Hainaut 2015-07-19 09:34:06 +02:00
parent 5c1b8986c6
commit b632b2a478
5 changed files with 27 additions and 10 deletions

View File

@ -301,26 +301,24 @@ void populate_hw_table(GtkWidget* hw_table)
GtkWidget* crc_combo_box = CreateComboBoxFromVector(theApp.m_gs_crc_level, "crc_hack_level", 3); GtkWidget* crc_combo_box = CreateComboBoxFromVector(theApp.m_gs_crc_level, "crc_hack_level", 3);
GtkWidget* paltex_check = CreateCheckBox("Allow 8 bits textures", "paltex"); GtkWidget* paltex_check = CreateCheckBox("Allow 8 bits textures", "paltex");
GtkWidget* acc_blend_check = CreateCheckBox("Accurate Blend", "accurate_blend", true);
GtkWidget* acc_date_check = CreateCheckBox("Accurate Date", "accurate_date", false); GtkWidget* acc_date_check = CreateCheckBox("Accurate Date", "accurate_date", false);
GtkWidget* acc_cclip_check = CreateCheckBox("Accurate Color Clipping", "accurate_colclip", false);
GtkWidget* acc_fbmsk_check = CreateCheckBox("Accurate FrameBuffer Mask", "accurate_fbmask", false);
GtkWidget* tc_depth_check = CreateCheckBox("Full Depth Emulation", "texture_cache_depth", true); GtkWidget* tc_depth_check = CreateCheckBox("Full Depth Emulation", "texture_cache_depth", true);
GtkWidget* acc_bld_label = gtk_label_new("Blending Unit Accuracy:");
GtkWidget* acc_bld_combo_box = CreateComboBoxFromVector(theApp.m_gs_acc_blend_level, "accurate_blending_unit", 1);
// Some helper string // Some helper string
AddTooltip(paltex_check, IDC_PALTEX); AddTooltip(paltex_check, IDC_PALTEX);
AddTooltip(acc_blend_check, IDC_ACCURATE_BLEND);
AddTooltip(acc_date_check, IDC_ACCURATE_DATE); AddTooltip(acc_date_check, IDC_ACCURATE_DATE);
AddTooltip(acc_cclip_check, IDC_ACCURATE_COLCLIP);
AddTooltip(acc_fbmsk_check, IDC_ACCURATE_FBMASK);
AddTooltip(crc_label, crc_combo_box, IDC_CRC_LEVEL); AddTooltip(crc_label, crc_combo_box, IDC_CRC_LEVEL);
AddTooltip(acc_bld_label, acc_bld_combo_box, IDC_ACCURATE_BLEND_UNIT);
AddTooltip(tc_depth_check, IDC_TC_DEPTH); AddTooltip(tc_depth_check, IDC_TC_DEPTH);
AddTooltip(filter_label, filter_combo_box, IDC_FILTER); AddTooltip(filter_label, filter_combo_box, IDC_FILTER);
s_table_line = 0; s_table_line = 0;
InsertWidgetInTable(hw_table, paltex_check, tc_depth_check); InsertWidgetInTable(hw_table, paltex_check, tc_depth_check);
InsertWidgetInTable(hw_table, acc_blend_check, acc_date_check); InsertWidgetInTable(hw_table, acc_date_check);
InsertWidgetInTable(hw_table, acc_cclip_check, acc_fbmsk_check); InsertWidgetInTable(hw_table, acc_bld_label, acc_bld_combo_box);
InsertWidgetInTable(hw_table, filter_label, filter_combo_box); InsertWidgetInTable(hw_table, filter_label, filter_combo_box);
InsertWidgetInTable(hw_table, af_label, af_combo_box); InsertWidgetInTable(hw_table, af_label, af_combo_box);
InsertWidgetInTable(hw_table, crc_label, crc_combo_box); InsertWidgetInTable(hw_table, crc_label, crc_combo_box);

View File

@ -120,18 +120,29 @@ const char* dialog_message(int ID, bool* updateText) {
case IDC_ACCURATE_DATE: case IDC_ACCURATE_DATE:
return "Implement a more accurate algorithm to compute GS destination alpha testing.\n\n" return "Implement a more accurate algorithm to compute GS destination alpha testing.\n\n"
"It could be slower when the effects are used.\n\nNote: it requires the 4.2 OpenGL extension GL_ARB_shader_image_load_store"; "It could be slower when the effects are used.\n\nNote: it requires the 4.2 OpenGL extension GL_ARB_shader_image_load_store";
#ifdef __linux__
case IDC_ACCURATE_BLEND_UNIT:
return "Control the accuracy level of the GS blending unit emulation. Note: it requires a GL4.5 drivers\n\n"
"None\t: Fast but introduce various rendering issues. It is intended for slow computer.\n"
"------------------------------------------------------------------\n"
"Basic\t: Emulate correctly most of the effects with a limited speed penality. It is the recommended setting.\n"
"------------------------------------------------------------------\n"
"Medium\t: Add full emulation of color wrapping. It helps Castlevania games. Be aware that it will half your FPS.\n"
"------------------------------------------------------------------\n"
"Full\t\t: Except few cases, the blending unit will be fully emulated by the shader. It is very slow! It is intended for debug\n"
"------------------------------------------------------------------\n"
"Ultra\t: The blending unit will be completely emulated by the shader. It is ultra slow! It is intended for debug\n";
#endif
case IDC_ACCURATE_BLEND: case IDC_ACCURATE_BLEND:
return "Allow to solve the impossible blending error message.\n\n" return "Allow to solve the impossible blending error message.\n\n"
"It could be slower when the effect are used.\n\nNote: it requires the 4.5 OpenGL extension GL_ARB_texture_barrier"; "It could be slower when the effect are used.\n\nNote: it requires the 4.5 OpenGL extension GL_ARB_texture_barrier";
case IDC_ACCURATE_COLCLIP: case IDC_ACCURATE_COLCLIP:
return "Implement the wrapping of color after an overflow\n\n" return "Implement the wrapping of color after an overflow\n\n"
"It will be slow (half speed) when the effect are used!\n\nNote: it requires the 4.5 OpenGL extension GL_ARB_texture_barrier"; "It will be slow (half speed) when the effect are used!\n\nNote: it requires the 4.5 OpenGL extension GL_ARB_texture_barrier";
#ifdef __linux__
case IDC_ACCURATE_FBMASK: case IDC_ACCURATE_FBMASK:
return "Implement partial color masking\n\n" return "Implement partial color masking\n\n"
"It helps to fix Fifa/Medal of Honors/Fight Night series\nCould slow down a bit the emulation\n\n" "It helps to fix Fifa/Medal of Honors/Fight Night series\nCould slow down a bit the emulation\n\n"
"Note: it requires the 4.5 OpenGL extension GL_ARB_texture_barrier"; "Note: it requires the 4.5 OpenGL extension GL_ARB_texture_barrier";
#endif
case IDC_TC_DEPTH: case IDC_TC_DEPTH:
return "Allow to convert Depth buffer from/to Color buffer. It is used for blur & depth of field effects"; return "Allow to convert Depth buffer from/to Color buffer. It is used for blur & depth of field effects";
default: default:

View File

@ -64,6 +64,7 @@ enum {
IDC_TCOFFSETY2, IDC_TCOFFSETY2,
IDC_STATIC_TCOFFSETY, IDC_STATIC_TCOFFSETY,
IDC_PALTEX, IDC_PALTEX,
IDC_ACCURATE_BLEND_UNIT,
IDC_ACCURATE_BLEND, IDC_ACCURATE_BLEND,
IDC_ACCURATE_DATE, IDC_ACCURATE_DATE,
IDC_ACCURATE_COLCLIP, IDC_ACCURATE_COLCLIP,

View File

@ -186,6 +186,12 @@ GSdxApp::GSdxApp()
m_gs_crc_level.push_back(GSSetting(3 , "Full", "Safest")); m_gs_crc_level.push_back(GSSetting(3 , "Full", "Safest"));
m_gs_crc_level.push_back(GSSetting(4 , "Aggressive", "")); m_gs_crc_level.push_back(GSSetting(4 , "Aggressive", ""));
m_gs_acc_blend_level.push_back(GSSetting(0, "None", "Fastest"));
m_gs_acc_blend_level.push_back(GSSetting(1, "Basic", "Recommended"));
m_gs_acc_blend_level.push_back(GSSetting(2, "Medium", "Slow"));
m_gs_acc_blend_level.push_back(GSSetting(3, "Full", "Very Slow"));
m_gs_acc_blend_level.push_back(GSSetting(4, "Ultra", "Ultra Slow"));
m_gpu_renderers.push_back(GSSetting(0, "Direct3D9 (Software)", "")); m_gpu_renderers.push_back(GSSetting(0, "Direct3D9 (Software)", ""));
m_gpu_renderers.push_back(GSSetting(1, "Direct3D11 (Software)", "")); m_gpu_renderers.push_back(GSSetting(1, "Direct3D11 (Software)", ""));
m_gpu_renderers.push_back(GSSetting(2, "SDL 1.3 (Software)", "")); m_gpu_renderers.push_back(GSSetting(2, "SDL 1.3 (Software)", ""));

View File

@ -67,6 +67,7 @@ public:
vector<GSSetting> m_gs_gl_ext; vector<GSSetting> m_gs_gl_ext;
vector<GSSetting> m_gs_hack; vector<GSSetting> m_gs_hack;
vector<GSSetting> m_gs_crc_level; vector<GSSetting> m_gs_crc_level;
vector<GSSetting> m_gs_acc_blend_level;
vector<GSSetting> m_gpu_renderers; vector<GSSetting> m_gpu_renderers;
vector<GSSetting> m_gpu_filter; vector<GSSetting> m_gpu_filter;