summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/ra_gl.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/opengl/ra_gl.c')
-rw-r--r--video/out/opengl/ra_gl.c6
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);