From 3b81c998a214a2ad7a4a712577277b1fc7b9be4e Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Mon, 30 May 2016 11:49:26 -0400 Subject: [PATCH] mesa: add scaffolding for OES/EXT_primitive_bounding_box Signed-off-by: Ilia Mirkin Reviewed-by: Ian Romanick --- 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 8429c7ab96c..b33cd3a1342 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 6d408efdb28..e146fe19202 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 6f2d6431fcd..b9fbec40cab 100644 --- a/src/mapi/glapi/gen/es_EXT.xml +++ b/src/mapi/glapi/gen/es_EXT.xml @@ -939,6 +939,21 @@ + + + + + + + + + + + + + + + @@ -1094,6 +1109,21 @@ + + + + + + + + + + + + + + + @@ -1312,4 +1342,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/mapi/glapi/gen/gl_genexec.py b/src/mapi/glapi/gen/gl_genexec.py index 85e79900988..183e6ff7414 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 f941c966723..363b1339d78 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 00000000000..0ef5705532c --- /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 00000000000..d00f87ea93f --- /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 8f9bbf1b732..f550b0c556d 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 5d66cae873c..75cdcb8665e 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 09b84f148a7..c7ed1b3cfd4 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -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; diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index c0db287a028..42fe61aed43 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 0df7f8ac16e..cfc1638d63b 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 && -- 2.30.2