mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
Move renderchain driver interface to gl_common.h - and replace
some void pointers in function callbacks with gl_t
This commit is contained in:
parent
3773482883
commit
6996e72b49
@ -154,6 +154,85 @@ RETRO_BEGIN_DECLS
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef struct gl gl_t;
|
||||||
|
|
||||||
|
typedef struct gl_renderchain_driver
|
||||||
|
{
|
||||||
|
void (*set_coords)(void *handle_data,
|
||||||
|
void *chain_data,
|
||||||
|
void *shader_data, const struct video_coords *coords);
|
||||||
|
void (*set_mvp)(void *data,
|
||||||
|
void *chain_data,
|
||||||
|
void *shader_data,
|
||||||
|
const void *mat_data);
|
||||||
|
void (*init_texture_reference)(
|
||||||
|
gl_t *gl, void *chain_data, unsigned i,
|
||||||
|
unsigned internal_fmt, unsigned texture_fmt,
|
||||||
|
unsigned texture_type);
|
||||||
|
void (*fence_iterate)(void *data, void *chain_data,
|
||||||
|
unsigned hard_sync_frames);
|
||||||
|
void (*fence_free)(void *data, void *chain_data);
|
||||||
|
void (*readback)(gl_t *gl,
|
||||||
|
void *chain_data,
|
||||||
|
unsigned alignment,
|
||||||
|
unsigned fmt, unsigned type,
|
||||||
|
void *src);
|
||||||
|
void (*init_pbo)(unsigned size, const void *data);
|
||||||
|
void (*bind_pbo)(unsigned idx);
|
||||||
|
void (*unbind_pbo)(void *data, void *chain_data);
|
||||||
|
void (*copy_frame)(
|
||||||
|
gl_t *gl,
|
||||||
|
void *chain_data,
|
||||||
|
video_frame_info_t *video_info,
|
||||||
|
const void *frame,
|
||||||
|
unsigned width, unsigned height, unsigned pitch);
|
||||||
|
void (*restore_default_state)(gl_t *gl, void *chain_data);
|
||||||
|
void (*new_vao)(void *data, void *chain_data);
|
||||||
|
void (*free_vao)(void *data, void *chain_data);
|
||||||
|
void (*bind_vao)(void *data, void *chain_data);
|
||||||
|
void (*unbind_vao)(void *data, void *chain_data);
|
||||||
|
void (*disable_client_arrays)(void *data, void *chain_data);
|
||||||
|
void (*ff_vertex)(const void *data);
|
||||||
|
void (*ff_matrix)(const void *data);
|
||||||
|
void (*bind_backbuffer)(void *data, void *chain_data);
|
||||||
|
void (*deinit_fbo)(gl_t *gl, void *chain_data);
|
||||||
|
void (*viewport_info)(
|
||||||
|
gl_t *gl, void *chain_data, struct video_viewport *vp);
|
||||||
|
bool (*read_viewport)(
|
||||||
|
gl_t *gl, void *chain_data, uint8_t *buffer, bool is_idle);
|
||||||
|
void (*bind_prev_texture)(
|
||||||
|
gl_t *gl,
|
||||||
|
void *chain_data,
|
||||||
|
const struct video_tex_info *tex_info);
|
||||||
|
void (*chain_free)(void *data, void *chain_data);
|
||||||
|
void *(*chain_new)(void);
|
||||||
|
void (*init)(gl_t *gl, void *chain_data,
|
||||||
|
unsigned fbo_width, unsigned fbo_height);
|
||||||
|
bool (*init_hw_render)(gl_t *gl, void *chain_data,
|
||||||
|
unsigned width, unsigned height);
|
||||||
|
void (*free)(gl_t *gl, void *chain_data);
|
||||||
|
void (*deinit_hw_render)(gl_t *gl, void *chain_data);
|
||||||
|
void (*start_render)(gl_t *gl, void *chain_data,
|
||||||
|
video_frame_info_t *video_info);
|
||||||
|
void (*check_fbo_dimensions)(gl_t *gl, void *chain_data);
|
||||||
|
void (*recompute_pass_sizes)(gl_t *gl,
|
||||||
|
void *chain_data,
|
||||||
|
unsigned width, unsigned height,
|
||||||
|
unsigned vp_width, unsigned vp_height);
|
||||||
|
void (*renderchain_render)(gl_t *gl,
|
||||||
|
void *chain_data,
|
||||||
|
video_frame_info_t *video_info,
|
||||||
|
uint64_t frame_count,
|
||||||
|
const struct video_tex_info *tex_info,
|
||||||
|
const struct video_tex_info *feedback_info);
|
||||||
|
void (*resolve_extensions)(
|
||||||
|
gl_t *gl,
|
||||||
|
void *chain_data,
|
||||||
|
const char *context_ident,
|
||||||
|
const video_info_t *video);
|
||||||
|
const char *ident;
|
||||||
|
} gl_renderchain_driver_t;
|
||||||
|
|
||||||
typedef struct gl
|
typedef struct gl
|
||||||
{
|
{
|
||||||
GLenum internal_fmt;
|
GLenum internal_fmt;
|
||||||
|
@ -56,12 +56,11 @@ typedef struct gl1_renderchain
|
|||||||
} gl1_renderchain_t;
|
} gl1_renderchain_t;
|
||||||
|
|
||||||
static void gl1_renderchain_viewport_info(
|
static void gl1_renderchain_viewport_info(
|
||||||
void *data, void *chain_data,
|
gl_t *gl, void *chain_data,
|
||||||
struct video_viewport *vp)
|
struct video_viewport *vp)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
unsigned top_y, top_dist;
|
unsigned top_y, top_dist;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
video_driver_get_size(&width, &height);
|
video_driver_get_size(&width, &height);
|
||||||
|
|
||||||
@ -76,16 +75,10 @@ static void gl1_renderchain_viewport_info(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool gl1_renderchain_read_viewport(
|
static bool gl1_renderchain_read_viewport(
|
||||||
void *data, void *chain_data,
|
gl_t *gl, void *chain_data,
|
||||||
uint8_t *buffer, bool is_idle)
|
uint8_t *buffer, bool is_idle)
|
||||||
{
|
{
|
||||||
unsigned num_pixels = 0;
|
unsigned num_pixels = gl->vp.width * gl->vp.height;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
if (!gl)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
num_pixels = gl->vp.width * gl->vp.height;
|
|
||||||
|
|
||||||
/* Use slow synchronous readbacks. Use this with plain screenshots
|
/* Use slow synchronous readbacks. Use this with plain screenshots
|
||||||
as we don't really care about performance in this case. */
|
as we don't really care about performance in this case. */
|
||||||
@ -179,12 +172,12 @@ static void gl1_renderchain_disable_client_arrays(void *data,
|
|||||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl1_renderchain_restore_default_state(void *data,
|
static void gl1_renderchain_restore_default_state(gl_t *gl,
|
||||||
void *chain_data)
|
void *chain_data)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
if (!gl)
|
if (!gl)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
@ -192,13 +185,12 @@ static void gl1_renderchain_restore_default_state(void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl1_renderchain_copy_frame(
|
static void gl1_renderchain_copy_frame(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
video_frame_info_t *video_info,
|
video_frame_info_t *video_info,
|
||||||
const void *frame,
|
const void *frame,
|
||||||
unsigned width, unsigned height, unsigned pitch)
|
unsigned width, unsigned height, unsigned pitch)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
const GLvoid *data_buf = frame;
|
const GLvoid *data_buf = frame;
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, video_pixel_get_alignment(pitch));
|
glPixelStorei(GL_UNPACK_ALIGNMENT, video_pixel_get_alignment(pitch));
|
||||||
|
|
||||||
@ -228,14 +220,13 @@ static void gl1_renderchain_copy_frame(
|
|||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl1_renderchain_readback(void *data,
|
static void gl1_renderchain_readback(
|
||||||
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
unsigned alignment,
|
unsigned alignment,
|
||||||
unsigned fmt, unsigned type,
|
unsigned fmt, unsigned type,
|
||||||
void *src)
|
void *src)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, alignment);
|
glPixelStorei(GL_PACK_ALIGNMENT, alignment);
|
||||||
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
||||||
glReadBuffer(GL_BACK);
|
glReadBuffer(GL_BACK);
|
||||||
@ -278,7 +269,7 @@ static void gl1_renderchain_set_coords(void *handle_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl1_renderchain_render(
|
static void gl1_renderchain_render(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
video_frame_info_t *video_info,
|
video_frame_info_t *video_info,
|
||||||
uint64_t frame_count,
|
uint64_t frame_count,
|
||||||
|
@ -296,11 +296,10 @@ static void gl_check_fbo_dimension(gl_t *gl,
|
|||||||
/* On resize, we might have to recreate our FBOs
|
/* On resize, we might have to recreate our FBOs
|
||||||
* due to "Viewport" scale, and set a new viewport. */
|
* due to "Viewport" scale, and set a new viewport. */
|
||||||
|
|
||||||
static void gl2_renderchain_check_fbo_dimensions(void *data,
|
static void gl2_renderchain_check_fbo_dimensions(
|
||||||
void *chain_data)
|
gl_t *gl, void *chain_data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
/* Check if we have to recreate our FBO textures. */
|
/* Check if we have to recreate our FBO textures. */
|
||||||
@ -320,7 +319,7 @@ static void gl2_renderchain_check_fbo_dimensions(void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_render(
|
static void gl2_renderchain_render(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
video_frame_info_t *video_info,
|
video_frame_info_t *video_info,
|
||||||
uint64_t frame_count,
|
uint64_t frame_count,
|
||||||
@ -331,7 +330,6 @@ static void gl2_renderchain_render(
|
|||||||
video_shader_ctx_coords_t coords;
|
video_shader_ctx_coords_t coords;
|
||||||
video_shader_ctx_params_t params;
|
video_shader_ctx_params_t params;
|
||||||
video_shader_ctx_info_t shader_info;
|
video_shader_ctx_info_t shader_info;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
static GLfloat fbo_tex_coords[8] = {0.0f};
|
static GLfloat fbo_tex_coords[8] = {0.0f};
|
||||||
struct video_tex_info fbo_tex_info[GFX_MAX_SHADERS];
|
struct video_tex_info fbo_tex_info[GFX_MAX_SHADERS];
|
||||||
@ -498,10 +496,9 @@ static void gl2_renderchain_render(
|
|||||||
gl->coords.tex_coord = gl->tex_info.coord;
|
gl->coords.tex_coord = gl->tex_info.coord;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_deinit_fbo(void *data,
|
static void gl2_renderchain_deinit_fbo(gl_t *gl,
|
||||||
void *chain_data)
|
void *chain_data)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
if (gl)
|
if (gl)
|
||||||
@ -531,10 +528,9 @@ static void gl2_renderchain_deinit_fbo(void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_deinit_hw_render(
|
static void gl2_renderchain_deinit_hw_render(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data)
|
void *chain_data)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
if (!gl)
|
if (!gl)
|
||||||
return;
|
return;
|
||||||
@ -550,10 +546,8 @@ static void gl2_renderchain_deinit_hw_render(
|
|||||||
context_bind_hw_render(false);
|
context_bind_hw_render(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_free(void *data, void *chain_data)
|
static void gl2_renderchain_free(gl_t *gl, void *chain_data)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
gl2_renderchain_deinit_fbo(gl, chain_data);
|
gl2_renderchain_deinit_fbo(gl, chain_data);
|
||||||
gl2_renderchain_deinit_hw_render(gl, chain_data);
|
gl2_renderchain_deinit_hw_render(gl, chain_data);
|
||||||
}
|
}
|
||||||
@ -740,13 +734,12 @@ static void gl_create_fbo_textures(gl_t *gl, gl2_renderchain_t *chain)
|
|||||||
* we have to recalculate geometry of our FBO. */
|
* we have to recalculate geometry of our FBO. */
|
||||||
|
|
||||||
static void gl2_renderchain_recompute_pass_sizes(
|
static void gl2_renderchain_recompute_pass_sizes(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
unsigned vp_width, unsigned vp_height)
|
unsigned vp_width, unsigned vp_height)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
bool size_modified = false;
|
bool size_modified = false;
|
||||||
GLint max_size = 0;
|
GLint max_size = 0;
|
||||||
@ -804,7 +797,8 @@ static void gl2_renderchain_recompute_pass_sizes(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_start_render(void *data,
|
static void gl2_renderchain_start_render(
|
||||||
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
video_frame_info_t *video_info)
|
video_frame_info_t *video_info)
|
||||||
{
|
{
|
||||||
@ -817,7 +811,6 @@ static void gl2_renderchain_start_render(void *data,
|
|||||||
0, 1,
|
0, 1,
|
||||||
1, 1
|
1, 1
|
||||||
};
|
};
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]);
|
glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]);
|
||||||
@ -841,7 +834,7 @@ static void gl2_renderchain_start_render(void *data,
|
|||||||
|
|
||||||
/* Set up render to texture. */
|
/* Set up render to texture. */
|
||||||
void gl2_renderchain_init(
|
void gl2_renderchain_init(
|
||||||
void *data, void *chain_data,
|
gl_t *gl, void *chain_data,
|
||||||
unsigned fbo_width, unsigned fbo_height)
|
unsigned fbo_width, unsigned fbo_height)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -849,7 +842,6 @@ void gl2_renderchain_init(
|
|||||||
video_shader_ctx_scale_t scaler;
|
video_shader_ctx_scale_t scaler;
|
||||||
video_shader_ctx_info_t shader_info;
|
video_shader_ctx_info_t shader_info;
|
||||||
struct gfx_fbo_scale scale, scale_last;
|
struct gfx_fbo_scale scale, scale_last;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
if (!video_shader_driver_info(&shader_info))
|
if (!video_shader_driver_info(&shader_info))
|
||||||
@ -951,7 +943,7 @@ void gl2_renderchain_init(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool gl2_renderchain_init_hw_render(
|
static bool gl2_renderchain_init_hw_render(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
unsigned width, unsigned height)
|
unsigned width, unsigned height)
|
||||||
{
|
{
|
||||||
@ -963,7 +955,6 @@ static bool gl2_renderchain_init_hw_render(
|
|||||||
GLint max_renderbuffer_size = 0;
|
GLint max_renderbuffer_size = 0;
|
||||||
struct retro_hw_render_callback *hwr =
|
struct retro_hw_render_callback *hwr =
|
||||||
video_driver_get_hw_context();
|
video_driver_get_hw_context();
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
/* We can only share texture objects through contexts.
|
/* We can only share texture objects through contexts.
|
||||||
@ -1054,11 +1045,10 @@ static bool gl2_renderchain_init_hw_render(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_bind_prev_texture(
|
static void gl2_renderchain_bind_prev_texture(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
const struct video_tex_info *tex_info)
|
const struct video_tex_info *tex_info)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
memmove(gl->prev_info + 1, gl->prev_info,
|
memmove(gl->prev_info + 1, gl->prev_info,
|
||||||
@ -1080,12 +1070,11 @@ static void gl2_renderchain_bind_prev_texture(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_viewport_info(
|
static void gl2_renderchain_viewport_info(
|
||||||
void *data, void *chain_data,
|
gl_t *gl, void *chain_data,
|
||||||
struct video_viewport *vp)
|
struct video_viewport *vp)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
unsigned top_y, top_dist;
|
unsigned top_y, top_dist;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
video_driver_get_size(&width, &height);
|
video_driver_get_size(&width, &height);
|
||||||
|
|
||||||
@ -1100,12 +1089,11 @@ static void gl2_renderchain_viewport_info(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool gl2_renderchain_read_viewport(
|
static bool gl2_renderchain_read_viewport(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
uint8_t *buffer, bool is_idle)
|
uint8_t *buffer, bool is_idle)
|
||||||
{
|
{
|
||||||
unsigned num_pixels = 0;
|
unsigned num_pixels = 0;
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
if (!gl)
|
if (!gl)
|
||||||
return false;
|
return false;
|
||||||
@ -1258,10 +1246,9 @@ static void gl2_renderchain_free_vao(void *data,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void gl2_renderchain_restore_default_state(
|
static void gl2_renderchain_restore_default_state(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data)
|
void *chain_data)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
if (!gl)
|
if (!gl)
|
||||||
return;
|
return;
|
||||||
#ifndef HAVE_OPENGLES
|
#ifndef HAVE_OPENGLES
|
||||||
@ -1274,13 +1261,12 @@ static void gl2_renderchain_restore_default_state(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_copy_frame(
|
static void gl2_renderchain_copy_frame(
|
||||||
void *data,
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
video_frame_info_t *video_info,
|
video_frame_info_t *video_info,
|
||||||
const void *frame,
|
const void *frame,
|
||||||
unsigned width, unsigned height, unsigned pitch)
|
unsigned width, unsigned height, unsigned pitch)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
(void)chain;
|
(void)chain;
|
||||||
@ -1436,14 +1422,13 @@ static void gl2_renderchain_init_pbo(unsigned size,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void gl2_renderchain_readback(void *data,
|
static void gl2_renderchain_readback(
|
||||||
|
gl_t *gl,
|
||||||
void *chain_data,
|
void *chain_data,
|
||||||
unsigned alignment,
|
unsigned alignment,
|
||||||
unsigned fmt, unsigned type,
|
unsigned fmt, unsigned type,
|
||||||
void *src)
|
void *src)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
|
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, alignment);
|
glPixelStorei(GL_PACK_ALIGNMENT, alignment);
|
||||||
#ifndef HAVE_OPENGLES
|
#ifndef HAVE_OPENGLES
|
||||||
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
||||||
@ -1499,11 +1484,10 @@ static void gl2_renderchain_fence_free(void *data,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void gl2_renderchain_init_textures_reference(
|
static void gl2_renderchain_init_textures_reference(
|
||||||
void *data, void *chain_data, unsigned i,
|
gl_t *gl, void *chain_data, unsigned i,
|
||||||
unsigned internal_fmt, unsigned texture_fmt,
|
unsigned internal_fmt, unsigned texture_fmt,
|
||||||
unsigned texture_type)
|
unsigned texture_type)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
|
|
||||||
(void)chain;
|
(void)chain;
|
||||||
@ -1528,11 +1512,10 @@ static void gl2_renderchain_init_textures_reference(
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl2_renderchain_resolve_extensions(void *data,
|
static void gl2_renderchain_resolve_extensions(gl_t *gl,
|
||||||
void *chain_data, const char *context_ident,
|
void *chain_data, const char *context_ident,
|
||||||
const video_info_t *video)
|
const video_info_t *video)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
|
||||||
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
gl2_renderchain_t *chain = (gl2_renderchain_t*)chain_data;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
@ -854,83 +854,6 @@ typedef struct d3d_renderchain_driver
|
|||||||
const char *ident;
|
const char *ident;
|
||||||
} d3d_renderchain_driver_t;
|
} d3d_renderchain_driver_t;
|
||||||
|
|
||||||
typedef struct gl_renderchain_driver
|
|
||||||
{
|
|
||||||
void (*set_coords)(void *handle_data,
|
|
||||||
void *chain_data,
|
|
||||||
void *shader_data, const struct video_coords *coords);
|
|
||||||
void (*set_mvp)(void *data,
|
|
||||||
void *chain_data,
|
|
||||||
void *shader_data,
|
|
||||||
const void *mat_data);
|
|
||||||
void (*init_texture_reference)(
|
|
||||||
void *data, void *chain_data, unsigned i,
|
|
||||||
unsigned internal_fmt, unsigned texture_fmt,
|
|
||||||
unsigned texture_type);
|
|
||||||
void (*fence_iterate)(void *data, void *chain_data,
|
|
||||||
unsigned hard_sync_frames);
|
|
||||||
void (*fence_free)(void *data, void *chain_data);
|
|
||||||
void (*readback)(void *data,
|
|
||||||
void *chain_data,
|
|
||||||
unsigned alignment,
|
|
||||||
unsigned fmt, unsigned type,
|
|
||||||
void *src);
|
|
||||||
void (*init_pbo)(unsigned size, const void *data);
|
|
||||||
void (*bind_pbo)(unsigned idx);
|
|
||||||
void (*unbind_pbo)(void *data, void *chain_data);
|
|
||||||
void (*copy_frame)(
|
|
||||||
void *data,
|
|
||||||
void *chain_data,
|
|
||||||
video_frame_info_t *video_info,
|
|
||||||
const void *frame,
|
|
||||||
unsigned width, unsigned height, unsigned pitch);
|
|
||||||
void (*restore_default_state)(void *data, void *chain_data);
|
|
||||||
void (*new_vao)(void *data, void *chain_data);
|
|
||||||
void (*free_vao)(void *data, void *chain_data);
|
|
||||||
void (*bind_vao)(void *data, void *chain_data);
|
|
||||||
void (*unbind_vao)(void *data, void *chain_data);
|
|
||||||
void (*disable_client_arrays)(void *data, void *chain_data);
|
|
||||||
void (*ff_vertex)(const void *data);
|
|
||||||
void (*ff_matrix)(const void *data);
|
|
||||||
void (*bind_backbuffer)(void *data, void *chain_data);
|
|
||||||
void (*deinit_fbo)(void *data, void *chain_data);
|
|
||||||
void (*viewport_info)(
|
|
||||||
void *data, void *chain_data, struct video_viewport *vp);
|
|
||||||
bool (*read_viewport)(
|
|
||||||
void *data, void *chain_data, uint8_t *buffer, bool is_idle);
|
|
||||||
void (*bind_prev_texture)(
|
|
||||||
void *data,
|
|
||||||
void *chain_data,
|
|
||||||
const struct video_tex_info *tex_info);
|
|
||||||
void (*chain_free)(void *data, void *chain_data);
|
|
||||||
void *(*chain_new)(void);
|
|
||||||
void (*init)(void *data, void *chain_data,
|
|
||||||
unsigned fbo_width, unsigned fbo_height);
|
|
||||||
bool (*init_hw_render)(void *data, void *chain_data,
|
|
||||||
unsigned width, unsigned height);
|
|
||||||
void (*free)(void *data, void *chain_data);
|
|
||||||
void (*deinit_hw_render)(void *data, void *chain_data);
|
|
||||||
void (*start_render)(void *data, void *chain_data,
|
|
||||||
video_frame_info_t *video_info);
|
|
||||||
void (*check_fbo_dimensions)(void *data, void *chain_data);
|
|
||||||
void (*recompute_pass_sizes)(void *data,
|
|
||||||
void *chain_data,
|
|
||||||
unsigned width, unsigned height,
|
|
||||||
unsigned vp_width, unsigned vp_height);
|
|
||||||
void (*renderchain_render)(void *data,
|
|
||||||
void *chain_data,
|
|
||||||
video_frame_info_t *video_info,
|
|
||||||
uint64_t frame_count,
|
|
||||||
const struct video_tex_info *tex_info,
|
|
||||||
const struct video_tex_info *feedback_info);
|
|
||||||
void (*resolve_extensions)(
|
|
||||||
void *data,
|
|
||||||
void *chain_data,
|
|
||||||
const char *context_ident,
|
|
||||||
const video_info_t *video);
|
|
||||||
const char *ident;
|
|
||||||
} gl_renderchain_driver_t;
|
|
||||||
|
|
||||||
extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END];
|
extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END];
|
||||||
|
|
||||||
bool video_driver_has_windowed(void);
|
bool video_driver_has_windowed(void);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user