panfrost: Make sure a clear does not re-use a pre-existing batch

glClear()s are expected to be the first thing GL apps do before drawing
new things. If there's already an existing batch targetting the same
FBO that has draws attached to it, we should make sure the new clear
gets a new batch assigned to guaranteed that the FB content is actually
cleared with the requested color/depth/stencil values.

We create a panfrost_get_fresh_batch_for_fbo() helper for that and
call it from panfrost_clear().

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Boris Brezillon
2019-09-19 15:52:02 +02:00
parent 016c19bc89
commit c138ca80d2
5 changed files with 32 additions and 271 deletions

View File

@@ -1,10 +1,3 @@
dEQP-GLES2.functional.color_clear.masked_rgba Fail
dEQP-GLES2.functional.color_clear.masked_rgb Fail
dEQP-GLES2.functional.color_clear.masked_scissored_rgba Fail
dEQP-GLES2.functional.color_clear.masked_scissored_rgb Fail
dEQP-GLES2.functional.color_clear.scissored_rgba Fail
dEQP-GLES2.functional.color_clear.scissored_rgb Fail
dEQP-GLES2.functional.color_clear.short_scissored_rgb Fail
dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail
dEQP-GLES2.functional.depth_range.write.clamp_both Fail
dEQP-GLES2.functional.depth_range.write.clamp_far Fail
@@ -859,198 +852,87 @@ dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.both Fail
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.depth Fail
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.0 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.10 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.12 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.13 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.15 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.16 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.17 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.19 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.1 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.20 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.21 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.22 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.23 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.24 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.25 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.26 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.28 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.29 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.30 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.31 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.32 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.33 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.34 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.35 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.36 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.37 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.38 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.3 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.40 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.41 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.42 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.43 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.44 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.46 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.47 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.48 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.49 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.50 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.51 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.52 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.53 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.54 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.55 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.56 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.57 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.58 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.59 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.5 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.60 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.61 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.62 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.63 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.64 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.65 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.66 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.67 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.68 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.69 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.6 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.70 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.71 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.72 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.73 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.74 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.75 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.76 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.77 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.78 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.79 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.7 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.80 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.81 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.82 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.83 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.84 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.85 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.86 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.87 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.88 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.89 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.8 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.90 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.91 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.92 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.93 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.94 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.95 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.96 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.97 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.98 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.99 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.9 Fail
dEQP-GLES2.functional.fragment_ops.random.0 Fail
dEQP-GLES2.functional.fragment_ops.random.10 Fail
dEQP-GLES2.functional.fragment_ops.random.11 Fail
dEQP-GLES2.functional.fragment_ops.random.12 Fail
dEQP-GLES2.functional.fragment_ops.random.13 Fail
dEQP-GLES2.functional.fragment_ops.random.14 Fail
dEQP-GLES2.functional.fragment_ops.random.15 Fail
dEQP-GLES2.functional.fragment_ops.random.16 Fail
dEQP-GLES2.functional.fragment_ops.random.17 Fail
dEQP-GLES2.functional.fragment_ops.random.18 Fail
dEQP-GLES2.functional.fragment_ops.random.19 Fail
dEQP-GLES2.functional.fragment_ops.random.1 Fail
dEQP-GLES2.functional.fragment_ops.random.20 Fail
dEQP-GLES2.functional.fragment_ops.random.21 Fail
dEQP-GLES2.functional.fragment_ops.random.22 Fail
dEQP-GLES2.functional.fragment_ops.random.23 Fail
dEQP-GLES2.functional.fragment_ops.random.24 Fail
dEQP-GLES2.functional.fragment_ops.random.25 Fail
dEQP-GLES2.functional.fragment_ops.random.26 Fail
dEQP-GLES2.functional.fragment_ops.random.27 Fail
dEQP-GLES2.functional.fragment_ops.random.28 Fail
dEQP-GLES2.functional.fragment_ops.random.29 Fail
dEQP-GLES2.functional.fragment_ops.random.2 Fail
dEQP-GLES2.functional.fragment_ops.random.30 Fail
dEQP-GLES2.functional.fragment_ops.random.31 Fail
dEQP-GLES2.functional.fragment_ops.random.32 Fail
dEQP-GLES2.functional.fragment_ops.random.33 Fail
dEQP-GLES2.functional.fragment_ops.random.34 Fail
dEQP-GLES2.functional.fragment_ops.random.35 Fail
dEQP-GLES2.functional.fragment_ops.random.36 Fail
dEQP-GLES2.functional.fragment_ops.random.37 Fail
dEQP-GLES2.functional.fragment_ops.random.38 Fail
dEQP-GLES2.functional.fragment_ops.random.39 Fail
dEQP-GLES2.functional.fragment_ops.random.3 Fail
dEQP-GLES2.functional.fragment_ops.random.40 Fail
dEQP-GLES2.functional.fragment_ops.random.41 Fail
dEQP-GLES2.functional.fragment_ops.random.42 Fail
dEQP-GLES2.functional.fragment_ops.random.43 Fail
dEQP-GLES2.functional.fragment_ops.random.44 Fail
dEQP-GLES2.functional.fragment_ops.random.45 Fail
dEQP-GLES2.functional.fragment_ops.random.46 Fail
dEQP-GLES2.functional.fragment_ops.random.47 Fail
dEQP-GLES2.functional.fragment_ops.random.48 Fail
dEQP-GLES2.functional.fragment_ops.random.49 Fail
dEQP-GLES2.functional.fragment_ops.random.4 Fail
dEQP-GLES2.functional.fragment_ops.random.50 Fail
dEQP-GLES2.functional.fragment_ops.random.51 Fail
dEQP-GLES2.functional.fragment_ops.random.52 Fail
dEQP-GLES2.functional.fragment_ops.random.53 Fail
dEQP-GLES2.functional.fragment_ops.random.54 Fail
dEQP-GLES2.functional.fragment_ops.random.55 Fail
dEQP-GLES2.functional.fragment_ops.random.56 Fail
dEQP-GLES2.functional.fragment_ops.random.57 Fail
dEQP-GLES2.functional.fragment_ops.random.58 Fail
dEQP-GLES2.functional.fragment_ops.random.59 Fail
dEQP-GLES2.functional.fragment_ops.random.5 Fail
dEQP-GLES2.functional.fragment_ops.random.60 Fail
dEQP-GLES2.functional.fragment_ops.random.61 Fail
dEQP-GLES2.functional.fragment_ops.random.62 Fail
dEQP-GLES2.functional.fragment_ops.random.63 Fail
dEQP-GLES2.functional.fragment_ops.random.64 Fail
dEQP-GLES2.functional.fragment_ops.random.65 Fail
dEQP-GLES2.functional.fragment_ops.random.66 Fail
dEQP-GLES2.functional.fragment_ops.random.67 Fail
dEQP-GLES2.functional.fragment_ops.random.68 Fail
dEQP-GLES2.functional.fragment_ops.random.69 Fail
dEQP-GLES2.functional.fragment_ops.random.6 Fail
dEQP-GLES2.functional.fragment_ops.random.70 Fail
dEQP-GLES2.functional.fragment_ops.random.71 Fail
dEQP-GLES2.functional.fragment_ops.random.72 Fail
dEQP-GLES2.functional.fragment_ops.random.73 Fail
dEQP-GLES2.functional.fragment_ops.random.74 Fail
dEQP-GLES2.functional.fragment_ops.random.75 Fail
dEQP-GLES2.functional.fragment_ops.random.76 Fail
dEQP-GLES2.functional.fragment_ops.random.77 Fail
dEQP-GLES2.functional.fragment_ops.random.78 Fail
dEQP-GLES2.functional.fragment_ops.random.79 Fail
dEQP-GLES2.functional.fragment_ops.random.7 Fail
dEQP-GLES2.functional.fragment_ops.random.80 Fail
dEQP-GLES2.functional.fragment_ops.random.81 Fail
dEQP-GLES2.functional.fragment_ops.random.82 Fail
dEQP-GLES2.functional.fragment_ops.random.83 Fail
dEQP-GLES2.functional.fragment_ops.random.84 Fail
dEQP-GLES2.functional.fragment_ops.random.85 Fail
dEQP-GLES2.functional.fragment_ops.random.86 Fail
dEQP-GLES2.functional.fragment_ops.random.87 Fail
dEQP-GLES2.functional.fragment_ops.random.88 Fail
dEQP-GLES2.functional.fragment_ops.random.89 Fail
dEQP-GLES2.functional.fragment_ops.random.8 Fail
dEQP-GLES2.functional.fragment_ops.random.90 Fail
dEQP-GLES2.functional.fragment_ops.random.91 Fail
dEQP-GLES2.functional.fragment_ops.random.92 Fail
dEQP-GLES2.functional.fragment_ops.random.93 Fail
dEQP-GLES2.functional.fragment_ops.random.94 Fail
dEQP-GLES2.functional.fragment_ops.random.95 Fail
dEQP-GLES2.functional.fragment_ops.random.96 Fail
dEQP-GLES2.functional.fragment_ops.random.97 Fail
dEQP-GLES2.functional.fragment_ops.random.98 Fail
dEQP-GLES2.functional.fragment_ops.random.99 Fail
dEQP-GLES2.functional.fragment_ops.random.9 Fail
dEQP-GLES2.functional.polygon_offset.default_factor_1_slope Fail

