On 16/06/15 15:29, Ilia Mirkin wrote:
On Tue, Jun 16, 2015 at 10:22 AM, Roland Scheidegger <srol...@vmware.com> wrote:
This looks like a good idea to me.
That said, llvmpipe would still crash if the declared size in the shader
wouldn't exceed the max uniform block size, but the bound buffer does
IIRC (the test doesn't test this but could be easily modified to do so).
So, I'm wondering if we should do both - fail to link if the declared
size exceeds the limit, and just limit the size we copy in llvmpipe to
the limit, though it's possible this would require some more changes to
be really safe so we don't try to access such elements (with indirect
access, though we don't verify direct ones at all) in the shader.
Not to derail this too much, but just FWIW I just checked this patch
in to prevent gpu errors:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b24388647f626a5cad10fd48e61335ed26a8560
Didn't fix the trace, but at least it no longer complained about
illegal sizes. Trace available at
http://people.freedesktop.org/~imirkin/traces/gzdoom.trace
It just renders black now. The claim is that the game (but not
necessarily the trace) works OK on NVIDIA blob drivers. I haven't
analyzed the trace in much detail yet.
-ilia
Interesting. I don't get errors from NVIDIA. So it does look like
binding large UBOs is treated differently. (And understandibly, since
one can bind a range of a UBO too.)
I think Roland's right, in llvmpipe we'll need to handle that better by
truncating the constant buffer copied to the display lists.
BTW, the trace use PERSISTENT mappings, which aren't supported in
apitrace. So I suspect it will never render well.
Jose
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev