diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index 1f217cadb5c..1241d406a08 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -641,6 +641,7 @@ static void handle_graphics_pipeline(struct vk_cmd_queue_entry *cmd, { LVP_FROM_HANDLE(lvp_pipeline, pipeline, cmd->u.bind_pipeline.pipeline); const struct vk_graphics_pipeline_state *ps = &pipeline->graphics_state; + lvp_pipeline_shaders_compile(pipeline); for (enum pipe_shader_type sh = PIPE_SHADER_VERTEX; sh < PIPE_SHADER_COMPUTE; sh++) { state->iv_dirty[sh] |= state->num_shader_images[sh] && diff --git a/src/gallium/frontends/lavapipe/lvp_pipeline.c b/src/gallium/frontends/lavapipe/lvp_pipeline.c index b777b6c45a6..9610f9866db 100644 --- a/src/gallium/frontends/lavapipe/lvp_pipeline.c +++ b/src/gallium/frontends/lavapipe/lvp_pipeline.c @@ -870,7 +870,7 @@ lvp_graphics_pipeline_init(struct lvp_pipeline *pipeline, pipeline->line_rectangular = true; lvp_pipeline_xfb_init(pipeline); } - if (!pipeline->library) + if (!libstate && !pipeline->library) lvp_pipeline_shaders_compile(pipeline); if (!pipeline->library && !pipeline->pipeline_nir[MESA_SHADER_FRAGMENT]) {