From e31d8fa0ad614af16d2111cd80b422c82132ae63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 23 Dec 2020 07:10:06 -0500 Subject: [PATCH] mesa: remove _mesa_initialize_exec_dispatch from draw.c by autogenerating it The glapi scripts are fully capable of generating this correctly for all GL APIs if we don't set exec="dynamic". exec="dynamic" should only be used for glBegin, glEnd, and all functions that are legal inside Begin/End. Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- .../gen/ARB_draw_elements_base_vertex.xml | 6 +- src/mapi/glapi/gen/es_EXT.xml | 10 +- src/mapi/glapi/gen/gl_API.xml | 26 ++--- src/mapi/glapi/gen/gl_genexec.py | 2 - src/mesa/main/draw.c | 99 ++++++------------- src/mesa/main/draw.h | 31 ++++-- src/mesa/main/tests/dispatch_sanity.cpp | 3 + 7 files changed, 77 insertions(+), 100 deletions(-) diff --git a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml index 0350dd735a7..08ea7a31ca0 100644 --- a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml +++ b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -26,7 +26,7 @@ - + diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml index 4386375940f..929b40bbd4a 100644 --- a/src/mapi/glapi/gen/es_EXT.xml +++ b/src/mapi/glapi/gen/es_EXT.xml @@ -1076,7 +1076,7 @@ + es2="2.0"> @@ -1085,7 +1085,7 @@ + es2="3.0"> @@ -1096,7 +1096,7 @@ + es2="2.0"> @@ -1228,7 +1228,7 @@ + es2="2.0"> @@ -1237,7 +1237,7 @@ + es2="3.0"> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 9abc045ce87..f97aea70061 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -1598,53 +1598,53 @@ - + - + - + - + - + - + - + - + @@ -3199,14 +3199,14 @@ - + - + @@ -3777,7 +3777,7 @@ - + @@ -10298,14 +10298,14 @@ - + - + diff --git a/src/mapi/glapi/gen/gl_genexec.py b/src/mapi/glapi/gen/gl_genexec.py index 9f7c8ca8baa..8bca9ed6904 100644 --- a/src/mapi/glapi/gen/gl_genexec.py +++ b/src/mapi/glapi/gen/gl_genexec.py @@ -149,8 +149,6 @@ _mesa_initialize_exec_table(struct gl_context *ctx) assert(exec != NULL); assert(ctx->Version > 0); - - _mesa_initialize_exec_dispatch(ctx, exec); """ diff --git a/src/mesa/main/draw.c b/src/mesa/main/draw.c index 669f0c5375e..2438091ec5d 100644 --- a/src/mesa/main/draw.c +++ b/src/mesa/main/draw.c @@ -600,8 +600,8 @@ _mesa_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start, /** * Execute a glRectf() function. */ -static void GLAPIENTRY -_mesa_exec_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +void GLAPIENTRY +_mesa_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -617,46 +617,46 @@ _mesa_exec_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) } -static void GLAPIENTRY -_mesa_exec_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +void GLAPIENTRY +_mesa_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) { - _mesa_exec_Rectf((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); + _mesa_Rectf((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); } -static void GLAPIENTRY -_mesa_exec_Rectdv(const GLdouble *v1, const GLdouble *v2) +void GLAPIENTRY +_mesa_Rectdv(const GLdouble *v1, const GLdouble *v2) { - _mesa_exec_Rectf((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); + _mesa_Rectf((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); } -static void GLAPIENTRY -_mesa_exec_Rectfv(const GLfloat *v1, const GLfloat *v2) +void GLAPIENTRY +_mesa_Rectfv(const GLfloat *v1, const GLfloat *v2) { - _mesa_exec_Rectf(v1[0], v1[1], v2[0], v2[1]); + _mesa_Rectf(v1[0], v1[1], v2[0], v2[1]); } -static void GLAPIENTRY -_mesa_exec_Recti(GLint x1, GLint y1, GLint x2, GLint y2) +void GLAPIENTRY +_mesa_Recti(GLint x1, GLint y1, GLint x2, GLint y2) { - _mesa_exec_Rectf((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); + _mesa_Rectf((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); } -static void GLAPIENTRY -_mesa_exec_Rectiv(const GLint *v1, const GLint *v2) +void GLAPIENTRY +_mesa_Rectiv(const GLint *v1, const GLint *v2) { - _mesa_exec_Rectf((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); + _mesa_Rectf((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); } -static void GLAPIENTRY -_mesa_exec_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +void GLAPIENTRY +_mesa_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) { - _mesa_exec_Rectf((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); + _mesa_Rectf((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); } -static void GLAPIENTRY -_mesa_exec_Rectsv(const GLshort *v1, const GLshort *v2) +void GLAPIENTRY +_mesa_Rectsv(const GLshort *v1, const GLshort *v2) { - _mesa_exec_Rectf((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); + _mesa_Rectf((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); } @@ -889,9 +889,9 @@ _mesa_DrawArraysInstancedBaseInstance(GLenum mode, GLint first, /** * Called from glMultiDrawArrays when in immediate mode. */ -static void GLAPIENTRY -_mesa_exec_MultiDrawArrays(GLenum mode, const GLint *first, - const GLsizei *count, GLsizei primcount) +void GLAPIENTRY +_mesa_MultiDrawArrays(GLenum mode, const GLint *first, + const GLsizei *count, GLsizei primcount) { GET_CURRENT_CONTEXT(ctx); GLint i; @@ -1598,8 +1598,8 @@ _mesa_validated_multidrawelements(struct gl_context *ctx, GLenum mode, void GLAPIENTRY -_mesa_MultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, - const GLvoid * const *indices, GLsizei primcount) +_mesa_MultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, + const GLvoid * const *indices, GLsizei primcount) { GET_CURRENT_CONTEXT(ctx); @@ -2171,49 +2171,6 @@ _mesa_MultiDrawElementsIndirectCountARB(GLenum mode, GLenum type, } -/** - * Initialize the dispatch table with the VBO functions for drawing. - */ -void -_mesa_initialize_exec_dispatch(const struct gl_context *ctx, - struct _glapi_table *exec) -{ - SET_DrawArrays(exec, _mesa_DrawArrays); - SET_DrawElements(exec, _mesa_DrawElements); - - if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { - SET_DrawRangeElements(exec, _mesa_DrawRangeElements); - } - - SET_MultiDrawArrays(exec, _mesa_exec_MultiDrawArrays); - SET_MultiDrawElementsEXT(exec, _mesa_MultiDrawElements); - - if (ctx->API == API_OPENGL_COMPAT) { - SET_Rectf(exec, _mesa_exec_Rectf); - SET_Rectd(exec, _mesa_exec_Rectd); - SET_Rectdv(exec, _mesa_exec_Rectdv); - SET_Rectfv(exec, _mesa_exec_Rectfv); - SET_Recti(exec, _mesa_exec_Recti); - SET_Rectiv(exec, _mesa_exec_Rectiv); - SET_Rects(exec, _mesa_exec_Rects); - SET_Rectsv(exec, _mesa_exec_Rectsv); - } - - if (ctx->API != API_OPENGLES && - ctx->Extensions.ARB_draw_elements_base_vertex) { - SET_DrawElementsBaseVertex(exec, _mesa_DrawElementsBaseVertex); - SET_MultiDrawElementsBaseVertex(exec, - _mesa_MultiDrawElementsBaseVertex); - - if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { - SET_DrawRangeElementsBaseVertex(exec, - _mesa_DrawRangeElementsBaseVertex); - } - } -} - - - /* GL_IBM_multimode_draw_arrays */ void GLAPIENTRY _mesa_MultiModeDrawArraysIBM( const GLenum * mode, const GLint * first, diff --git a/src/mesa/main/draw.h b/src/mesa/main/draw.h index 2e2773e3134..f8dc1a451ed 100644 --- a/src/mesa/main/draw.h +++ b/src/mesa/main/draw.h @@ -77,10 +77,6 @@ struct _mesa_index_buffer }; -void -_mesa_initialize_exec_dispatch(const struct gl_context *ctx, - struct _glapi_table *exec); - void _mesa_draw_gallium_fallback(struct gl_context *ctx, struct pipe_draw_info *info, @@ -211,8 +207,8 @@ _mesa_MultiDrawArrays(GLenum mode, const GLint *first, void GLAPIENTRY -_mesa_MultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, - const GLvoid *const *indices, GLsizei primcount); +_mesa_MultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, + const GLvoid *const *indices, GLsizei primcount); void GLAPIENTRY @@ -233,6 +229,29 @@ _mesa_MultiModeDrawElementsIBM(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); +void GLAPIENTRY +_mesa_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + +void GLAPIENTRY +_mesa_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + +void GLAPIENTRY +_mesa_Rectdv(const GLdouble *v1, const GLdouble *v2); + +void GLAPIENTRY +_mesa_Rectfv(const GLfloat *v1, const GLfloat *v2); + +void GLAPIENTRY +_mesa_Recti(GLint x1, GLint y1, GLint x2, GLint y2); + +void GLAPIENTRY +_mesa_Rectiv(const GLint *v1, const GLint *v2); + +void GLAPIENTRY +_mesa_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + +void GLAPIENTRY +_mesa_Rectsv(const GLshort *v1, const GLshort *v2); #ifdef __cplusplus } // extern "C" diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index bbb3ee03791..e499ea2f1b1 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -2264,6 +2264,7 @@ const struct function gles2_functions_possible[] = { { "glDrawArrays", 20, _gloffset_DrawArrays }, { "glDrawBuffersNV", 20, -1 }, { "glDrawElements", 20, _gloffset_DrawElements }, + { "glDrawElementsBaseVertex", 20, -1 }, { "glEGLImageTargetRenderbufferStorageOES", 20, -1 }, { "glEGLImageTargetTexture2DOES", 20, -1 }, { "glEnable", 20, _gloffset_Enable }, @@ -2323,6 +2324,7 @@ const struct function gles2_functions_possible[] = { { "glMapBufferRangeEXT", 20, -1 }, { "glMultiDrawArraysEXT", 20, -1 }, { "glMultiDrawElementsEXT", 20, -1 }, + { "glMultiDrawElementsBaseVertex", 20, -1 }, { "glPixelStorei", 20, _gloffset_PixelStorei }, { "glPolygonOffset", 20, _gloffset_PolygonOffset }, { "glReadBufferNV", 20, _gloffset_ReadBuffer }, @@ -2556,6 +2558,7 @@ const struct function gles3_functions_possible[] = { // { "glDrawBuffers", 30, -1 }, { "glDrawElementsInstanced", 30, -1 }, { "glDrawRangeElements", 30, -1 }, + { "glDrawRangeElementsBaseVertex", 30, -1 }, // We check for the aliased -EXT version in GLES 2 // { "glEndQuery", 30, -1 }, { "glEndTransformFeedback", 30, -1 },