Module: Mesa Branch: main Commit: 205b684725a12166dcfb0a9daf7c5444ef046724 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=205b684725a12166dcfb0a9daf7c5444ef046724
Author: Tapani Pälli <[email protected]> Date: Thu Sep 16 13:49:25 2021 +0300 mesa: GL_ARB_ES3_2_compatibility GL compat profile support Patch removes 'desktop=false' from aliased function, otherwise glPrimitiveBoundingBox[ARB] cannot be retrieved via GetProcAddress. This was seen with new OpenGL 4.5 tests that utilize GL_ARB_ES3_2_compatibility and bounding box API. v2: fixes to display list support (Ilia Mirkin) Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Adam Jackson <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12846> --- src/mapi/glapi/gen/gl_API.xml | 2 +- src/mesa/main/dlist.c | 34 +++++++++++++++++++++++++++++++++ src/mesa/main/extensions_table.h | 2 +- src/mesa/main/tests/dispatch_sanity.cpp | 6 +++--- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index d72b58022ae..54506e9ecb3 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -8402,7 +8402,7 @@ <category name="es3.2"> <!-- This should be in es_EXT, but this file is included first and the alias doesn't work otherwise. --> - <function name="PrimitiveBoundingBox" es2="3.2" desktop="false"> + <function name="PrimitiveBoundingBox" es2="3.2"> <param name="minX" type="GLfloat"/> <param name="minY" type="GLfloat"/> <param name="minZ" type="GLfloat"/> diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 85142997482..f53045aae45 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -626,6 +626,9 @@ typedef enum OPCODE_NAMED_PROGRAM_STRING, OPCODE_NAMED_PROGRAM_LOCAL_PARAMETER, + /* GL_ARB_ES3_2_compatibility */ + OPCODE_PRIMITIVE_BOUNDING_BOX, + OPCODE_VERTEX_LIST, OPCODE_VERTEX_LIST_LOOPBACK, OPCODE_VERTEX_LIST_COPY_CURRENT, @@ -11108,6 +11111,29 @@ save_NamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint inde (GLfloat) params[3]); } +static void GLAPIENTRY +save_PrimitiveBoundingBox(float minX, float minY, float minZ, float minW, + float maxX, float maxY, float maxZ, float maxW) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_PRIMITIVE_BOUNDING_BOX, 8); + if (n) { + n[1].f = minX; + n[2].f = minY; + n[3].f = minZ; + n[4].f = minW; + n[5].f = maxX; + n[6].f = maxY; + n[7].f = maxZ; + n[8].f = maxW; + } + if (ctx->ExecuteFlag) { + CALL_PrimitiveBoundingBox(ctx->Exec, (minX, minY, minZ, minW, + maxX, maxY, maxZ, maxW)); + } +} /** * Save an error-generating command into display list. @@ -13363,6 +13389,11 @@ execute_list(struct gl_context *ctx, GLuint list) n[5].f, n[6].f, n[7].f)); break; + case OPCODE_PRIMITIVE_BOUNDING_BOX: + CALL_PrimitiveBoundingBox(ctx->Exec, + (n[1].f, n[2].f, n[3].f, n[4].f, + n[5].f, n[6].f, n[7].f, n[8].f)); + break; case OPCODE_VERTEX_LIST: vbo_save_playback_vertex_list(ctx, &n[1], false); break; @@ -14670,6 +14701,9 @@ _mesa_initialize_save_table(const struct gl_context *ctx) SET_NamedProgramLocalParameter4dvEXT(table, save_NamedProgramLocalParameter4dvEXT); SET_NamedProgramLocalParameter4fEXT(table, save_NamedProgramLocalParameter4fEXT); SET_NamedProgramLocalParameter4fvEXT(table, save_NamedProgramLocalParameter4fvEXT); + + /* GL_ARB_ES3_2_compatibility */ + SET_PrimitiveBoundingBox(table, save_PrimitiveBoundingBox); } diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 9e4987e2245..940a13be419 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -37,7 +37,7 @@ EXT(APPLE_texture_max_level , dummy_true EXT(ARB_ES2_compatibility , ARB_ES2_compatibility , GLL, GLC, x , x , 2009) EXT(ARB_ES3_1_compatibility , ARB_ES3_1_compatibility , GLL, GLC, x , x , 2014) -EXT(ARB_ES3_2_compatibility , ARB_ES3_2_compatibility , x , GLC, x , x , 2015) +EXT(ARB_ES3_2_compatibility , ARB_ES3_2_compatibility , GLL, GLC, x , x , 2015) EXT(ARB_ES3_compatibility , ARB_ES3_compatibility , GLL, GLC, x , x , 2012) EXT(ARB_arrays_of_arrays , ARB_arrays_of_arrays , GLL, GLC, x , x , 2012) EXT(ARB_base_instance , ARB_base_instance , GLL, GLC, x , x , 2011) diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 6ab9e05835e..3ef00ea1572 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -1463,6 +1463,9 @@ const struct function common_desktop_functions_possible[] = { /* GL_NV_viewport_swizzle */ { "glViewportSwizzleNV", 11, -1 }, + /* ARB_ES3_2_compatibility */ + { "glPrimitiveBoundingBoxARB", 45, -1 }, + { "glInternalBufferSubDataCopyMESA", 11, -1 }, { "glInternalSetError", 20, -1 }, @@ -1995,9 +1998,6 @@ const struct function gl_compatibility_functions_possible[] = { }; const struct function gl_core_functions_possible[] = { - /* GL_ARB_ES3_2_compatibility */ - { "glPrimitiveBoundingBoxARB", 45, -1 }, - /* GL_ARB_gl_spirv */ { "glSpecializeShaderARB", 45, -1 },
