Mesa (master): freedreno/a3xx: add ARB_instanced_arrays support

Ilia Mirkin imirkin at kemper.freedesktop.org
Thu Feb 19 05:28:07 UTC 2015


Module: Mesa
Branch: master
Commit: 92fc8f04d63bae969d47d79fde2c9d48f5e90488
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=92fc8f04d63bae969d47d79fde2c9d48f5e90488

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Tue Dec  2 00:32:57 2014 -0500

freedreno/a3xx: add ARB_instanced_arrays support

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 docs/relnotes/10.6.0.html                        |    1 +
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c    |    3 ++-
 src/gallium/drivers/freedreno/freedreno_screen.c |    2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/docs/relnotes/10.6.0.html b/docs/relnotes/10.6.0.html
index bedbd4b..151ba17 100644
--- a/docs/relnotes/10.6.0.html
+++ b/docs/relnotes/10.6.0.html
@@ -46,6 +46,7 @@ Note: some of the new features are only available with certain drivers.
 <ul>
 <li>GL_AMD_pinned_memory on r600, radeonsi</li>
 <li>GL_ARB_draw_instanced on freedreno</li>
+<li>GL_ARB_instanced_arrays on freedreno</li>
 <li>GL_ARB_pipeline_statistics_query on i965, nvc0, r600, radeonsi, softpipe</li>
 </ul>
 
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
index ad5fcb3..f1a17ec 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
@@ -396,7 +396,8 @@ fd3_emit_vertex_bufs(struct fd_ringbuffer *ring, struct fd3_emit *emit)
 					A3XX_VFD_FETCH_INSTR_0_BUFSTRIDE(vb->stride) |
 					COND(switchnext, A3XX_VFD_FETCH_INSTR_0_SWITCHNEXT) |
 					A3XX_VFD_FETCH_INSTR_0_INDEXCODE(j) |
-					A3XX_VFD_FETCH_INSTR_0_STEPRATE(1));
+					COND(elem->instance_divisor, A3XX_VFD_FETCH_INSTR_0_INSTANCED) |
+					A3XX_VFD_FETCH_INSTR_0_STEPRATE(MAX2(1, elem->instance_divisor)));
 			OUT_RELOC(ring, rsc->bo, vb->buffer_offset + elem->src_offset, 0, 0);
 
 			OUT_PKT0(ring, REG_A3XX_VFD_DECODE_INSTR(j), 1);
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
index 7952c04..b0bdfd9 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -186,7 +186,6 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
 	case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
 	case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
 	case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS:
-	case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
 	case PIPE_CAP_START_INSTANCE:
 	case PIPE_CAP_COMPUTE:
 		return 0;
@@ -196,6 +195,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
 		return is_a3xx(screen) || is_a4xx(screen);
 
 	case PIPE_CAP_TGSI_INSTANCEID:
+	case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
 		return is_a3xx(screen) && glsl130;
 
 	case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:




More information about the mesa-commit mailing list