Bug 89829

Summary: [bisected] radeonsi, commit 2cf48c creates artefacts in some applications (worst being Flash animations that are garbage)
Product: Mesa Reporter: Alexandre Demers <alexandre.f.demers>
Component: Drivers/Gallium/radeonsiAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact: Default DRI bug account <dri-devel>
Severity: normal    
Priority: medium CC: laura
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Error log from Chromium on a website with a wrongly rendered flash animation
Flash animation wrongly rendered

Description Alexandre Demers 2015-03-31 01:53:50 UTC
Created attachment 114739 [details]
Error log from Chromium on a website with a wrongly rendered flash animation

I've been having rendering issues most notably with Flash (using Pepper Flash with Chrome) for the last 2 weeks. I just had time to invetigate it. I'm using latest drm, ddx and mesa from git with a 4.0-rc6 kernel.

Any Flash animation is an absolute mess, the "thing" being displayed instead of what is expected coming from other parts of what is displayed or was just displayed elsewhere on the screen.

After bisecting, it appears the culprit commit is 2cf48c


main: Add entry point for CreateBuffers.
Author Laura Ekstrand<laura@jlekstrand.net>
Author date 14-12-18 20:10
Parent Revert "main: _mesa_cube_level_complete checks NumLayers."
Child main: Add entry point for NamedBufferStorage.
Branch origin/master (vc4: Drop integer multiplies with 0 to moves of 0.) 

    main: Add entry point for CreateBuffers.
    Reviewed-by: Martin Peres <martin.peres@linux.intel.com>

I'm also attaching an error log from Chromium when debugging a website with a flash animation (www.environnementestrie.ca).

Here is my bisect log.

--
git bisect log
git bisect start
# bad: [1dcc1ee314a6907213e2abd5337ec0bbba3bd1bf] vc4: Drop integer multiplies with 0 to moves of 0.
git bisect bad 1dcc1ee314a6907213e2abd5337ec0bbba3bd1bf
# good: [7a37d5c3a48c4adec5b5db589b0cb99dc9296f0c] r600g: Use R600_MAX_VIEWPORTS instead of 16
git bisect good 7a37d5c3a48c4adec5b5db589b0cb99dc9296f0c
# bad: [a815cd8449c207956176020e752cd0051ed842ec] i965: Don't disable exec masking for sampler message sends.
git bisect bad a815cd8449c207956176020e752cd0051ed842ec
# good: [567c8d73008a672cb71a84a4724829d34e1652b2] radeonsi: don't emit PA_SC_LINE_STIPPLE if not rendering lines
git bisect good 567c8d73008a672cb71a84a4724829d34e1652b2
# bad: [64788b2e8dc2ddedc2712ed02b7e9096638b7bae] i965: Throttle to the previous frame
git bisect bad 64788b2e8dc2ddedc2712ed02b7e9096638b7bae
# bad: [4f513bc330393c4615b4bad98e3e634408123960] main: Refactor MapBuffer[Range].
git bisect bad 4f513bc330393c4615b4bad98e3e634408123960
# good: [60f77b22b1e3bbef7e4d1f10012acf830d81ed7b] common.py: Fix PEP 8 issues.
git bisect good 60f77b22b1e3bbef7e4d1f10012acf830d81ed7b
# bad: [cb56835f870de01ed9c638d1470af38775bb6f72] main: Add entry point for NamedBufferData.
git bisect bad cb56835f870de01ed9c638d1470af38775bb6f72
# good: [44ecf0793d872e771edc448436f7a2fd7c3390f5] Revert "main: _mesa_cube_level_complete checks NumLayers."
git bisect good 44ecf0793d872e771edc448436f7a2fd7c3390f5
# bad: [a76808dc19580855eb39c0904f3254edd765aa50] main: Add entry point for NamedBufferStorage.
git bisect bad a76808dc19580855eb39c0904f3254edd765aa50
# bad: [2cf48c37c1e2946f7c0648e0a5927a90209f59a4] main: Add entry point for CreateBuffers.
git bisect bad 2cf48c37c1e2946f7c0648e0a5927a90209f59a4
# first bad commit: [2cf48c37c1e2946f7c0648e0a5927a90209f59a4] main: Add entry point for CreateBuffers.
Comment 1 Alexandre Demers 2015-03-31 01:57:23 UTC
Created attachment 114740 [details]
Flash animation wrongly rendered

