Bug 84178

Summary: Big glamor regression in Xorg server 1.6.99.1 GIT: x11perf 1.5 Test: PutImage XY 500x500 Square
Product: xorg Reporter: darkbasic <darkbasic>
Component: Server/Acceleration/glamorAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description darkbasic 2014-09-22 11:36:27 UTC
x11perf 1.5 Test: PutImage XY 500x500 Square regression:
http://openbenchmarking.org/embed.php?i=1409222-LI-1405080SO58&sha=67a231b&c=d32af06557dfa91a82357924c1464e8b612297f2&p=1

Full benchmark (there are some other minor regressions): http://openbenchmarking.org/result/1409222-LI-1405080SO58&embed_export=1
Comment 1 darkbasic 2014-09-22 19:09:25 UTC
It is radeon specific: Keith Packard cannot reproduce it.
Comment 2 Michel Dänzer 2014-09-24 02:50:39 UTC
Do you know of any real world applications using this functionality?
Comment 3 Michel Dänzer 2014-09-24 02:52:16 UTC
Can you bisect?
Comment 4 darkbasic 2014-09-24 07:18:12 UTC
Yes, I will try to bisect it.
Comment 5 darkbasic 2014-09-24 13:42:25 UTC
I wasted hours bisecting the xorg server without success and then hours bisecting mesa but this damn bug is in the kernel. I will try to bisect kernel too, damn I fucking hate bisecting kernel.
Comment 6 darkbasic 2014-09-24 13:43:21 UTC
3.14.3 gives 61.7/sec in PutImage XY 500x500 square while drm-next-3.18 only 0.6.
Comment 7 darkbasic 2014-09-24 16:21:27 UTC
Unfortunately I will not be able to bisect the kernel until at least next week.
Comment 8 Michel Dänzer 2014-09-25 04:01:49 UTC
No need to bisect, I know what the problem is.
Comment 9 darkbasic 2014-09-25 08:23:17 UTC
Awesome, thanks.
Comment 10 Michel Dänzer 2014-09-26 08:12:09 UTC
I just pushed the Mesa side of the fix to Git master, see below. The glamor side of the fix has been reviewed but not applied yet.

Module: Mesa
Branch: master
Commit: 7e55c3b352b6616fa2780f683dd6c8e1a3f61815
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e55c3b352b6616fa2780f683dd6c8e1a3f61815

Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Thu Sep 25 15:29:56 2014 +0900

st/mesa: Use PIPE_USAGE_STAGING for GL_STATIC/DYNAMIC/STREAM_READ buffers

Such buffers can only be useful by reading from them with the CPU, so we
need to make sure CPU reads are fast.
Comment 11 Michel Dänzer 2014-09-30 00:55:13 UTC
commit d3d845ca9e92f0a2ccde93f4242d7769cfe14164
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Thu Sep 25 15:27:22 2014 +0900

    glamor: Use GL_STREAM_READ also for read/write access to a PBO
    
    Otherwise the CPU may end up reading from non-cacheable memory, which is
    very slow.

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.