diff options
author | Timothy Arceri <[email protected]> | 2017-05-12 21:21:38 +1000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-05-17 10:12:03 +1000 |
commit | cab148c28231c109e2dee7b2dbea77997117932e (patch) | |
tree | 4d02a3de78ffa96b7d261791084fe6644bcf41ee /src | |
parent | 5d29e6aab8ac05cbd73433b45958b2f82eefa91d (diff) |
mesa: add buffer_sub_data() helper
This will allow us to share code between the dsa, non-dsa and
no_error variants.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/main/bufferobj.c | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 97e4df91875..e53adb32d30 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -1854,36 +1854,43 @@ _mesa_buffer_sub_data(struct gl_context *ctx, struct gl_buffer_object *bufObj, ctx->Driver.BufferSubData(ctx, offset, size, data, bufObj); } -void GLAPIENTRY -_mesa_BufferSubData(GLenum target, GLintptr offset, - GLsizeiptr size, const GLvoid *data) + +static ALWAYS_INLINE void +buffer_sub_data(GLenum target, GLuint buffer, GLintptr offset, + GLsizeiptr size, const GLvoid *data, + bool dsa, const char *func) { GET_CURRENT_CONTEXT(ctx); struct gl_buffer_object *bufObj; - const char *func = "glBufferSubData"; - bufObj = get_buffer(ctx, func, target, GL_INVALID_OPERATION); - if (!bufObj) - return; + if (dsa) { + bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, func); + if (!bufObj) + return; + } else { + bufObj = get_buffer(ctx, func, target, GL_INVALID_OPERATION); + if (!bufObj) + return; + } if (validate_buffer_sub_data(ctx, bufObj, offset, size, func)) _mesa_buffer_sub_data(ctx, bufObj, offset, size, data); } + +void GLAPIENTRY +_mesa_BufferSubData(GLenum target, GLintptr offset, + GLsizeiptr size, const GLvoid *data) +{ + buffer_sub_data(target, 0, offset, size, data, false, "glBufferSubData"); +} + void GLAPIENTRY _mesa_NamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data) { - GET_CURRENT_CONTEXT(ctx); - struct gl_buffer_object *bufObj; - const char *func = "glNamedBufferSubData"; - - bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, func); - if (!bufObj) - return; - - if (validate_buffer_sub_data(ctx, bufObj, offset, size, func)) - _mesa_buffer_sub_data(ctx, bufObj, offset, size, data); + buffer_sub_data(0, buffer, offset, size, data, true, + "glNamedBufferSubData"); } |