Module: Mesa Branch: main Commit: 92ee2e6b64369d3bdcb44e99e5a318588129950b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=92ee2e6b64369d3bdcb44e99e5a318588129950b
Author: Iván Briano <[email protected]> Date: Tue Sep 6 15:28:26 2022 -0700 anv: pipelineStageCreationFeedbackCount is allowed to be 0 Fixes: 6601e5d6fc6 ("anv: implement VK_EXT_pipeline_creation_feedback") Reviewed-by: Lionel Landwerlin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18451> --- src/intel/vulkan/anv_pipeline.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index dac2a44ff0d..39a1b051942 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -1893,8 +1893,9 @@ done: if (create_feedback) { *create_feedback->pPipelineCreationFeedback = pipeline_feedback; - assert(info->stageCount == create_feedback->pipelineStageCreationFeedbackCount); - for (uint32_t i = 0; i < info->stageCount; i++) { + uint32_t stage_count = create_feedback->pipelineStageCreationFeedbackCount; + assert(stage_count == 0 || info->stageCount == stage_count); + for (uint32_t i = 0; i < stage_count; i++) { gl_shader_stage s = vk_to_mesa_shader_stage(info->pStages[i].stage); create_feedback->pPipelineStageCreationFeedbacks[i] = stages[s].feedback; } @@ -2072,8 +2073,10 @@ anv_pipeline_compile_cs(struct anv_compute_pipeline *pipeline, if (create_feedback) { *create_feedback->pPipelineCreationFeedback = pipeline_feedback; - assert(create_feedback->pipelineStageCreationFeedbackCount == 1); - create_feedback->pPipelineStageCreationFeedbacks[0] = stage.feedback; + if (create_feedback->pipelineStageCreationFeedbackCount) { + assert(create_feedback->pipelineStageCreationFeedbackCount == 1); + create_feedback->pPipelineStageCreationFeedbacks[0] = stage.feedback; + } } pipeline->cs = bin; @@ -2813,8 +2816,9 @@ anv_pipeline_compile_ray_tracing(struct anv_ray_tracing_pipeline *pipeline, if (create_feedback) { *create_feedback->pPipelineCreationFeedback = pipeline_feedback; - assert(info->stageCount == create_feedback->pipelineStageCreationFeedbackCount); - for (uint32_t i = 0; i < info->stageCount; i++) { + uint32_t stage_count = create_feedback->pipelineStageCreationFeedbackCount; + assert(stage_count == 0 || info->stageCount == stage_count); + for (uint32_t i = 0; i < stage_count; i++) { gl_shader_stage s = vk_to_mesa_shader_stage(info->pStages[i].stage); create_feedback->pPipelineStageCreationFeedbacks[i] = stages[s].feedback; }
