Right now unfortunately not as we have to move on from using GLSL for our compute shaders as we can't debug it in a productive manner and can't spend anymore time on these issues.
But pretty much we came across variations of the following problem across lots of different compute shaders on a RX480 Win7 64bit latest drivers:
layout(binding = 0, std430) restrict coherent volatile buffer ItemBuffer
{
ItemHeader itemHeader;
Item items[];
};
Item GetItem(UInt index) { return items[index]; } // Breaks, seemingly returns garbage
Item GetItem(UInt index) { Item item = items[index]; return item; } // Works
We literally simplified shaders down to those basic operations and it was failing. It seems similar to the row_major bug we previously reported that was fixed by copying to a temporary first.
As far as we could tell all our barriers when needed were fine - even in cases where they shouldn't be needed we tested adding them every other line and no change in behaviour. But really with no step through GLSL debugger it's anyone's guess what could be going on without spending large amounts of time to do so.
All the shaders worked as intended on the other vendors hardware.