mirror of
https://github.com/mpv-player/mpv
synced 2025-01-06 15:10:20 +00:00
vo_opengl: ra_gl: make getting GL ptr slightly less tedious
This commit is contained in:
parent
dddda6e4a5
commit
56742ecdc9
@ -113,14 +113,14 @@ static void gl_destroy(struct ra *ra)
|
|||||||
|
|
||||||
static void gl_tex_destroy(struct ra *ra, struct ra_tex *tex)
|
static void gl_tex_destroy(struct ra *ra, struct ra_tex *tex)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
struct ra_tex_gl *tex_gl = tex->priv;
|
struct ra_tex_gl *tex_gl = tex->priv;
|
||||||
|
|
||||||
if (tex_gl->own_objects) {
|
if (tex_gl->own_objects) {
|
||||||
if (tex_gl->fbo)
|
if (tex_gl->fbo)
|
||||||
p->gl->DeleteFramebuffers(1, &tex_gl->fbo);
|
gl->DeleteFramebuffers(1, &tex_gl->fbo);
|
||||||
|
|
||||||
p->gl->DeleteTextures(1, &tex_gl->texture);
|
gl->DeleteTextures(1, &tex_gl->texture);
|
||||||
}
|
}
|
||||||
gl_pbo_upload_uninit(&tex_gl->pbo);
|
gl_pbo_upload_uninit(&tex_gl->pbo);
|
||||||
talloc_free(tex_gl);
|
talloc_free(tex_gl);
|
||||||
@ -130,8 +130,7 @@ static void gl_tex_destroy(struct ra *ra, struct ra_tex *tex)
|
|||||||
static struct ra_tex *gl_tex_create(struct ra *ra,
|
static struct ra_tex *gl_tex_create(struct ra *ra,
|
||||||
const struct ra_tex_params *params)
|
const struct ra_tex_params *params)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
struct ra_tex *tex = talloc_zero(NULL, struct ra_tex);
|
struct ra_tex *tex = talloc_zero(NULL, struct ra_tex);
|
||||||
tex->params = *params;
|
tex->params = *params;
|
||||||
@ -331,8 +330,7 @@ static void gl_tex_upload(struct ra *ra, struct ra_tex *tex,
|
|||||||
struct mp_rect *rc, uint64_t flags,
|
struct mp_rect *rc, uint64_t flags,
|
||||||
struct ra_mapped_buffer *buf)
|
struct ra_mapped_buffer *buf)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
struct ra_tex_gl *tex_gl = tex->priv;
|
struct ra_tex_gl *tex_gl = tex->priv;
|
||||||
struct ra_mapped_buffer_gl *buf_gl = NULL;
|
struct ra_mapped_buffer_gl *buf_gl = NULL;
|
||||||
struct mp_rect full = {0, 0, tex->params.w, tex->params.h};
|
struct mp_rect full = {0, 0, tex->params.w, tex->params.h};
|
||||||
@ -383,8 +381,7 @@ static void gl_tex_upload(struct ra *ra, struct ra_tex *tex,
|
|||||||
|
|
||||||
static void gl_destroy_mapped_buffer(struct ra *ra, struct ra_mapped_buffer *buf)
|
static void gl_destroy_mapped_buffer(struct ra *ra, struct ra_mapped_buffer *buf)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
struct ra_mapped_buffer_gl *buf_gl = buf->priv;
|
struct ra_mapped_buffer_gl *buf_gl = buf->priv;
|
||||||
|
|
||||||
gl->DeleteSync(buf_gl->fence);
|
gl->DeleteSync(buf_gl->fence);
|
||||||
@ -401,8 +398,7 @@ static void gl_destroy_mapped_buffer(struct ra *ra, struct ra_mapped_buffer *buf
|
|||||||
static struct ra_mapped_buffer *gl_create_mapped_buffer(struct ra *ra,
|
static struct ra_mapped_buffer *gl_create_mapped_buffer(struct ra *ra,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
if (gl->version < 440)
|
if (gl->version < 440)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -432,8 +428,7 @@ static struct ra_mapped_buffer *gl_create_mapped_buffer(struct ra *ra,
|
|||||||
|
|
||||||
static bool gl_poll_mapped_buffer(struct ra *ra, struct ra_mapped_buffer *buf)
|
static bool gl_poll_mapped_buffer(struct ra *ra, struct ra_mapped_buffer *buf)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
struct ra_mapped_buffer_gl *buf_gl = buf->priv;
|
struct ra_mapped_buffer_gl *buf_gl = buf->priv;
|
||||||
|
|
||||||
if (buf_gl->fence) {
|
if (buf_gl->fence) {
|
||||||
@ -450,8 +445,7 @@ static bool gl_poll_mapped_buffer(struct ra *ra, struct ra_mapped_buffer *buf)
|
|||||||
static void gl_clear(struct ra *ra, struct ra_tex *dst, float color[4],
|
static void gl_clear(struct ra *ra, struct ra_tex *dst, float color[4],
|
||||||
struct mp_rect *scissor)
|
struct mp_rect *scissor)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
assert(dst->params.render_dst);
|
assert(dst->params.render_dst);
|
||||||
struct ra_tex_gl *dst_gl = dst->priv;
|
struct ra_tex_gl *dst_gl = dst->priv;
|
||||||
@ -473,8 +467,7 @@ static void gl_clear(struct ra *ra, struct ra_tex *dst, float color[4],
|
|||||||
static void gl_blit(struct ra *ra, struct ra_tex *dst, struct ra_tex *src,
|
static void gl_blit(struct ra *ra, struct ra_tex *dst, struct ra_tex *src,
|
||||||
int dst_x, int dst_y, struct mp_rect *src_rc)
|
int dst_x, int dst_y, struct mp_rect *src_rc)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
assert(dst->params.render_dst);
|
assert(dst->params.render_dst);
|
||||||
assert(src->params.render_dst); // even src must have a FBO
|
assert(src->params.render_dst); // even src must have a FBO
|
||||||
@ -496,9 +489,9 @@ static void gl_blit(struct ra *ra, struct ra_tex *dst, struct ra_tex *src,
|
|||||||
|
|
||||||
static void gl_renderpass_destroy(struct ra *ra, struct ra_renderpass *pass)
|
static void gl_renderpass_destroy(struct ra *ra, struct ra_renderpass *pass)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
struct ra_renderpass_gl *pass_gl = pass->priv;
|
struct ra_renderpass_gl *pass_gl = pass->priv;
|
||||||
p->gl->DeleteProgram(pass_gl->program);
|
gl->DeleteProgram(pass_gl->program);
|
||||||
gl_vao_uninit(&pass_gl->vao);
|
gl_vao_uninit(&pass_gl->vao);
|
||||||
|
|
||||||
talloc_free(pass_gl);
|
talloc_free(pass_gl);
|
||||||
@ -518,8 +511,7 @@ static const char *shader_typestr(GLenum type)
|
|||||||
static void compile_attach_shader(struct ra *ra, GLuint program,
|
static void compile_attach_shader(struct ra *ra, GLuint program,
|
||||||
GLenum type, const char *source, bool *ok)
|
GLenum type, const char *source, bool *ok)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
GLuint shader = gl->CreateShader(type);
|
GLuint shader = gl->CreateShader(type);
|
||||||
gl->ShaderSource(shader, 1, &source, NULL);
|
gl->ShaderSource(shader, 1, &source, NULL);
|
||||||
@ -561,8 +553,7 @@ static void compile_attach_shader(struct ra *ra, GLuint program,
|
|||||||
|
|
||||||
static void link_shader(struct ra *ra, GLuint program, bool *ok)
|
static void link_shader(struct ra *ra, GLuint program, bool *ok)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
gl->LinkProgram(program);
|
gl->LinkProgram(program);
|
||||||
GLint status = 0;
|
GLint status = 0;
|
||||||
@ -584,8 +575,7 @@ static void link_shader(struct ra *ra, GLuint program, bool *ok)
|
|||||||
// either 'compute' or both 'vertex' and 'frag' are needed
|
// either 'compute' or both 'vertex' and 'frag' are needed
|
||||||
static GLuint compile_program(struct ra *ra, const struct ra_renderpass_params *p)
|
static GLuint compile_program(struct ra *ra, const struct ra_renderpass_params *p)
|
||||||
{
|
{
|
||||||
struct ra_gl *priv = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = priv->gl;
|
|
||||||
|
|
||||||
GLuint prog = gl->CreateProgram();
|
GLuint prog = gl->CreateProgram();
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
@ -608,8 +598,7 @@ static GLuint compile_program(struct ra *ra, const struct ra_renderpass_params *
|
|||||||
static GLuint load_program(struct ra *ra, const struct ra_renderpass_params *p,
|
static GLuint load_program(struct ra *ra, const struct ra_renderpass_params *p,
|
||||||
bstr *out_cached_data)
|
bstr *out_cached_data)
|
||||||
{
|
{
|
||||||
struct ra_gl *priv = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = priv->gl;
|
|
||||||
|
|
||||||
GLuint prog = 0;
|
GLuint prog = 0;
|
||||||
|
|
||||||
@ -653,8 +642,7 @@ static GLuint load_program(struct ra *ra, const struct ra_renderpass_params *p,
|
|||||||
static struct ra_renderpass *gl_renderpass_create(struct ra *ra,
|
static struct ra_renderpass *gl_renderpass_create(struct ra *ra,
|
||||||
const struct ra_renderpass_params *params)
|
const struct ra_renderpass_params *params)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
struct ra_renderpass *pass = talloc_zero(NULL, struct ra_renderpass);
|
struct ra_renderpass *pass = talloc_zero(NULL, struct ra_renderpass);
|
||||||
pass->params = *ra_render_pass_params_copy(pass, params);
|
pass->params = *ra_render_pass_params_copy(pass, params);
|
||||||
@ -702,8 +690,7 @@ static GLenum map_blend(enum ra_blend blend)
|
|||||||
static void update_uniform(struct ra *ra, struct ra_renderpass *pass,
|
static void update_uniform(struct ra *ra, struct ra_renderpass *pass,
|
||||||
struct ra_renderpass_input_val *val)
|
struct ra_renderpass_input_val *val)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
struct ra_renderpass_gl *pass_gl = pass->priv;
|
struct ra_renderpass_gl *pass_gl = pass->priv;
|
||||||
|
|
||||||
struct ra_renderpass_input *input = &pass->params.inputs[val->index];
|
struct ra_renderpass_input *input = &pass->params.inputs[val->index];
|
||||||
@ -768,8 +755,7 @@ static void update_uniform(struct ra *ra, struct ra_renderpass *pass,
|
|||||||
static void disable_binding(struct ra *ra, struct ra_renderpass *pass,
|
static void disable_binding(struct ra *ra, struct ra_renderpass *pass,
|
||||||
struct ra_renderpass_input_val *val)
|
struct ra_renderpass_input_val *val)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
|
|
||||||
struct ra_renderpass_input *input = &pass->params.inputs[val->index];
|
struct ra_renderpass_input *input = &pass->params.inputs[val->index];
|
||||||
|
|
||||||
@ -798,8 +784,7 @@ static void disable_binding(struct ra *ra, struct ra_renderpass *pass,
|
|||||||
static void gl_renderpass_run(struct ra *ra,
|
static void gl_renderpass_run(struct ra *ra,
|
||||||
const struct ra_renderpass_run_params *params)
|
const struct ra_renderpass_run_params *params)
|
||||||
{
|
{
|
||||||
struct ra_gl *p = ra->priv;
|
GL *gl = ra_gl_get(ra);
|
||||||
GL *gl = p->gl;
|
|
||||||
struct ra_renderpass *pass = params->pass;
|
struct ra_renderpass *pass = params->pass;
|
||||||
struct ra_renderpass_gl *pass_gl = pass->priv;
|
struct ra_renderpass_gl *pass_gl = pass->priv;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user