From fb4a2490d8da45b21111f64d85e68eaadd91fa99 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 5 Nov 2020 12:58:21 -0500 Subject: [PATCH] zink: handle 64bit constant loading in ntv Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 827cd437ab6..18cc09e20b9 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -1562,7 +1562,7 @@ emit_load_const(struct ntv_context *ctx, nir_load_const_instr *load_const) } else { for (int i = 0; i < num_components; i++) components[i] = emit_uint_const(ctx, bit_size, - load_const->value[i].u32); + bit_size == 64 ? load_const->value[i].u64 : load_const->value[i].u32); } constant = spirv_builder_const_composite(&ctx->builder, type, @@ -1572,8 +1572,12 @@ emit_load_const(struct ntv_context *ctx, nir_load_const_instr *load_const) if (bit_size == 1) constant = spirv_builder_const_bool(&ctx->builder, load_const->value[0].b); - else + else if (bit_size == 32) constant = emit_uint_const(ctx, bit_size, load_const->value[0].u32); + else if (bit_size == 64) + constant = emit_uint_const(ctx, bit_size, load_const->value[0].u64); + else + unreachable("unhandled constant bit size!"); } store_ssa_def(ctx, &load_const->def, constant);