diff options
author | Alyssa Rosenzweig <[email protected]> | 2019-08-08 08:16:09 -0700 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-08-13 09:43:39 -0700 |
commit | 7c29588c07500aabbd6cc494ee220ebd2abdff74 (patch) | |
tree | f0a678af77db89968e91f217cc032d4c64719139 /src/gallium | |
parent | e7a05a601eb065b666d07753fa6eca865d3bd160 (diff) |
panfrost: Increment offsets[] per draw
We have to maintain the internal offset ourselves. Per v3d.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Reviewed-by: Boris Brezillon <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/panfrost/pan_context.c | 10 | ||||
-rw-r--r-- | src/gallium/drivers/panfrost/pan_context.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index e023144b9c8..8177f8917f3 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1640,6 +1640,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; @@ -1754,6 +1755,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 ba27ced9074..e4dfe21bfd3 100644 --- a/src/gallium/drivers/panfrost/pan_context.h +++ b/src/gallium/drivers/panfrost/pan_context.h @@ -150,6 +150,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 */ |