radeonsi: don't allow user indices with indirect draws
authorMarek Olšák <marek.olsak@amd.com>
Sun, 2 Apr 2017 14:22:54 +0000 (16:22 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Sun, 16 Apr 2017 23:22:11 +0000 (01:22 +0200)
Not possible with GL and it will make future gallium rework easier.
(also it's something I wouldn't like to support)

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_state_draw.c

index 0ada60afac9bc56f5a246cd0d7a8332f35282a2a..9b7b52c35977651398faddd23316d0206f0e66b4 100644 (file)
@@ -1220,13 +1220,13 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
                        ib_tmp.index_size = 2;
                        ib = &ib_tmp;
                } else if (ib->user_buffer && !ib->buffer) {
-                       unsigned start, count, start_offset;
+                       unsigned start_offset;
 
-                       si_get_draw_start_count(sctx, info, &start, &count);
-                       start_offset = start * ib->index_size;
+                       assert(!info->indirect);
+                       start_offset = info->start * ib->index_size;
 
                        u_upload_data(ctx->stream_uploader, start_offset,
-                                     count * ib->index_size,
+                                     info->count * ib->index_size,
                                      sctx->screen->b.info.tcc_cache_line_size,
                                      (char*)ib->user_buffer + start_offset,
                                      &ib_tmp.offset, &ib_tmp.buffer);