summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2012-07-18 06:13:34 +0200
committerMarek Olšák <maraeo@gmail.com>2012-07-18 06:25:37 +0200
commitd9ba1b0beb6a78e208128e758bd22173fe4a8234 (patch)
tree480d05cbe376bd73f8ccb80930551c9149e47111
parent1cfb55c5098e17cd8e6188fc6382b393a9013e4c (diff)
downloadexternal_mesa3d-d9ba1b0beb6a78e208128e758bd22173fe4a8234.zip
external_mesa3d-d9ba1b0beb6a78e208128e758bd22173fe4a8234.tar.gz
external_mesa3d-d9ba1b0beb6a78e208128e758bd22173fe4a8234.tar.bz2
r600g: only set the index type if drawing is indexed
-rw-r--r--src/gallium/drivers/r600/r600_state_common.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
index d114093..d3d0983 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -1089,13 +1089,14 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *dinfo)
}
/* draw packet */
- cs->buf[cs->cdw++] = PKT3(PKT3_INDEX_TYPE, 0, rctx->predicate_drawing);
- cs->buf[cs->cdw++] = ib.index_size == 4 ?
- (VGT_INDEX_32 | (R600_BIG_ENDIAN ? VGT_DMA_SWAP_32_BIT : 0)) :
- (VGT_INDEX_16 | (R600_BIG_ENDIAN ? VGT_DMA_SWAP_16_BIT : 0));
cs->buf[cs->cdw++] = PKT3(PKT3_NUM_INSTANCES, 0, rctx->predicate_drawing);
cs->buf[cs->cdw++] = info.instance_count;
if (info.indexed) {
+ cs->buf[cs->cdw++] = PKT3(PKT3_INDEX_TYPE, 0, rctx->predicate_drawing);
+ cs->buf[cs->cdw++] = ib.index_size == 4 ?
+ (VGT_INDEX_32 | (R600_BIG_ENDIAN ? VGT_DMA_SWAP_32_BIT : 0)) :
+ (VGT_INDEX_16 | (R600_BIG_ENDIAN ? VGT_DMA_SWAP_16_BIT : 0));
+
va = r600_resource_va(ctx->screen, ib.buffer);
va += ib.offset;
cs->buf[cs->cdw++] = PKT3(PKT3_DRAW_INDEX, 3, rctx->predicate_drawing);