vo_opengl: allow texture uploads to fail

Surprisingly makes the code shorter, not longer
This commit is contained in:
Niklas Haas 2017-08-18 02:04:29 +02:00
parent be05c9eb58
commit 01058b16f9
3 changed files with 8 additions and 9 deletions

View File

@ -321,8 +321,8 @@ struct ra_fns {
// the image - conversions between bit depth etc. are not supported.
// The buffer *may* be marked as "in use" while this operation is going on,
// and the contents must not be touched again by the API user until
// buf_poll returns true.
void (*tex_upload)(struct ra *ra, const struct ra_tex_upload_params *params);
// buf_poll returns true. Returns whether successful.
bool (*tex_upload)(struct ra *ra, const struct ra_tex_upload_params *params);
// Create a buffer. This can be used as a persistently mapped buffer,
// a uniform buffer, a shader storage buffer or possibly others.

View File

@ -424,7 +424,7 @@ bool ra_is_gl(struct ra *ra)
return ra->fns == &ra_fns_gl;
}
static void gl_tex_upload(struct ra *ra,
static bool gl_tex_upload(struct ra *ra,
const struct ra_tex_upload_params *params)
{
GL *gl = ra_gl_get(ra);
@ -480,6 +480,8 @@ static void gl_tex_upload(struct ra *ra,
buf_gl->fence = gl->FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
}
}
return true;
}
static void gl_buf_destroy(struct ra *ra, struct ra_buf *buf)

View File

@ -126,10 +126,8 @@ bool tex_upload(struct ra *ra, struct tex_upload *pbo, bool want_pbo,
if (!(ra->caps & RA_CAP_DIRECT_UPLOAD))
want_pbo = true;
if (!want_pbo || params->buf) {
ra->fns->tex_upload(ra, params);
return true;
}
if (!want_pbo || params->buf)
return ra->fns->tex_upload(ra, params);
struct ra_tex *tex = params->tex;
size_t row_size = tex->params.dimensions == 2 ? params->stride :
@ -169,8 +167,7 @@ bool tex_upload(struct ra *ra, struct tex_upload *pbo, bool want_pbo,
newparams.buf = buf;
newparams.src = NULL;
ra->fns->tex_upload(ra, &newparams);
return true;
return ra->fns->tex_upload(ra, &newparams);
}
void tex_upload_uninit(struct ra *ra, struct tex_upload *pbo)