From c84ea77f76af0eff850fa25c044892f336e67afe Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 4 May 2021 20:24:54 -0500 Subject: [PATCH] iris: Re-emit MEDIA_VFE_STATE for variable group size shaders It implicitly contains the number of threads via the CURBE allocation size field. Fixes: 33c61eb2f105 "iris: Implement ARB_compute_variable_group_size" Reviewed-by: Kenneth Graunke Part-of: (cherry picked from commit e56d5db341eaf2112be366ee015a9956b2c3b704) --- .pick_status.json | 2 +- src/gallium/drivers/iris/iris_state.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c5d2a6719a1..487d5835b8b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -211,7 +211,7 @@ "description": "iris: Re-emit MEDIA_VFE_STATE for variable group size shaders", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "33c61eb2f10526c0b90c5ad376e5b0433aec296d" }, diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 067e5362147..2f0831a1078 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -6878,7 +6878,8 @@ iris_upload_gpgpu_walker(struct iris_context *ice, const struct brw_cs_dispatch_info dispatch = brw_cs_get_dispatch_info(devinfo, cs_prog_data, grid->block); - if (stage_dirty & IRIS_STAGE_DIRTY_CS) { + if ((stage_dirty & IRIS_STAGE_DIRTY_CS) || + cs_prog_data->local_size[0] == 0 /* Variable local group size */) { /* The MEDIA_VFE_STATE documentation for Gfx8+ says: * * "A stalling PIPE_CONTROL is required before MEDIA_VFE_STATE unless