nir: Add a simple nir_lower_wpos_center() pass for Vulkan drivers.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 18 May 2016 18:38:32 +0000 (11:38 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 20 May 2016 21:30:00 +0000 (14:30 -0700)
commit6e5d86c07af920fa52afbe075a04116b9ebb3cc3
tree2411eaeef7535a69548fe88ee9464ea4fbb4c455
parent12ab7fc6ac1ca785afb1126607bb95ea26473e06
nir: Add a simple nir_lower_wpos_center() pass for Vulkan drivers.

nir_lower_wpos_ytransform() is great for OpenGL, which allows
applications to choose whether their coordinate system's origin is
upper left/lower left, and whether the pixel center should be on
integer/half-integer boundaries.

Vulkan, however, has much simpler requirements: the pixel center
is always half-integer, and the origin is always upper left.  No
coordinate transform is needed - we just need to add <0.5, 0.5>.
This means that we can avoid using (and setting up) a uniform.

I thought about adding more options to nir_lower_wpos_ytransform(),
but making a new pass that never even touched uniforms seemed simpler.

v2: Use normal iterator rather than _safe variant (noticed by Matt).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Rob Clark <robdclark@gmail.com>
src/compiler/Makefile.sources
src/compiler/nir/nir.h
src/compiler/nir/nir_lower_wpos_center.c [new file with mode: 0644]