dEQP-GLES2.functional.fragment_ops.random.96 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
dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail
dEQP-GLES2.functional.fragment_ops.random.81 Fail
dEQP-GLES2.functional.fragment_ops.random.87 Fail
dEQP-GLES2.functional.fragment_ops.random.96 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
dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail
if (rasterizer_discard)
panfrost_scoreboard_queue_vertex_job(batch, vertex, FALSE);
- else if (ctx->wallpaper_batch)
+ else if (ctx->wallpaper_batch && batch->first_tiler.gpu)
panfrost_scoreboard_queue_fused_job_prepend(batch, vertex, tiler);
else
panfrost_scoreboard_queue_fused_job(batch, vertex, tiler);
static void
panfrost_batch_draw_wallpaper(struct panfrost_batch *batch)
{
+ /* Color 0 is cleared, no need to draw the wallpaper.
+ * TODO: MRT wallpapers.
+ */
+ if (batch->clear & PIPE_CLEAR_COLOR0)
+ return;
+
/* Nothing to reload? TODO: MRT wallpapers */
if (batch->key.cbufs[0] == NULL)
return;
+ /* No draw calls, and no clear on the depth/stencil bufs.
+ * Drawing the wallpaper would be useless.
+ */
+ if (!batch->last_tiler.gpu &&
+ !(batch->clear & PIPE_CLEAR_DEPTHSTENCIL))
+ return;
+
/* Check if the buffer has any content on it worth preserving */
struct pipe_surface *surf = batch->key.cbufs[0];
goto out;
}
- if (!batch->clear && batch->last_tiler.gpu)
- panfrost_batch_draw_wallpaper(batch);
+ panfrost_batch_draw_wallpaper(batch);
panfrost_scoreboard_link_batch(batch);