It's a complicated story. But from what I can tell, in GL compute
without barriers, the blob is able to redistribute the workgroups in
various ways (that are not yet understood), whereas with barriers it
cannot redistribute anything, which accounts for erratic workgroup
packing without barriers.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835>
/* Quirk: for graphics, workgroups_x_shift_2 must be at least 2,
* whereas for OpenCL it is simply equal to workgroups_x_shift. For GL
- * compute, it seems it might *always* be 2, but this is suspicious and
- * needs further investigation. (I'm probably just using GL wrong). */
+ * compute, it is always 2 if no barriers are in use, but is equal to
+ * workgroups_x_shift is barriers are in use. */
unsigned shift_2 = shifts[3];