diff options
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/anv_pipeline.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index fa3d3e7a309..e2116e24807 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -930,6 +930,7 @@ anv_pipeline_compile_fs(struct anv_pipeline *pipeline, num_rts++; } + bool deleted_output = false; nir_foreach_variable_safe(var, &nir->outputs) { if (var->data.location < FRAG_RESULT_DATA0) continue; @@ -937,6 +938,7 @@ anv_pipeline_compile_fs(struct anv_pipeline *pipeline, const unsigned rt = var->data.location - FRAG_RESULT_DATA0; if (rt >= key.nr_color_regions) { /* Out-of-bounds, throw it away */ + deleted_output = true; var->data.mode = nir_var_local; exec_node_remove(&var->node); exec_list_push_tail(&impl->locals, &var->node); @@ -948,6 +950,9 @@ anv_pipeline_compile_fs(struct anv_pipeline *pipeline, var->data.location = rt_to_bindings[rt] + FRAG_RESULT_DATA0; } + if (deleted_output) + nir_fixup_deref_modes(nir); + if (num_rts == 0) { /* If we have no render targets, we need a null render target */ rt_bindings[0] = (struct anv_pipeline_binding) { |