diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index 0d0afb7b36e..118404ecbf1 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -943,6 +943,11 @@ agx_update_shader(struct agx_context *ctx, struct agx_compiled_shader **out, NIR_PASS_V(nir, nir_lower_blend, &opts); NIR_PASS_V(nir, nir_lower_fragcolor, key->nr_cbufs); + + if (key->clip_plane_enable) { + NIR_PASS_V(nir, nir_lower_clip_fs, key->clip_plane_enable, + false); + } } agx_compile_shader_nir(nir, &key->base, &binary, &compiled->info); @@ -1017,6 +1022,7 @@ agx_update_fs(struct agx_context *ctx) { struct asahi_shader_key key = { .nr_cbufs = ctx->batch->nr_cbufs, + .clip_plane_enable = ctx->rast->base.clip_plane_enable, }; for (unsigned i = 0; i < key.nr_cbufs; ++i) { diff --git a/src/gallium/drivers/asahi/agx_state.h b/src/gallium/drivers/asahi/agx_state.h index 35c11c13855..cd5c8a779a4 100644 --- a/src/gallium/drivers/asahi/agx_state.h +++ b/src/gallium/drivers/asahi/agx_state.h @@ -135,6 +135,7 @@ struct asahi_shader_key { struct agx_shader_key base; struct agx_blend blend; unsigned nr_cbufs; + uint8_t clip_plane_enable; enum pipe_format rt_formats[PIPE_MAX_COLOR_BUFS]; };