Created attachment 141970 [details] [review]
Patch
After implementing support for query buffer objects in Wine, I got a bug report
about a regression on older AMD hardware
(https://bugs.winehq.org/show_bug.cgi?id=45946). The root cause was a bug in
the query buffer object support for r600 in Mesa.
As mentioned in the commit message for
1c9ea24a19a28e87f6038281c516287f25ad88b5, the r600 shader cannot address
non-256 aligned ssbos. While that commit fixed most buffer accesses, it failed
to fix ssbo[1], e.g. tmp_buffer. This led to random failures of the query
buffer shader depending on whether we got lucky (e.g. tmp_buffer_offset was a
multiple of 256) or not.
The fix is easy. Mask tmp_buffer_offset and add another constant for when we
access the tmp_buffer in the shader. Patch is attached.