mirror of
https://github.com/libretro/RetroArch
synced 2025-02-09 09:39:56 +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)
|
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
|
#endif
|
||||||
|
|
||||||
|
@ -84,17 +84,21 @@ unsigned video_shader_driver_get_prev_textures(void)
|
|||||||
return current_shader->get_prev_textures(shader_data);
|
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)
|
bool video_shader_driver_ctl(enum video_shader_driver_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
switch (state)
|
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:
|
case SHADER_CTL_DEINIT:
|
||||||
if (!current_shader)
|
if (!current_shader)
|
||||||
return false;
|
return false;
|
||||||
|
@ -69,7 +69,8 @@ enum video_shader_driver_ctl_state
|
|||||||
SHADER_CTL_SET_MVP,
|
SHADER_CTL_SET_MVP,
|
||||||
SHADER_CTL_FILTER_TYPE,
|
SHADER_CTL_FILTER_TYPE,
|
||||||
SHADER_CTL_USE,
|
SHADER_CTL_USE,
|
||||||
SHADER_CTL_WRAP_TYPE
|
SHADER_CTL_WRAP_TYPE,
|
||||||
|
SHADER_CTL_DIRECT_GET_CURRENT_SHADER
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct shader_backend
|
typedef struct shader_backend
|
||||||
@ -169,6 +170,11 @@ typedef struct video_shader_ctx_wrap
|
|||||||
enum gfx_wrap_type type;
|
enum gfx_wrap_type type;
|
||||||
} video_shader_ctx_wrap_t;
|
} 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 gl_glsl_backend;
|
||||||
extern const shader_backend_t hlsl_backend;
|
extern const shader_backend_t hlsl_backend;
|
||||||
extern const shader_backend_t gl_cg_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);
|
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);
|
bool video_shader_driver_ctl(enum video_shader_driver_ctl_state state, void *data);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
x
Reference in New Issue
Block a user