mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 09:40:06 +00:00
Create remaining video_shader_driver_* functions
This commit is contained in:
parent
6d37cfc2fb
commit
ab3f0f0652
@ -439,7 +439,7 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
|
||||
mipmapped = video_shader_driver_mipmap_input(gl->shader, i + 2);
|
||||
min_filter = mipmapped ? base_mip_filt : base_filt;
|
||||
|
||||
if (gl->shader->filter_type(i + 2, &smooth))
|
||||
if (video_shader_driver_filter_type(gl->shader, i + 2, &smooth))
|
||||
{
|
||||
min_filter = mipmapped ? (smooth ?
|
||||
GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST)
|
||||
@ -448,7 +448,7 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
|
||||
|
||||
mag_filter = min_filter_to_mag(min_filter);
|
||||
|
||||
wrap = gl->shader->wrap_type(i + 2);
|
||||
wrap = video_shader_driver_wrap_type(gl->shader, i + 2);
|
||||
wrap_enum = gl_wrap_type_to_enum(wrap);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);
|
||||
@ -676,7 +676,7 @@ static void gl_init_fbo(gl_t *gl, unsigned fbo_width, unsigned fbo_height)
|
||||
gl->fbo_rect[i].width, gl->fbo_rect[i].height);
|
||||
}
|
||||
|
||||
gl->fbo_feedback_enable = gl->shader->get_feedback_pass(&gl->fbo_feedback_pass);
|
||||
gl->fbo_feedback_enable = video_shader_driver_get_feedback_pass(gl->shader, &gl->fbo_feedback_pass);
|
||||
|
||||
if (gl->fbo_feedback_enable && gl->fbo_feedback_pass < (unsigned)gl->fbo_pass)
|
||||
{
|
||||
@ -1111,7 +1111,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count,
|
||||
|
||||
/* Render to FBO with certain size. */
|
||||
gl_set_viewport(gl, rect->img_width, rect->img_height, true, false);
|
||||
gl->shader->set_params(gl, prev_rect->img_width, prev_rect->img_height,
|
||||
video_shader_driver_set_params(gl->shader, gl, prev_rect->img_width, prev_rect->img_height,
|
||||
prev_rect->width, prev_rect->height,
|
||||
gl->vp.width, gl->vp.height, (unsigned int)frame_count,
|
||||
tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt);
|
||||
@ -1157,7 +1157,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count,
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
gl_set_viewport(gl, width, height, false, true);
|
||||
|
||||
gl->shader->set_params(gl,
|
||||
video_shader_driver_set_params(gl->shader, gl,
|
||||
prev_rect->img_width, prev_rect->img_height,
|
||||
prev_rect->width, prev_rect->height,
|
||||
gl->vp.width, gl->vp.height, (unsigned int)frame_count,
|
||||
@ -1765,7 +1765,7 @@ static bool gl_frame(void *data, const void *frame,
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
gl->shader->set_params(gl,
|
||||
video_shader_driver_set_params(gl->shader, gl,
|
||||
frame_width, frame_height,
|
||||
gl->tex_w, gl->tex_h,
|
||||
gl->vp.width, gl->vp.height,
|
||||
@ -2593,7 +2593,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
||||
|
||||
gl->tex_mipmap = video_shader_driver_mipmap_input(gl->shader, 1);
|
||||
|
||||
if (gl->shader->filter_type(1, &force_smooth))
|
||||
if (video_shader_driver_filter_type(gl->shader, 1, &force_smooth))
|
||||
gl->tex_min_filter = gl->tex_mipmap ? (force_smooth ?
|
||||
GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST)
|
||||
: (force_smooth ? GL_LINEAR : GL_NEAREST);
|
||||
@ -2603,7 +2603,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
||||
: (video->smooth ? GL_LINEAR : GL_NEAREST);
|
||||
|
||||
gl->tex_mag_filter = min_filter_to_mag(gl->tex_min_filter);
|
||||
gl->wrap_mode = gl_wrap_type_to_enum(gl->shader->wrap_type(1));
|
||||
gl->wrap_mode = gl_wrap_type_to_enum(video_shader_driver_wrap_type(gl->shader, 1));
|
||||
|
||||
gl_set_texture_fmts(gl, video->rgb32);
|
||||
|
||||
@ -2727,10 +2727,10 @@ static void gl_update_tex_filter_frame(gl_t *gl)
|
||||
|
||||
context_bind_hw_render(gl, false);
|
||||
|
||||
if (!gl->shader->filter_type(1, &smooth))
|
||||
if (!video_shader_driver_filter_type(gl->shader, 1, &smooth))
|
||||
smooth = settings->video.smooth;
|
||||
|
||||
wrap_mode = gl_wrap_type_to_enum(gl->shader->wrap_type(1));
|
||||
wrap_mode = gl_wrap_type_to_enum(video_shader_driver_wrap_type(gl->shader, 1));
|
||||
gl->tex_mipmap = video_shader_driver_mipmap_input(gl->shader, 1);
|
||||
|
||||
gl->video_info.smooth = smooth;
|
||||
@ -3404,7 +3404,9 @@ static void gl_show_mouse(void *data, bool state)
|
||||
static struct video_shader *gl_get_current_shader(void *data)
|
||||
{
|
||||
gl_t *gl = (gl_t*)data;
|
||||
return (gl && gl->shader) ? gl->shader->get_current_shader() : NULL;
|
||||
if (!gl)
|
||||
return NULL;
|
||||
return video_shader_driver_direct_get_current_shader(gl->shader);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -155,3 +155,46 @@ bool video_shader_driver_set_mvp(const shader_backend_t *shader, void *data, con
|
||||
return false;
|
||||
return shader->set_mvp(data, mat);
|
||||
}
|
||||
|
||||
bool video_shader_driver_filter_type(const shader_backend_t *shader, unsigned index, bool *smooth)
|
||||
{
|
||||
if (!shader || !shader->filter_type)
|
||||
return false;
|
||||
return shader->filter_type(index, smooth);
|
||||
}
|
||||
|
||||
enum gfx_wrap_type video_shader_driver_wrap_type(const shader_backend_t *shader, unsigned index)
|
||||
{
|
||||
return shader->wrap_type(index);
|
||||
}
|
||||
|
||||
bool video_shader_driver_get_feedback_pass(const shader_backend_t *shader, unsigned *pass)
|
||||
{
|
||||
if (!shader || !shader->get_feedback_pass)
|
||||
return false;
|
||||
return shader->get_feedback_pass(pass);
|
||||
}
|
||||
|
||||
struct video_shader *video_shader_driver_direct_get_current_shader(const shader_backend_t *shader)
|
||||
{
|
||||
if (!shader || !shader->get_current_shader)
|
||||
return NULL;
|
||||
return shader->get_current_shader();
|
||||
}
|
||||
|
||||
void video_shader_driver_set_params(const shader_backend_t *shader,
|
||||
void *data, unsigned width, unsigned height,
|
||||
unsigned tex_width, unsigned tex_height,
|
||||
unsigned out_width, unsigned out_height,
|
||||
unsigned frame_counter,
|
||||
const void *info,
|
||||
const void *prev_info,
|
||||
const void *feedback_info,
|
||||
const void *fbo_info, unsigned fbo_info_cnt)
|
||||
{
|
||||
if (!shader || !shader->set_params)
|
||||
return NULL;
|
||||
return shader->set_params(data, width, height, tex_width, tex_height,
|
||||
out_width, out_height, frame_counter, info, prev_info, feedback_info,
|
||||
fbo_info, fbo_info_cnt);
|
||||
}
|
||||
|
@ -134,6 +134,24 @@ bool video_shader_driver_set_mvp(const shader_backend_t *shader, void *data, con
|
||||
|
||||
unsigned video_shader_driver_get_prev_textures(const shader_backend_t *shader);
|
||||
|
||||
bool video_shader_driver_filter_type(const shader_backend_t *shader, unsigned index, bool *smooth);
|
||||
|
||||
enum gfx_wrap_type video_shader_driver_wrap_type(const shader_backend_t *shader, unsigned index);
|
||||
|
||||
bool video_shader_driver_get_feedback_pass(const shader_backend_t *shader, unsigned *pass);
|
||||
|
||||
struct video_shader *video_shader_driver_direct_get_current_shader(const shader_backend_t *shader);
|
||||
|
||||
void video_shader_driver_set_params(const shader_backend_t *shader,
|
||||
void *data, unsigned width, unsigned height,
|
||||
unsigned tex_width, unsigned tex_height,
|
||||
unsigned out_width, unsigned out_height,
|
||||
unsigned frame_counter,
|
||||
const void *info,
|
||||
const void *prev_info,
|
||||
const void *feedback_info,
|
||||
const void *fbo_info, unsigned fbo_info_cnt);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user