From: Qiang Yu Date: Mon, 21 Nov 2022 07:53:11 +0000 (+0800) Subject: nir/xfb: save high_16bits output info X-Git-Tag: upstream/23.3.3~15032 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cf2ea3fce9a0b50e53402f1be28bce707092f097;p=platform%2Fupstream%2Fmesa.git nir/xfb: save high_16bits output info It is combined with slot location to identify a varying when using VARYING_SLOT_VARx_16BIT. Acked-by: Marek Olšák Signed-off-by: Qiang Yu Part-of: --- diff --git a/src/compiler/nir/nir_gather_xfb_info.c b/src/compiler/nir/nir_gather_xfb_info.c index 7a15a5c..2a7871a 100644 --- a/src/compiler/nir/nir_gather_xfb_info.c +++ b/src/compiler/nir/nir_gather_xfb_info.c @@ -358,6 +358,7 @@ nir_gather_xfb_info_from_intrinsics(nir_shader *nir, out.component_mask = BITFIELD_RANGE(index, xfb.out[index % 2].num_components); out.location = sem.location; + out.high_16bits = sem.high_16bits; out.buffer = xfb.out[index % 2].buffer; out.offset = (uint32_t)xfb.out[index % 2].offset * 4; util_dynarray_append(&array, nir_xfb_output_info, out); @@ -398,7 +399,8 @@ nir_gather_xfb_info_from_intrinsics(nir_shader *nir, for (int j = i + 1; j < count && cur->buffer == outputs[j].buffer && - cur->location == outputs[j].location; j++) { + cur->location == outputs[j].location && + cur->high_16bits == outputs[j].high_16bits; j++) { if (outputs[j].component_mask && outputs[j].offset - outputs[j].component_offset * 4 == cur->offset - cur->component_offset * 4) { @@ -479,11 +481,12 @@ nir_print_xfb_info(nir_xfb_info *info, FILE *fp) fprintf(fp, "output_count: %u\n", info->output_count); for (unsigned i = 0; i < info->output_count; i++) { - fprintf(fp, "output%u: buffer=%u, offset=%u, location=%u, " + fprintf(fp, "output%u: buffer=%u, offset=%u, location=%u, high_16bits=%u, " "component_offset=%u, component_mask=0x%x\n", i, info->outputs[i].buffer, info->outputs[i].offset, info->outputs[i].location, + info->outputs[i].high_16bits, info->outputs[i].component_offset, info->outputs[i].component_mask); } diff --git a/src/compiler/nir/nir_xfb_info.h b/src/compiler/nir/nir_xfb_info.h index 424d730..98e8a356 100644 --- a/src/compiler/nir/nir_xfb_info.h +++ b/src/compiler/nir/nir_xfb_info.h @@ -42,6 +42,7 @@ typedef struct { uint8_t buffer; uint16_t offset; uint8_t location; + bool high_16bits; uint8_t component_mask; uint8_t component_offset; } nir_xfb_output_info;