aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-07-21 12:02:26 +0200
committerSamuel Pitoiset <[email protected]>2017-08-02 12:54:31 +0200
commit0127af12812c56b24891cc92e610950b61057771 (patch)
tree55e57f306493b4e9400141dc771930515e5f511b
parent589450c4a2aec2482136b25fd7be0fa596731da4 (diff)
mesa: add KHR_no_error support to glClear*Buffer*Data()
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/mapi/glapi/gen/ARB_clear_buffer_object.xml4
-rw-r--r--src/mapi/glapi/gen/ARB_direct_state_access.xml4
-rw-r--r--src/mesa/main/bufferobj.c73
-rw-r--r--src/mesa/main/bufferobj.h21
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,