From 45a682650ca566baecd9960bfb7af5dffb94c247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Tue, 28 Mar 2023 16:56:17 +0200 Subject: [PATCH] mesa: Add EXT_instanced_arrays support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The support for ARB_instanced_arrays already exists for big GL, reuse the same PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR for this extension. The OES_draw_elements_base_vertex and EXT_draw_elements_base_vertex both define the DrawElementsInstancedBaseVertex method when EXT_instanced_arrays is defined. Signed-off-by: Corentin Noël Reviewed-by: Marek Olšák Acked-by: Erik Faye-Lund Part-of: --- src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml | 2 +- src/mapi/glapi/gen/ARB_instanced_arrays.xml | 11 +++++++++++ src/mapi/glapi/gen/es_EXT.xml | 4 ++-- src/mesa/main/dlist.c | 6 +++--- src/mesa/main/extensions_table.h | 1 + src/mesa/main/varray.c | 4 ++-- 6 files changed, 20 insertions(+), 8 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 a7b1be1c6ee..2666d56a7aa 100644 --- a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml +++ b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml @@ -35,7 +35,7 @@ - + diff --git a/src/mapi/glapi/gen/ARB_instanced_arrays.xml b/src/mapi/glapi/gen/ARB_instanced_arrays.xml index 49f92cfe8ec..6f68a71b0e5 100644 --- a/src/mapi/glapi/gen/ARB_instanced_arrays.xml +++ b/src/mapi/glapi/gen/ARB_instanced_arrays.xml @@ -24,5 +24,16 @@ + + + + + + + + + + + diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml index 5b02dc847db..7127e66d68d 100644 --- a/src/mapi/glapi/gen/es_EXT.xml +++ b/src/mapi/glapi/gen/es_EXT.xml @@ -1106,7 +1106,7 @@ + es2="2.0"> @@ -1248,7 +1248,7 @@ + es2="2.0"> diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index af1de7ffa41..0dc90bbd0d4 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -495,7 +495,7 @@ typedef enum OPCODE_TEXPARAMETER_I, OPCODE_TEXPARAMETER_UI, - /* GL_ARB_instanced_arrays */ + /* GL_EXT/ARB_instanced_arrays */ OPCODE_VERTEX_ATTRIB_DIVISOR, /* GL_NV_texture_barrier */ @@ -8654,7 +8654,7 @@ save_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) } } -/* GL_ARB_instanced_arrays */ +/* GL_EXT/ARB_instanced_arrays */ void GLAPIENTRY save_VertexAttribDivisor(GLuint index, GLuint divisor) { @@ -12462,7 +12462,7 @@ execute_list(struct gl_context *ctx, GLuint list) break; case OPCODE_VERTEX_ATTRIB_DIVISOR: - /* GL_ARB_instanced_arrays */ + /* GL_EXT/ARB_instanced_arrays */ CALL_VertexAttribDivisor(ctx->Dispatch.Exec, (n[1].ui, n[2].ui)); break; diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 88c1d3f5241..ff4081535b7 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -260,6 +260,7 @@ EXT(EXT_gpu_program_parameters , EXT_gpu_program_parameters * Additionally, EXT_gpu_shader4 would reintroduce functions that were removed in GLSL 1.40. */ EXT(EXT_gpu_shader4 , EXT_gpu_shader4 , GLL, x , x , x , 2006) EXT(EXT_gpu_shader5 , ARB_gpu_shader5 , x , x , x , 31, 2014) +EXT(EXT_instanced_arrays , ARB_instanced_arrays , x , x , x , ES2, 2012) EXT(EXT_map_buffer_range , ARB_map_buffer_range , x , x , ES1, ES2, 2012) EXT(EXT_memory_object , EXT_memory_object , GLL, GLC, x , ES2, 2017) EXT(EXT_memory_object_fd , EXT_memory_object_fd , GLL, GLC, x , ES2, 2017) diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 82ea4cad4d3..a74bbcbe0a0 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -2396,8 +2396,8 @@ get_vertex_array_attrib(struct gl_context *ctx, } goto error; case GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB: - if ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_instanced_arrays) - || _mesa_is_gles3(ctx)) { + if (_mesa_has_ARB_instanced_arrays(ctx) || + _mesa_has_EXT_instanced_arrays(ctx)) { return vao->BufferBinding[array->BufferBindingIndex].InstanceDivisor; } goto error;