freedreno/a3xx/compiler: refactor trans_samp()
[mesa.git] / src / gallium / drivers / freedreno / freedreno_draw.c
index 11bb8d8333ddec3b943f9c1f0fa762ae594612b0..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;
@@ -156,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);
 }
 
@@ -188,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 |