Add way to switch back and forth between shader pipeline

This commit is contained in:
twinaphex 2016-04-24 22:03:39 +02:00
parent b00202a83d
commit 8cb66dd021
11 changed files with 65 additions and 10 deletions

View File

@ -513,7 +513,7 @@ static unsigned xmb_alpha_factor = 75;
static unsigned xmb_theme = 0;
static unsigned xmb_gradient = 0;
static bool xmb_shadows_enable = false;
static bool xmb_ribbon_enable = false;
static unsigned xmb_ribbon_enable = 0;
static bool show_advanced_settings = true;
static const uint32_t menu_entry_normal_color = 0xffffffff;

View File

@ -1548,7 +1548,7 @@ static bool config_load_file(const char *path, bool set_defaults)
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_theme, "xmb_theme");
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_gradient, "xmb_gradient");
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_shadows_enable, "xmb_shadows_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_ribbon_enable, "xmb_ribbon_enable");
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_ribbon_enable, "xmb_ribbon_enable");
config_get_path(conf, "xmb_font", settings->menu.xmb_font, sizeof(settings->menu.xmb_font));
#endif
config_get_array(conf, "video_context_driver", settings->video.context_driver, sizeof(settings->video.context_driver));
@ -2782,7 +2782,7 @@ bool config_save_file(const char *path)
config_set_int(conf, "xmb_theme", settings->menu.xmb_theme);
config_set_int(conf, "xmb_gradient", settings->menu.xmb_gradient);
config_set_bool(conf, "xmb_shadows_enable", settings->menu.xmb_shadows_enable);
config_set_bool(conf, "xmb_ribbon_enable", settings->menu.xmb_ribbon_enable);
config_set_int(conf, "xmb_ribbon_enable", settings->menu.xmb_ribbon_enable);
config_set_path(conf, "xmb_font",
!string_is_empty(settings->menu.xmb_font) ? settings->menu.xmb_font : "");
config_set_path(conf, "rgui_browser_directory",

View File

@ -169,7 +169,7 @@ typedef struct settings
unsigned xmb_theme;
unsigned xmb_gradient;
bool xmb_shadows_enable;
bool xmb_ribbon_enable;
unsigned xmb_ribbon_enable;
char xmb_font[PATH_MAX_LENGTH];
bool throttle_framerate;
bool linear_filter;

View File

@ -1169,6 +1169,14 @@ static void *gl_cg_init(void *data, const char *path)
&cg_data->prg[VIDEO_SHADER_MENU],
&shader_prog_info);
shader_prog_info.combined = stock_xmb_simple;
gl_cg_compile_program(
cg_data,
VIDEO_SHADER_MENU_SEC,
&cg_data->prg[VIDEO_SHADER_MENU_SEC],
&shader_prog_info);
return cg_data;
error:

View File

@ -912,6 +912,15 @@ static void *gl_glsl_init(void *data, const char *path)
&glsl->prg[VIDEO_SHADER_MENU],
&shader_prog_info);
shader_prog_info.vertex = stock_vertex_xmb_simple;
shader_prog_info.fragment = stock_fragment_xmb_simple;
gl_glsl_compile_program(
glsl,
VIDEO_SHADER_MENU_SEC,
&glsl->prg[VIDEO_SHADER_MENU_SEC],
&shader_prog_info);
gl_glsl_reset_attrib(glsl);
for (i = 0; i < GFX_MAX_SHADERS; i++)

View File

@ -35,6 +35,7 @@
#define VIDEO_SHADER_STOCK_BLEND (GFX_MAX_SHADERS - 1)
#define VIDEO_SHADER_MENU (GFX_MAX_SHADERS - 2)
#define VIDEO_SHADER_MENU_SEC (GFX_MAX_SHADERS - 3)
#endif

View File

@ -27,7 +27,7 @@ extern "C" {
#endif
#ifndef GFX_MAX_SHADERS
#define GFX_MAX_SHADERS 25
#define GFX_MAX_SHADERS 26
#endif
#ifndef GFX_MAX_TEXTURES

View File

@ -166,6 +166,37 @@ static void menu_action_setting_disp_set_label_filter(
settings->video.softfilter_plugin, len);
}
static void menu_action_setting_disp_set_label_pipeline(
file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label,
char *s, size_t len,
const char *entry_label,
const char *path,
char *s2, size_t len2)
{
settings_t *settings = config_get_ptr();
*s = '\0';
*w = 19;
switch (settings->menu.xmb_ribbon_enable)
{
case 0:
snprintf(s, len, "%s", "Off");
break;
case 1:
snprintf(s, len, "%s", "Ribbon (simplified)");
break;
case 2:
snprintf(s, len, "%s", "Ribbon");
break;
}
strlcpy(s2, path, len2);
}
static void menu_action_setting_disp_set_label_shader_num_passes(
file_list_t* list,
unsigned *w, unsigned type, unsigned i,
@ -1286,6 +1317,10 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_shader_num_passes);
break;
case MENU_LABEL_XMB_RIBBON_ENABLE:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_pipeline);
break;
case MENU_LABEL_VIDEO_SHADER_PASS:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_shader_pass);

View File

@ -1902,7 +1902,7 @@ static void xmb_draw_bg(
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
if (settings->menu.xmb_ribbon_enable)
if (settings->menu.xmb_ribbon_enable > 0)
{
draw.color = xmb_gradient_ident();

View File

@ -547,9 +547,12 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
#if defined(HAVE_GLSL) || defined(HAVE_CG) || defined(HAVE_HLSL)
shader_info.data = NULL;
shader_info.idx = VIDEO_SHADER_MENU;
shader_info.idx = VIDEO_SHADER_MENU_SEC;
shader_info.set_active = true;
if (settings->menu.xmb_ribbon_enable == 2)
shader_info.idx = VIDEO_SHADER_MENU;
video_shader_driver_ctl(SHADER_CTL_USE, &shader_info);
t += 0.01;

View File

@ -5889,19 +5889,18 @@ static bool setting_append_list(
general_write_handler,
general_read_handler);
CONFIG_BOOL(
CONFIG_UINT(
list, list_info,
&settings->menu.xmb_ribbon_enable,
menu_hash_to_str(MENU_LABEL_XMB_RIBBON_ENABLE),
menu_hash_to_str(MENU_LABEL_VALUE_XMB_RIBBON_ENABLE),
xmb_ribbon_enable,
menu_hash_to_str(MENU_VALUE_OFF),
menu_hash_to_str(MENU_VALUE_ON),
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true);
CONFIG_UINT(
list, list_info,