We should see a carrousel animation. Each time the picture changes, the flash animation flickers and some OpenGL errors are added in debug mode.
Comment 2 Michel Dänzer 2015-03-31 02:01:38 UTC
Laura, any ideas?
Comment 3 Laura Ekstrand 2015-03-31 18:08:02 UTC
Does this bug happen on any drivers/platforms besides Chromium on radeonsi?

I don't have the setup you have, so it's hard for me to test this.  I took a look at the named commit, but it's pretty benign.  No error messages are changed and the functionality is not directly related to framebuffer objects.  (It's the code for Gen buffer objects).  I would be really surprised if this was actually the culprit.
Comment 4 Alexandre Demers 2015-04-01 05:31:29 UTC
(In reply to Laura Ekstrand from comment #3)
> Does this bug happen on any drivers/platforms besides Chromium on radeonsi?
> 
> I don't have the setup you have, so it's hard for me to test this.  I took a
> look at the named commit, but it's pretty benign.  No error messages are
> changed and the functionality is not directly related to framebuffer
> objects.  (It's the code for Gen buffer objects).  I would be really
> surprised if this was actually the culprit.

If I recompile mesa with the commit just before the one identified as problematic, everything goes back to normal.

Sadly, I can't tell about Firefox for example, since it's been freezing for some time now, unrelated to the current bug...

I'm using LLVM 3.6. I've also compiled and tested with latest svn version and the same bug appears.

I'll have a look at Steam when launched from a terminal: I may have seen something that began at the same time as the bug seen with Flash and Chromium. I'll be back with more info.
Comment 5 Michel Dänzer 2015-04-01 05:36:32 UTC
Alexandre, is Chromium picking up your self-built libglapi.so.0 as well as libGL.so.1?
Comment 6 Laura Ekstrand 2015-04-01 19:18:16 UTC
Hi.

I installed google chrome on my Fedora 21 and ran it under my build of libGL. The carousel at http://www.environnementestrie.ca/ worked just fine for me.
Comment 7 Alexandre Demers 2015-04-02 03:28:32 UTC
(In reply to Laura Ekstrand from comment #6)
> Hi.
> 
> I installed google chrome on my Fedora 21 and ran it under my build of
> libGL. The carousel at http://www.environnementestrie.ca/ worked just fine
> for me.

Ok, I'll investigate Michel's question about libgl*. I should have an update on the matter probably on Friday, I don't think I'll have time before that.
Comment 8 Alexandre Demers 2015-04-02 23:40:24 UTC
(In reply to Michel Dänzer from comment #5)
> Alexandre, is Chromium picking up your self-built libglapi.so.0 as well as
> libGL.so.1?

I think it is OK on that side... I built and installed mesa at 19:13 today. Everything seems to come from the right place, isn't it?

ademers@Xander:~$ ldd /usr/lib/chromium/chromium | grep GL
	libEGL.so.1 => /usr/lib/libEGL.so.1 (0x00007fb7efae9000)
	libGL.so.1 => /usr/lib/libGL.so.1 (0x00007fb7ef1f6000)
ademers@Xander:~$ ldd /usr/lib/chromium/chromium | grep gl
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f5d14ba1000)
	libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007f5d06c43000)
	libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007f5d06410000)
ademers@Xander:~$ ls -lAh /usr/lib/libEGL* /usr/lib/libglapi.* /usr/lib/mesa/libEGL.*
lrwxrwxrwx 1 root root   23  2 avr 19:13 /usr/lib/libEGL.la -> /usr/lib/mesa/libEGL.la
lrwxrwxrwx 1 root root   23  2 avr 19:13 /usr/lib/libEGL.so -> /usr/lib/mesa/libEGL.so
lrwxrwxrwx 1 root root   25  2 avr 19:13 /usr/lib/libEGL.so.1 -> /usr/lib/mesa/libEGL.so.1
lrwxrwxrwx 1 root root   29  2 avr 19:13 /usr/lib/libEGL.so.1.0.0 -> /usr/lib/mesa/libEGL.so.1.0.0
-rwxr-xr-x 1 root root  926  2 avr 19:12 /usr/lib/libglapi.la
lrwxrwxrwx 1 root root   17  2 avr 19:12 /usr/lib/libglapi.so -> libglapi.so.0.0.0
lrwxrwxrwx 1 root root   17  2 avr 19:12 /usr/lib/libglapi.so.0 -> libglapi.so.0.0.0
-rwxr-xr-x 1 root root 530K  2 avr 19:12 /usr/lib/libglapi.so.0.0.0
-rwxr-xr-x 1 root root 1,1K  2 avr 19:12 /usr/lib/mesa/libEGL.la
lrwxrwxrwx 1 root root   15  2 avr 19:12 /usr/lib/mesa/libEGL.so -> libEGL.so.1.0.0
lrwxrwxrwx 1 root root   15  2 avr 19:12 /usr/lib/mesa/libEGL.so.1 -> libEGL.so.1.0.0
-rwxr-xr-x 1 root root 499K  2 avr 19:12 /usr/lib/mesa/libEGL.so.1.0.0

Full ldd on chromium:
ldd /usr/lib/chromium/chromium
	linux-vdso.so.1 (0x00007ffe41c66000)
	librt.so.1 => /usr/lib/librt.so.1 (0x00007f5b96f91000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f5b96d8d000)
	libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f5b96b3c000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f5b9682e000)
	libevent-2.0.so.5 => /usr/lib/libevent-2.0.so.5 (0x00007f5b965e5000)
	libicui18n.so.54 => /usr/lib/libicui18n.so.54 (0x00007f5b9618e000)
	libicuuc.so.54 => /usr/lib/libicuuc.so.54 (0x00007f5b95dfe000)
	libsmime3.so => /usr/lib/libsmime3.so (0x00007f5b95bd7000)
	libnss3.so => /usr/lib/libnss3.so (0x00007f5b958b0000)
	libnssutil3.so => /usr/lib/libnssutil3.so (0x00007f5b95684000)
	libplc4.so => /usr/lib/libplc4.so (0x00007f5b9547f000)
	libnspr4.so => /usr/lib/libnspr4.so (0x00007f5b95240000)
	libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007f5b94eca000)
	libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007f5b94c8d000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f5b949d0000)
	libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007f5b947c3000)
	libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007f5b94493000)
	libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007f5b94247000)
	libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f5b93fea000)
	libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f5b93db4000)
	libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007f5b93b5a000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f5b93818000)
	libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f5b93607000)
	libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00007f5b933fc000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f5b931ea000)
	libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f5b92fe4000)
	libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00007f5b92dda000)
	libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x00007f5b92bd7000)
	libpci.so.3 => /usr/lib/libpci.so.3 (0x00007f5b929ca000)
	libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f5b926cf000)
	libpulse.so.0 => /usr/lib/libpulse.so.0 (0x00007f5b9247e000)
	libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007f5b9227b000)
	libXtst.so.6 => /usr/lib/libXtst.so.6 (0x00007f5b92075000)
	libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00007f5b91e6b000)
	libsnappy.so.1 => /usr/lib/libsnappy.so.1 (0x00007f5b91c65000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f5b91a3b000)
	libcups.so.2 => /usr/lib/libcups.so.2 (0x00007f5b917bf000)
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f5b915a2000)
	libspeechd.so.2 => /usr/lib/libspeechd.so.2 (0x00007f5b91399000)
	libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0x00007f5b91150000)
	libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x00007f5b90edd000)
	libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x00007f5b9089b000)
	libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00007f5b905e5000)
	libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007f5b903bf000)
	libXss.so.1 => /usr/lib/libXss.so.1 (0x00007f5b901bb000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f5b8feac000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007f5b8fba7000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f5b8f991000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007f5b8f5ee000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5b97199000)
	libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f5b8f37f000)
	libffi.so.6 => /usr/lib/libffi.so.6 (0x00007f5b8f176000)
	libicudata.so.54 => /usr/lib/libicudata.so.54 (0x00007f5b8d74c000)
	libplds4.so => /usr/lib/libplds4.so (0x00007f5b8d548000)
	libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f5b8d344000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007f5b8d12e000)
	libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f5b8cf17000)
	libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007f5b8cd07000)
	libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x00007f5b8caf1000)
	libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f5b8c8ef000)
	libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007f5b8c642000)
	libEGL.so.1 => /usr/lib/libEGL.so.1 (0x00007f5b8c411000)
	libxcb-shm.so.0 => /usr/lib/libxcb-shm.so.0 (0x00007f5b8c20d000)
	libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007f5b8c003000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f5b8bde1000)
	libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f5b8bb1e000)
	libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007f5b8b900000)
	libjson-c.so.2 => /usr/lib/libjson-c.so.2 (0x00007f5b8b6f5000)
	libpulsecommon-6.0.so => /usr/lib/pulseaudio/libpulsecommon-6.0.so (0x00007f5b8b476000)
	libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007f5b8b229000)
	libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007f5b8af44000)
	libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007f5b8ad11000)
	libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007f5b8ab0d000)
	libgnutls.so.28 => /usr/lib/libgnutls.so.28 (0x00007f5b8a7ea000)
	libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0x00007f5b8a5dd000)
	libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0x00007f5b8a3cc000)
	libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0x00007f5b8a195000)
	libltdl.so.7 => /usr/lib/libltdl.so.7 (0x00007f5b89f8b000)
	libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f5b89d84000)
	libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00007f5b89b5e000)
	libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007f5b8995b000)
	libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f5b89759000)
	libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007f5b89554000)
	libxcb-xfixes.so.0 => /usr/lib/libxcb-xfixes.so.0 (0x00007f5b8934c000)
	libxcb-shape.so.0 => /usr/lib/libxcb-shape.so.0 (0x00007f5b89148000)
	libgbm.so.1 => /usr/lib/libgbm.so.1 (0x00007f5b88f38000)
	libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x00007f5b88d29000)
	libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x00007f5b88b17000)
	libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007f5b888d0000)
	libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f5b886c1000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f5b884bd000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f5b882b7000)
	libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007f5b8809d000)
	libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0x00007f5b87e9a000)
	libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0x00007f5b87c97000)
	libxcb-randr.so.0 => /usr/lib/libxcb-randr.so.0 (0x00007f5b87a89000)
	libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0x00007f5b87882000)
	libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x00007f5b8767f000)
	libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007f5b87479000)
	libsystemd.so.0 => /usr/lib/libsystemd.so.0 (0x00007f5b97329000)
	libsndfile.so.1 => /usr/lib/libsndfile.so.1 (0x00007f5b87211000)
	libasyncns.so.0 => /usr/lib/libasyncns.so.0 (0x00007f5b8700b000)
	libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007f5b86dfe000)
	libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007f5b86bfa000)
	libp11-kit.so.0 => /usr/lib/libp11-kit.so.0 (0x00007f5b86994000)
	libtasn1.so.6 => /usr/lib/libtasn1.so.6 (0x00007f5b86781000)
	libnettle.so.4 => /usr/lib/libnettle.so.4 (0x00007f5b86553000)
	libhogweed.so.2 => /usr/lib/libhogweed.so.2 (0x00007f5b86324000)
	libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007f5b86092000)
	libcap.so.2 => /usr/lib/libcap.so.2 (0x00007f5b85e8e000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f5b85c68000)
	liblz4.so.1 => /usr/lib/liblz4.so.1 (0x00007f5b85a5d000)
	libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007f5b8577c000)
	libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f5b8556a000)
	libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00007f5b852c1000)
	libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f5b85094000)
	libnsl.so.1 => /usr/lib/libnsl.so.1 (0x00007f5b84e7c000)
	libattr.so.1 => /usr/lib/libattr.so.1 (0x00007f5b84c77000)
