Expose currently selected shader via poke interface.
This commit is contained in:
parent
83b37812b8
commit
b0e014adc6
2
driver.h
2
driver.h
|
@ -358,6 +358,8 @@ typedef struct video_poke_interface
|
|||
|
||||
void (*show_mouse)(void *data, bool state);
|
||||
void (*grab_mouse_toggle)(void *data);
|
||||
|
||||
struct gfx_shader *(*get_current_shader)(void *data);
|
||||
} video_poke_interface_t;
|
||||
|
||||
typedef struct video_driver
|
||||
|
|
9
gfx/gl.c
9
gfx/gl.c
|
@ -2909,6 +2909,12 @@ static void gl_show_mouse(void *data, bool state)
|
|||
gl->ctx_driver->show_mouse(gl, state);
|
||||
}
|
||||
|
||||
static struct gfx_shader *gl_get_current_shader(void *data)
|
||||
{
|
||||
gl_t *gl = (gl_t*)data;
|
||||
return gl->shader ? gl->shader->get_current_shader() : NULL;
|
||||
}
|
||||
|
||||
static const video_poke_interface_t gl_poke_interface = {
|
||||
NULL,
|
||||
#ifdef HAVE_FBO
|
||||
|
@ -2924,6 +2930,9 @@ static const video_poke_interface_t gl_poke_interface = {
|
|||
gl_set_osd_msg,
|
||||
|
||||
gl_show_mouse,
|
||||
NULL,
|
||||
|
||||
gl_get_current_shader,
|
||||
};
|
||||
|
||||
static void gl_get_poke_interface(void *data, const video_poke_interface_t **iface)
|
||||
|
|
|
@ -913,6 +913,11 @@ static bool gl_cg_mipmap_input(unsigned index)
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct gfx_shader *gl_cg_get_current_shader(void)
|
||||
{
|
||||
return cg_active ? cg_shader : NULL;
|
||||
}
|
||||
|
||||
void gl_cg_invalidate_context(void)
|
||||
{
|
||||
cgCtx = NULL;
|
||||
|
@ -931,6 +936,7 @@ const gl_shader_backend_t gl_cg_backend = {
|
|||
gl_cg_set_mvp,
|
||||
gl_cg_get_prev_textures,
|
||||
gl_cg_mipmap_input,
|
||||
gl_cg_get_current_shader,
|
||||
|
||||
RARCH_SHADER_CG,
|
||||
};
|
||||
|
|
|
@ -54,6 +54,8 @@ struct gl_shader_backend
|
|||
unsigned (*get_prev_textures)(void);
|
||||
bool (*mipmap_input)(unsigned index);
|
||||
|
||||
struct gfx_shader *(*get_current_shader)(void);
|
||||
|
||||
enum rarch_shader_type type;
|
||||
};
|
||||
|
||||
|
|
|
@ -1179,6 +1179,11 @@ static bool gl_glsl_mipmap_input(unsigned index)
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct gfx_shader *gl_glsl_get_current_shader(void)
|
||||
{
|
||||
return glsl_enable ? glsl_shader : NULL;
|
||||
}
|
||||
|
||||
void gl_glsl_set_get_proc_address(gfx_ctx_proc_t (*proc)(const char*))
|
||||
{
|
||||
glsl_get_proc_address = proc;
|
||||
|
@ -1204,6 +1209,7 @@ const gl_shader_backend_t gl_glsl_backend = {
|
|||
gl_glsl_set_mvp,
|
||||
gl_glsl_get_prev_textures,
|
||||
gl_glsl_mipmap_input,
|
||||
gl_glsl_get_current_shader,
|
||||
|
||||
RARCH_SHADER_GLSL,
|
||||
};
|
||||
|
|
|
@ -435,6 +435,11 @@ static bool hlsl_mipmap_input(unsigned index)
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct gfx_shader *hlsl_get_current_shader(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const gl_shader_backend_t hlsl_backend = {
|
||||
hlsl_init,
|
||||
hlsl_deinit,
|
||||
|
@ -448,6 +453,7 @@ const gl_shader_backend_t hlsl_backend = {
|
|||
hlsl_set_mvp,
|
||||
NULL, /* hlsl_get_prev_textures */
|
||||
hlsl_mipmap_input,
|
||||
hlsl_get_current_shader,
|
||||
|
||||
RARCH_SHADER_HLSL,
|
||||
};
|
||||
|
|
|
@ -751,6 +751,13 @@ static void thread_apply_state_changes(void *data)
|
|||
slock_unlock(thr->frame.lock);
|
||||
}
|
||||
|
||||
// This is read-only state which should not have any kind of race condition.
|
||||
static struct gfx_shader *thread_get_current_shader(void *data)
|
||||
{
|
||||
thread_video_t *thr = (thread_video_t*)data;
|
||||
return thr->poke ? thr->poke->get_current_shader(thr->driver_data) : NULL;
|
||||
}
|
||||
|
||||
static const video_poke_interface_t thread_poke = {
|
||||
thread_set_filtering,
|
||||
#ifdef HAVE_FBO
|
||||
|
@ -763,6 +770,12 @@ static const video_poke_interface_t thread_poke = {
|
|||
thread_set_texture_frame,
|
||||
thread_set_texture_enable,
|
||||
#endif
|
||||
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
thread_get_current_shader,
|
||||
};
|
||||
|
||||
static void thread_get_poke_interface(void *data, const video_poke_interface_t **iface)
|
||||
|
|
Loading…
Reference in New Issue