On Tue, Sep 8, 2009 at 8:26 AM, Pauli Nieminen<[email protected]> wrote:
> Bliting data while some of engines is still running or 2D engine as dirty
> cache may cause pixmap or font glyph corruption.
>
> Fix is to wait for 3D engine to be idle. Then we have to also flush 2D engine
> in case if cache has outdated data for system memory where we are going to 
> blit.
>
> While it would be better only to flush when necessary it is very hard to know
> when it is required. So we do flush every time because it is better to be safe
> than sorry.
>
> Signed-off-by: Pauli Nieminen <[email protected]>
> ---
>  drivers/gpu/drm/radeon/r100.c |   11 ++++++++++-
>  1 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
> index b6a7472..8becc68 100644
> --- a/drivers/gpu/drm/radeon/r100.c
> +++ b/drivers/gpu/drm/radeon/r100.c
> @@ -431,12 +431,21 @@ int r100_copy_blit(struct radeon_device *rdev,
>        num_loops = DIV_ROUND_UP(num_pages, 8191);
>
>        /* Ask for enough room for blit + flush + fence */
> -       ndw = 64 + (10 * num_loops);
> +       ndw = 70 + (10 * num_loops);
>        r = radeon_ring_lock(rdev, ndw);
>        if (r) {
>                DRM_ERROR("radeon: moving bo (%d) asking for %u dw.\n", r, 
> ndw);
>                return -EINVAL;
>        }
> +
> +       radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
> +       radeon_ring_write(rdev,
> +                         RADEON_WAIT_3D_IDLECLEAN);

You should just be able to set both RADEON_WAIT_3D_IDLECLEAN and
RADEON_WAIT_2D_IDLECLEAN here rather than appending a second packet 0.


> +       radeon_ring_write(rdev, PACKET0(RADEON_DSTCACHE_CTLSTAT, 0));
> +       radeon_ring_write(rdev, RADEON_RB2D_DC_FLUSH_ALL);
> +       radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
> +       radeon_ring_write(rdev,
> +                         RADEON_WAIT_2D_IDLECLEAN);
>        while (num_pages > 0) {
>                cur_pages = num_pages;
>                if (cur_pages > 8191) {
> --
> 1.6.3.3
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> --
> _______________________________________________
> Dri-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/dri-devel
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to