From 355d57582009b23b365769236cd29cf74afb577d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 23 Aug 2022 14:57:56 -0400 Subject: [PATCH] mesa: fix glDrawRangeElementsBaseVertex should be compiled into display list It's defined in terms of glDrawRangeElements, which is compiled into display lists. Cc: stable Acked-by: Adam Jackson Part-of: --- .../glapi/gen/ARB_draw_elements_base_vertex.xml | 2 +- src/mesa/main/glthread_draw.c | 2 +- src/mesa/vbo/vbo_save_api.c | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 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 129582b1adc..a7b1be1c6ee 100644 --- a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml +++ b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml @@ -16,7 +16,7 @@ - + diff --git a/src/mesa/main/glthread_draw.c b/src/mesa/main/glthread_draw.c index 21fce5010ef..274db8b475c 100644 --- a/src/mesa/main/glthread_draw.c +++ b/src/mesa/main/glthread_draw.c @@ -1198,7 +1198,7 @@ _mesa_marshal_DrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) { - draw_elements(mode, count, type, indices, 1, basevertex, 0, true, start, end, false); + draw_elements(mode, count, type, indices, 1, basevertex, 0, true, start, end, true); } void GLAPIENTRY diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index 29c9c629fb5..7d914887829 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -1874,6 +1874,21 @@ save_DrawRangeElements(GLenum mode, GLuint start, GLuint end, save_DrawElements(mode, count, type, indices); } +void GLAPIENTRY +save_DrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const GLvoid *indices, GLint basevertex) +{ + GET_CURRENT_CONTEXT(ctx); + + if (end < start) { + _mesa_compile_error(ctx, GL_INVALID_VALUE, + "glDrawRangeElementsBaseVertex(end < start)"); + return; + } + + save_DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} void GLAPIENTRY save_MultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type,