iris: Re-emit push constants if we have a varying workgroup size
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 2 Sep 2020 18:48:51 +0000 (13:48 -0500)
committerMarge Bot <eric+marge@anholt.net>
Wed, 2 Sep 2020 20:38:22 +0000 (20:38 +0000)
Fixes: 33c61eb2f10526 "iris: Implement ARB_compute_variable_group_size"
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6570>

src/gallium/drivers/iris/iris_state.c

index 341cdbdb20879f84c4925fc6bc724d667b3f54f3..cf36dfa81d9fdb3e337ca277e1c3e3ac9dfdb59a 100644 (file)
@@ -6700,7 +6700,8 @@ iris_upload_gpgpu_walker(struct iris_context *ice,
    }
 
    /* TODO: Combine subgroup-id with cbuf0 so we can push regular uniforms */
-   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 */) {
       uint32_t curbe_data_offset = 0;
       assert(cs_prog_data->push.cross_thread.dwords == 0 &&
              cs_prog_data->push.per_thread.dwords == 1 &&