Comment 5 for bug 1585942

Revision history for this message
Steve Langasek (vorlon) wrote :

This bug also breaks gammaray on arm64:

21/21 Test #21: quickinspectortest ...............***Exception: Other 1.40 sec
********* Start testing of QuickInspectorTest *********
Config: Using QtTest library 5.5.1, Qt 5.5.1 (arm64-little_endian-lp64 shared (dynamic) release build; by GCC 5.3.1 20160519)
[...]
QWARN : QuickInspectorTest::testCustomRenderModes() QEGLPlatformContext: Failed to make temporary surface current, format not updated
Mesa 11.2.1 implementation error: Failed to link fixed function fragment shader: error: count of uniform locations > MAX_UNIFORM_LOCATIONS(4294967295 > 98304)

Please report at https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa
QFatal in quickinspectortest (/«PKGBUILDDIR»/obj-qt5/bin/quickinspectortest)
START BACKTRACE:
1 /«PKGBUILDDIR»/obj-qt5/lib/libgammaray_core-qt5.5-aarch64.so.2.4.0(+0xc2128) [0x7f9138f128]
2 /«PKGBUILDDIR»/obj-qt5/lib/libgammaray_core-qt5.5-aarch64.so.2.4.0(+0xa6368) [0x7f91373368]
3 /usr/lib/aarch64-linux-gnu/libQt5Core.so.5(+0x91620) [0x7f9067a620]
4 /usr/lib/aarch64-linux-gnu/libQt5Core.so.5(QMessageLogger::fatal(char const*, ...) const+0x9c) [0x7f9067c0fc]
5 /usr/lib/aarch64-linux-gnu/libQt5Test.so.5(+0xad20) [0x7f91268d20]
6 [0x7f91484510]
7 /usr/lib/aarch64-linux-gnu/dri/swrast_dri.so(+0x9631c) [0x7f8c5dc31c]
END BACKTRACE
QFATAL : QuickInspectorTest::testCustomRenderModes() Received signal 11
FAIL! : QuickInspectorTest::testCustomRenderModes() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 6 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of QuickInspectorTest *********

https://launchpad.net/ubuntu/+source/gammaray/2.4.0-1build1/+build/9894589

This problem apparently does not occur on armhf even though GLES is also used on that architecture.

It also definitely looks like a mesa bug to me. ./src/compiler/glsl/linker.cpp:link_shaders() calls ./src/compiler/glsl/linker.cpp:check_explicit_uniform_locations(), which returns -1 if ctx->Extensions.ARB_explicit_uniform_location is not set (which it doesn't have to be AFAICS), then assigns this -1 to an unsigned int variable and carries on using the value instead of treating this as an error.