zink: set UBO alignments in nir_intrinsic_load_uniform lowering
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 23 Apr 2020 18:21:05 +0000 (14:21 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 24 Apr 2020 17:27:30 +0000 (17:27 +0000)
resolves this error
  error: nir_intrinsic_align_offset(instr) < nir_intrinsic_align_mul(instr) (../src/compiler/nir/nir_validate.c:582)
in ext_packed_depth_stencil-readdrawpixels piglit test

port of f5b14d983e5afa1b8f75e6f3692830a1ee46d1df

Fixes: fb64954d9dd ("nir: Validate that memory load/store ops work on whole bytes")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4711>

src/gallium/drivers/zink/zink_compiler.c

index c8ad749ba744d1459f27cf7b3a7e0c8688eb400b..399e2cd4071b1bda3b8775e4bc37dfe4fff0851c 100644 (file)
@@ -60,6 +60,8 @@ lower_instr(nir_intrinsic_instr *instr, nir_builder *b)
       load->num_components = instr->num_components;
       load->src[0] = nir_src_for_ssa(ubo_idx);
       load->src[1] = nir_src_for_ssa(ubo_offset);
+      assert(instr->dest.ssa.bit_size >= 8);
+      nir_intrinsic_set_align(load, instr->dest.ssa.bit_size / 8, 0);
       nir_ssa_dest_init(&load->instr, &load->dest,
                         load->num_components, instr->dest.ssa.bit_size,
                         instr->dest.ssa.name);