mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
Create RARCH_MENU_CTL_SHADER_GET
This commit is contained in:
parent
4202e9e9d3
commit
8392d944e5
@ -102,24 +102,25 @@ static void menu_action_setting_disp_set_label_shader_filter_pass(
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
unsigned pass = 0;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return;
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||
struct video_shader *shader = NULL;
|
||||
#endif
|
||||
|
||||
(void)pass;
|
||||
(void)menu;
|
||||
|
||||
*s = '\0';
|
||||
*w = 19;
|
||||
strlcpy(s2, path, len2);
|
||||
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||
if (!menu || !menu->shader)
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return;
|
||||
|
||||
pass = (type - MENU_SETTINGS_SHADER_PASS_FILTER_0);
|
||||
|
||||
switch (menu->shader->pass[pass].filter)
|
||||
switch (shader->pass[pass].filter)
|
||||
{
|
||||
case 0:
|
||||
strlcpy(s, menu_hash_to_str(MENU_VALUE_DONT_CARE),
|
||||
@ -167,18 +168,18 @@ static void menu_action_setting_disp_set_label_shader_num_passes(
|
||||
const char *path,
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return;
|
||||
|
||||
(void)menu;
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||
struct video_shader *shader = NULL;
|
||||
#endif
|
||||
|
||||
*s = '\0';
|
||||
*w = 19;
|
||||
strlcpy(s2, path, len2);
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||
if (menu && menu->shader)
|
||||
snprintf(s, len, "%u", menu->shader->passes);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (shader)
|
||||
snprintf(s, len, "%u", shader->passes);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -191,13 +192,12 @@ static void menu_action_setting_disp_set_label_shader_pass(
|
||||
const char *path,
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||
struct video_shader *shader = NULL;
|
||||
#endif
|
||||
unsigned pass = (type - MENU_SETTINGS_SHADER_PASS_0);
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return;
|
||||
|
||||
(void)pass;
|
||||
(void)menu;
|
||||
|
||||
*s = '\0';
|
||||
*w = 19;
|
||||
@ -205,11 +205,14 @@ static void menu_action_setting_disp_set_label_shader_pass(
|
||||
strlcpy(s, menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE), len);
|
||||
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||
if (!menu->shader)
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return;
|
||||
if (*menu->shader->pass[pass].source.path)
|
||||
|
||||
if (*shader->pass[pass].source.path)
|
||||
fill_pathname_base(s,
|
||||
menu->shader->pass[pass].source.path, len);
|
||||
shader->pass[pass].source.path, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -58,9 +58,15 @@ static int shader_action_parameter_left(unsigned type, const char *label,
|
||||
static int shader_action_parameter_preset_left(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
struct video_shader *shader = menu ? menu->shader : NULL;
|
||||
struct video_shader_parameter *param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0];
|
||||
struct video_shader_parameter *param = NULL;
|
||||
struct video_shader *shader = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
param = shader ?
|
||||
&shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0] :
|
||||
NULL;
|
||||
return generic_shader_action_parameter_left(shader, param, type, label, wraparound);
|
||||
}
|
||||
#endif
|
||||
@ -172,13 +178,11 @@ static int action_left_shader_scale_pass(unsigned type, const char *label,
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_SCALE_0;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
shader = menu->shader;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return -1;
|
||||
shader_pass = &shader->pass[pass];
|
||||
@ -203,14 +207,12 @@ static int action_left_shader_filter_pass(unsigned type, const char *label,
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
unsigned delta = 2;
|
||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
||||
struct video_shader *shader = NULL;
|
||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
shader = menu->shader;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return -1;
|
||||
shader_pass = &shader->pass[pass];
|
||||
@ -255,11 +257,9 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct video_shader *shader = NULL;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
shader = menu->shader;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return -1;
|
||||
|
||||
@ -267,7 +267,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
||||
shader->passes--;
|
||||
menu_entries_set_refresh(false);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||
video_shader_resolve_parameters(NULL, menu->shader);
|
||||
video_shader_resolve_parameters(NULL, shader);
|
||||
|
||||
#endif
|
||||
return 0;
|
||||
|
@ -625,6 +625,7 @@ static int generic_action_ok(const char *path,
|
||||
int ret = 0;
|
||||
const char *menu_path = NULL;
|
||||
const char *flush_char = NULL;
|
||||
struct video_shader *shader = NULL;
|
||||
global_t *global = global_get_ptr();
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
settings_t *settings = config_get_ptr();
|
||||
@ -632,6 +633,9 @@ static int generic_action_ok(const char *path,
|
||||
if (!menu)
|
||||
goto error;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
menu_entries_get_last_stack(&menu_path, NULL,
|
||||
NULL, NULL);
|
||||
|
||||
@ -691,16 +695,16 @@ static int generic_action_ok(const char *path,
|
||||
break;
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
case ACTION_OK_LOAD_PRESET:
|
||||
menu_shader_manager_set_preset(menu->shader,
|
||||
menu_shader_manager_set_preset(shader,
|
||||
video_shader_parse_type(action_path, RARCH_SHADER_NONE),
|
||||
action_path);
|
||||
break;
|
||||
case ACTION_OK_LOAD_SHADER_PASS:
|
||||
strlcpy(
|
||||
menu->shader->pass[hack_shader_pass].source.path,
|
||||
shader->pass[hack_shader_pass].source.path,
|
||||
action_path,
|
||||
sizeof(menu->shader->pass[hack_shader_pass].source.path));
|
||||
video_shader_resolve_parameters(NULL, menu->shader);
|
||||
sizeof(shader->pass[hack_shader_pass].source.path));
|
||||
video_shader_resolve_parameters(NULL, shader);
|
||||
break;
|
||||
#endif
|
||||
case ACTION_OK_LOAD_RECORD_CONFIGFILE:
|
||||
|
@ -61,9 +61,15 @@ int shader_action_parameter_right(unsigned type, const char *label, bool wraparo
|
||||
int shader_action_parameter_preset_right(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
struct video_shader *shader = menu ? menu->shader : NULL;
|
||||
struct video_shader_parameter *param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0];
|
||||
struct video_shader_parameter *param = NULL;
|
||||
struct video_shader *shader = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
param = shader ?
|
||||
&shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0] :
|
||||
NULL;
|
||||
return generic_shader_action_parameter_right(shader, param, type, label, wraparound);
|
||||
}
|
||||
#endif
|
||||
@ -190,13 +196,11 @@ static int action_right_shader_scale_pass(unsigned type, const char *label,
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_SCALE_0;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
shader = menu->shader;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return -1;
|
||||
shader_pass = &shader->pass[pass];
|
||||
@ -220,15 +224,13 @@ static int action_right_shader_filter_pass(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
||||
struct video_shader *shader = NULL;
|
||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
||||
unsigned delta = 1;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
unsigned delta = 1;
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
shader = menu->shader;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return -1;
|
||||
shader_pass = &shader->pass[pass];
|
||||
@ -272,11 +274,9 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct video_shader *shader = NULL;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
shader = menu->shader;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return -1;
|
||||
|
||||
@ -284,7 +284,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
||||
shader->passes++;
|
||||
menu_entries_set_refresh(false);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||
video_shader_resolve_parameters(NULL, menu->shader);
|
||||
video_shader_resolve_parameters(NULL, shader);
|
||||
|
||||
#endif
|
||||
return 0;
|
||||
|
@ -664,6 +664,14 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
menu_iterate_render(menu_driver_data,
|
||||
menu_driver_data ? menu_driver_data->userdata : NULL);
|
||||
break;
|
||||
case RARCH_MENU_CTL_SHADER_GET:
|
||||
{
|
||||
struct video_shader **shader = (struct video_shader**)data;
|
||||
if (!shader)
|
||||
return false;
|
||||
*shader = menu_driver_data ? menu_driver_data->shader : NULL;
|
||||
}
|
||||
return true;
|
||||
case RARCH_MENU_CTL_FRAME:
|
||||
if (!menu_driver_alive)
|
||||
return false;
|
||||
|
@ -93,6 +93,7 @@ enum rarch_menu_ctl_state
|
||||
{
|
||||
RARCH_MENU_CTL_NONE = 0,
|
||||
RARCH_MENU_CTL_DEINIT,
|
||||
RARCH_MENU_CTL_SHADER_GET,
|
||||
RARCH_MENU_CTL_RENDER,
|
||||
RARCH_MENU_CTL_FRAME,
|
||||
RARCH_MENU_CTL_SET_PREVENT_POPULATE,
|
||||
|
Loading…
x
Reference in New Issue
Block a user