Summary: | Optimization for transforms and repeating pictures | ||
---|---|---|---|
Product: | xorg | Reporter: | Owen Taylor <otaylor> |
Component: | Server/General | Assignee: | Xorg Project Team <xorg-team> |
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | normal | ||
Priority: | high | ||
Version: | git | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Owen Taylor
2005-08-02 08:34:40 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/.
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 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) 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.
Reopening from NEEDINFO. Previously attached patch lost in bugzilla disk death. 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 (®ion); pbox = REGION_RECTS (®ion); I have no recollection of what else I merged in the later patch. Sorry about the phenomenal bug spam, guys. Adding xorg-team@ to the QA contact so bugs don't get lost in future. Owen Taylor Do you still experience this issue with newer soft ? Please check the status of your issue. 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.