diff options
author | Samuel Pitoiset <[email protected]> | 2017-07-21 12:02:26 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-08-02 12:54:31 +0200 |
commit | 0127af12812c56b24891cc92e610950b61057771 (patch) | |
tree | 55e57f306493b4e9400141dc771930515e5f511b /src | |
parent | 589450c4a2aec2482136b25fd7be0fa596731da4 (diff) |
mesa: add KHR_no_error support to glClear*Buffer*Data()
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mapi/glapi/gen/ARB_clear_buffer_object.xml | 4 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_direct_state_access.xml | 4 | ||||
-rw-r--r-- | src/mesa/main/bufferobj.c | 73 | ||||
-rw-r--r-- | src/mesa/main/bufferobj.h | 21 |
4 files changed, 98 insertions, 4 deletions
diff --git a/src/mapi/glapi/gen/ARB_clear_buffer_object.xml b/src/mapi/glapi/gen/ARB_clear_buffer_object.xml index 2284eacd656..25a42b3a479 100644 --- a/src/mapi/glapi/gen/ARB_clear_buffer_object.xml +++ b/src/mapi/glapi/gen/ARB_clear_buffer_object.xml @@ -8,7 +8,7 @@ <category name="GL_ARB_clear_buffer_object" number="121"> - <function name ="ClearBufferData"> + <function name ="ClearBufferData" no_error="true"> <param name="target" type="GLenum"/> <param name="internalformat" type="GLenum"/> <param name="format" type="GLenum"/> @@ -16,7 +16,7 @@ <param name="data" type="const GLvoid *"/> </function> - <function name ="ClearBufferSubData"> + <function name ="ClearBufferSubData" no_error="true"> <param name="target" type="GLenum"/> <param name="internalformat" type="GLenum"/> <param name="offset" type="GLintptr"/> diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml b/src/mapi/glapi/gen/ARB_direct_state_access.xml index ca2ef76bfe3..fa90ffcdd22 100644 --- a/src/mapi/glapi/gen/ARB_direct_state_access.xml +++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml @@ -83,7 +83,7 @@ <param name="size" type="GLsizeiptr" /> </function> - <function name="ClearNamedBufferData"> + <function name="ClearNamedBufferData" no_error="true"> <param name="buffer" type="GLuint" /> <param name="internalformat" type="GLenum" /> <param name="format" type="GLenum" /> @@ -91,7 +91,7 @@ <param name="data" type="const GLvoid *" /> </function> - <function name="ClearNamedBufferSubData"> + <function name="ClearNamedBufferSubData" no_error="true"> <param name="buffer" type="GLuint" /> <param name="internalformat" type="GLenum" /> <param name="offset" type="GLintptr" /> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 61f680cf315..037b2adae0f 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -2338,6 +2338,33 @@ clear_buffer_sub_data_error(struct gl_context *ctx, type, data, func, subdata, false); } + +static void +clear_buffer_sub_data_no_error(struct gl_context *ctx, + struct gl_buffer_object *bufObj, + GLenum internalformat, GLintptr offset, + GLsizeiptr size, GLenum format, GLenum type, + const GLvoid *data, const char *func, + bool subdata) +{ + clear_buffer_sub_data(ctx, bufObj, internalformat, offset, size, format, + type, data, func, subdata, true); +} + + +void GLAPIENTRY +_mesa_ClearBufferData_no_error(GLenum target, GLenum internalformat, + GLenum format, GLenum type, const GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_buffer_object **bufObj = get_buffer_target(ctx, target); + clear_buffer_sub_data_no_error(ctx, *bufObj, internalformat, 0, + (*bufObj)->Size, format, type, data, + "glClearBufferData", false); +} + + void GLAPIENTRY _mesa_ClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data) @@ -2353,6 +2380,21 @@ _mesa_ClearBufferData(GLenum target, GLenum internalformat, GLenum format, format, type, data, "glClearBufferData", false); } + +void GLAPIENTRY +_mesa_ClearNamedBufferData_no_error(GLuint buffer, GLenum internalformat, + GLenum format, GLenum type, + const GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer); + clear_buffer_sub_data_no_error(ctx, bufObj, internalformat, 0, bufObj->Size, + format, type, data, "glClearNamedBufferData", + false); +} + + void GLAPIENTRY _mesa_ClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data) @@ -2371,6 +2413,21 @@ _mesa_ClearNamedBufferData(GLuint buffer, GLenum internalformat, void GLAPIENTRY +_mesa_ClearBufferSubData_no_error(GLenum target, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_buffer_object **bufObj = get_buffer_target(ctx, target); + clear_buffer_sub_data_no_error(ctx, *bufObj, internalformat, offset, size, + format, type, data, "glClearBufferSubData", + true); +} + + +void GLAPIENTRY _mesa_ClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, @@ -2388,6 +2445,22 @@ _mesa_ClearBufferSubData(GLenum target, GLenum internalformat, true); } + +void GLAPIENTRY +_mesa_ClearNamedBufferSubData_no_error(GLuint buffer, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer); + clear_buffer_sub_data_no_error(ctx, bufObj, internalformat, offset, size, + format, type, data, + "glClearNamedBufferSubData", true); +} + + void GLAPIENTRY _mesa_ClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index 19f935d1be9..9920ed233ac 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -235,22 +235,43 @@ _mesa_GetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); void GLAPIENTRY +_mesa_ClearBufferData_no_error(GLenum target, GLenum internalformat, + GLenum format, GLenum type, const GLvoid *data); + +void GLAPIENTRY _mesa_ClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data); void GLAPIENTRY +_mesa_ClearNamedBufferData_no_error(GLuint buffer, GLenum internalformat, + GLenum format, GLenum type, + const GLvoid *data); + +void GLAPIENTRY _mesa_ClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data); void GLAPIENTRY +_mesa_ClearBufferSubData_no_error(GLenum target, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const GLvoid *data); + +void GLAPIENTRY _mesa_ClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data); void GLAPIENTRY +_mesa_ClearNamedBufferSubData_no_error(GLuint buffer, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const GLvoid *data); + +void GLAPIENTRY _mesa_ClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, |