diff --git a/src/gallium/drivers/zink/zink_program_state.hpp b/src/gallium/drivers/zink/zink_program_state.hpp index fe6ab9332f1..3f4156130fa 100644 --- a/src/gallium/drivers/zink/zink_program_state.hpp +++ b/src/gallium/drivers/zink/zink_program_state.hpp @@ -208,7 +208,7 @@ zink_get_gfx_pipeline(struct zink_context *ctx, const int rp_idx = state->render_pass ? 1 : 0; if (DYNAMIC_STATE == ZINK_DYNAMIC_VERTEX_INPUT || DYNAMIC_STATE == ZINK_DYNAMIC_VERTEX_INPUT2) { if (prog->last_finalized_hash[rp_idx][idx] == state->final_hash && !prog->inline_variants && likely(prog->last_pipeline[rp_idx][idx])) { - state->pipeline = prog->last_pipeline[rp_idx][idx]; + state->pipeline = prog->last_pipeline[rp_idx][idx]->pipeline; return state->pipeline; } } @@ -260,7 +260,7 @@ zink_get_gfx_pipeline(struct zink_context *ctx, state->pipeline = cache_entry->pipeline; if (DYNAMIC_STATE >= ZINK_DYNAMIC_VERTEX_INPUT) { prog->last_finalized_hash[rp_idx][idx] = state->final_hash; - prog->last_pipeline[rp_idx][idx] = state->pipeline; + prog->last_pipeline[rp_idx][idx] = cache_entry; } return state->pipeline; } diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 3c5b4315f95..b2e25cf2064 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -859,7 +859,7 @@ struct zink_gfx_program { uint8_t inline_variants; //which stages are using inlined uniforms uint32_t last_finalized_hash[2][4]; //[dynamic, renderpass][primtype idx] - VkPipeline last_pipeline[2][4]; //[dynamic, renderpass][primtype idx] + struct zink_gfx_pipeline_cache_entry *last_pipeline[2][4]; //[dynamic, renderpass][primtype idx] struct set libs; //zink_gfx_library_key -> VkPipeline };