Bug 3949 - Optimization for transforms and repeating pictures
Summary: Optimization for transforms and repeating pictures
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/General (show other bugs)
Version: git
Hardware: x86 (IA32) Linux (All)
: high normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-08-02 08:34 UTC by Owen Taylor
Modified: 2013-03-15 16:02 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Owen Taylor 2005-08-02 08:34:40 UTC
A long-standing bug in RENDER has been that the combination of repeating
pictures and transforms don't work.

A patch for this was originally supplied in:

 http://lists.freedesktop.org/archives/cairo/2004-September/001839.html

(pipermail has eaten the message, sadly). These patches were later
merged into the xserver tree, and mostly then found there way into
xorg. However, there is one fix from the patch that got lost - 
handling the repeat in fbComposite makes no sense when the repeat
is in the source and the source is transformed; we're handling it
when fetching from the source.

I'll attach that.
Comment 1 Owen Taylor 2005-08-02 08:35:54 UTC
Created attachment 3208 [details]
GPG Key for Sami Wagiaalla

The patch I've attached is pulled from a diff between the xserver and
xorg copies of fb/.
Comment 2 Alan Coopersmith 2005-08-02 09:21:48 UTC
fb in the current monolith won't build with this patch applied:

"fbpict.c", line 1238: undefined symbol: srcTransform
"fbpict.c", line 1240: undefined symbol: maskTransform
Comment 3 Owen Taylor 2005-08-02 10:11:05 UTC
Ah, sorry, didn't notice those variables were xserver additions that does
a better job merging up between the two trees. (unfortunately, I don't have
a building copy of xorg to to test on at the moment)
Comment 4 Owen Taylor 2005-08-02 10:21:14 UTC
Created attachment 3210 [details]
GPG Key for Andrew Cowie

Here's a more careful merge that takes care of merging the other
changes that Dave Reveman put into fbComposite() when he added the
fix (you could do something simpler to get my patch to compile and work, but I
think it is important to reduce xserver/xorg divergence for fb/)

Note that with this patch, *both* xserver and xorg have unecessary
checks:

	 && (pSrc->filter != PictFilterConvolution)
	 && (!pMask || pMask->filter != PictFilterConvolution))

Unnecessary because earlier we have:

+    if (pSrc->filter == PictFilterConvolution)
+	srcTransform = TRUE

+	if (pMask->filter == PictFilterConvolution)
+	    maskTransform = TRUE;

That needs to be fixed in both trees simultaneously so I did *not*
fix it in this patch. Again, the goal here is to keep divergence to a 
minimum.
Comment 5 Owen Taylor 2005-08-02 10:22:25 UTC
Reopening from NEEDINFO.
Comment 6 Alan Coopersmith 2005-10-09 01:05:59 UTC
Previously attached patch lost in bugzilla disk death.
Comment 7 Owen Taylor 2005-10-09 05:18:55 UTC
The original patch was something like (pseudo-patch):

    compose_data.op = op;
    compose_data.src = pSrc;
    compose_data.mask = pMask;
    compose_data.dest = pDst;
    if (width > SCANLINE_BUFFER_LENGTH)
        scanline_buffer = (CARD32 *) malloc(width * 3 * sizeof(CARD32));

+    if (pSrc->transform)
+      srcRepeat = 0;
+    if (pMask && pMask->transform)
+      maskRepeat = 0

    n = REGION_NUM_RECTS (&region);
    pbox = REGION_RECTS (&region);

I have no recollection of what else I merged in the later patch.
Comment 8 Daniel Stone 2007-02-27 01:27:32 UTC
Sorry about the phenomenal bug spam, guys.  Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Comment 9 chemtech 2013-03-15 14:36:27 UTC
Owen Taylor 
Do you still experience this issue with newer soft ?
Please check the status of your issue.
Comment 10 Owen Taylor 2013-03-15 16:02:44 UTC
This code got moved to pixman, and (as far as I can tell from a quick read) this no longer applies.


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.