nir/xfb_info: don't merge incompatible XFB outputs to fix mediump
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35315>
This commit is contained in:
@@ -391,7 +391,10 @@ nir_gather_xfb_info_from_intrinsics(nir_shader *nir)
|
||||
j < count &&
|
||||
cur->buffer == outputs[j].buffer &&
|
||||
cur->location == outputs[j].location &&
|
||||
cur->high_16bits == outputs[j].high_16bits;
|
||||
cur->data_is_16bit == outputs[j].data_is_16bit &&
|
||||
cur->high_16bits == outputs[j].high_16bits &&
|
||||
cur->mediump == outputs[j].mediump &&
|
||||
cur->mediump_upconvert_type == outputs[j].mediump_upconvert_type;
|
||||
j++) {
|
||||
if (outputs[j].component_mask &&
|
||||
outputs[j].offset - outputs[j].component_offset * 4 ==
|
||||
@@ -501,12 +504,19 @@ 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, high_16bits=%u, "
|
||||
nir_alu_type type = info->outputs[i].mediump_upconvert_type;
|
||||
fprintf(fp, "output%u: buffer=%u, offset=%u, location=%u, data_is_16bit=%u, "
|
||||
"high_16bits=%u, mediump=%u, upconvert=%s, "
|
||||
"component_offset=%u, component_mask=0x%x\n",
|
||||
i, info->outputs[i].buffer,
|
||||
info->outputs[i].offset,
|
||||
info->outputs[i].location,
|
||||
info->outputs[i].data_is_16bit,
|
||||
info->outputs[i].high_16bits,
|
||||
info->outputs[i].mediump,
|
||||
type == nir_type_float ? "float" :
|
||||
type == nir_type_int ? "int" :
|
||||
type == nir_type_uint ? "uint" : "none",
|
||||
info->outputs[i].component_offset,
|
||||
info->outputs[i].component_mask);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user