View File

@@ -1,10 +1,3 @@
dEQP-GLES2.functional.color_clear.masked_rgba Fail
dEQP-GLES2.functional.color_clear.masked_rgb Fail
dEQP-GLES2.functional.color_clear.masked_scissored_rgba Fail
dEQP-GLES2.functional.color_clear.masked_scissored_rgb Fail
dEQP-GLES2.functional.color_clear.scissored_rgba Fail
dEQP-GLES2.functional.color_clear.scissored_rgb Fail
dEQP-GLES2.functional.color_clear.short_scissored_rgb Fail
dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail
dEQP-GLES2.functional.depth_range.write.clamp_both Fail
dEQP-GLES2.functional.depth_range.write.clamp_far Fail
@@ -672,200 +665,55 @@ dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_zero Fail
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.both Fail
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.depth Fail
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.0 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.10 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.12 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.13 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.15 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.16 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.17 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.19 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.1 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.20 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.21 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.22 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.23 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.24 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.25 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.26 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.29 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.30 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.31 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.32 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.33 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.34 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.35 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.36 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.37 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.38 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.3 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.40 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.41 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.42 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.43 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.44 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.46 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.47 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.48 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.49 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.50 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.51 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.52 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.53 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.54 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.55 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.56 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.57 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.58 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.59 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.5 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.60 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.61 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.62 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.63 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.64 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.65 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.66 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.67 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.68 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.69 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.6 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.70 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.71 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.72 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.73 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.74 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.75 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.76 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.77 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.78 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.79 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.7 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.80 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.81 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.82 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.83 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.84 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.85 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.86 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.87 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.88 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.89 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.8 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.90 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.91 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.92 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.93 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.94 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.95 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.96 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.97 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.98 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.99 Fail
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.9 Fail
dEQP-GLES2.functional.fragment_ops.random.0 Fail
dEQP-GLES2.functional.fragment_ops.random.10 Fail
dEQP-GLES2.functional.fragment_ops.random.11 Fail
dEQP-GLES2.functional.fragment_ops.random.12 Fail
dEQP-GLES2.functional.fragment_ops.random.13 Fail
dEQP-GLES2.functional.fragment_ops.random.14 Fail
dEQP-GLES2.functional.fragment_ops.random.15 Fail
dEQP-GLES2.functional.fragment_ops.random.16 Fail
dEQP-GLES2.functional.fragment_ops.random.17 Fail
dEQP-GLES2.functional.fragment_ops.random.18 Fail
dEQP-GLES2.functional.fragment_ops.random.19 Fail
dEQP-GLES2.functional.fragment_ops.random.1 Fail
dEQP-GLES2.functional.fragment_ops.random.20 Fail
dEQP-GLES2.functional.fragment_ops.random.21 Fail
dEQP-GLES2.functional.fragment_ops.random.22 Fail
dEQP-GLES2.functional.fragment_ops.random.23 Fail
dEQP-GLES2.functional.fragment_ops.random.24 Fail
dEQP-GLES2.functional.fragment_ops.random.25 Fail
dEQP-GLES2.functional.fragment_ops.random.26 Fail
dEQP-GLES2.functional.fragment_ops.random.27 Fail
dEQP-GLES2.functional.fragment_ops.random.28 Fail
dEQP-GLES2.functional.fragment_ops.random.29 Fail
dEQP-GLES2.functional.fragment_ops.random.2 Fail
dEQP-GLES2.functional.fragment_ops.random.30 Fail
dEQP-GLES2.functional.fragment_ops.random.31 Fail
dEQP-GLES2.functional.fragment_ops.random.32 Fail
dEQP-GLES2.functional.fragment_ops.random.33 Fail
dEQP-GLES2.functional.fragment_ops.random.34 Fail
dEQP-GLES2.functional.fragment_ops.random.35 Fail
dEQP-GLES2.functional.fragment_ops.random.36 Fail
dEQP-GLES2.functional.fragment_ops.random.37 Fail
dEQP-GLES2.functional.fragment_ops.random.38 Fail
dEQP-GLES2.functional.fragment_ops.random.39 Fail
dEQP-GLES2.functional.fragment_ops.random.3 Fail
dEQP-GLES2.functional.fragment_ops.random.40 Fail
dEQP-GLES2.functional.fragment_ops.random.41 Fail
dEQP-GLES2.functional.fragment_ops.random.42 Fail
dEQP-GLES2.functional.fragment_ops.random.43 Fail
dEQP-GLES2.functional.fragment_ops.random.44 Fail
dEQP-GLES2.functional.fragment_ops.random.45 Fail
dEQP-GLES2.functional.fragment_ops.random.46 Fail
dEQP-GLES2.functional.fragment_ops.random.47 Fail
dEQP-GLES2.functional.fragment_ops.random.48 Fail
dEQP-GLES2.functional.fragment_ops.random.49 Fail
dEQP-GLES2.functional.fragment_ops.random.4 Fail
dEQP-GLES2.functional.fragment_ops.random.50 Fail
dEQP-GLES2.functional.fragment_ops.random.51 Fail
dEQP-GLES2.functional.fragment_ops.random.52 Fail
dEQP-GLES2.functional.fragment_ops.random.53 Fail
dEQP-GLES2.functional.fragment_ops.random.54 Fail
dEQP-GLES2.functional.fragment_ops.random.55 Fail
dEQP-GLES2.functional.fragment_ops.random.56 Fail
dEQP-GLES2.functional.fragment_ops.random.57 Fail
dEQP-GLES2.functional.fragment_ops.random.58 Fail
dEQP-GLES2.functional.fragment_ops.random.59 Fail
dEQP-GLES2.functional.fragment_ops.random.5 Fail
dEQP-GLES2.functional.fragment_ops.random.60 Fail
dEQP-GLES2.functional.fragment_ops.random.61 Fail
dEQP-GLES2.functional.fragment_ops.random.62 Fail
dEQP-GLES2.functional.fragment_ops.random.63 Fail
dEQP-GLES2.functional.fragment_ops.random.64 Fail
dEQP-GLES2.functional.fragment_ops.random.65 Fail
dEQP-GLES2.functional.fragment_ops.random.66 Fail
dEQP-GLES2.functional.fragment_ops.random.67 Fail
dEQP-GLES2.functional.fragment_ops.random.68 Fail
dEQP-GLES2.functional.fragment_ops.random.69 Fail
dEQP-GLES2.functional.fragment_ops.random.6 Fail
dEQP-GLES2.functional.fragment_ops.random.70 Fail
dEQP-GLES2.functional.fragment_ops.random.71 Fail
dEQP-GLES2.functional.fragment_ops.random.72 Fail
dEQP-GLES2.functional.fragment_ops.random.73 Fail
dEQP-GLES2.functional.fragment_ops.random.74 Fail
dEQP-GLES2.functional.fragment_ops.random.75 Fail
dEQP-GLES2.functional.fragment_ops.random.76 Fail
dEQP-GLES2.functional.fragment_ops.random.77 Fail
dEQP-GLES2.functional.fragment_ops.random.78 Fail
dEQP-GLES2.functional.fragment_ops.random.79 Fail
dEQP-GLES2.functional.fragment_ops.random.7 Fail
dEQP-GLES2.functional.fragment_ops.random.80 Fail
dEQP-GLES2.functional.fragment_ops.random.81 Fail
dEQP-GLES2.functional.fragment_ops.random.82 Fail
dEQP-GLES2.functional.fragment_ops.random.83 Fail
dEQP-GLES2.functional.fragment_ops.random.84 Fail
dEQP-GLES2.functional.fragment_ops.random.85 Fail
dEQP-GLES2.functional.fragment_ops.random.86 Fail
dEQP-GLES2.functional.fragment_ops.random.87 Fail
dEQP-GLES2.functional.fragment_ops.random.88 Fail
dEQP-GLES2.functional.fragment_ops.random.89 Fail
dEQP-GLES2.functional.fragment_ops.random.8 Fail
dEQP-GLES2.functional.fragment_ops.random.90 Fail
dEQP-GLES2.functional.fragment_ops.random.91 Fail
dEQP-GLES2.functional.fragment_ops.random.92 Fail
dEQP-GLES2.functional.fragment_ops.random.93 Fail
dEQP-GLES2.functional.fragment_ops.random.94 Fail
dEQP-GLES2.functional.fragment_ops.random.95 Fail
dEQP-GLES2.functional.fragment_ops.random.96 Fail
dEQP-GLES2.functional.fragment_ops.random.97 Fail
dEQP-GLES2.functional.fragment_ops.random.98 Fail
dEQP-GLES2.functional.fragment_ops.random.99 Fail
dEQP-GLES2.functional.fragment_ops.random.9 Fail
dEQP-GLES2.functional.polygon_offset.default_factor_1_slope Fail
dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail
dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail

