diff options
author | Eric Anholt <[email protected]> | 2017-12-20 17:19:23 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2018-01-03 14:25:23 -0800 |
commit | ac4054ca1766b5ab4ee2059e7e0f8590c219730d (patch) | |
tree | 99b519ae97375f5fc719f4934d1c080af6642a25 | |
parent | 7d8b19f0ddda502227a7baccfa0df3db7ed67051 (diff) |
broadcom/vc5: Switch to setting the primitive list format in the RCL.
This means that we get a single copy of it emitted, instead of once at the
start of each tile (though it's still executed once per tile). Fixes
assertion failures with the updated simulator.
-rw-r--r-- | src/gallium/drivers/vc5/vc5_draw.c | 5 | ||||
-rw-r--r-- | src/gallium/drivers/vc5/vc5_rcl.c | 8 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/gallium/drivers/vc5/vc5_draw.c b/src/gallium/drivers/vc5/vc5_draw.c index 6ca6966f713..e07fbd8e810 100644 --- a/src/gallium/drivers/vc5/vc5_draw.c +++ b/src/gallium/drivers/vc5/vc5_draw.c @@ -101,11 +101,6 @@ vc5_start_draw(struct vc5_context *vc5) */ cl_emit(&job->bcl, START_TILE_BINNING, bin); - cl_emit(&job->bcl, PRIMITIVE_LIST_FORMAT, fmt) { - fmt.data_type = LIST_INDEXED; - fmt.primitive_type = LIST_TRIANGLES; - } - job->needs_flush = true; job->draw_width = vc5->framebuffer.width; job->draw_height = vc5->framebuffer.height; diff --git a/src/gallium/drivers/vc5/vc5_rcl.c b/src/gallium/drivers/vc5/vc5_rcl.c index afb764c0a80..600a8469668 100644 --- a/src/gallium/drivers/vc5/vc5_rcl.c +++ b/src/gallium/drivers/vc5/vc5_rcl.c @@ -152,6 +152,14 @@ vc5_rcl_emit_generic_per_tile_list(struct vc5_job *job, int last_cbuf) */ cl_emit(cl, TILE_COORDINATES_IMPLICIT, coords); + /* The binner starts out writing tiles assuming that the initial mode + * is triangles, so make sure that's the case. + */ + cl_emit(cl, PRIMITIVE_LIST_FORMAT, fmt) { + fmt.data_type = LIST_INDEXED; + fmt.primitive_type = LIST_TRIANGLES; + } + cl_emit(cl, BRANCH_TO_IMPLICIT_TILE_LIST, branch); bool needs_color_clear = job->cleared & pipe_clear_color_buffers; |