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; }