View File

@@ -162,7 +162,14 @@ panfrost_clear(
double depth, unsigned stencil)
{
struct panfrost_context *ctx = pan_context(pipe);
struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
/* TODO: panfrost_get_fresh_batch_for_fbo() instantiates a new batch if
* the existing batch targeting this FBO has draws. We could probably
* avoid that by replacing plain clears by quad-draws with a specific
* color/depth/stencil value, thus avoiding the generation of extra
* fragment/set_value jobs.
*/
struct panfrost_batch *batch = panfrost_get_fresh_batch_for_fbo(ctx);
panfrost_batch_add_fbo_bos(batch);
panfrost_batch_clear(batch, buffers, color, depth, stencil);

View File

@@ -293,6 +293,27 @@ panfrost_get_batch_for_fbo(struct panfrost_context *ctx)
return batch;
}
struct panfrost_batch *
panfrost_get_fresh_batch_for_fbo(struct panfrost_context *ctx)
{
struct panfrost_batch *batch;
batch = panfrost_get_batch(ctx, &ctx->pipe_framebuffer);
/* The batch has no draw/clear queued, let's return it directly.
* Note that it's perfectly fine to re-use a batch with an
* existing clear, we'll just update it with the new clear request.
*/
if (!batch->last_job.gpu)
return batch;
/* Otherwise, we need to freeze the existing one and instantiate a new
* one.
*/
panfrost_freeze_batch(batch);
return panfrost_get_batch(ctx, &ctx->pipe_framebuffer);
}
static bool
panfrost_batch_fence_is_signaled(struct panfrost_batch_fence *fence)
{

View File

@@ -169,6 +169,9 @@ panfrost_batch_fence_reference(struct panfrost_batch_fence *batch);
struct panfrost_batch *
panfrost_get_batch_for_fbo(struct panfrost_context *ctx);
struct panfrost_batch *
panfrost_get_fresh_batch_for_fbo(struct panfrost_context *ctx);
void
panfrost_batch_init(struct panfrost_context *ctx);