Module: Mesa
Branch: master
Commit: 64ff23a58cd4f5daeb52d5f8e2d37904696d6cb4
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=64ff23a58cd4f5daeb52d5f8e2d37904696d6cb4

Author: Nicolai Hähnle <nicolai.haeh...@amd.com>
Date:   Fri Jul 29 17:56:21 2016 +0100

radeonsi: move index buffer calculations in si_emit_draw_packets up

Reviewed-by: Marek Olšák <marek.ol...@amd.com>

---

 src/gallium/drivers/radeonsi/si_state_draw.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c 
b/src/gallium/drivers/radeonsi/si_state_draw.c
index 523c2ea..bae0f94 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -520,6 +520,8 @@ static void si_emit_draw_packets(struct si_context *sctx,
        struct radeon_winsys_cs *cs = sctx->b.gfx.cs;
        unsigned sh_base_reg = 
sctx->shader_userdata.sh_base[PIPE_SHADER_VERTEX];
        bool render_cond_bit = sctx->b.render_cond && 
!sctx->b.render_cond_force_off;
+       uint32_t index_max_size = 0;
+       uint64_t index_va = 0;
 
        if (info->count_from_stream_output) {
                struct r600_so_target *t =
@@ -567,6 +569,16 @@ static void si_emit_draw_packets(struct si_context *sctx,
                        assert(!"unreachable");
                        return;
                }
+
+               index_max_size = (ib->buffer->width0 - ib->offset) /
+                                 ib->index_size;
+               index_va = r600_resource(ib->buffer)->gpu_address + ib->offset;
+
+               assert(index_va % 2 == 0);
+
+               radeon_add_to_buffer_list(&sctx->b, &sctx->b.gfx,
+                                     (struct r600_resource *)ib->buffer,
+                                     RADEON_USAGE_READ, 
RADEON_PRIO_INDEX_BUFFER);
        }
 
        if (!info->indirect) {
@@ -608,16 +620,7 @@ static void si_emit_draw_packets(struct si_context *sctx,
        }
 
        if (info->indexed) {
-               uint32_t index_max_size = (ib->buffer->width0 - ib->offset) /
-                                         ib->index_size;
-               uint64_t index_va = r600_resource(ib->buffer)->gpu_address + 
ib->offset;
-
-               radeon_add_to_buffer_list(&sctx->b, &sctx->b.gfx,
-                                     (struct r600_resource *)ib->buffer,
-                                     RADEON_USAGE_READ, 
RADEON_PRIO_INDEX_BUFFER);
-
                if (info->indirect) {
-                       assert(index_va % 2 == 0);
                        assert(info->indirect_offset % 4 == 0);
 
                        radeon_emit(cs, PKT3(PKT3_INDEX_BASE, 1, 0));

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to