From cdd3f5496ad2d6a252bd7ad78f5034db549d4921 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Fri, 18 Jan 2013 11:11:10 -0800 Subject: [PATCH] i965: Implement the GL_ARB_base_instance extension. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks to Fredrik Höglund, all the hard work was already done. Tested using a modified oglconform (that actually runs these tests on our driver); it looks like there may be some bugs when using client arrays. All applicable non-compatibility tests passed. For now, only enable it in core profiles. Reviewed-by: Eric Anholt Tested-by: Ian Romanick --- src/mesa/drivers/dri/i965/brw_draw.c | 4 ++-- src/mesa/drivers/dri/intel/intel_extensions.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index faa29d124fc..2c2b826d196 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -193,7 +193,7 @@ static void brw_emit_prim(struct brw_context *brw, OUT_BATCH(verts_per_instance); OUT_BATCH(start_vertex_location); OUT_BATCH(prim->num_instances); - OUT_BATCH(0); // start instance location + OUT_BATCH(prim->base_instance); OUT_BATCH(base_vertex_location); ADVANCE_BATCH(); @@ -249,7 +249,7 @@ static void gen7_emit_prim(struct brw_context *brw, OUT_BATCH(verts_per_instance); OUT_BATCH(start_vertex_location); OUT_BATCH(prim->num_instances); - OUT_BATCH(0); // start instance location + OUT_BATCH(prim->base_instance); OUT_BATCH(base_vertex_location); ADVANCE_BATCH(); diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index 4e7b5da7acc..e237e022f26 100755 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -120,6 +120,8 @@ intelInitExtensions(struct gl_context *ctx) } if (intel->gen >= 4) { + if (ctx->API == API_OPENGL_CORE) + ctx->Extensions.ARB_base_instance = true; ctx->Extensions.ARB_color_buffer_float = true; ctx->Extensions.ARB_depth_buffer_float = true; ctx->Extensions.ARB_depth_clamp = true;