From f7f823c787e084b0f1f44c75535ab7652ae3256b Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Wed, 10 Jan 2024 14:57:11 +0100 Subject: [PATCH] panvk: Fix access to unitialized panvk_pipeline_layout::num_sets field Commit 73eecffabdd3 ("panvk: Use the vk_pipeline_layout base struct") reworked the panvk logic to use vk_pipeline_layout, which contains the number of descriptor set layout referenced by a pipeline layout, thus deprecating panvk_pipeline_layout::num_sets. Make panvk_fill_non_vs_attribs() use vk_pipeline_layout::set_count instead of panvk_pipeline_layout::num_sets and kill the latter so we can't introduce new users. Fixes: 73eecffabdd3 ("panvk: Use the vk_pipeline_layout base struct") Cc: mesa-stable Signed-off-by: Boris Brezillon Reviewed-by: Constantine Shablya Part-of: (cherry picked from commit b18bfed2c5fc9c8ad93b08bae8b9e65380a1b772) --- .pick_status.json | 2 +- src/panfrost/ci/panfrost-g52-fails.txt | 50 ----------------------- src/panfrost/vulkan/panvk_private.h | 1 - src/panfrost/vulkan/panvk_vX_cmd_buffer.c | 2 +- 4 files changed, 2 insertions(+), 53 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5aedfd8824e..0abc40c21ce 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -154,7 +154,7 @@ "description": "panvk: Fix access to unitialized panvk_pipeline_layout::num_sets field", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "73eecffabdd37fc2a181dfe38e35e4240812611e", "notes": null diff --git a/src/panfrost/ci/panfrost-g52-fails.txt b/src/panfrost/ci/panfrost-g52-fails.txt index 857aa2f64b9..afec2255d3f 100644 --- a/src/panfrost/ci/panfrost-g52-fails.txt +++ b/src/panfrost/ci/panfrost-g52-fails.txt @@ -446,36 +446,7 @@ dEQP-VK.spirv_assembly.instruction.compute.workgroup_memory.float32,Crash dEQP-VK.spirv_assembly.instruction.compute.workgroup_memory.int32,Crash dEQP-VK.spirv_assembly.instruction.compute.workgroup_memory.uint32,Crash -dEQP-VK.api.buffer_view.access.storage_texel_buffer.a2b10g10r10_uint_pack32,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.a2b10g10r10_unorm_pack32,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.a8b8g8r8_sint_pack32,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.a8b8g8r8_uint_pack32,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.a8b8g8r8_unorm_pack32,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.r16g16b16a16_sfloat,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.r16g16b16a16_sint,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.r16g16b16a16_uint,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.r8g8b8a8_sint,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.r8g8b8a8_uint,Fail -dEQP-VK.api.buffer_view.access.storage_texel_buffer.r8g8b8a8_unorm,Fail dEQP-VK.api.command_buffers.record_many_draws_secondary_2,Fail -dEQP-VK.binding_model.descriptor_copy.compute.mix_1,Fail -dEQP-VK.binding_model.descriptor_copy.compute.mix_array0,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_0,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_1,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_2,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_4,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_5,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_array0,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_array1,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_image_array2,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_0,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_1,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_2,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_4,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_5,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_array0,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_array1,Fail -dEQP-VK.binding_model.descriptor_copy.compute.storage_texel_buffer_array2,Fail dEQP-VK.glsl.operator.sequence.no_side_effects.highp_bool_vec2_fragment,Fail dEQP-VK.glsl.operator.sequence.no_side_effects.highp_float_uint_fragment,Fail dEQP-VK.glsl.operator.sequence.no_side_effects.highp_vec4_ivec4_bvec4_fragment,Fail @@ -488,27 +459,6 @@ dEQP-VK.glsl.operator.sequence.side_effects.highp_vec4_fragment,Fail dEQP-VK.glsl.operator.sequence.side_effects.mediump_bool_vec2_fragment,Fail dEQP-VK.glsl.operator.sequence.side_effects.mediump_float_uint_fragment,Fail dEQP-VK.glsl.operator.sequence.side_effects.mediump_vec4_fragment,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.a2b10g10r10_unorm_pack32.oob_storage_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.a2b10g10r10_unorm_pack32.oob_storage_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.a2b10g10r10_unorm_pack32.oob_uniform_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.a2b10g10r10_unorm_pack32.oob_uniform_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.out_of_alloc.oob_storage_read,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.out_of_alloc.oob_uniform_read,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sfloat.oob_storage_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sfloat.oob_storage_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sfloat.oob_storage_write.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sfloat.oob_uniform_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sfloat.oob_uniform_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sint.oob_storage_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sint.oob_storage_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sint.oob_storage_write.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sint.oob_uniform_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_sint.oob_uniform_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_uint.oob_storage_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_uint.oob_storage_read.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_uint.oob_storage_write.range_3_texels,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_uint.oob_uniform_read.range_1_texel,Fail -dEQP-VK.robustness.buffer_access.compute.texel_copy.r32g32b32a32_uint.oob_uniform_read.range_3_texels,Fail dEQP-VK.texture.explicit_lod.2d.derivatives.linear_linear_mipmap_linear,Fail dEQP-VK.texture.explicit_lod.2d.derivatives.linear_linear_mipmap_nearest,Fail dEQP-VK.texture.explicit_lod.2d.derivatives.linear_nearest_mipmap_linear,Fail diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index 2f4ef9ddcb6..fb28f9fcb13 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -398,7 +398,6 @@ struct panvk_pipeline_layout { unsigned num_dyn_ubos; unsigned num_dyn_ssbos; uint32_t num_imgs; - uint32_t num_sets; struct { uint32_t size; diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c index 44ed3120d9a..c26790c68f8 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c @@ -514,7 +514,7 @@ panvk_fill_non_vs_attribs(struct panvk_cmd_buffer *cmdbuf, struct panvk_descriptor_state *desc_state = &bind_point_state->desc_state; const struct panvk_pipeline *pipeline = bind_point_state->pipeline; - for (unsigned s = 0; s < pipeline->layout->num_sets; s++) { + for (unsigned s = 0; s < pipeline->layout->vk.set_count; s++) { const struct panvk_descriptor_set *set = desc_state->sets[s]; if (!set)