mesa: add scaffolding for OES/EXT_primitive_bounding_box
authorIlia Mirkin <imirkin@alum.mit.edu>
Mon, 30 May 2016 15:49:26 +0000 (11:49 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Wed, 31 Aug 2016 00:25:15 +0000 (20:25 -0400)
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
12 files changed:
src/compiler/glsl/glsl_parser_extras.cpp
src/compiler/glsl/glsl_parser_extras.h
src/mapi/glapi/gen/es_EXT.xml
src/mapi/glapi/gen/gl_genexec.py
src/mesa/Makefile.sources
src/mesa/main/bbox.c [new file with mode: 0644]
src/mesa/main/bbox.h [new file with mode: 0644]
src/mesa/main/context.c
src/mesa/main/extensions_table.h
src/mesa/main/mtypes.h
src/mesa/main/tests/dispatch_sanity.cpp
src/mesa/main/version.c

index 8429c7ab96c2f9876607d0c6c29514048b38484c..b33cd3a1342473ca6bfe42d644019b2642477651 100644 (file)
@@ -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),
index 6d408efdb28d00635111437501b8ef5fe3c57dcf..e146fe192023cd20a222bdb3249a756ddf2b7dc9 100644 (file)
@@ -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;
index 6f2d6431fcd291e826cdbed6a41e95b6d3348e2a..b9fbec40cab5f06ea3a975b74468aae0a335d6b0 100644 (file)
 
 </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">
 
 </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">
 
 </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>
index 85e79900988160f71403b84d16e4432ff9842ae9..183e6ff74141f56a05fb4aee6d4935face34fd0f 100644 (file)
@@ -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"
index f941c96672373d0045ee99431534066bdab305a3..363b1339d78638768d7543cdaa13f98984bbdff1 100644 (file)
@@ -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 (file)
index 0000000..0ef5705
--- /dev/null
@@ -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 (file)
index 0000000..d00f87e
--- /dev/null
@@ -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
index 8f9bbf1b7321f1517eeaf8953152bdd273688e25..f550b0c556d37f347262d68e6200847177820897 100644 (file)
@@ -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 );
index 5d66cae873c94b0722ae1adbe16eff52da7f94d1..75cdcb8665ef74ee5b2f0f4403c3c2657aac378c 100644 (file)
@@ -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)
index 09b84f148a781509f0883be5a672540dc3aa0895..c7ed1b3cfd4afd04ceccd8d103e94acf698c01e0 100644 (file)
@@ -3941,6 +3941,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;
index c0db287a02885f564ea122dab1f42f53f323704a..42fe61aed43ca6b2feeafb0785bf81e46b132354 100644 (file)
@@ -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 },
  };
index 0df7f8ac16e0faff1a8c2bfbc60b565414d39fb3..cfc1638d63b02c43a4749d4c871af570bc01abb3 100644 (file)
@@ -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 &&