mirror of
https://github.com/libretro/RetroArch
synced 2025-02-03 17:54:04 +00:00
Add SHADER_CTL_DIRECT_GET_CURRENT_SHADER
This commit is contained in:
parent
46b963619a
commit
38034abce6
@ -3687,7 +3687,11 @@ static void gl_show_mouse(void *data, bool state)
|
||||
|
||||
static struct video_shader *gl_get_current_shader(void *data)
|
||||
{
|
||||
return video_shader_driver_direct_get_current_shader();
|
||||
video_shader_ctx_t shader_info;
|
||||
|
||||
video_shader_driver_ctl(SHADER_CTL_DIRECT_GET_CURRENT_SHADER, &shader_info);
|
||||
|
||||
return shader_info.data;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -84,17 +84,21 @@ unsigned video_shader_driver_get_prev_textures(void)
|
||||
return current_shader->get_prev_textures(shader_data);
|
||||
}
|
||||
|
||||
struct video_shader *video_shader_driver_direct_get_current_shader(void)
|
||||
{
|
||||
if (!current_shader || !current_shader->get_current_shader)
|
||||
return NULL;
|
||||
return current_shader->get_current_shader(shader_data);
|
||||
}
|
||||
|
||||
bool video_shader_driver_ctl(enum video_shader_driver_ctl_state state, void *data)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case SHADER_CTL_DIRECT_GET_CURRENT_SHADER:
|
||||
{
|
||||
video_shader_ctx_t *shader = (video_shader_ctx_t*)data;
|
||||
|
||||
shader->data = NULL;
|
||||
if (!current_shader || !current_shader->get_current_shader)
|
||||
return false;
|
||||
|
||||
shader->data = current_shader->get_current_shader(shader_data);
|
||||
}
|
||||
break;
|
||||
case SHADER_CTL_DEINIT:
|
||||
if (!current_shader)
|
||||
return false;
|
||||
|
@ -69,7 +69,8 @@ enum video_shader_driver_ctl_state
|
||||
SHADER_CTL_SET_MVP,
|
||||
SHADER_CTL_FILTER_TYPE,
|
||||
SHADER_CTL_USE,
|
||||
SHADER_CTL_WRAP_TYPE
|
||||
SHADER_CTL_WRAP_TYPE,
|
||||
SHADER_CTL_DIRECT_GET_CURRENT_SHADER
|
||||
};
|
||||
|
||||
typedef struct shader_backend
|
||||
@ -169,6 +170,11 @@ typedef struct video_shader_ctx_wrap
|
||||
enum gfx_wrap_type type;
|
||||
} video_shader_ctx_wrap_t;
|
||||
|
||||
typedef struct video_shader_ctx
|
||||
{
|
||||
struct video_shader *data;
|
||||
} video_shader_ctx_t;
|
||||
|
||||
extern const shader_backend_t gl_glsl_backend;
|
||||
extern const shader_backend_t hlsl_backend;
|
||||
extern const shader_backend_t gl_cg_backend;
|
||||
@ -190,8 +196,6 @@ const char *video_shader_driver_get_ident(void);
|
||||
|
||||
unsigned video_shader_driver_get_prev_textures(void);
|
||||
|
||||
struct video_shader *video_shader_driver_direct_get_current_shader(void);
|
||||
|
||||
bool video_shader_driver_ctl(enum video_shader_driver_ctl_state state, void *data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
Loading…
x
Reference in New Issue
Block a user