De-opaque shader manager.
This commit is contained in:
parent
f34b175a0f
commit
c913c5cf00
|
@ -33,10 +33,10 @@ typedef struct menu_ctx_driver_backend
|
|||
void (*entries_init)(void*, unsigned);
|
||||
int (*iterate)(unsigned);
|
||||
void (*shader_manager_init)(void *);
|
||||
void (*shader_manager_get_str)(void *, char *, size_t, unsigned);
|
||||
void (*shader_manager_set_preset)(void *, unsigned, const char*);
|
||||
void (*shader_manager_get_str)(struct gfx_shader *, char *, size_t, unsigned);
|
||||
void (*shader_manager_set_preset)(struct gfx_shader *, unsigned, const char*);
|
||||
void (*shader_manager_save_preset)(const char *, bool);
|
||||
unsigned (*shader_manager_get_type)(void *);
|
||||
unsigned (*shader_manager_get_type)(const struct gfx_shader *);
|
||||
int (*shader_manager_setting_toggle)(unsigned, unsigned);
|
||||
unsigned (*type_is)(unsigned);
|
||||
int (*core_setting_toggle)(unsigned, unsigned);
|
||||
|
|
|
@ -56,7 +56,7 @@ static inline struct gfx_shader *shader_manager_get_current_shader(void *data, u
|
|||
}
|
||||
|
||||
if (type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS)
|
||||
shader = (struct gfx_shader *)menu->shader;
|
||||
shader = menu->shader;
|
||||
|
||||
if (!shader && driver.video_poke && driver.video_data && driver.video_poke->get_current_shader)
|
||||
shader = driver.video_poke->get_current_shader(driver.video_data);
|
||||
|
@ -82,7 +82,7 @@ static void menu_common_entries_init(void *data, unsigned menu_type)
|
|||
{
|
||||
file_list_clear(menu->selection_buf);
|
||||
|
||||
struct gfx_shader *shader = (struct gfx_shader*)shader_manager_get_current_shader(menu, menu_type);
|
||||
struct gfx_shader *shader = shader_manager_get_current_shader(menu, menu_type);
|
||||
if (shader)
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
file_list_push(menu->selection_buf, shader->parameters[i].desc, MENU_SETTINGS_SHADER_PARAMETER_0 + i, 0);
|
||||
|
@ -91,7 +91,7 @@ static void menu_common_entries_init(void *data, unsigned menu_type)
|
|||
}
|
||||
case MENU_SETTINGS_SHADER_OPTIONS:
|
||||
{
|
||||
struct gfx_shader *shader = (struct gfx_shader*)menu->shader;
|
||||
struct gfx_shader *shader = menu->shader;
|
||||
|
||||
if (!shader)
|
||||
return;
|
||||
|
@ -2395,7 +2395,7 @@ static int menu_common_iterate(unsigned action)
|
|||
}
|
||||
else
|
||||
{
|
||||
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;
|
||||
struct gfx_shader *shader = driver.menu->shader;
|
||||
unsigned pass = (menu_type - MENU_SETTINGS_SHADER_0) / 3;
|
||||
|
||||
fill_pathname_join(shader->pass[pass].source.path,
|
||||
|
@ -2725,7 +2725,7 @@ static void menu_common_shader_manager_init(void *data)
|
|||
}
|
||||
else if (strcmp(ext, "glsl") == 0 || strcmp(ext, "cg") == 0)
|
||||
{
|
||||
struct gfx_shader *shader = (struct gfx_shader*)menu->shader;
|
||||
struct gfx_shader *shader = menu->shader;
|
||||
|
||||
strlcpy(shader->pass[0].source.path, g_settings.video.shader_path,
|
||||
sizeof(shader->pass[0].source.path));
|
||||
|
@ -2758,11 +2758,9 @@ static void menu_common_shader_manager_init(void *data)
|
|||
#endif
|
||||
}
|
||||
|
||||
static void menu_common_shader_manager_set_preset(void *data, unsigned type, const char *path)
|
||||
static void menu_common_shader_manager_set_preset(struct gfx_shader *shader, unsigned type, const char *path)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct gfx_shader *shader = (struct gfx_shader*)data;
|
||||
|
||||
RARCH_LOG("Setting Menu shader: %s.\n", path ? path : "N/A (stock)");
|
||||
|
||||
if (video_set_shader_func((enum rarch_shader_type)type, path))
|
||||
|
@ -2798,15 +2796,14 @@ static void menu_common_shader_manager_set_preset(void *data, unsigned type, con
|
|||
#endif
|
||||
}
|
||||
|
||||
static void menu_common_shader_manager_get_str(void *data, char *type_str, size_t type_str_size, unsigned type)
|
||||
static void menu_common_shader_manager_get_str(struct gfx_shader *shader, char *type_str, size_t type_str_size, unsigned type)
|
||||
{
|
||||
(void)data;
|
||||
(void)shader;
|
||||
(void)type_str;
|
||||
(void)type_str_size;
|
||||
(void)type;
|
||||
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct gfx_shader *shader = (struct gfx_shader*)data;
|
||||
if (type == MENU_SETTINGS_SHADER_APPLY)
|
||||
*type_str = '\0';
|
||||
else if (type >= MENU_SETTINGS_SHADER_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PARAMETER_LAST)
|
||||
|
@ -2953,11 +2950,10 @@ static void menu_common_shader_manager_save_preset(const char *basename, bool ap
|
|||
#endif
|
||||
}
|
||||
|
||||
static unsigned menu_common_shader_manager_get_type(void *data)
|
||||
static unsigned menu_common_shader_manager_get_type(const struct gfx_shader *shader)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
unsigned i, type;
|
||||
const struct gfx_shader *shader = (const struct gfx_shader*)data;
|
||||
|
||||
// All shader types must be the same, or we cannot use it.
|
||||
type = RARCH_SHADER_NONE;
|
||||
|
@ -3039,16 +3035,11 @@ static int menu_common_shader_manager_setting_toggle(unsigned setting, unsigned
|
|||
}
|
||||
else if (setting >= MENU_SETTINGS_SHADER_PARAMETER_0 && setting <= MENU_SETTINGS_SHADER_PARAMETER_LAST)
|
||||
{
|
||||
struct gfx_shader *shader;
|
||||
struct gfx_shader_parameter *param;
|
||||
|
||||
shader = (struct gfx_shader*)driver.menu->parameter_shader;
|
||||
|
||||
struct gfx_shader *shader = driver.menu->parameter_shader;
|
||||
if (!shader)
|
||||
return 0;
|
||||
|
||||
param = (struct gfx_shader_parameter*)&shader->parameters[setting - MENU_SETTINGS_SHADER_PARAMETER_0];
|
||||
|
||||
struct gfx_shader_parameter *param = &shader->parameters[setting - MENU_SETTINGS_SHADER_PARAMETER_0];
|
||||
if (!param)
|
||||
return 0;
|
||||
|
||||
|
@ -3077,12 +3068,11 @@ static int menu_common_shader_manager_setting_toggle(unsigned setting, unsigned
|
|||
driver.menu_ctx->backend->setting_set(setting, action);
|
||||
else if (((dist_shader % 3) == 0 || setting == MENU_SETTINGS_SHADER_PRESET))
|
||||
{
|
||||
struct gfx_shader *shader = NULL;
|
||||
struct gfx_shader_pass *pass = NULL;
|
||||
dist_shader /= 3;
|
||||
shader = (struct gfx_shader*)driver.menu->shader;
|
||||
struct gfx_shader *shader = driver.menu->shader;
|
||||
struct gfx_shader_pass *pass = NULL;
|
||||
if (shader && setting == MENU_SETTINGS_SHADER_PRESET)
|
||||
pass = (struct gfx_shader_pass*)&shader->pass[dist_shader];
|
||||
pass = &shader->pass[dist_shader];
|
||||
|
||||
switch (action)
|
||||
{
|
||||
|
@ -3103,11 +3093,9 @@ static int menu_common_shader_manager_setting_toggle(unsigned setting, unsigned
|
|||
}
|
||||
else if ((dist_filter % 3) == 0)
|
||||
{
|
||||
struct gfx_shader *shader = NULL;
|
||||
struct gfx_shader_pass *pass = NULL;
|
||||
dist_filter /= 3;
|
||||
shader = (struct gfx_shader*)driver.menu->shader;
|
||||
pass = (struct gfx_shader_pass*)&shader->pass[dist_filter];
|
||||
struct gfx_shader *shader = driver.menu->shader;
|
||||
struct gfx_shader_pass *pass = &shader->pass[dist_filter];
|
||||
switch (action)
|
||||
{
|
||||
case MENU_ACTION_START:
|
||||
|
@ -3129,11 +3117,9 @@ static int menu_common_shader_manager_setting_toggle(unsigned setting, unsigned
|
|||
}
|
||||
else if ((dist_scale % 3) == 0)
|
||||
{
|
||||
struct gfx_shader *shader = NULL;
|
||||
struct gfx_shader_pass *pass = NULL;
|
||||
dist_scale /= 3;
|
||||
shader = (struct gfx_shader*)driver.menu->shader;
|
||||
pass = (struct gfx_shader_pass*)&shader->pass[dist_scale];
|
||||
struct gfx_shader *shader = driver.menu->shader;
|
||||
struct gfx_shader_pass *pass = &shader->pass[dist_scale];
|
||||
switch (action)
|
||||
{
|
||||
case MENU_ACTION_START:
|
||||
|
@ -4722,7 +4708,7 @@ static int menu_common_setting_set(unsigned setting, unsigned action)
|
|||
#ifdef HAVE_SHADER_MANAGER
|
||||
case MENU_SETTINGS_SHADER_PASSES:
|
||||
{
|
||||
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;
|
||||
struct gfx_shader *shader = driver.menu->shader;
|
||||
|
||||
switch (action)
|
||||
{
|
||||
|
@ -4759,7 +4745,7 @@ static int menu_common_setting_set(unsigned setting, unsigned action)
|
|||
break;
|
||||
case MENU_SETTINGS_SHADER_APPLY:
|
||||
{
|
||||
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;
|
||||
struct gfx_shader *shader = driver.menu->shader;
|
||||
unsigned type = RARCH_SHADER_NONE;
|
||||
|
||||
if (!driver.video || !driver.video->set_shader || action != MENU_ACTION_OK)
|
||||
|
|
Loading…
Reference in New Issue