radeonsi: don't prefetch VBO descriptors if vertex elements == NULL
authorMarek Olšák <marek.olsak@amd.com>
Thu, 17 Aug 2017 14:59:31 +0000 (16:59 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 21 Aug 2017 21:06:42 +0000 (23:06 +0200)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_cp_dma.c
src/gallium/drivers/radeonsi/si_hw_context.c

index 91a6aff..1aa1ef2 100644 (file)
@@ -450,6 +450,9 @@ static void cik_prefetch_shader_async(struct si_context *sctx,
 
 static void cik_prefetch_VBO_descriptors(struct si_context *sctx)
 {
+       if (!sctx->vertex_elements)
+               return;
+
        cik_prefetch_TC_L2_async(sctx, &sctx->vertex_buffers.buffer->b.b,
                                 sctx->vertex_buffers.buffer_offset,
                                 sctx->vertex_elements->desc_list_byte_size);
index 46e6073..d9170c3 100644 (file)
@@ -228,7 +228,7 @@ void si_begin_new_cs(struct si_context *ctx)
                ctx->prefetch_L2_mask |= SI_PREFETCH_VS;
        if (ctx->queued.named.ps)
                ctx->prefetch_L2_mask |= SI_PREFETCH_PS;
-       if (ctx->vertex_buffers.buffer)
+       if (ctx->vertex_buffers.buffer && ctx->vertex_elements)
                ctx->prefetch_L2_mask |= SI_PREFETCH_VBO_DESCRIPTORS;
 
        /* CLEAR_STATE disables all colorbuffers, so only enable bound ones. */