https://bugs.freedesktop.org/show_bug.cgi?id=92059
--- Comment #12 from Ilia Mirkin imirkin@alum.mit.edu --- (In reply to Kai from comment #11)
Created attachment 118397 [details] Setting environment variables yields visible bodies.
(In reply to Ilia Mirkin from comment #10)
(In reply to Timothy Arceri from comment #9)
(In reply to Ilia Mirkin from comment #7)
(In reply to Kai from comment #5)
Also, the game seems to choke on the missing AoA functionality or at least doesn't check whether it can use AoA:
0:9(23): error: GL_ARB_arrays_of_arrays required for defining arrays of arrays
I guess line 9 is: out vec4 vControlPoint[][2];
Which should work without AoA. I wonder if this was recently broken by the AoA support patches... Or maybe it started out broken.
It seems to me that this should fail, and is correctly doing so. From the tessellation spec:
[...]
Is there something I'm missing?
Quite right. I forgot about that little bit in the spec. So the issue here is that (a) AoA isn't supported in mesa, (b) even if it was, the shader doesn't enable it. Without that, you can't have plain per-vertex array outputs in TCS.
So, I should probably report this bug to Ferral Interactive (studio responsible for the Linux port), right?
That would be ideal.
You could force-enable it by setting force_glsl_extensions_warn=1 and MESA_EXTENSION_OVERRIDE=GL_ARB_arrays_of_arrays ... I think.
The correct override is: # force_glsl_extensions_warn=true MESA_EXTENSION_OVERRIDE=GL_ARB_arrays_of_arrays Setting force_glsl_extension_warn=1 leads to an error. And indeed, setting those two environment variables leads to visible characters in the game, see the attached screenshot.
Should this bug be renamed to »[radeonsi] Implement GL_ARB_arrays_of_arrays for "Middle-earth: Shadow of Mordor"« then?
As I mentioned, merely having the ext available wouldn't make that shader compile. The ext would also have to be enabled in the shader.
However perhaps the game would detect the availability of the ext and stick a "#extension GL_ARB_arrays_of_arrays: enable" into that shader, which would make it work -- no way of knowing that.