mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-06 23:20:40 +01:00
glamor: Check for composite operations which are equivalent to copies
Increases x11perf -compwinwin500 numbers by a factor of 10 for me with
radeonsi.
Conditions copied from exaComposite().
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit b64108fa30)
This commit is contained in:
parent
009304ef12
commit
d37329cba4
1 changed files with 23 additions and 0 deletions
|
|
@ -1404,6 +1404,29 @@ glamor_composite_clipped_region(CARD8 op,
|
|||
DEBUGF("clipped (%d %d) (%d %d) (%d %d) width %d height %d \n",
|
||||
x_source, y_source, x_mask, y_mask, x_dest, y_dest, width, height);
|
||||
|
||||
/* Is the composite operation equivalent to a copy? */
|
||||
if (!mask && !source->alphaMap && !dest->alphaMap
|
||||
&& source->pDrawable && !source->transform
|
||||
&& ((op == PictOpSrc
|
||||
&& ((source->format == dest->format
|
||||
|| (PICT_FORMAT_COLOR(dest->format)
|
||||
&& PICT_FORMAT_COLOR(source->format)
|
||||
&& dest->format == PICT_FORMAT(PICT_FORMAT_BPP(source->format),
|
||||
PICT_FORMAT_TYPE(source->format),
|
||||
0,
|
||||
PICT_FORMAT_R(source->format),
|
||||
PICT_FORMAT_G(source->format),
|
||||
PICT_FORMAT_B(source->format))))
|
||||
|| (op == PictOpOver
|
||||
&& source->format == dest->format
|
||||
&& !PICT_FORMAT_A(source->format)))))) {
|
||||
glamor_copy(source->pDrawable, dest->pDrawable, NULL,
|
||||
box, nbox, x_source - x_dest,
|
||||
y_source - y_dest, FALSE, FALSE, 0, NULL);
|
||||
ok = TRUE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* XXX is it possible source mask have non-zero drawable.x/y? */
|
||||
if (source
|
||||
&& ((!source->pDrawable
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue