Skip to content

nir/opt_large_constants: Handle store writemasks

Connor Abbott requested to merge cwabbott0/mesa:nir-large-const-wrmask into master

This fixes some piglit tests on radeonsi NIR where a varying is initialized to a constant array in the vertex shader. Varying packing after nir_lower_io_to_temporaries creates writemasked stores which persist after pulling the constant initialization down into the fragment shader.

While we're here, rewrite handle_constant_store() to do the loop over components outside the switch, so that we don't have to duplicate the writemask checking for every bitsize.

Fixes: 12358505 ("nir: Add a large constants optimization pass")

Merge request reports