* Frees the iris_uncompiled_shader.
*/
static void
-iris_delete_shader_state(struct pipe_context *ctx, void *state, gl_shader_stage stage)
+iris_delete_shader_state(struct pipe_context *ctx, void *state)
{
struct iris_uncompiled_shader *ish = state;
struct iris_context *ice = (void *) ctx;
+ const gl_shader_stage stage = ish->nir->info.stage;
+
if (ice->shaders.uncompiled[stage] == ish) {
ice->shaders.uncompiled[stage] = NULL;
ice->state.stage_dirty |= IRIS_STAGE_DIRTY_UNCOMPILED_VS << stage;
free(ish);
}
-static void
-iris_delete_vs_state(struct pipe_context *ctx, void *state)
-{
- iris_delete_shader_state(ctx, state, MESA_SHADER_VERTEX);
-}
-
-static void
-iris_delete_tcs_state(struct pipe_context *ctx, void *state)
-{
- iris_delete_shader_state(ctx, state, MESA_SHADER_TESS_CTRL);
-}
-
-static void
-iris_delete_tes_state(struct pipe_context *ctx, void *state)
-{
- iris_delete_shader_state(ctx, state, MESA_SHADER_TESS_EVAL);
-}
-
-static void
-iris_delete_gs_state(struct pipe_context *ctx, void *state)
-{
- iris_delete_shader_state(ctx, state, MESA_SHADER_GEOMETRY);
-}
-
-static void
-iris_delete_fs_state(struct pipe_context *ctx, void *state)
-{
- iris_delete_shader_state(ctx, state, MESA_SHADER_FRAGMENT);
-}
-
-static void
-iris_delete_cs_state(struct pipe_context *ctx, void *state)
-{
- iris_delete_shader_state(ctx, state, MESA_SHADER_COMPUTE);
-}
-
/**
* The pipe->bind_[stage]_state() driver hook.
*
ctx->create_fs_state = iris_create_fs_state;
ctx->create_compute_state = iris_create_compute_state;
- ctx->delete_vs_state = iris_delete_vs_state;
- ctx->delete_tcs_state = iris_delete_tcs_state;
- ctx->delete_tes_state = iris_delete_tes_state;
- ctx->delete_gs_state = iris_delete_gs_state;
- ctx->delete_fs_state = iris_delete_fs_state;
- ctx->delete_compute_state = iris_delete_cs_state;
+ ctx->delete_vs_state = iris_delete_shader_state;
+ ctx->delete_tcs_state = iris_delete_shader_state;
+ ctx->delete_tes_state = iris_delete_shader_state;
+ ctx->delete_gs_state = iris_delete_shader_state;
+ ctx->delete_fs_state = iris_delete_shader_state;
+ ctx->delete_compute_state = iris_delete_shader_state;
ctx->bind_vs_state = iris_bind_vs_state;
ctx->bind_tcs_state = iris_bind_tcs_state;