panfrost: Implement system values
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Wed, 3 Apr 2019 01:48:09 +0000 (01:48 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Thu, 4 Apr 2019 03:44:15 +0000 (03:44 +0000)
commit7e8de5a707f7279929d7396550024b8cdc6a8c61
treef9dd09dc725259a788c3620b33d2f37ee11afc8f
parenta83862754e94ea11602ac8c43b940b26775b9c4d
panfrost: Implement system values

This patch implements system values via specially-crafted uniforms.
While we previously had an ad hoc system for passing the viewport into
the vertex shader, this commit generalizes the system to allow for
arbitrary system values to be added to both shader stages. While we're
at it, we clean up uniform handling code (which was considerably muddied
to handle the ad hoc viewport uniform).

This commit serves as both a cleanup of the existing codebase and the
precursor to new functionality, like implementing textureSize().

Concurrent with these changes is respecting the depth transform, which
was not possible with the old fixed uniform system and here serves as a
proof-of-correctness test (as well as justifying the NIR changes).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/meson.build
src/gallium/drivers/panfrost/midgard/helpers.h
src/gallium/drivers/panfrost/midgard/midgard_compile.c
src/gallium/drivers/panfrost/midgard/midgard_compile.h
src/gallium/drivers/panfrost/pan_assemble.c
src/gallium/drivers/panfrost/pan_context.c
src/gallium/drivers/panfrost/pan_context.h