[Mesa-dev] [PATCH 1/4] mesa: add scaffolding for OES/EXT_primitive_bounding_box

Ian Romanick idr at freedesktop.org
Mon Aug 29 01:02:50 UTC 2016


Series is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 08/28/2016 11:32 AM, Ilia Mirkin wrote:
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/compiler/glsl/glsl_parser_extras.cpp |  2 ++
>  src/compiler/glsl/glsl_parser_extras.h   |  4 +++
>  src/mapi/glapi/gen/es_EXT.xml            | 49 ++++++++++++++++++++++++++++++++
>  src/mapi/glapi/gen/gl_genexec.py         |  1 +
>  src/mesa/Makefile.sources                |  2 ++
>  src/mesa/main/bbox.c                     | 44 ++++++++++++++++++++++++++++
>  src/mesa/main/bbox.h                     | 42 +++++++++++++++++++++++++++
>  src/mesa/main/context.c                  |  2 ++
>  src/mesa/main/extensions_table.h         |  2 ++
>  src/mesa/main/mtypes.h                   |  1 +
>  src/mesa/main/tests/dispatch_sanity.cpp  |  3 ++
>  src/mesa/main/version.c                  |  2 +-
>  12 files changed, 153 insertions(+), 1 deletion(-)
>  create mode 100644 src/mesa/main/bbox.c
>  create mode 100644 src/mesa/main/bbox.h
> 
> diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp
> index f393278..2c7e015 100644
> --- a/src/compiler/glsl/glsl_parser_extras.cpp
> +++ b/src/compiler/glsl/glsl_parser_extras.cpp
> @@ -631,6 +631,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
>     EXT(OES_geometry_point_size),
>     EXT(OES_geometry_shader),
>     EXT(OES_gpu_shader5),
> +   EXT(OES_primitive_bounding_box),
>     EXT(OES_sample_variables),
>     EXT(OES_shader_image_atomic),
>     EXT(OES_shader_io_blocks),
> @@ -656,6 +657,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
>     EXT(EXT_geometry_point_size),
>     EXT(EXT_geometry_shader),
>     EXT(EXT_gpu_shader5),
> +   EXT(EXT_primitive_bounding_box),
>     EXT(EXT_separate_shader_objects),
>     EXT(EXT_shader_framebuffer_fetch),
>     EXT(EXT_shader_integer_mix),
> diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h
> index 6d408ef..e146fe1 100644
> --- a/src/compiler/glsl/glsl_parser_extras.h
> +++ b/src/compiler/glsl/glsl_parser_extras.h
> @@ -672,6 +672,8 @@ struct _mesa_glsl_parse_state {
>     bool OES_geometry_shader_warn;
>     bool OES_gpu_shader5_enable;
>     bool OES_gpu_shader5_warn;
> +   bool OES_primitive_bounding_box_enable;
> +   bool OES_primitive_bounding_box_warn;
>     bool OES_sample_variables_enable;
>     bool OES_sample_variables_warn;
>     bool OES_shader_image_atomic_enable;
> @@ -719,6 +721,8 @@ struct _mesa_glsl_parse_state {
>     bool EXT_geometry_shader_warn;
>     bool EXT_gpu_shader5_enable;
>     bool EXT_gpu_shader5_warn;
> +   bool EXT_primitive_bounding_box_enable;
> +   bool EXT_primitive_bounding_box_warn;
>     bool EXT_separate_shader_objects_enable;
>     bool EXT_separate_shader_objects_warn;
>     bool EXT_shader_framebuffer_fetch_enable;
> diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
> index 6f2d643..b9fbec4 100644
> --- a/src/mapi/glapi/gen/es_EXT.xml
> +++ b/src/mapi/glapi/gen/es_EXT.xml
> @@ -939,6 +939,21 @@
>  
>  </category>
>  
> +<category name="GL_EXT_primitive_bounding_box" number="187">
> +
> +    <function name="PrimitiveBoundingBoxEXT" es2="3.1" alias="PrimitiveBoundingBox">
> +        <param name="minX" type="GLfloat"/>
> +        <param name="minY" type="GLfloat"/>
> +        <param name="minZ" type="GLfloat"/>
> +        <param name="minW" type="GLfloat"/>
> +        <param name="maxX" type="GLfloat"/>
> +        <param name="maxY" type="GLfloat"/>
> +        <param name="maxZ" type="GLfloat"/>
> +        <param name="maxW" type="GLfloat"/>
> +    </function>
> +
> +</category>
> +
>  <xi:include href="KHR_robustness_es.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>  
>  <category name="GL_EXT_base_instance" number="203">
> @@ -1094,6 +1109,21 @@
>  
>  </category>
>  
> +<category name="GL_EXT_primitive_bounding_box" number="212">
> +
> +    <function name="PrimitiveBoundingBoxOES" es2="3.1" alias="PrimitiveBoundingBox">
> +        <param name="minX" type="GLfloat"/>
> +        <param name="minY" type="GLfloat"/>
> +        <param name="minZ" type="GLfloat"/>
> +        <param name="minW" type="GLfloat"/>
> +        <param name="maxX" type="GLfloat"/>
> +        <param name="maxY" type="GLfloat"/>
> +        <param name="maxZ" type="GLfloat"/>
> +        <param name="maxW" type="GLfloat"/>
> +    </function>
> +
> +</category>
> +
>  <category name="GL_OES_texture_buffer" number="216">
>  
>      <function name="TexBufferOES" es2="3.1" alias="TexBuffer">
> @@ -1312,4 +1342,23 @@
>  
>  </category>
>  
> +<category name="ES3.2">
> +
> +    <!-- TODO: Move to GL 4.x when it is added to a GL version -->
> +    <enum name="PRIMITIVE_BOUNDING_BOX_ARB" count="8" value="0x92BE">
> +        <size name="Get" mode="get"/>
> +    </enum>
> +    <function name="PrimitiveBoundingBox" es2="3.2" desktop="false">
> +        <param name="minX" type="GLfloat"/>
> +        <param name="minY" type="GLfloat"/>
> +        <param name="minZ" type="GLfloat"/>
> +        <param name="minW" type="GLfloat"/>
> +        <param name="maxX" type="GLfloat"/>
> +        <param name="maxY" type="GLfloat"/>
> +        <param name="maxZ" type="GLfloat"/>
> +        <param name="maxW" type="GLfloat"/>
> +    </function>
> +
> +</category>
> +
>  </OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/gl_genexec.py b/src/mapi/glapi/gen/gl_genexec.py
> index 85e7990..183e6ff 100644
> --- a/src/mapi/glapi/gen/gl_genexec.py
> +++ b/src/mapi/glapi/gen/gl_genexec.py
> @@ -56,6 +56,7 @@ header = """/**
>  #include "main/blit.h"
>  #include "main/bufferobj.h"
>  #include "main/arrayobj.h"
> +#include "main/bbox.h"
>  #include "main/buffers.h"
>  #include "main/clear.h"
>  #include "main/clip.h"
> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
> index 3622760..969f711 100644
> --- a/src/mesa/Makefile.sources
> +++ b/src/mesa/Makefile.sources
> @@ -26,6 +26,8 @@ MAIN_FILES = \
>  	main/attrib.h \
>  	main/barrier.c \
>  	main/barrier.h \
> +	main/bbox.c \
> +	main/bbox.h \
>  	main/blend.c \
>  	main/blend.h \
>  	main/blit.c \
> diff --git a/src/mesa/main/bbox.c b/src/mesa/main/bbox.c
> new file mode 100644
> index 0000000..0ef5705
> --- /dev/null
> +++ b/src/mesa/main/bbox.c
> @@ -0,0 +1,44 @@
> +/*
> + * Mesa 3-D graphics library
> + *
> + * Copyright (C) 2016 Ilia Mirkin.  All Rights Reserved.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included
> + * in all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + * OTHER DEALINGS IN THE SOFTWARE.
> + */
> +
> +
> +/**
> + * \file bbox.c
> + * glPrimitiveBoundingBox function
> + */
> +
> +#include "bbox.h"
> +#include "context.h"
> +
> +void GLAPIENTRY
> +_mesa_PrimitiveBoundingBox(
> +      GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW,
> +      GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
> +{
> +}
> +
> +void
> +_mesa_init_bbox(struct gl_context *ctx)
> +{
> +}
> diff --git a/src/mesa/main/bbox.h b/src/mesa/main/bbox.h
> new file mode 100644
> index 0000000..d00f87e
> --- /dev/null
> +++ b/src/mesa/main/bbox.h
> @@ -0,0 +1,42 @@
> +/*
> + * Mesa 3-D graphics library
> + *
> + * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
> + * Copyright (C) 2009  VMware, Inc.   All Rights Reserved.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included
> + * in all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + * OTHER DEALINGS IN THE SOFTWARE.
> + */
> +
> +
> +#ifndef BBOX_H
> +#define BBOX_H
> +
> +#include "glheader.h"
> +
> +struct gl_context;
> +
> +extern void GLAPIENTRY
> +_mesa_PrimitiveBoundingBox(
> +      GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW,
> +      GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
> +
> +extern void
> +_mesa_init_bbox(struct gl_context *ctx);
> +
> +#endif
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index 8f9bbf1..f550b0c 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -83,6 +83,7 @@
>  #include "api_loopback.h"
>  #include "arrayobj.h"
>  #include "attrib.h"
> +#include "bbox.h"
>  #include "blend.h"
>  #include "buffers.h"
>  #include "bufferobj.h"
> @@ -809,6 +810,7 @@ init_attrib_groups(struct gl_context *ctx)
>     /* Attribute Groups */
>     _mesa_init_accum( ctx );
>     _mesa_init_attrib( ctx );
> +   _mesa_init_bbox( ctx );
>     _mesa_init_buffer_objects( ctx );
>     _mesa_init_color( ctx );
>     _mesa_init_current( ctx );
> diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
> index c25f199..edfc458 100644
> --- a/src/mesa/main/extensions_table.h
> +++ b/src/mesa/main/extensions_table.h
> @@ -223,6 +223,7 @@ EXT(EXT_pixel_buffer_object                 , EXT_pixel_buffer_object
>  EXT(EXT_point_parameters                    , EXT_point_parameters                   , GLL,  x ,  x ,  x , 1997)
>  EXT(EXT_polygon_offset                      , dummy_true                             , GLL,  x ,  x ,  x , 1995)
>  EXT(EXT_polygon_offset_clamp                , EXT_polygon_offset_clamp               , GLL, GLC, ES1, ES2, 2014)
> +EXT(EXT_primitive_bounding_box              , OES_primitive_bounding_box             ,  x ,  x ,  x ,  31, 2014)
>  EXT(EXT_provoking_vertex                    , EXT_provoking_vertex                   , GLL, GLC,  x ,  x , 2009)
>  EXT(EXT_read_format_bgra                    , dummy_true                             ,  x ,  x , ES1, ES2, 2009)
>  EXT(EXT_rescale_normal                      , dummy_true                             , GLL,  x ,  x ,  x , 1997)
> @@ -352,6 +353,7 @@ EXT(OES_mapbuffer                           , dummy_true
>  EXT(OES_packed_depth_stencil                , dummy_true                             ,  x ,  x , ES1, ES2, 2007)
>  EXT(OES_point_size_array                    , dummy_true                             ,  x ,  x , ES1,  x , 2004)
>  EXT(OES_point_sprite                        , ARB_point_sprite                       ,  x ,  x , ES1,  x , 2004)
> +EXT(OES_primitive_bounding_box              , OES_primitive_bounding_box             ,  x ,  x ,  x ,  31, 2014)
>  EXT(OES_query_matrix                        , dummy_true                             ,  x ,  x , ES1,  x , 2003)
>  EXT(OES_read_format                         , dummy_true                             , GLL, GLC, ES1,  x , 2003)
>  EXT(OES_rgb8_rgba8                          , dummy_true                             ,  x ,  x , ES1, ES2, 2005)
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 4013ca7..5729059 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3940,6 +3940,7 @@ struct gl_extensions
>     GLboolean EXT_vertex_array_bgra;
>     GLboolean EXT_window_rectangles;
>     GLboolean OES_copy_image;
> +   GLboolean OES_primitive_bounding_box;
>     GLboolean OES_sample_variables;
>     GLboolean OES_standard_derivatives;
>     GLboolean OES_texture_buffer;
> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
> index c0db287..42fe61a 100644
> --- a/src/mesa/main/tests/dispatch_sanity.cpp
> +++ b/src/mesa/main/tests/dispatch_sanity.cpp
> @@ -2607,5 +2607,8 @@ const struct function gles31_functions_possible[] = {
>     /* GL_OES_tessellation_shader */
>     { "glPatchParameteriOES", 31, -1 },
>  
> +   /* GL_OES_primitive_bound_box */
> +   { "glPrimitiveBoundingBoxOES", 31, -1 },
> +
>     { NULL, 0, -1 },
>   };
> diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
> index b0b69b9..2aa96d5 100644
> --- a/src/mesa/main/version.c
> +++ b/src/mesa/main/version.c
> @@ -536,7 +536,7 @@ compute_version_es2(const struct gl_extensions *extensions,
>                           extensions->ARB_draw_buffers_blend &&
>                           extensions->ARB_draw_elements_base_vertex &&
>                           extensions->OES_geometry_shader &&
> -                         /*extensions->OES_primitive_bounding_box*/ false &&
> +                         extensions->OES_primitive_bounding_box &&
>                           extensions->OES_sample_variables &&
>                           extensions->ARB_tessellation_shader &&
>                           extensions->ARB_texture_border_clamp &&
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160828/e0ea29d6/attachment.sig>


More information about the mesa-dev mailing list