sna/gen2+: Force upload rather than perform source transformations on the CPU

If both the source and destination is on the CPU, then the thinking was
it would be quicker to operate on those on the CPU rather than copy both
to the GPU and then perform the operation. This turns out to be a false
assumption if transformation is involved -- something to be reconsidered
if pixman should ever be improved.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2012-02-08 13:15:46 +00:00
parent 8634d461bd
commit 4d8369f8e6
6 changed files with 42 additions and 6 deletions

View File

@ -1506,10 +1506,16 @@ has_alphamap(PicturePtr p)
return p->alphaMap != NULL;
}
static bool
untransformed(PicturePtr p)
{
return !p->transform || pixman_transform_is_int_translate(p->transform);
}
static bool
need_upload(PicturePtr p)
{
return p->pDrawable && unattached(p->pDrawable);
return p->pDrawable && unattached(p->pDrawable) && untransformed(p);
}
static bool

View File

@ -2418,10 +2418,16 @@ has_alphamap(PicturePtr p)
return p->alphaMap != NULL;
}
static bool
untransformed(PicturePtr p)
{
return !p->transform || pixman_transform_is_int_translate(p->transform);
}
static bool
need_upload(PicturePtr p)
{
return p->pDrawable && unattached(p->pDrawable);
return p->pDrawable && unattached(p->pDrawable) && untransformed(p);
}
static bool

View File

@ -2015,10 +2015,16 @@ has_alphamap(PicturePtr p)
return p->alphaMap != NULL;
}
static bool
untransformed(PicturePtr p)
{
return !p->transform || pixman_transform_is_int_translate(p->transform);
}
static bool
need_upload(PicturePtr p)
{
return p->pDrawable && unattached(p->pDrawable);
return p->pDrawable && unattached(p->pDrawable) && untransformed(p);
}
static bool

View File

@ -2043,10 +2043,16 @@ has_alphamap(PicturePtr p)
return p->alphaMap != NULL;
}
static bool
untransformed(PicturePtr p)
{
return !p->transform || pixman_transform_is_int_translate(p->transform);
}
static bool
need_upload(PicturePtr p)
{
return p->pDrawable && unattached(p->pDrawable);
return p->pDrawable && unattached(p->pDrawable) && untransformed(p);
}
static bool

View File

@ -2324,10 +2324,16 @@ has_alphamap(PicturePtr p)
return p->alphaMap != NULL;
}
static bool
untransformed(PicturePtr p)
{
return !p->transform || pixman_transform_is_int_translate(p->transform);
}
static bool
need_upload(PicturePtr p)
{
return p->pDrawable && unattached(p->pDrawable);
return p->pDrawable && unattached(p->pDrawable) && untransformed(p);
}
static bool

View File

@ -2328,10 +2328,16 @@ has_alphamap(PicturePtr p)
return p->alphaMap != NULL;
}
static bool
untransformed(PicturePtr p)
{
return !p->transform || pixman_transform_is_int_translate(p->transform);
}
static bool
need_upload(PicturePtr p)
{
return p->pDrawable && unattached(p->pDrawable);
return p->pDrawable && unattached(p->pDrawable) && untransformed(p);
}
static bool