radeonsi: skip draw calls with 0-sized index buffers
authorMarek Olšák <marek.olsak@amd.com>
Tue, 30 Jul 2019 21:10:59 +0000 (17:10 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 6 Aug 2019 21:08:39 +0000 (17:08 -0400)
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
src/gallium/drivers/radeonsi/si_state_draw.c

index a099805e43d35e324885daa499d1933e0700e6d6..529b11c364a113c93938b16c93cf6a831a9cd4f1 100644 (file)
@@ -868,6 +868,12 @@ static void si_emit_draw_packets(struct si_context *sctx,
                if (original_index_size) {
                        index_max_size = (indexbuf->width0 - index_offset) /
                                          original_index_size;
+                       /* Skip draw calls with 0-sized index buffers.
+                        * They cause a hang on some chips, like Navi10-14.
+                        */
+                       if (!index_max_size)
+                               return;
+
                        index_va = si_resource(indexbuf)->gpu_address + index_offset;
 
                        radeon_add_to_buffer_list(sctx, sctx->gfx_cs,