the kdrive merge depends on semantic changes in libshadow. those changes have the advantage of significantly reducing LOC by reusing the Damage machinery, in addition to cutting a layer out of the GC chain.
Created attachment 4199 [details] [review] miext-shadow-merge-from-kdrive-1.patch there's a subtlety here, which is that shadow is a loadable module in the xorg ddx. since they don't bother to check the module version (lame!), it's easiest to just preserve binary compatibility by keeping the ->damage member around and filling it in as appropriate. also this patch will break kdrive, since it still uses the old names of shadowAdd/shadowRemove instead of the kdrive shadowSet/shadowUnset names. the reason again is BC, kdrive is a monolith whereas xorg has an ABI to worry about. it's a simple fix though.
Created attachment 4221 [details] [review] miext-shadow-merge-from-kdrive-2.patch first one had a bad config.h stanza. note that this isn't a complete kdrive import. there's also some mildly accelerated code for rotated shadows which isn't brought across yet. see also bug #4537, which is a different approach to that issue.
Can we get this committed now ? Also getting damage across would be good.
Something is screwy with the patch at line 53 that has .... @@ -63,1400 +49,121 @@ int shadowGeneration
Created attachment 4396 [details] [review] miext-shadow-merge-from-kdrive-3.patch rediff with -p turned off in case that was the problem
Created attachment 4397 [details] [review] last patch didn't compile - this one fixes that.
Committed a slight variation.
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.