[Mesa-dev] [PATCH 1/5] mesa: Add infrastructure for GL_ARB_clear_buffer_object
Pi Tabred
servuswiegehtz at yahoo.de
Wed Dec 11 03:53:29 PST 2013
On 10.12.2013 18:00, Marek Olšák wrote:
> 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
>
That's something I considered, but I thought the drivers might have
their own way of converting the data to the internalformat.
If that's not the case, I'll change it.
More information about the mesa-dev
mailing list