[Mesa-dev] [PATCH 1/3] mesa: implement GL_ARB_texture_buffer_range
Marek Olšák
maraeo at gmail.com
Sun Dec 16 09:32:44 PST 2012
On Sun, Dec 16, 2012 at 6:11 PM, Marek Olšák <maraeo at gmail.com> wrote:
> On Sun, Dec 16, 2012 at 5:50 PM, Christoph Bumiller
> <e0425955 at student.tuwien.ac.at> wrote:
>> ---
>> src/mapi/glapi/gen/ARB_texture_buffer_range.xml | 22 ++++++
>> src/mapi/glapi/gen/Makefile.am | 1 +
>> src/mapi/glapi/gen/gl_API.xml | 2 +
>> src/mesa/main/context.c | 1 +
>> src/mesa/main/extensions.c | 1 +
>> src/mesa/main/get.c | 1 +
>> src/mesa/main/get_hash_params.py | 3 +
>> src/mesa/main/mtypes.h | 6 ++
>> src/mesa/main/teximage.c | 91 ++++++++++++++++++-----
>> src/mesa/main/teximage.h | 4 +
>> src/mesa/main/texparam.c | 8 ++
>> 11 files changed, 121 insertions(+), 19 deletions(-)
>> create mode 100644 src/mapi/glapi/gen/ARB_texture_buffer_range.xml
>>
>> diff --git a/src/mapi/glapi/gen/ARB_texture_buffer_range.xml b/src/mapi/glapi/gen/ARB_texture_buffer_range.xml
>> new file mode 100644
>> index 0000000..2176c08
>> --- /dev/null
>> +++ b/src/mapi/glapi/gen/ARB_texture_buffer_range.xml
>> @@ -0,0 +1,22 @@
>> +<?xml version="1.0"?>
>> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
>> +
>> +<OpenGLAPI>
>> +
>> +<category name="GL_ARB_texture_buffer_range" number="139">
>> +
>> + <enum name="TEXTURE_BUFFER_OFFSET" value="0x919D"/>
>> + <enum name="TEXTURE_BUFFER_SIZE" value="0x919E"/>
>> + <enum name="TEXTURE_BUFFER_OFFSET_ALIGNMENT" value="0x919F"/>
>> +
>> + <function name="TexBufferRange" offset="assign">
>> + <param name="target" type="GLenum"/>
>> + <param name="internalformat" type="GLenum"/>
>> + <param name="buffer" type="GLuint"/>
>> + <param name="offset" type="GLintptr"/>
>> + <param name="size" type="GLsizeiptr"/>
>> + </function>
>> +
>> +</category>
>> +
>> +</OpenGLAPI>
>> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
>> index 13943e8..4de78dd 100644
>> --- a/src/mapi/glapi/gen/Makefile.am
>> +++ b/src/mapi/glapi/gen/Makefile.am
>> @@ -110,6 +110,7 @@ API_XML = \
>> ARB_seamless_cube_map.xml \
>> ARB_sync.xml \
>> ARB_texture_buffer_object.xml \
>> + ARB_texture_buffer_range.xml \
>> ARB_texture_compression_rgtc.xml \
>> ARB_texture_float.xml \
>> ARB_texture_rg.xml \
>> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
>> index a47316a..d0479f4 100644
>> --- a/src/mapi/glapi/gen/gl_API.xml
>> +++ b/src/mapi/glapi/gen/gl_API.xml
>> @@ -8151,6 +8151,8 @@
>>
>> <xi:include href="ARB_texture_buffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>>
>> +<xi:include href="ARB_texture_buffer_range.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>> +
>> <xi:include href="ARB_texture_compression_rgtc.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>>
>> <xi:include href="ARB_texture_rg.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
>> index fa552e8..b380646 100644
>> --- a/src/mesa/main/context.c
>> +++ b/src/mesa/main/context.c
>> @@ -563,6 +563,7 @@ _mesa_init_constants(struct gl_context *ctx)
>> ctx->Const.MaxTextureMaxAnisotropy = MAX_TEXTURE_MAX_ANISOTROPY;
>> ctx->Const.MaxTextureLodBias = MAX_TEXTURE_LOD_BIAS;
>> ctx->Const.MaxTextureBufferSize = 65536;
>> + ctx->Const.TextureBufferOffsetAlignment = 1;
>> ctx->Const.MaxArrayLockSize = MAX_ARRAY_LOCK_SIZE;
>> ctx->Const.SubPixelBits = SUB_PIXEL_BITS;
>> ctx->Const.MinPointSize = MIN_POINT_SIZE;
>> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
>> index 98711b3..83ed196 100644
>> --- a/src/mesa/main/extensions.c
>> +++ b/src/mesa/main/extensions.c
>> @@ -128,6 +128,7 @@ static const struct extension extension_table[] = {
>> { "GL_ARB_texture_border_clamp", o(ARB_texture_border_clamp), GLL, 2000 },
>> { "GL_ARB_texture_buffer_object", o(ARB_texture_buffer_object), GLC, 2008 },
>> { "GL_ARB_texture_buffer_object_rgb32", o(ARB_texture_buffer_object_rgb32), GLC, 2009 },
>> + { "GL_ARB_texture_buffer_range", o(ARB_texture_buffer_range), GLC, 2012 },
>> { "GL_ARB_texture_compression", o(dummy_true), GLL, 2000 },
>> { "GL_ARB_texture_compression_rgtc", o(ARB_texture_compression_rgtc), GL, 2004 },
>> { "GL_ARB_texture_cube_map", o(ARB_texture_cube_map), GLL, 1999 },
>> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
>> index f3dbda2..478ae5d 100644
>> --- a/src/mesa/main/get.c
>> +++ b/src/mesa/main/get.c
>> @@ -337,6 +337,7 @@ EXTRA_EXT(ARB_uniform_buffer_object);
>> EXTRA_EXT(ARB_timer_query);
>> EXTRA_EXT(ARB_map_buffer_alignment);
>> EXTRA_EXT(ARB_texture_cube_map_array);
>> +EXTRA_EXT(ARB_texture_buffer_range);
>
> This EXTRA macro doesn't prevent querying
> TEXTURE_BUFFER_OFFSET_ALIGNMENT on a non-core GL profile where the
> extension isn't advertised. Please see "extra_texture_buffer_object"
> to know how the API support should be defined.
Please disregard that comment. The core profile requirement should
actually be specified in get_hash_params.py by adding another section
specifying the allowed APIs at its beginning. Sorry about the
confusion.
Marek
More information about the mesa-dev
mailing list