From 92fc8f04d63bae969d47d79fde2c9d48f5e90488 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Tue, 2 Dec 2014 00:32:57 -0500 Subject: [PATCH] freedreno/a3xx: add ARB_instanced_arrays support Signed-off-by: Ilia Mirkin --- 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 bedbd4bab9e..151ba176346 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. diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c index ad5fcb35cf5..f1a17ec1dfb 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 7952c04d35c..b0bdfd9fb72 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: -- 2.30.2