[Mesa-dev] [PATCH 1/3] mesa: implement GL_ARB_texture_buffer_range

Marek Olšák maraeo at gmail.com
Sun Dec 16 09:11:40 PST 2012


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.

Marek


More information about the mesa-dev mailing list