Comment 9 Alexandre Demers 2015-04-02 23:49:22 UTC
Also, it seems that Firefox is not experiencing this problem (I now have a working Firefox setup and I forced it to enable hardware acceleration)... Displaying the caroussel from the same website works correctly.
Comment 10 Apostolos B. 2015-04-03 06:45:51 UTC
I have a similar problem with mesa 10.5. My whole screen looks like the flash animation image when using the opengl compositor on Enlightenment E19. Renders the machine unusable. If i revert back to 10.4.6 it works fine. 

Barts 6850 radeon r600g driver.
Comment 11 Michel Dänzer 2015-04-03 08:34:50 UTC
(In reply to Apostolos B. from comment #10)
> I have a similar problem with mesa 10.5. My whole screen looks like the
> flash animation image when using the opengl compositor on Enlightenment E19.
> Renders the machine unusable. If i revert back to 10.4.6 it works fine. 
> 
> Barts 6850 radeon r600g driver.

It may look similar, but it's unlikely to be the same problem. Please file your own report, and it would be very useful if you can bisect between 10.4.6 and 10.5.
Comment 12 Alexandre Demers 2015-04-15 05:11:38 UTC
Retested with last weekend code and it was still problematic. So today I intended to investigate the bug. I had narrowed it to the create/generate buffer. Then, I synced my code to today's commits, commented out the part where we were creating/generating buffers so only dummy buffers would be used and tested it again, and it was fine. Finally, I reverted any changes I had made, rebuilt, installed it along a new pepper-flash plugin and this time everything is fine.

Because I updated both mesa to the latest git code at the same time as the pepper-flash plugin, I can't tell which one was problematic, but it is now fixed. Closing this bug

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.