Created attachment 117987 [details]
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.
apitrace : http://uloz.to/xh9tNZr9/trine1-linux-32bit-trace
Can upload elsewhere if trouble arises :)
Possibly a duplicate of bug 66067.
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.
(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?
Created attachment 118029 [details]
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.
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.
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.
Linux 4.8.0-rc1 x86_64
OpenGL core profile version string: 4.1 (Core Profile) Mesa 12.1.0-devel (git-d816a51)
OpenGL renderer string: Gallium 0.4 on AMD CYPRESS (DRM 2.46.0 / 4.8.0-rc1)
01:00.0 VGA compatible controller : Advanced Micro Devices,
Inc. [AMD/ATI] Cypress PRO [Radeon HD 5850] [1002:6899]
AMD Phenom(tm) II X4 955 Processor
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):
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).
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.
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.
Created attachment 139029 [details] [review]
(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.
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.
Created attachment 139438 [details] [review]
clamp constant buffer data
This looks a lot better to me!
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.
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.
*** Bug 99403 has been marked as a duplicate of this bug. ***