Bug 103389

Summary: [regression, bisected] Bad flickering of items in steam, completely broken graphics in Rocket League
Product: Mesa Reporter: Gregor Münch <gr.muench>
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: bartos.petr
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: regressed steam menu
Rocket League ingame
glxgears bug
Layers of Fear segfault

Description Gregor Münch 2017-10-21 10:39:36 UTC
Created attachment 134972 [details]
regressed steam menu

Steam has some very bad flickering of menu items in latest mesa git. 

OpenGL renderer string: AMD Radeon HD 7900 Series (TAHITI / DRM 3.23.0 / 4.13.0-2-amd-staging-drm-next-git, LLVM 6.0.0)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.3.0-devel (git-0fdd531457)

Bisected to:

2f4705afde707e8eb41b9414c25df91aa1ea2fb3 is the first bad commit
commit 2f4705afde707e8eb41b9414c25df91aa1ea2fb3
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Sun Oct 8 03:44:07 2017 +0200

    radeonsi: if there's just const buffer 0, set it in place of CONST/SSBO pointer
    
    SI_SGPR_CONST_AND_SHADER_BUFFERS now contains the pointer to const buffer 0
    if there is no other buffer there.
    
    Benefits:
    - there is no constbuf descriptor upload and shader load
    
    It's assumed that all constant addresses are within bounds. Non-constant
    addresses are clamped against the last declared CONST variable.
    This only works if the state tracker ensures the bound constant buffer
    matches what the shader needs.
    
    Once we get 32-bit pointers, we can only do this for user constant buffers
    where the driver is in charge of the upload so that it can guarantee a 32-bit
    address.
    
    The real performance benefit might not be measurable.
    
    These apps get 100% theoretical benefit in all shaders (except where noted):
    - antichamber
    - barman arkham origins
    - borderlands 2
    - borderlands pre-sequel
    - brutal legend
    - civilization BE
    - CS:GO
    - deadcore
    - dota 2 -- most shaders
    - europa universalis
    - grid autosport -- most shaders
    - left 4 dead 2
    - legend of grimrock
    - life is strange
    - payday 2
    - portal
    - rocket league
    - serious sam 3 bfe
    - talos principle
    - team fortress 2
    - thea
    - unigine heaven
    - unigine valley -- also sanctuary and tropics
    - wasteland 2
    - xcom: enemy unknown & enemy within
    - tesseract
    - unity (engine)
    
    Changed stats only:
        SGPRS: 2059998 -> 2086238 (1.27 %)
        VGPRS: 1626888 -> 1626904 (0.00 %)
        Spilled SGPRs: 7902 -> 7865 (-0.47 %)
        Code Size: 60924520 -> 60982660 (0.10 %) bytes
        Max Waves: 374539 -> 374526 (-0.00 %)
    
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>

:040000 040000 7b660ccfb110c80ecd9b3d2f7f06ace5380cb76f d8ddc8515150a84131e566c4ddafb05d3d7be0a7 M	src


Confirmed bad commit by reverting it.
Comment 1 Gregor Münch 2017-10-21 14:23:40 UTC
Created attachment 134975 [details]
Rocket League ingame

Rocket League is also badly broken. Reverting the commit also helps here.
Comment 2 bartos.petr 2017-10-21 17:45:24 UTC
This commit also breaks linux version of Layers of Fear (flickering lights/shadows in some areas), Clive Barkers Jericho (black background of menu instead of animated "flesh", white/overbrighted screen in-game) and even glxgears (weird pulsating lights)
Comment 3 bartos.petr 2017-10-21 17:46:07 UTC
Created attachment 134979 [details]
glxgears bug
Comment 4 Marek Olšák 2017-10-27 11:08:20 UTC
Fixed with https://cgit.freedesktop.org/mesa/mesa/commit/?id=3f8e3c2bd8f54ae6817f7496be47f4e1a8860d9c

You also need to update LLVM 6.0 from git or switch to LLVM 5.0. Anything in between will lead to the same corruption.
Comment 5 bartos.petr 2017-10-29 15:23:26 UTC
Created attachment 135156 [details]
Layers of Fear segfault

Hi,
I`ve upgraded to latest git versions of mesa, llvm, clang and compiler-rt. Jericho and glxgears are fixed, however Layers of Fear segfaults on start.

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.