diff --git a/.pick_status.json b/.pick_status.json index a3bd014759a..ae5f909e0a1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4434,7 +4434,7 @@ "description": "radv: fix hashing graphics pipeline when no stages are compiled", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index eb02c7bcdb9..56c82481da3 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -2953,14 +2953,16 @@ radv_graphics_pipeline_hash(const struct radv_device *device, const struct radv_ _mesa_sha1_update(&ctx, &gfx_state->key.gfx_state, sizeof(gfx_state->key.gfx_state)); - for (unsigned s = 0; s < MESA_VULKAN_SHADER_STAGES; s++) { - const struct radv_shader_stage *stage = &gfx_state->stages[s]; + if (gfx_state->stages) { + for (unsigned s = 0; s < MESA_VULKAN_SHADER_STAGES; s++) { + const struct radv_shader_stage *stage = &gfx_state->stages[s]; - if (stage->stage == MESA_SHADER_NONE) - continue; + if (stage->stage == MESA_SHADER_NONE) + continue; - _mesa_sha1_update(&ctx, stage->shader_sha1, sizeof(stage->shader_sha1)); - _mesa_sha1_update(&ctx, &stage->key, sizeof(stage->key)); + _mesa_sha1_update(&ctx, stage->shader_sha1, sizeof(stage->shader_sha1)); + _mesa_sha1_update(&ctx, &stage->key, sizeof(stage->key)); + } } _mesa_sha1_final(&ctx, hash);