mirror of
https://github.com/libretro/RetroArch
synced 2025-02-11 06:40:48 +00:00
Add cb_set_shader_coords
This commit is contained in:
parent
8a12bb9f04
commit
06df028722
@ -217,7 +217,6 @@ static void gl_overlay_tex_geom(void *data,
|
|||||||
|
|
||||||
static void gl_render_overlay(gl_t *gl, video_frame_info_t *video_info)
|
static void gl_render_overlay(gl_t *gl, video_frame_info_t *video_info)
|
||||||
{
|
{
|
||||||
video_shader_ctx_coords_t coords;
|
|
||||||
unsigned i;
|
unsigned i;
|
||||||
unsigned width = video_info->width;
|
unsigned width = video_info->width;
|
||||||
unsigned height = video_info->height;
|
unsigned height = video_info->height;
|
||||||
@ -239,10 +238,8 @@ static void gl_render_overlay(gl_t *gl, video_frame_info_t *video_info)
|
|||||||
gl->coords.color = gl->overlay_color_coord;
|
gl->coords.color = gl->overlay_color_coord;
|
||||||
gl->coords.vertices = 4 * gl->overlays;
|
gl->coords.vertices = 4 * gl->overlays;
|
||||||
|
|
||||||
coords.handle_data = NULL;
|
video_info->cb_shader_set_coords(NULL, video_info->shader_data,
|
||||||
coords.data = &gl->coords;
|
(const struct video_coords*)&gl->coords);
|
||||||
|
|
||||||
video_shader_driver_set_coords(coords);
|
|
||||||
|
|
||||||
video_info->cb_shader_set_mvp(gl, video_info->shader_data, &gl->mvp_no_rot);
|
video_info->cb_shader_set_mvp(gl, video_info->shader_data, &gl->mvp_no_rot);
|
||||||
|
|
||||||
@ -997,7 +994,6 @@ static void gl_pbo_async_readback(gl_t *gl)
|
|||||||
|
|
||||||
static INLINE void gl_draw_texture(gl_t *gl, video_frame_info_t *video_info)
|
static INLINE void gl_draw_texture(gl_t *gl, video_frame_info_t *video_info)
|
||||||
{
|
{
|
||||||
video_shader_ctx_coords_t coords;
|
|
||||||
GLfloat color[16];
|
GLfloat color[16];
|
||||||
unsigned width = video_info->width;
|
unsigned width = video_info->width;
|
||||||
unsigned height = video_info->height;
|
unsigned height = video_info->height;
|
||||||
@ -1019,9 +1015,6 @@ static INLINE void gl_draw_texture(gl_t *gl, video_frame_info_t *video_info)
|
|||||||
color[14] = 1.0f;
|
color[14] = 1.0f;
|
||||||
color[15] = gl->menu_texture_alpha;
|
color[15] = gl->menu_texture_alpha;
|
||||||
|
|
||||||
if (!gl->menu_texture)
|
|
||||||
return;
|
|
||||||
|
|
||||||
gl->coords.vertex = vertexes_flipped;
|
gl->coords.vertex = vertexes_flipped;
|
||||||
gl->coords.tex_coord = tex_coords;
|
gl->coords.tex_coord = tex_coords;
|
||||||
gl->coords.color = color;
|
gl->coords.color = color;
|
||||||
@ -1031,10 +1024,8 @@ static INLINE void gl_draw_texture(gl_t *gl, video_frame_info_t *video_info)
|
|||||||
|
|
||||||
gl->coords.vertices = 4;
|
gl->coords.vertices = 4;
|
||||||
|
|
||||||
coords.handle_data = NULL;
|
video_info->cb_shader_set_coords(NULL, video_info->shader_data,
|
||||||
coords.data = &gl->coords;
|
(const struct video_coords*)&gl->coords);
|
||||||
|
|
||||||
video_shader_driver_set_coords(coords);
|
|
||||||
|
|
||||||
video_info->cb_shader_set_mvp(gl, video_info->shader_data, &gl->mvp_no_rot);
|
video_info->cb_shader_set_mvp(gl, video_info->shader_data, &gl->mvp_no_rot);
|
||||||
|
|
||||||
@ -1064,7 +1055,6 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
unsigned pitch, const char *msg,
|
unsigned pitch, const char *msg,
|
||||||
video_frame_info_t *video_info)
|
video_frame_info_t *video_info)
|
||||||
{
|
{
|
||||||
video_shader_ctx_coords_t coords;
|
|
||||||
video_shader_ctx_params_t params;
|
video_shader_ctx_params_t params;
|
||||||
struct video_tex_info feedback_info;
|
struct video_tex_info feedback_info;
|
||||||
gl_t *gl = (gl_t*)data;
|
gl_t *gl = (gl_t*)data;
|
||||||
@ -1216,10 +1206,9 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
video_shader_driver_set_parameters(params);
|
video_shader_driver_set_parameters(params);
|
||||||
|
|
||||||
gl->coords.vertices = 4;
|
gl->coords.vertices = 4;
|
||||||
coords.handle_data = NULL;
|
|
||||||
coords.data = &gl->coords;
|
|
||||||
|
|
||||||
video_shader_driver_set_coords(coords);
|
video_info->cb_shader_set_coords(NULL, video_info->shader_data,
|
||||||
|
(const struct video_coords*)&gl->coords);
|
||||||
|
|
||||||
video_info->cb_shader_set_mvp(gl, video_info->shader_data, &gl->mvp);
|
video_info->cb_shader_set_mvp(gl, video_info->shader_data, &gl->mvp);
|
||||||
|
|
||||||
@ -1239,7 +1228,7 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
{
|
{
|
||||||
menu_driver_frame(video_info);
|
menu_driver_frame(video_info);
|
||||||
|
|
||||||
if (gl->menu_texture_enable)
|
if (gl->menu_texture_enable && gl->menu_texture)
|
||||||
gl_draw_texture(gl, video_info);
|
gl_draw_texture(gl, video_info);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -296,12 +296,6 @@ static bool gl_cg_set_coords(void *handle_data, void *shader_data, const struct
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool gl_cg_set_coords_fallback(void *handle_data, void *shader_data, const struct video_coords *coords)
|
|
||||||
{
|
|
||||||
gl_ff_vertex(coords);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gl_cg_set_texture_info(
|
static void gl_cg_set_texture_info(
|
||||||
cg_shader_data_t *cg,
|
cg_shader_data_t *cg,
|
||||||
const struct cg_fbo_params *params,
|
const struct cg_fbo_params *params,
|
||||||
@ -1233,7 +1227,6 @@ const shader_backend_t gl_cg_backend = {
|
|||||||
gl_cg_wrap_type,
|
gl_cg_wrap_type,
|
||||||
gl_cg_shader_scale,
|
gl_cg_shader_scale,
|
||||||
gl_cg_set_coords,
|
gl_cg_set_coords,
|
||||||
gl_cg_set_coords_fallback,
|
|
||||||
gl_cg_set_mvp,
|
gl_cg_set_mvp,
|
||||||
gl_cg_get_prev_textures,
|
gl_cg_get_prev_textures,
|
||||||
gl_cg_get_feedback_pass,
|
gl_cg_get_feedback_pass,
|
||||||
|
@ -1488,13 +1488,6 @@ static bool gl_glsl_set_coords(void *handle_data, void *shader_data,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool gl_glsl_set_coords_fallback(void *handle_data, void *shader_data,
|
|
||||||
const struct video_coords *coords)
|
|
||||||
{
|
|
||||||
gl_ff_vertex(coords);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gl_glsl_use(void *data, void *shader_data, unsigned idx, bool set_active)
|
static void gl_glsl_use(void *data, void *shader_data, unsigned idx, bool set_active)
|
||||||
{
|
{
|
||||||
GLuint id;
|
GLuint id;
|
||||||
@ -1621,7 +1614,6 @@ const shader_backend_t gl_glsl_backend = {
|
|||||||
gl_glsl_wrap_type,
|
gl_glsl_wrap_type,
|
||||||
gl_glsl_shader_scale,
|
gl_glsl_shader_scale,
|
||||||
gl_glsl_set_coords,
|
gl_glsl_set_coords,
|
||||||
gl_glsl_set_coords_fallback,
|
|
||||||
gl_glsl_set_mvp,
|
gl_glsl_set_mvp,
|
||||||
gl_glsl_get_prev_textures,
|
gl_glsl_get_prev_textures,
|
||||||
gl_glsl_get_feedback_pass,
|
gl_glsl_get_feedback_pass,
|
||||||
|
@ -539,7 +539,6 @@ const shader_backend_t hlsl_backend = {
|
|||||||
NULL, /* hlsl_wrap_type */
|
NULL, /* hlsl_wrap_type */
|
||||||
hlsl_shader_scale,
|
hlsl_shader_scale,
|
||||||
NULL, /* hlsl_set_coords */
|
NULL, /* hlsl_set_coords */
|
||||||
NULL, /* hlsl_set_coords_fallback */
|
|
||||||
hlsl_set_mvp,
|
hlsl_set_mvp,
|
||||||
NULL, /* hlsl_get_prev_textures */
|
NULL, /* hlsl_get_prev_textures */
|
||||||
hlsl_get_feedback_pass,
|
hlsl_get_feedback_pass,
|
||||||
|
@ -88,7 +88,6 @@ const shader_backend_t shader_null_backend = {
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
|
||||||
shader_null_get_prev_textures,
|
shader_null_get_prev_textures,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -121,8 +121,12 @@ typedef struct video_pixel_scaler
|
|||||||
void *scaler_out;
|
void *scaler_out;
|
||||||
} video_pixel_scaler_t;
|
} video_pixel_scaler_t;
|
||||||
|
|
||||||
static void (*video_driver_cb_shader_use)(void *data, void *shader_data, unsigned index, bool set_active);
|
static void (*video_driver_cb_shader_use)(void *data,
|
||||||
static bool (*video_driver_cb_shader_set_mvp)(void *data, void *shader_data, const math_matrix_4x4 *mat);
|
void *shader_data, unsigned index, bool set_active);
|
||||||
|
static bool (*video_driver_cb_shader_set_mvp)(void *data,
|
||||||
|
void *shader_data, const math_matrix_4x4 *mat);
|
||||||
|
static bool (*video_driver_cb_shader_set_coords)(void *handle_data,
|
||||||
|
void *shader_data, const struct video_coords *coords);
|
||||||
|
|
||||||
/* Opaque handles to currently running window.
|
/* Opaque handles to currently running window.
|
||||||
* Used by e.g. input drivers which bind to a window.
|
* Used by e.g. input drivers which bind to a window.
|
||||||
@ -2517,6 +2521,7 @@ void video_driver_build_info(video_frame_info_t *video_info)
|
|||||||
|
|
||||||
video_info->cb_shader_use = video_driver_cb_shader_use;
|
video_info->cb_shader_use = video_driver_cb_shader_use;
|
||||||
video_info->cb_shader_set_mvp = video_driver_cb_shader_set_mvp;
|
video_info->cb_shader_set_mvp = video_driver_cb_shader_set_mvp;
|
||||||
|
video_info->cb_shader_set_coords = video_driver_cb_shader_set_coords;
|
||||||
|
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
video_driver_threaded_unlock(is_threaded);
|
video_driver_threaded_unlock(is_threaded);
|
||||||
@ -3197,8 +3202,15 @@ static void video_shader_driver_reset_to_defaults(void)
|
|||||||
current_shader->set_mvp = video_shader_driver_set_mvp_null;
|
current_shader->set_mvp = video_shader_driver_set_mvp_null;
|
||||||
video_driver_cb_shader_set_mvp = video_shader_driver_set_mvp_null;
|
video_driver_cb_shader_set_mvp = video_shader_driver_set_mvp_null;
|
||||||
}
|
}
|
||||||
if (!current_shader->set_coords)
|
if (current_shader->set_coords)
|
||||||
|
{
|
||||||
|
video_driver_cb_shader_set_coords = current_shader->set_coords;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
current_shader->set_coords = video_shader_driver_set_coords_null;
|
current_shader->set_coords = video_shader_driver_set_coords_null;
|
||||||
|
video_driver_cb_shader_set_coords = video_shader_driver_set_coords_null;
|
||||||
|
}
|
||||||
if (current_shader->use)
|
if (current_shader->use)
|
||||||
video_driver_cb_shader_use = current_shader->use;
|
video_driver_cb_shader_use = current_shader->use;
|
||||||
else
|
else
|
||||||
|
@ -219,8 +219,6 @@ typedef struct shader_backend
|
|||||||
unsigned index, struct gfx_fbo_scale *scale);
|
unsigned index, struct gfx_fbo_scale *scale);
|
||||||
bool (*set_coords)(void *handle_data,
|
bool (*set_coords)(void *handle_data,
|
||||||
void *shader_data, const struct video_coords *coords);
|
void *shader_data, const struct video_coords *coords);
|
||||||
bool (*set_coords_fallback)(void *handle_data,
|
|
||||||
void *shader_data, const struct video_coords *coords);
|
|
||||||
bool (*set_mvp)(void *data, void *shader_data,
|
bool (*set_mvp)(void *data, void *shader_data,
|
||||||
const math_matrix_4x4 *mat);
|
const math_matrix_4x4 *mat);
|
||||||
unsigned (*get_prev_textures)(void *data);
|
unsigned (*get_prev_textures)(void *data);
|
||||||
@ -453,6 +451,8 @@ typedef struct video_frame_info
|
|||||||
void (*cb_shader_use)(void *data, void *shader_data, unsigned index, bool set_active);
|
void (*cb_shader_use)(void *data, void *shader_data, unsigned index, bool set_active);
|
||||||
bool (*cb_shader_set_mvp)(void *data, void *shader_data,
|
bool (*cb_shader_set_mvp)(void *data, void *shader_data,
|
||||||
const math_matrix_4x4 *mat);
|
const math_matrix_4x4 *mat);
|
||||||
|
bool (*cb_shader_set_coords)(void *handle_data,
|
||||||
|
void *shader_data, const struct video_coords *coords);
|
||||||
|
|
||||||
void *context_data;
|
void *context_data;
|
||||||
void *shader_data;
|
void *shader_data;
|
||||||
@ -1223,9 +1223,7 @@ bool video_shader_driver_get_feedback_pass(unsigned *data);
|
|||||||
|
|
||||||
bool video_shader_driver_mipmap_input(unsigned *index);
|
bool video_shader_driver_mipmap_input(unsigned *index);
|
||||||
|
|
||||||
#define video_shader_driver_set_coords(coords) \
|
#define video_shader_driver_set_coords(coords) current_shader->set_coords(coords.handle_data, shader_data, (const struct video_coords*)coords.data)
|
||||||
if (!current_shader->set_coords(coords.handle_data, shader_data, (const struct video_coords*)coords.data) && current_shader->set_coords_fallback) \
|
|
||||||
current_shader->set_coords_fallback(coords.handle_data, shader_data, (const struct video_coords*)coords.data)
|
|
||||||
|
|
||||||
bool video_shader_driver_scale(video_shader_ctx_scale_t *scaler);
|
bool video_shader_driver_scale(video_shader_ctx_scale_t *scaler);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user