mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Do away with all these if conditionals
This commit is contained in:
parent
d7ed925488
commit
1411b9ee6e
@ -27,10 +27,6 @@
|
||||
#include "../../config.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENGL
|
||||
#include "../common/gl_common.h"
|
||||
#endif
|
||||
|
||||
#include "../video_shader_driver.h"
|
||||
|
||||
typedef struct null_shader_data
|
||||
@ -58,18 +54,6 @@ static void *shader_null_init(void *data, const char *path)
|
||||
return null_shader;
|
||||
}
|
||||
|
||||
static void shader_null_set_params(void *data, void *shader_data,
|
||||
unsigned width, unsigned height,
|
||||
unsigned tex_width, unsigned tex_height,
|
||||
unsigned out_width, unsigned out_height,
|
||||
unsigned frame_count,
|
||||
const void *info,
|
||||
const void *prev_info,
|
||||
const void *feedback_info,
|
||||
const void *fbo_info, unsigned fbo_info_cnt)
|
||||
{
|
||||
}
|
||||
|
||||
static void shader_null_set_uniform_parameter(
|
||||
void *data,
|
||||
struct uniform_info *param,
|
||||
@ -77,35 +61,6 @@ static void shader_null_set_uniform_parameter(
|
||||
{
|
||||
}
|
||||
|
||||
static bool shader_null_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
|
||||
{
|
||||
#ifdef HAVE_OPENGL
|
||||
#ifndef NO_GL_FF_MATRIX
|
||||
if (string_is_equal_fast(video_driver_get_ident(), "gl", 2))
|
||||
gl_ff_matrix(mat);
|
||||
#endif
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool shader_null_set_coords(void *handle_data, void *shader_data, const struct video_coords *coords)
|
||||
{
|
||||
#ifdef HAVE_OPENGL
|
||||
#ifndef NO_GL_FF_VERTEX
|
||||
if (string_is_equal_fast(video_driver_get_ident(), "gl", 2))
|
||||
gl_ff_vertex(coords);
|
||||
#endif
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
static void shader_null_use(void *data, void *shader_data, unsigned idx, bool set_active)
|
||||
{
|
||||
(void)data;
|
||||
(void)idx;
|
||||
(void)set_active;
|
||||
}
|
||||
|
||||
static unsigned shader_null_num(void *data)
|
||||
{
|
||||
return 0;
|
||||
@ -118,12 +73,6 @@ static bool shader_null_filter_type(void *data, unsigned idx, bool *smooth)
|
||||
return false;
|
||||
}
|
||||
|
||||
static enum gfx_wrap_type shader_null_wrap_type(void *data, unsigned idx)
|
||||
{
|
||||
(void)idx;
|
||||
return RARCH_WRAP_BORDER;
|
||||
}
|
||||
|
||||
static void shader_null_shader_scale(void *data,
|
||||
unsigned idx, struct gfx_fbo_scale *scale)
|
||||
{
|
||||
@ -165,17 +114,17 @@ static bool shader_null_compile_program(
|
||||
const shader_backend_t shader_null_backend = {
|
||||
shader_null_init,
|
||||
shader_null_deinit,
|
||||
shader_null_set_params,
|
||||
NULL,
|
||||
shader_null_set_uniform_parameter,
|
||||
shader_null_compile_program,
|
||||
shader_null_use,
|
||||
NULL,
|
||||
shader_null_num,
|
||||
shader_null_filter_type,
|
||||
shader_null_wrap_type,
|
||||
shader_null_shader_scale,
|
||||
shader_null_set_coords,
|
||||
NULL,
|
||||
shader_null_set_mvp,
|
||||
shader_null_shader_scale,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
shader_null_get_prev_textures,
|
||||
shader_null_get_feedback_pass,
|
||||
shader_null_mipmap_input,
|
||||
|
@ -16,11 +16,16 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <string/stdstring.h>
|
||||
#include <gfx/math/matrix_4x4.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "../config.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENGL
|
||||
#include "common/gl_common.h"
|
||||
#endif
|
||||
|
||||
#include "video_shader_driver.h"
|
||||
#include "../verbosity.h"
|
||||
|
||||
@ -38,7 +43,7 @@ static const shader_backend_t *shader_ctx_drivers[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
const shader_backend_t *current_shader = NULL;
|
||||
shader_backend_t *current_shader = NULL;
|
||||
void *shader_data = NULL;
|
||||
|
||||
static const shader_backend_t *video_shader_set_backend(enum rarch_shader_type type)
|
||||
@ -135,10 +140,71 @@ bool video_shader_driver_deinit(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
static enum gfx_wrap_type video_shader_driver_wrap_type_null(void *data, unsigned index)
|
||||
{
|
||||
return RARCH_WRAP_BORDER;
|
||||
}
|
||||
|
||||
static bool video_shader_driver_set_mvp_null(void *data, void *shader_data, const math_matrix_4x4 *mat)
|
||||
{
|
||||
#ifdef HAVE_OPENGL
|
||||
#ifndef NO_GL_FF_MATRIX
|
||||
if (string_is_equal_fast(video_driver_get_ident(), "gl", 2))
|
||||
gl_ff_matrix(mat);
|
||||
#endif
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool video_shader_driver_set_coords_null(void *handle_data, void *shader_data, const struct video_coords *coords)
|
||||
{
|
||||
#ifdef HAVE_OPENGL
|
||||
#ifndef NO_GL_FF_VERTEX
|
||||
if (string_is_equal_fast(video_driver_get_ident(), "gl", 2))
|
||||
gl_ff_vertex(coords);
|
||||
#endif
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
static void video_shader_driver_use_null(void *data, void *shader_data, unsigned idx, bool set_active)
|
||||
{
|
||||
(void)data;
|
||||
(void)idx;
|
||||
(void)set_active;
|
||||
}
|
||||
|
||||
static void video_shader_driver_set_params_null(void *data, void *shader_data,
|
||||
unsigned width, unsigned height,
|
||||
unsigned tex_width, unsigned tex_height,
|
||||
unsigned out_width, unsigned out_height,
|
||||
unsigned frame_count,
|
||||
const void *info,
|
||||
const void *prev_info,
|
||||
const void *feedback_info,
|
||||
const void *fbo_info, unsigned fbo_info_cnt)
|
||||
{
|
||||
}
|
||||
|
||||
static void video_shader_driver_reset_to_defaults(void)
|
||||
{
|
||||
if (!current_shader->wrap_type)
|
||||
current_shader->wrap_type = video_shader_driver_wrap_type_null;
|
||||
if (!current_shader->set_mvp)
|
||||
current_shader->set_mvp = video_shader_driver_set_mvp_null;
|
||||
if (!current_shader->set_coords)
|
||||
current_shader->set_coords = video_shader_driver_set_coords_null;
|
||||
if (!current_shader->use)
|
||||
current_shader->use = video_shader_driver_use_null;
|
||||
if (!current_shader->set_params)
|
||||
current_shader->set_params = video_shader_driver_set_params_null;
|
||||
}
|
||||
|
||||
/* Finds first suitable shader context driver. */
|
||||
bool video_shader_driver_init_first(void)
|
||||
{
|
||||
current_shader = shader_ctx_drivers[0];
|
||||
current_shader = (shader_backend_t*)shader_ctx_drivers[0];
|
||||
video_shader_driver_reset_to_defaults();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -160,7 +226,8 @@ bool video_shader_driver_init(video_shader_ctx_init_t *init)
|
||||
return false;
|
||||
|
||||
shader_data = tmp;
|
||||
current_shader = init->shader;
|
||||
current_shader = (shader_backend_t*)init->shader;
|
||||
video_shader_driver_reset_to_defaults();
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -228,8 +295,6 @@ bool video_shader_driver_compile_program(struct shader_program_info *program_inf
|
||||
|
||||
bool video_shader_driver_wrap_type(video_shader_ctx_wrap_t *wrap)
|
||||
{
|
||||
if (!current_shader || !current_shader->wrap_type)
|
||||
return false;
|
||||
wrap->type = current_shader->wrap_type(shader_data, wrap->idx);
|
||||
return true;
|
||||
}
|
||||
|
@ -286,8 +286,7 @@ bool video_shader_driver_deinit(void);
|
||||
current_shader->set_uniform_parameter(shader_data, ¶m, NULL)
|
||||
|
||||
#define video_shader_driver_set_parameters(params) \
|
||||
if (current_shader && current_shader->set_params) \
|
||||
current_shader->set_params(params.data, shader_data, params.width, params.height, params.tex_width, params.tex_height, params.out_width, params.out_height, params.frame_counter, params.info, params.prev_info, params.feedback_info, params.fbo_info, params.fbo_info_cnt)
|
||||
current_shader->set_params(params.data, shader_data, params.width, params.height, params.tex_width, params.tex_height, params.out_width, params.out_height, params.frame_counter, params.info, params.prev_info, params.feedback_info, params.fbo_info, params.fbo_info_cnt)
|
||||
|
||||
bool video_shader_driver_init_first(void);
|
||||
|
||||
@ -298,8 +297,7 @@ bool video_shader_driver_get_feedback_pass(unsigned *data);
|
||||
bool video_shader_driver_mipmap_input(unsigned *index);
|
||||
|
||||
#define video_shader_driver_set_coords(coords) \
|
||||
if (current_shader && current_shader->set_coords) \
|
||||
if (!current_shader->set_coords(coords.handle_data, shader_data, (const struct video_coords*)coords.data) && current_shader->set_coords_fallback) \
|
||||
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);
|
||||
@ -307,7 +305,7 @@ bool video_shader_driver_scale(video_shader_ctx_scale_t *scaler);
|
||||
bool video_shader_driver_info(video_shader_ctx_info_t *shader_info);
|
||||
|
||||
#define video_shader_driver_set_mvp(mvp) \
|
||||
if (mvp.matrix && current_shader && current_shader->set_mvp) \
|
||||
if (mvp.matrix) \
|
||||
current_shader->set_mvp(mvp.data, shader_data, mvp.matrix) \
|
||||
|
||||
bool video_shader_driver_filter_type(video_shader_ctx_filter_t *filter);
|
||||
@ -315,12 +313,11 @@ bool video_shader_driver_filter_type(video_shader_ctx_filter_t *filter);
|
||||
bool video_shader_driver_compile_program(struct shader_program_info *program_info);
|
||||
|
||||
#define video_shader_driver_use(shader_info) \
|
||||
if (current_shader) \
|
||||
current_shader->use(shader_info.data, shader_data, shader_info.idx, shader_info.set_active)
|
||||
current_shader->use(shader_info.data, shader_data, shader_info.idx, shader_info.set_active)
|
||||
|
||||
bool video_shader_driver_wrap_type(video_shader_ctx_wrap_t *wrap);
|
||||
|
||||
extern const shader_backend_t *current_shader;
|
||||
extern shader_backend_t *current_shader;
|
||||
extern void *shader_data;
|
||||
|
||||
extern const shader_backend_t gl_glsl_backend;
|
||||
|
Loading…
x
Reference in New Issue
Block a user