Bug 91808 - trine1 misrender r600g
Summary: trine1 misrender r600g
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/r600 (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Default DRI bug account
QA Contact: Default DRI bug account
URL:
Whiteboard:
Keywords:
: 99403 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-08-30 11:24 UTC by Martin Bednar
Modified: 2018-05-13 07:12 UTC (History)
4 users (show)

See Also:
i915 platform:
i915 features:


Attachments
misrendered scene (1.92 MB, image/png)
2015-08-30 11:24 UTC, Martin Bednar
Details
corrrect rendering. (301.67 KB, image/jpeg)
2015-09-01 06:38 UTC, Martin Bednar
Details
apitrace replay on nouveau (11.0 rc-1) (2.09 MB, image/png)
2015-09-01 12:30 UTC, Martin Bednar
Details
Trine1 glitchy gear draw command uses this Vertex Shader. The file contains glsl, glsl ir, tgsi, vliw5 and SB optimized vliw5 variants of the same shader. (62.60 KB, text/plain)
2018-03-31 23:41 UTC, i.kalvachev
Details
April 2018 Graphical Artifact Screenshots (12.61 MB, application/gzip)
2018-04-21 06:04 UTC, Hamish Wilson
Details
attempted fix (1.46 KB, patch)
2018-04-23 21:40 UTC, Dave Airlie
Details | Splinter Review
clamp constant buffer data (1.11 KB, patch)
2018-05-09 05:45 UTC, Dave Airlie
Details | Splinter Review

Description Martin Bednar 2015-08-30 11:24:00 UTC
Created attachment 117987 [details]
misrendered scene

Trine 1 misrenders sometimes on HD6950, with mesa 11.0 rc

OpenGL renderer string: Gallium 0.4 on AMD CAYMAN (DRM 2.42.0, LLVM 3.6.2)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.0.0-rc1
OpenGL core profile shading language version string: 3.30

See attached screenshot.
I also made an apitrace, but am unsure as to where to post it.
Comment 1 Martin Bednar 2015-08-30 11:35:41 UTC
apitrace : http://uloz.to/xh9tNZr9/trine1-linux-32bit-trace 
Can upload elsewhere if trouble arises :)
Comment 2 Alex Deucher 2015-08-31 03:21:06 UTC
Possibly a duplicate of bug 66067.
Comment 3 Martin Bednar 2015-08-31 08:50:55 UTC
From what I gather, 66067 is about colors & luminosity. I reported this because of the line that goes vertically through the whole screen. On the screenshot it is located under "paused". 
The sources of the line are AFAICS the gears just above the spiky area.
Specifying now just to make sure that we're talking about the same thing.
Comment 4 Alex Deucher 2015-08-31 13:10:45 UTC
(In reply to Martin Bednar from comment #3)
> From what I gather, 66067 is about colors & luminosity. I reported this
> because of the line that goes vertically through the whole screen. On the
> screenshot it is located under "paused". 
> The sources of the line are AFAICS the gears just above the spiky area.
> Specifying now just to make sure that we're talking about the same thing.

I'm not sure what line you are talking about.  Can you post a shot of what the rendering should look like?
Comment 5 Martin Bednar 2015-09-01 06:38:31 UTC
Created attachment 118029 [details]
corrrect rendering.

Correct rendering. Sorry for the different resolution. (and slightly different game version)
The difference to look at is the rotating platform on the left of the character.
Comment 6 Martin Bednar 2015-09-01 12:30:24 UTC
Created attachment 118033 [details]
apitrace replay on nouveau (11.0 rc-1)

same scene as in report, without the reported rendering issue, and no obvious other rendering issue.
Comment 7 James Harvey 2016-08-17 05:04:28 UTC
I'm seeing this same issue on my HD5850. This is the Trine Enhanced Edition via Steam (using the Trine2 engine).  In the correctly rendered screenshot, there is a rotating platform with two gears to the left of the character. In the misrendered scene, it looks like the gear behind the first one is being stretched vertically to the full viewport height.

Software versions:
    Linux 4.8.0-rc1 x86_64
    OpenGL core profile version string: 4.1 (Core Profile) Mesa 12.1.0-devel (git-d816a51)

GPU hardware:
    OpenGL renderer string: Gallium 0.4 on AMD CYPRESS (DRM 2.46.0 / 4.8.0-rc1)
    01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, 
Inc. [AMD/ATI] Cypress PRO [Radeon HD 5850] [1002:6899]

CPU hardware:
    AMD Phenom(tm) II X4 955 Processor
Comment 8 i.kalvachev 2018-03-26 17:02:44 UTC
This bug is still present with current Mesa-18.0.0.rc5.

Since the old trace is not available anymore I've made a new one(70MB):

https://drive.google.com/open?id=16N0m--IKupnWvnuvu27uebBjbDHUP3C4

I used "llvmpipe" during capture and the result also plays perfectly with "llvmpipe" (aka Mesa3D software render).

The bug is visible in the rotating gears/cogs. I tried "R600_DEBUG=nosb", but this does not seem to fix it.

I tried to find the draw operations. Frame #175 seems to show the artifact quite clearly. The draw operations at call #8053345 seems to draw a small cog that looks normal.
I believe that the smeared gear is drawn by call #8053560.


My hardware is Radeon HD5670 Redwood Evergreen (R600 driver).
Comment 9 i.kalvachev 2018-03-31 23:41:04 UTC
Created attachment 138468 [details]
Trine1 glitchy gear draw command uses this Vertex Shader. The file contains glsl, glsl ir, tgsi, vliw5 and SB optimized vliw5 variants of the same shader.
Comment 10 Hamish Wilson 2018-04-21 06:04:41 UTC
Created attachment 138966 [details]
April 2018 Graphical Artifact Screenshots

I am seeing graphical artifacts across several levels of Trine Enchanted Edition. These are most apparent with the gears in the Academy Hallways level, but I also encountered a curious lighting artifact in the Dragon Graveyard level as well as a problem with the rain later on in the same level. I am using a Sapphire Radeon HD 6870 graphics card on Arch Linux using the 4.16.3-1-ARCH Kernel package, the 1:18.0.1-1 xf86-video-ati pacakge, and the 18.0.1-1 Mesa package.
Comment 11 Dave Airlie 2018-04-23 21:40:02 UTC
Created attachment 139029 [details] [review]
attempted fix
Comment 12 Hamish Wilson 2018-04-24 06:34:11 UTC
(In reply to Dave Airlie from comment #11)
> Created attachment 139029 [details] [review] [review]
> attempted fix

I have tried applying the patch to my Mesa package using the Arch Build System, but unfortunately it does not appear to have corrected the artifacts.
Comment 13 Dave Airlie 2018-04-27 06:48:13 UTC
Just adding some things I've tried to fix this to no avail.

use RECIP_FF/CLAMPED instead of RECIP_IEEE
use RECIPSQRT_FF/CLAMPED instead of RECIPSQRT_IEEE
use MUL/MULADD/DOT4 instead of IEEE

Split constants into DOT4, rewrote DOT4 output to go via another register.

Disable scaled 16-bit float vertices, this change the misrendering to something worse for some reason.

I've noticed the broken drawing operations are the same vbo/ib with a different set of constant values for VS constants 124-126, the first draw works and draws the inside gear, the second draw to draw the outside gear fails.

I considered then it might be constant caching or vertex caching since we use vfetch to fetch the consts, tried add more flushing between draws, tried using uncached descriptor for constant buffer.

Nothing above has fixed it, merely logging it for my own sanity at this point.
Comment 14 Dave Airlie 2018-05-09 05:45:00 UTC
Created attachment 139438 [details] [review]
clamp constant buffer data

This looks a lot better to me!
Comment 15 i.kalvachev 2018-05-09 15:02:26 UTC
Looks perfect to me. The shadow flickering is also gone.
Tested with the real game on "lowest" and "very high" settings.

In addition, it also seems to fix the witcher1 trace too.

Can you give a long explanation what was the root of the problem.
I do see it is about the size of the constant buffer.
Comment 16 Dave Airlie 2018-05-10 01:16:02 UTC
The fix is pushed in master.

The code wasn't limiting the constant buffer sizing correctly so it was accessing random values from other operations rather than limiting things to the constants for this draw. So out of bounds accesses weren't returning default values but random ones.
Comment 17 Roman Elshin 2018-05-13 07:12:11 UTC
*** Bug 99403 has been marked as a duplicate of 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.