freedreno/a3xx/compiler: refactor trans_samp()
[mesa.git] / src / gallium / drivers / freedreno / freedreno_draw.c
index 4382bf0d44e1142395265b1e3f80f7b9cab01b28..e3c8cc8e5a0c89b79ca64a06599fcffd5b2a7dcd 100644 (file)
@@ -36,6 +36,7 @@
 #include "freedreno_context.h"
 #include "freedreno_state.h"
 #include "freedreno_resource.h"
+#include "freedreno_query_hw.h"
 #include "freedreno_util.h"
 
 
@@ -70,7 +71,7 @@ fd_draw_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
                idx_bo = fd_resource(idx->buffer)->bo;
                idx_type = size2indextype(idx->index_size);
                idx_size = idx->index_size * info->count;
-               idx_offset = idx->offset;
+               idx_offset = idx->offset + (info->start * idx->index_size);
                src_sel = DI_SRC_SEL_DMA;
        } else {
                idx_bo = NULL;
@@ -128,7 +129,12 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
                ctx->gmem_reason |= FD_GMEM_LOGICOP_ENABLED;
 
        for (i = 0; i < pfb->nr_cbufs; i++) {
-               struct pipe_resource *surf = pfb->cbufs[i]->texture;
+               struct pipe_resource *surf;
+
+               if (!pfb->cbufs[i])
+                       continue;
+
+               surf = pfb->cbufs[i]->texture;
 
                fd_resource(surf)->dirty = true;
                buffers |= FD_BUFFER_COLOR;
@@ -151,6 +157,7 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
        /* and any buffers used, need to be resolved: */
        ctx->resolve |= buffers;
 
+       fd_hw_query_set_stage(ctx, ctx->ring, FD_STAGE_DRAW);
        ctx->draw(ctx, info);
 }
 
@@ -183,6 +190,8 @@ fd_clear(struct pipe_context *pctx, unsigned buffers,
                util_format_short_name(pipe_surface_format(pfb->cbufs[0])),
                util_format_short_name(pipe_surface_format(pfb->zsbuf)));
 
+       fd_hw_query_set_stage(ctx, ctx->ring, FD_STAGE_CLEAR);
+
        ctx->clear(ctx, buffers, color, depth, stencil);
 
        ctx->dirty |= FD_DIRTY_ZSA |