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>
This commit is contained in:
@@ -3114,6 +3114,7 @@ void nir_lower_io_to_scalar(nir_shader *shader, nir_variable_mode mask);
|
||||
void nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask);
|
||||
bool nir_lower_io_to_vector(nir_shader *shader, nir_variable_mode mask);
|
||||
|
||||
void nir_lower_viewport_transform(nir_shader *shader);
|
||||
bool nir_lower_uniforms_to_ubo(nir_shader *shader, int multiplier);
|
||||
|
||||
typedef struct nir_lower_subgroups_options {
|
||||
|
Reference in New Issue
Block a user