Skip to content

llvmpipe: use ppc64le/ppc64 Large code model for JIT-compiled shaders

Ben Crocker requested to merge bcrocker/mesa:bcrocker-master-patch-66252 into master

Large programs, e.g. gnome-shell and firefox, may tax the addressability of the Medium code model once a (potentially unbounded) number of dynamically generated JIT-compiled shader programs are linked in and relocated. Yet the default code model as of LLVM 8 is Medium or even Small.

The cost of changing from Medium to Large is negligible:

  • an additional 8-byte pointer stored immediately before the shader entrypoint;
  • change an add-immediate (addis) instruction to a load (ld).

Testing with WebGL Conformance (https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html) yields clean runs with this change (and crashes without it).

Testing with glxgears shows no detectable performance difference.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1753327, 1753789, 1543572, 1747110, and 1582226

Closes: #223 (closed)

Co-authored by: Nemanja Ivanovic nemanjai@ca.ibm.com, Tom Stellard tstellar@redhat.com Reviewed-by: Adam Jackson ajax@redhat.com

CC: mesa-stable@lists.freedesktop.org

Signed-off-by: Ben Crocker bcrocker@redhat.com

Edited by Ben Crocker

Merge request reports