From ed117ee630f449fe6d2ed9e205a6dc80bed6dfa2 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Wed, 5 Feb 2020 20:05:03 +0800 Subject: [PATCH] lima: move clear into submit (v2) clear info is needed when submit flush and may be changed after framebuffer switch, so we need to move it into submit. This also fixes 5 dEQP tests as a side effect: clear info is per submit so clear value when one submit won't affect next submit. v2: remove fixed dEQP test from CI list. Reviewed-by: Vasily Khoruzhick Signed-off-by: Qiang Yu Part-of: --- .gitlab-ci/deqp-lima-fails.txt | 5 ----- src/gallium/drivers/lima/lima_context.h | 9 --------- src/gallium/drivers/lima/lima_draw.c | 2 +- src/gallium/drivers/lima/lima_submit.c | 12 ++++++------ src/gallium/drivers/lima/lima_submit.h | 10 ++++++++++ 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci/deqp-lima-fails.txt b/.gitlab-ci/deqp-lima-fails.txt index 2ddd3548250..4ffb45331a7 100644 --- a/.gitlab-ci/deqp-lima-fails.txt +++ b/.gitlab-ci/deqp-lima-fails.txt @@ -26,11 +26,6 @@ dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_co dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 -dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_stencil_index8 -dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_stencil_index8 -dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_stencil_index8 -dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_stencil_index8 -dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_stencil_index8 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 diff --git a/src/gallium/drivers/lima/lima_context.h b/src/gallium/drivers/lima/lima_context.h index fa10b041df2..53a0086fff1 100644 --- a/src/gallium/drivers/lima/lima_context.h +++ b/src/gallium/drivers/lima/lima_context.h @@ -38,14 +38,6 @@ struct lima_context_framebuffer { int shift_min; }; -struct lima_context_clear { - unsigned buffers; - uint32_t color_8pc; - uint32_t depth; - uint32_t stencil; - uint64_t color_16pc; -}; - struct lima_depth_stencil_alpha_state { struct pipe_depth_stencil_alpha_state base; }; @@ -193,7 +185,6 @@ struct lima_context { struct lima_context_framebuffer framebuffer; struct lima_context_viewport_state viewport; struct pipe_scissor_state scissor; - struct lima_context_clear clear; struct lima_vs_shader_state *vs; struct lima_fs_shader_state *fs; struct lima_vertex_element_state *vertex_elements; diff --git a/src/gallium/drivers/lima/lima_draw.c b/src/gallium/drivers/lima/lima_draw.c index 6e6d539e867..27728fe00a8 100644 --- a/src/gallium/drivers/lima/lima_draw.c +++ b/src/gallium/drivers/lima/lima_draw.c @@ -114,7 +114,7 @@ lima_clear(struct pipe_context *pctx, unsigned buffers, } struct lima_submit *submit = lima_submit_get(ctx); - struct lima_context_clear *clear = &ctx->clear; + struct lima_submit_clear *clear = &submit->clear; clear->buffers = buffers; if (buffers & PIPE_CLEAR_COLOR0) { diff --git a/src/gallium/drivers/lima/lima_submit.c b/src/gallium/drivers/lima/lima_submit.c index e1c96437006..8b875566060 100644 --- a/src/gallium/drivers/lima/lima_submit.c +++ b/src/gallium/drivers/lima/lima_submit.c @@ -740,12 +740,12 @@ lima_pack_pp_frame_reg(struct lima_submit *submit, uint32_t *frame_reg, frame->render_address = screen->pp_buffer->va + pp_frame_rsw_offset; frame->flags = 0x02; - frame->clear_value_depth = ctx->clear.depth; - frame->clear_value_stencil = ctx->clear.stencil; - frame->clear_value_color = ctx->clear.color_8pc; - frame->clear_value_color_1 = ctx->clear.color_8pc; - frame->clear_value_color_2 = ctx->clear.color_8pc; - frame->clear_value_color_3 = ctx->clear.color_8pc; + frame->clear_value_depth = submit->clear.depth; + frame->clear_value_stencil = submit->clear.stencil; + frame->clear_value_color = submit->clear.color_8pc; + frame->clear_value_color_1 = submit->clear.color_8pc; + frame->clear_value_color_2 = submit->clear.color_8pc; + frame->clear_value_color_3 = submit->clear.color_8pc; frame->one = 1; frame->width = fb->base.width - 1; diff --git a/src/gallium/drivers/lima/lima_submit.h b/src/gallium/drivers/lima/lima_submit.h index 32b9637b3de..31d961a6d13 100644 --- a/src/gallium/drivers/lima/lima_submit.h +++ b/src/gallium/drivers/lima/lima_submit.h @@ -40,6 +40,14 @@ struct lima_submit_key { struct pipe_surface *zsbuf; }; +struct lima_submit_clear { + unsigned buffers; + uint32_t color_8pc; + uint32_t depth; + uint32_t stencil; + uint64_t color_16pc; +}; + struct lima_submit { int fd; struct lima_context *ctx; @@ -58,6 +66,8 @@ struct lima_submit { int pp_max_stack_size; struct pipe_scissor_state damage_rect; + + struct lima_submit_clear clear; }; struct lima_submit *lima_submit_get(struct lima_context *ctx); -- 2.30.2