diff --git a/src/panfrost/vulkan/panvk_vX_nir_lower_descriptors.c b/src/panfrost/vulkan/panvk_vX_nir_lower_descriptors.c index 98daa493141..258034c5af0 100644 --- a/src/panfrost/vulkan/panvk_vX_nir_lower_descriptors.c +++ b/src/panfrost/vulkan/panvk_vX_nir_lower_descriptors.c @@ -74,7 +74,6 @@ struct lower_desc_ctx { bool null_descriptor_support; nir_address_format ubo_addr_format; nir_address_format ssbo_addr_format; - struct panvk_shader_variant *shader; }; static nir_address_format @@ -1310,7 +1309,6 @@ panvk_per_arch(nir_lower_descriptors)( const struct vk_graphics_pipeline_state *state, struct panvk_shader_variant *shader) { struct lower_desc_ctx ctx = { - .shader = shader, .add_bounds_checks = rs->storage_buffers != VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT || @@ -1355,10 +1353,6 @@ panvk_per_arch(nir_lower_descriptors)( create_copy_table(nir, &ctx); upload_shader_desc_info(dev, shader, &ctx.desc_info); - if (nir->info.stage == MESA_SHADER_FRAGMENT) - NIR_PASS(progress, nir, panvk_per_arch(nir_lower_input_attachment_loads), - state, &shader->fs.input_attachment_read); - NIR_PASS(progress, nir, nir_shader_instructions_pass, lower_descriptors_instr, nir_metadata_control_flow, &ctx); diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index 00a5fb4adc0..d68d0d6a8e3 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -1379,6 +1379,10 @@ panvk_compile_shader(struct panvk_device *dev, if (state && state->ms && state->ms->sample_shading_enable) nir->info.fs.uses_sample_shading = true; + /* We need to lower input attachments before we lower descriptors */ + NIR_PASS(_, nir, panvk_per_arch(nir_lower_input_attachment_loads), + state, &variant->fs.input_attachment_read); + panvk_lower_nir(dev, nir, info->set_layout_count, info->set_layouts, info->robustness, state, &inputs, variant);