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 /src/gallium/drivers/vc5 | |
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.
Diffstat (limited to 'src/gallium/drivers/vc5')
-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; |