nir: Add nir_lower_viewport_transform
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 14 Apr 2019 15:43:13 +0000 (15:43 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 14 Apr 2019 19:15:13 +0000 (19:15 +0000)
commit2ce4adefa5647ef853a6713e651134eb173dc6ea
tree8e41ccee8bb76539419636416ec9dd932a1868ea
parent89b02bffcb452e1cb36dacded226d11e7e5ee713
nir: Add nir_lower_viewport_transform

On Mali hardware (supported by Panfrost and Lima), the fixed-function
transformation from world-space to screen-space coordinates is done in
the vertex shader prior to writing out the gl_Position varying, rather
than in dedicated hardware. This commit adds a shared NIR pass for
implementing coordinate transformation and lowering gl_Position writes
into screen-space gl_Position writes.

v2: Run directly on derefs before io/vars are lowered to cleanup the
code substantially. Thank you to Qiang for this suggestion!

v3: Bikeshed continues.

v4: Add to Makefile.sources (per Jason's comment). Bikeshed comment.

Ian and Qiang's reviews are from v3, but no real functional changes from
v4. Rob's review is from v4.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Suggested-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
src/compiler/Makefile.sources
src/compiler/nir/meson.build
src/compiler/nir/nir.h
src/compiler/nir/nir_lower_viewport_transform.c [new file with mode: 0644]