glsl: Fail linkage when UBO exceeds GL_MAX_UNIFORM_BLOCK_SIZE.
authorJose Fonseca <jfonseca@vmware.com>
Mon, 15 Jun 2015 17:29:02 +0000 (18:29 +0100)
committerJose Fonseca <jfonseca@vmware.com>
Fri, 19 Jun 2015 06:21:05 +0000 (07:21 +0100)
commitf734d2556013e9239e91f43b563b5b1d8f03ada4
treeaaa9a888a0f6ab9803b81b92bf7040effc879304
parent5974841fd0be7e2c336f63bd9ef416723e1923dc
glsl: Fail linkage when UBO exceeds GL_MAX_UNIFORM_BLOCK_SIZE.

It's not totally clear whether other Mesa drivers can safely cope with
over-sized UBOs, but at least for llvmpipe receiving a UBO larger than
its limit causes problems, as it won't fit into its internal display
lists.

This fixes piglit "arb_uniform_buffer_object-maxuniformblocksize
fsexceed" without regressions for llvmpipe.

NVIDIA driver also fails to link the shader from
"arb_uniform_buffer_object-maxuniformblocksize fsexceed".

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65525

PS: I don't recommend cherry-picking this for Mesa stable, as some app
might inadvertently been relying on UBOs larger than
GL_MAX_UNIFORM_BLOCK_SIZE to work on other drivers, so even if this
commit is universally accepted it's probably best to let it mature in
master for a while.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/glsl/linker.cpp