From ac4054ca1766b5ab4ee2059e7e0f8590c219730d Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 20 Dec 2017 17:19:23 -0800 Subject: [PATCH] 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. --- src/gallium/drivers/vc5/vc5_draw.c | 5 ----- 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; -- 2.30.2