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)
|
char *s2, size_t len2)
|
||||||
{
|
{
|
||||||
unsigned pass = 0;
|
unsigned pass = 0;
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||||
if (!menu)
|
struct video_shader *shader = NULL;
|
||||||
return;
|
#endif
|
||||||
|
|
||||||
(void)pass;
|
(void)pass;
|
||||||
(void)menu;
|
|
||||||
|
|
||||||
*s = '\0';
|
*s = '\0';
|
||||||
*w = 19;
|
*w = 19;
|
||||||
strlcpy(s2, path, len2);
|
strlcpy(s2, path, len2);
|
||||||
|
|
||||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
#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;
|
return;
|
||||||
|
|
||||||
pass = (type - MENU_SETTINGS_SHADER_PASS_FILTER_0);
|
pass = (type - MENU_SETTINGS_SHADER_PASS_FILTER_0);
|
||||||
|
|
||||||
switch (menu->shader->pass[pass].filter)
|
switch (shader->pass[pass].filter)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
strlcpy(s, menu_hash_to_str(MENU_VALUE_DONT_CARE),
|
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,
|
const char *path,
|
||||||
char *s2, size_t len2)
|
char *s2, size_t len2)
|
||||||
{
|
{
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||||
if (!menu)
|
struct video_shader *shader = NULL;
|
||||||
return;
|
#endif
|
||||||
|
|
||||||
(void)menu;
|
|
||||||
|
|
||||||
*s = '\0';
|
*s = '\0';
|
||||||
*w = 19;
|
*w = 19;
|
||||||
strlcpy(s2, path, len2);
|
strlcpy(s2, path, len2);
|
||||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
||||||
if (menu && menu->shader)
|
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||||
snprintf(s, len, "%u", menu->shader->passes);
|
&shader);
|
||||||
|
if (shader)
|
||||||
|
snprintf(s, len, "%u", shader->passes);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,13 +192,12 @@ static void menu_action_setting_disp_set_label_shader_pass(
|
||||||
const char *path,
|
const char *path,
|
||||||
char *s2, size_t len2)
|
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);
|
unsigned pass = (type - MENU_SETTINGS_SHADER_PASS_0);
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
|
||||||
if (!menu)
|
|
||||||
return;
|
|
||||||
|
|
||||||
(void)pass;
|
(void)pass;
|
||||||
(void)menu;
|
|
||||||
|
|
||||||
*s = '\0';
|
*s = '\0';
|
||||||
*w = 19;
|
*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);
|
strlcpy(s, menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE), len);
|
||||||
|
|
||||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
|
#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;
|
return;
|
||||||
if (*menu->shader->pass[pass].source.path)
|
|
||||||
|
if (*shader->pass[pass].source.path)
|
||||||
fill_pathname_base(s,
|
fill_pathname_base(s,
|
||||||
menu->shader->pass[pass].source.path, len);
|
shader->pass[pass].source.path, len);
|
||||||
#endif
|
#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,
|
static int shader_action_parameter_preset_left(unsigned type, const char *label,
|
||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
struct video_shader_parameter *param = NULL;
|
||||||
struct video_shader *shader = menu ? menu->shader : NULL;
|
struct video_shader *shader = NULL;
|
||||||
struct video_shader_parameter *param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0];
|
|
||||||
|
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);
|
return generic_shader_action_parameter_left(shader, param, type, label, wraparound);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -172,13 +178,11 @@ static int action_left_shader_scale_pass(unsigned type, const char *label,
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_SCALE_0;
|
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;
|
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)
|
if (!shader)
|
||||||
return -1;
|
return -1;
|
||||||
shader_pass = &shader->pass[pass];
|
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
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
unsigned delta = 2;
|
unsigned delta = 2;
|
||||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
||||||
struct video_shader *shader = NULL;
|
struct video_shader *shader = NULL;
|
||||||
struct video_shader_pass *shader_pass = 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)
|
if (!shader)
|
||||||
return -1;
|
return -1;
|
||||||
shader_pass = &shader->pass[pass];
|
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
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
struct video_shader *shader = NULL;
|
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)
|
if (!shader)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
||||||
shader->passes--;
|
shader->passes--;
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_set_refresh(false);
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||||
video_shader_resolve_parameters(NULL, menu->shader);
|
video_shader_resolve_parameters(NULL, shader);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -625,6 +625,7 @@ static int generic_action_ok(const char *path,
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const char *menu_path = NULL;
|
const char *menu_path = NULL;
|
||||||
const char *flush_char = NULL;
|
const char *flush_char = NULL;
|
||||||
|
struct video_shader *shader = NULL;
|
||||||
global_t *global = global_get_ptr();
|
global_t *global = global_get_ptr();
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
@ -632,6 +633,9 @@ static int generic_action_ok(const char *path,
|
||||||
if (!menu)
|
if (!menu)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||||
|
&shader);
|
||||||
|
|
||||||
menu_entries_get_last_stack(&menu_path, NULL,
|
menu_entries_get_last_stack(&menu_path, NULL,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
|
|
||||||
|
@ -691,16 +695,16 @@ static int generic_action_ok(const char *path,
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
case ACTION_OK_LOAD_PRESET:
|
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),
|
video_shader_parse_type(action_path, RARCH_SHADER_NONE),
|
||||||
action_path);
|
action_path);
|
||||||
break;
|
break;
|
||||||
case ACTION_OK_LOAD_SHADER_PASS:
|
case ACTION_OK_LOAD_SHADER_PASS:
|
||||||
strlcpy(
|
strlcpy(
|
||||||
menu->shader->pass[hack_shader_pass].source.path,
|
shader->pass[hack_shader_pass].source.path,
|
||||||
action_path,
|
action_path,
|
||||||
sizeof(menu->shader->pass[hack_shader_pass].source.path));
|
sizeof(shader->pass[hack_shader_pass].source.path));
|
||||||
video_shader_resolve_parameters(NULL, menu->shader);
|
video_shader_resolve_parameters(NULL, shader);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case ACTION_OK_LOAD_RECORD_CONFIGFILE:
|
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,
|
int shader_action_parameter_preset_right(unsigned type, const char *label,
|
||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
struct video_shader_parameter *param = NULL;
|
||||||
struct video_shader *shader = menu ? menu->shader : NULL;
|
struct video_shader *shader = NULL;
|
||||||
struct video_shader_parameter *param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0];
|
|
||||||
|
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);
|
return generic_shader_action_parameter_right(shader, param, type, label, wraparound);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -190,13 +196,11 @@ static int action_right_shader_scale_pass(unsigned type, const char *label,
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_SCALE_0;
|
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;
|
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)
|
if (!shader)
|
||||||
return -1;
|
return -1;
|
||||||
shader_pass = &shader->pass[pass];
|
shader_pass = &shader->pass[pass];
|
||||||
|
@ -220,15 +224,13 @@ static int action_right_shader_filter_pass(unsigned type, const char *label,
|
||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0;
|
||||||
struct video_shader *shader = NULL;
|
unsigned delta = 1;
|
||||||
|
struct video_shader *shader = NULL;
|
||||||
struct video_shader_pass *shader_pass = 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)
|
if (!shader)
|
||||||
return -1;
|
return -1;
|
||||||
shader_pass = &shader->pass[pass];
|
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
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
struct video_shader *shader = NULL;
|
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)
|
if (!shader)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
||||||
shader->passes++;
|
shader->passes++;
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_set_refresh(false);
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||||
video_shader_resolve_parameters(NULL, menu->shader);
|
video_shader_resolve_parameters(NULL, shader);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
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_iterate_render(menu_driver_data,
|
||||||
menu_driver_data ? menu_driver_data->userdata : NULL);
|
menu_driver_data ? menu_driver_data->userdata : NULL);
|
||||||
break;
|
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:
|
case RARCH_MENU_CTL_FRAME:
|
||||||
if (!menu_driver_alive)
|
if (!menu_driver_alive)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -93,6 +93,7 @@ enum rarch_menu_ctl_state
|
||||||
{
|
{
|
||||||
RARCH_MENU_CTL_NONE = 0,
|
RARCH_MENU_CTL_NONE = 0,
|
||||||
RARCH_MENU_CTL_DEINIT,
|
RARCH_MENU_CTL_DEINIT,
|
||||||
|
RARCH_MENU_CTL_SHADER_GET,
|
||||||
RARCH_MENU_CTL_RENDER,
|
RARCH_MENU_CTL_RENDER,
|
||||||
RARCH_MENU_CTL_FRAME,
|
RARCH_MENU_CTL_FRAME,
|
||||||
RARCH_MENU_CTL_SET_PREVENT_POPULATE,
|
RARCH_MENU_CTL_SET_PREVENT_POPULATE,
|
||||||
|
|
Loading…
Reference in New Issue