Bug 92236 - [ColorTiling2D] R600 BARTS radeon: pipe_context->clear with color tiling enabled doesn't immediately affect color buffer
Summary: [ColorTiling2D] R600 BARTS radeon: pipe_context->clear with color tiling enab...
Status: RESOLVED NOTOURBUG
Alias: None
Product: Mesa
Classification: Unclassified
Component: Mesa core (show other bugs)
Version: git
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-10-02 08:04 UTC by Patrick Rudolph
Modified: 2015-10-02 08:42 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Patrick Rudolph 2015-10-02 08:04:01 UTC
There's an open Gallium nine bug: https://github.com/iXit/Mesa-3D/issues/138

It looks like pipe_context->clear called with PIPE_CLEAR_COLOR isn't applied immediately to the buffer.
As nine mimics swap-chains, the buffer is reused after some frames resulting in "delayed" presentation.

The problem doesn't exist with R600_DEBUG=notiling and it doesn't exists when using pipe_context->clear_render_target instead.

Tested with mesa git: https://github.com/iXit/Mesa-3D/
Comment 1 Michel Dänzer 2015-10-02 08:16:29 UTC
(In reply to Patrick Rudolph from comment #0)
> There's an open Gallium nine bug: https://github.com/iXit/Mesa-3D/issues/138
> 
> It looks like pipe_context->clear called with PIPE_CLEAR_COLOR isn't applied
> immediately to the buffer.

That's correct. nine needs to resolve the clear using the pipe->flush_resource hook.


> The problem doesn't exist with R600_DEBUG=notiling

Fast clear only works with tiled surfaces.


> and it doesn't exists when using pipe_context->clear_render_target instead.

IIRC that's currently a software fallback.
Comment 2 Axel Davy 2015-10-02 08:25:53 UTC
(In reply to Michel Dänzer from comment #1)
> That's correct. nine needs to resolve the clear using the
> pipe->flush_resource hook.
> 

Nine does call it before sending the buffer to the server.
Comment 3 Axel Davy 2015-10-02 08:42:52 UTC
Ok, after discussion with Michel we realized the problem is that flush_resource should be called before flushing, and not after.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.