[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