[Mesa-dev] [PATCH 1/5] mesa: Add infrastructure for GL_ARB_clear_buffer_object
Marek Olšák
maraeo at gmail.com
Tue Dec 10 09:00:26 PST 2013
On Tue, Dec 10, 2013 at 2:13 PM, Pi Tabred <servuswiegehtz at yahoo.de> wrote:
> - add xml file for extension
> - add reference in gl_API.xml
> - add pointer to device driver function table
> - add new functions to list of available functions
> ---
> src/mapi/glapi/gen/ARB_clear_buffer_object.xml | 50 ++++++++++++++++++++++++++
> src/mapi/glapi/gen/gl_API.xml | 6 +++-
> src/mesa/main/dd.h | 5 +++
> src/mesa/main/tests/dispatch_sanity.cpp | 4 +--
> 4 files changed, 62 insertions(+), 3 deletions(-)
> create mode 100644 src/mapi/glapi/gen/ARB_clear_buffer_object.xml
>
> diff --git a/src/mapi/glapi/gen/ARB_clear_buffer_object.xml b/src/mapi/glapi/gen/ARB_clear_buffer_object.xml
> new file mode 100644
> index 0000000..e7baf6f
> --- /dev/null
> +++ b/src/mapi/glapi/gen/ARB_clear_buffer_object.xml
> @@ -0,0 +1,50 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> +
> +<!-- Note: no GLX protocol info yet. -->
> +
> +
> +<OpenGLAPI>
> +
> +<category name="GL_ARB_clear_buffer_object" number="121">
> +
> + <function name ="ClearBufferData" offset="assign">
> + <param name="target" type="GLenum"/>
> + <param name="internalformat" type="GLenum"/>
> + <param name="format" type="GLenum"/>
> + <param name="type" type="GLenum"/>
> + <param name="data" type="const GLvoid *"/>
> + </function>
> +
> + <function name ="ClearBufferSubData" offset="assign">
> + <param name="target" type="GLenum"/>
> + <param name="internalformat" type="GLenum"/>
> + <param name="offset" type="GLintptr"/>
> + <param name="size" type="GLsizeiptr"/>
> + <param name="format" type="GLenum"/>
> + <param name="type" type="GLenum"/>
> + <param name="data" type="const GLvoid *"/>
> + </function>
> +
> +<!-- <function name="ClearNamedBufferDataEXT" offset="assign" es2="3.0">
> + <param name="buffer" type="GLuint"/>
> + <param name="internalformat" type="GLenum"/>
> + <param name="format" type="GLenum"/>
> + <param name="type" type="GLenum"/>
> + <param name="data" type="const GLvoid*"/>
> + </function>
> +
> +
> + <function name="ClearNamedBufferSubDataEXT" offset="assign" es2="3.0">
> + <param name="buffer" type="GLuint"/>
> + <param name="internalformat" type="GLenum"/>
> + <param name="offset" type="GLintptr"/>
> + <param name="size" type="GLsizeiptr"/>
> + <param name="format" type="GLenum"/>
> + <param name="type" type="GLenum"/>
> + <param name="data" type="const GLvoid*"/>
> + </function> -->
> +
> +</category>
> +
> +</OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index 5c877aa..af8ab2e 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -8460,7 +8460,11 @@
>
> </category>
>
> -<!-- ARB extensions #120...#124 -->
> +<!-- ARB extension #120 -->
> +
> +<xi:include href="ARB_clear_buffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +
> +<!-- ARB extensions #122...#124 -->
>
> <xi:include href="ARB_vertex_attrib_binding.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>
> diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
> index b5b874f..0e2bda0 100644
> --- a/src/mesa/main/dd.h
> +++ b/src/mesa/main/dd.h
> @@ -569,6 +569,11 @@ struct dd_function_table {
> GLintptrARB offset, GLsizeiptrARB size,
> GLvoid *data, struct gl_buffer_object *obj );
>
> + void (*ClearBufferSubData)( struct gl_context *ctx, GLenum internalformat,
> + GLintptr offset, GLsizeiptr size,
> + GLenum format, GLenum type,
> + const GLvoid *data, struct gl_buffer_object *obj );
This interface could be simpler. The unpacking from the data to the
internal format should take place in mesa/main, so that drivers only
have to implement something like this:
void (*ClearBufferSubData)(struct gl_context *ctx, struct
gl_buffer_object *obj, GLintptr offset, GLsizeiptr size, GLvoid
*element, int element_size);
"offset" and "size" should stay. "element" is the clear value that has
"element_size" bytes. "element_size" is the size of the internal
format in bytes.
Marek
More information about the mesa-dev
mailing list