[Mesa-dev] [PATCH 8/9] panfrost: Increment offsets[] per draw
Alyssa Rosenzweig
alyssa.rosenzweig at collabora.com
Fri Aug 9 20:00:51 UTC 2019
We have to maintain the internal offset ourselves. Per v3d.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
---
src/gallium/drivers/panfrost/pan_context.c | 10 ++++++++++
src/gallium/drivers/panfrost/pan_context.h | 1 +
2 files changed, 11 insertions(+)
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 9f89200a97f..29c8f3d0e62 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -1530,6 +1530,7 @@ panfrost_draw_vbo(
/* Take into account a negative bias */
ctx->vertex_count = info->count + abs(info->index_bias);
ctx->instance_count = info->instance_count;
+ ctx->active_prim = info->mode;
/* For non-indexed draws, they're the same */
unsigned vertex_count = ctx->vertex_count;
@@ -1644,6 +1645,15 @@ panfrost_draw_vbo(
/* Fire off the draw itself */
panfrost_queue_draw(ctx);
+
+ /* Increment transform feedback offsets */
+
+ for (unsigned i = 0; i < ctx->streamout.num_targets; ++i) {
+ unsigned output_count = u_stream_outputs_for_vertices(
+ ctx->active_prim, ctx->vertex_count);
+
+ ctx->streamout.offsets[i] += output_count;
+ }
}
/* CSO state */
diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h
index 304733abc32..39893655f08 100644
--- a/src/gallium/drivers/panfrost/pan_context.h
+++ b/src/gallium/drivers/panfrost/pan_context.h
@@ -147,6 +147,7 @@ struct panfrost_context {
unsigned vertex_count;
unsigned instance_count;
+ enum pipe_prim_type active_prim;
/* If instancing is enabled, vertex count padded for instance; if
* it is disabled, just equal to plain vertex count */
--
2.20.1
More information about the mesa-dev
mailing list