zink: remove tcs patch slot map

this is illegal, and we'll just have to eat some piglit fails
until indirects are handled

Fixes: f7ade1f188 ("zink: simplify shader i/o assignment")

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15976>
This commit is contained in:
Mike Blumenkrantz 2022-04-15 11:18:07 -04:00 committed by Marge Bot
parent 7ca1253932
commit 12cf9a1544
2 changed files with 9 additions and 9 deletions

View file

@ -1,3 +1,9 @@
# #6115
spec@arb_tessellation_shader@execution@variable-indexing@tes-both-input-array-float-index-rd,Crash
spec@arb_tessellation_shader@execution@variable-indexing@tes-both-input-array-vec2-index-rd,Crash
spec@arb_tessellation_shader@execution@variable-indexing@tes-both-input-array-vec3-index-rd,Crash
spec@arb_tessellation_shader@execution@variable-indexing@tes-both-input-array-vec4-index-rd,Crash
# #6322
spec@arb_framebuffer_object@fbo-attachments-blit-scaled-linear,Fail
spec@arb_framebuffer_object@fbo-blit-scaled-linear,Fail

View file

@ -1169,11 +1169,9 @@ rewrite_and_discard_read(nir_builder *b, nir_instr *instr, void *data)
void
zink_compiler_assign_io(nir_shader *producer, nir_shader *consumer)
{
unsigned reserved = 0, patch_reserved = 0;
unsigned reserved = 0;
unsigned char slot_map[VARYING_SLOT_MAX];
memset(slot_map, -1, sizeof(slot_map));
unsigned char patch_slot_map[VARYING_SLOT_MAX];
memset(patch_slot_map, -1, sizeof(patch_slot_map));
bool do_fixup = false;
nir_shader *nir = producer->info.stage == MESA_SHADER_TESS_CTRL ? producer : consumer;
if (consumer->info.stage != MESA_SHADER_FRAGMENT) {
@ -1189,13 +1187,9 @@ zink_compiler_assign_io(nir_shader *producer, nir_shader *consumer)
if (producer->info.stage == MESA_SHADER_TESS_CTRL) {
/* never assign from tcs -> tes, always invert */
nir_foreach_variable_with_modes(var, consumer, nir_var_shader_in)
assign_producer_var_io(consumer->info.stage, var,
var->data.patch ? &patch_reserved : &reserved,
var->data.patch ? patch_slot_map : slot_map);
assign_producer_var_io(consumer->info.stage, var, &reserved, slot_map);
nir_foreach_variable_with_modes_safe(var, producer, nir_var_shader_out) {
if (!assign_consumer_var_io(producer->info.stage, var,
var->data.patch ? &patch_reserved : &reserved,
var->data.patch ? patch_slot_map : slot_map))
if (!assign_consumer_var_io(producer->info.stage, var, &reserved, slot_map))
/* this is an output, nothing more needs to be done for it to be dropped */
do_fixup = true;
}