diff options
Diffstat (limited to 'video/out/opengl/ra_gl.c')
-rw-r--r-- | video/out/opengl/ra_gl.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/video/out/opengl/ra_gl.c b/video/out/opengl/ra_gl.c index f63bbe3ea5..e31948c2b1 100644 --- a/video/out/opengl/ra_gl.c +++ b/video/out/opengl/ra_gl.c @@ -15,6 +15,7 @@ struct ra_gl { // For ra_tex.priv struct ra_tex_gl { + struct ra_buf_pool pbo; // for ra.use_pbo bool own_objects; GLenum target; GLuint texture; // 0 if no texture data associated @@ -218,6 +219,8 @@ static void gl_tex_destroy(struct ra *ra, struct ra_tex *tex) GL *gl = ra_gl_get(ra); struct ra_tex_gl *tex_gl = tex->priv; + ra_buf_pool_uninit(ra, &tex_gl->pbo); + if (tex_gl->own_objects) { if (tex_gl->fbo) gl->DeleteFramebuffers(1, &tex_gl->fbo); @@ -435,6 +438,9 @@ static bool gl_tex_upload(struct ra *ra, assert(tex->params.host_mutable); assert(!params->buf || !params->src); + if (ra->use_pbo && !params->buf) + return ra_tex_upload_pbo(ra, &tex_gl->pbo, params); + const void *src = params->src; if (buf) { gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, buf_gl->buffer); |