Created attachment 110981 [details] dmesg file Environment: ----------------------------------- Test Platform:IVB/BDW GFX SW Stack Libdrm: (master)libdrm-2.4.58-19-gf99522e678dbbaffeca9462a8edcbe900574dc12 Mesa: (master)83e8bb5b1a50c0105b642d559999f07fa64a982f Xserver: (master)xorg-server-1.16.99.901-98-g0f5fdaf600bfeada966aea942cb3e347d4efee30 Xf86_video_intel: (master)2.99.916-177-g99537089346ed7a1bc6b02349fad93845e865bb9 Cairo: (master)4a225fca5f121c31ddaa0af80a13bf95a7f21a5b Libva: (master)8986ec692b19d8dd6bd2aa118b5dffbd05a8f909 Libva_intel_driver: (master)b5d6d9d425a6d539b27d22992bda05f79d1a0622 Kernel: (drm-intel-nightly)8b7ac3dc495c2d02322bc751322331d2691089e5 Regression: ----------------------------------- YES Bug detailed description: --------------------------------------------- Firefox-fishbowl.trace and Firefox-fishtank.trace performance reduced ~96%. It's Cairo regression, from bisect result, first bad commit is: 58728da6eba4d89ba7c4328b22a552af633abb05 Author: Bill Spitzak <spitzak@gmail.com> Date: Thu Oct 9 19:46:13 2014 -0700 xlib: Use image fallback for GOOD/BEST filters Fallback is not used if the symbols defined in the previous patch to indicate if XRender does GOOD/BEST are true. This patch also includes some changes to take advantage of the fact that if there is an integer translation analyze_filter will already have set the filter to NEAREST. Reviewed-by: Bryce Harrington <b.harrington@samsung.com Reproduce steps: --------------------------------------------- 1, xinit 2, vblank_mode=0 CAIRO_TEST_TARGET=xlib ./cairo-perf-trace -i 12 /home/cairo-traces/benchmark/firefox-fishbowl.trace dmesg and xorg.log files have been uploaded.
Created attachment 110982 [details] Xorg log
If the filter is left at the default of CAIRO_FILTER_GOOD this is to be expected. Changing the filter to CAIRO_FILTER_BILINEAR should restore the speed. An actual fix will require adding code to pixman so that the filtering can be done in the X server. Otherwise making images into pixmaps in an attempt to speed things up actually make it slower as they just have to be read back into the client program to do the transform. It may also be necessary to implement 2-pass filtering.
Has a bug been filed about this with Pixman? If so, can we close this bug as wontfix, since the performance delta is a documented change for 1.14? I also wonder if the test suite needs to be modified to use the faster scaling?
Submitted bug 89499 - [IVB/BDW Bisected] Pixmap need filter CAIRO_FILTER_GOOD and CAIRO_FILTER_BILINEAR to track the actual fix solution. And close this bug as will not fix.
This bug is in the xlib backend not pixman.
(Remember that even at best, pixman will be orders of magnitude slower than a GPU here.)
I would like to see some indication that code submitted to pixman will be merged or at least looked at. Currently a patch to move the filtering from Cairo to Pixman has been outstanding on the mailing list for 4 months with no feedback. If this was merged I would like to try working on a true 2-pass algorithm which can only be done in Pixman, not in Cairo. I got feedback for an earlier version of the patch. I believe I addressed the problems listed in the feedback, but even if not new feedback would be appreciated. Patch is in Pixman mailing list, message id <1419385932-13261-1-git-send-email-spitzak@gmail.com>
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/cairo/cairo/issues/117.
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.