mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Create set_coords_fallback for shader driver
This commit is contained in:
parent
571f899c3d
commit
17235d70e2
@ -276,7 +276,11 @@ static bool gl_cg_set_coords(void *handle_data, void *shader_data, const struct
|
||||
cg_shader_data_t *cg = (cg_shader_data_t*)shader_data;
|
||||
|
||||
if (!cg || !coords)
|
||||
goto fallback;
|
||||
{
|
||||
if (coords)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cg->prg[cg->active_idx].vertex)
|
||||
gl_cg_set_coord_array(cg->prg[cg->active_idx].vertex, cg, coords->vertex, 2);
|
||||
@ -291,10 +295,12 @@ static bool gl_cg_set_coords(void *handle_data, void *shader_data, const struct
|
||||
gl_cg_set_coord_array(cg->prg[cg->active_idx].color, cg, coords->color, 4);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
fallback:
|
||||
static bool gl_cg_set_coords_fallback(void *handle_data, void *shader_data, const struct video_coords *coords)
|
||||
{
|
||||
gl_ff_vertex(coords);
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void gl_cg_set_texture_info(
|
||||
@ -1228,6 +1234,7 @@ const shader_backend_t gl_cg_backend = {
|
||||
gl_cg_wrap_type,
|
||||
gl_cg_shader_scale,
|
||||
gl_cg_set_coords,
|
||||
gl_cg_set_coords_fallback,
|
||||
gl_cg_set_mvp,
|
||||
gl_cg_get_prev_textures,
|
||||
gl_cg_get_feedback_pass,
|
||||
|
@ -1405,7 +1405,11 @@ static bool gl_glsl_set_coords(void *handle_data, void *shader_data,
|
||||
? &glsl->uniforms[glsl->active_idx] : NULL;
|
||||
|
||||
if (!glsl || !glsl->shader->modern || !coords)
|
||||
goto fallback;
|
||||
{
|
||||
if (coords)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (coords->vertices > 4)
|
||||
{
|
||||
@ -1423,7 +1427,7 @@ static bool gl_glsl_set_coords(void *handle_data, void *shader_data,
|
||||
}
|
||||
|
||||
if (!buffer)
|
||||
goto fallback;
|
||||
return false;
|
||||
|
||||
if (uni->tex_coord >= 0)
|
||||
{
|
||||
@ -1465,11 +1469,13 @@ static bool gl_glsl_set_coords(void *handle_data, void *shader_data,
|
||||
free(buffer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
fallback:
|
||||
if (coords)
|
||||
gl_ff_vertex(coords);
|
||||
return false;
|
||||
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)
|
||||
@ -1598,6 +1604,7 @@ const shader_backend_t gl_glsl_backend = {
|
||||
gl_glsl_wrap_type,
|
||||
gl_glsl_shader_scale,
|
||||
gl_glsl_set_coords,
|
||||
gl_glsl_set_coords_fallback,
|
||||
gl_glsl_set_mvp,
|
||||
gl_glsl_get_prev_textures,
|
||||
gl_glsl_get_feedback_pass,
|
||||
|
@ -539,6 +539,7 @@ const shader_backend_t hlsl_backend = {
|
||||
NULL, /* hlsl_wrap_type */
|
||||
hlsl_shader_scale,
|
||||
NULL, /* hlsl_set_coords */
|
||||
NULL, /* hlsl_set_coords_fallback */
|
||||
hlsl_set_mvp,
|
||||
NULL, /* hlsl_get_prev_textures */
|
||||
hlsl_get_feedback_pass,
|
||||
|
@ -174,6 +174,7 @@ const shader_backend_t shader_null_backend = {
|
||||
shader_null_wrap_type,
|
||||
shader_null_shader_scale,
|
||||
shader_null_set_coords,
|
||||
NULL,
|
||||
shader_null_set_mvp,
|
||||
shader_null_get_prev_textures,
|
||||
shader_null_get_feedback_pass,
|
||||
|
@ -173,6 +173,8 @@ typedef struct shader_backend
|
||||
unsigned index, struct gfx_fbo_scale *scale);
|
||||
bool (*set_coords)(void *handle_data,
|
||||
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,
|
||||
const math_matrix_4x4 *mat);
|
||||
unsigned (*get_prev_textures)(void *data);
|
||||
@ -297,7 +299,8 @@ bool video_shader_driver_mipmap_input(unsigned *index);
|
||||
|
||||
#define video_shader_driver_set_coords(coords) \
|
||||
if (current_shader && current_shader->set_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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user