https://bugs.freedesktop.org/show_bug.cgi?id=94037
Bug ID: 94037 Summary: [Gallium] glGetQueryObject with GL_ANY_SAMPLES_PASSED returns the same as with GL_SAMPLES_PASSED Product: Mesa Version: unspecified Hardware: x86-64 (AMD64) OS: Linux (All) Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/r600 Assignee: dri-devel@lists.freedesktop.org Reporter: peter.fiss@gmx.de QA Contact: dri-devel@lists.freedesktop.org
Created attachment 121579 --> https://bugs.freedesktop.org/attachment.cgi?id=121579&action=edit Source code of the test program. Needs SDL2 to build. It shows a red background if the describes bug exists.
The OpenGL-Wiki says, the function should return "GL_FALSE if none of the scoped drawing commands generate samples that pass the depth test; otherwise, the value is GL_TRUE". Source: https://www.opengl.org/wiki/Query_Object
When calling glGetQueryObjecti64v on r600 or nouveau (probably on any gallium driver) however, it returns the number of samples which passed the depth test. This would be correct behaviour if the argument was GL_SAMPLES_PASSED instead of GL_ANY_SAMPLES_PASSED.
I have attached the source code of a simple example program. It worked correctly on the following platforms: - Arch Linux with Intel Ivy Bridge graphics (Mesa 11.1.1-1) - Windows 7 with the same Intel graphics - Windows 7 with Nvidia GeForce GT 640M - Windows 7 with ATI Radeon HD 5670
It showed incorrect behaviour on these systems: - Arch Linux with Nouveau and GeForce GT 640M (Mesa 11.1.1-1) - Manjaro with r600 and Radeon HD 5670 (Mesa 11.1.1-1)
Note that the bugtracker does not allow me to specify 11.1 as mesa version.
https://bugs.freedesktop.org/show_bug.cgi?id=94037
--- Comment #1 from Ilia Mirkin imirkin@alum.mit.edu --- This should have been (semi-accidentally) fixed in commit
https://cgit.freedesktop.org/mesa/mesa/commit/?id=386a9ec77b7113c1e0c29c30b9...
which refactored a lot of that code, and will be fixed even harder once my recent series cleaning this up lands:
https://patchwork.freedesktop.org/series/3163/
note that the issue only applied to the 64-bit getters. Both of the 32-bit getters did force the value to be true/false.
Long story short, try mesa-git, the problem should go away.
https://bugs.freedesktop.org/show_bug.cgi?id=94037
--- Comment #2 from peter.fiss@gmx.de --- Thanks for the quick answer. I'm going to try mesa-git on my Manjaro machine, but it looks like it will take a while until llvm-svn and mesa-git are compiled and installed.
https://bugs.freedesktop.org/show_bug.cgi?id=94037
--- Comment #3 from Ilia Mirkin imirkin@alum.mit.edu --- (In reply to peter.fiss from comment #2)
Thanks for the quick answer. I'm going to try mesa-git on my Manjaro machine, but it looks like it will take a while until llvm-svn and mesa-git are compiled and installed.
You should be fine with your system llvm (or no llvm at all, unless you're using radeonsi or are testing llvmpipe).
https://bugs.freedesktop.org/show_bug.cgi?id=94037
--- Comment #4 from peter.fiss@gmx.de --- I needed to install llvm-svn, because it was a dependency of mesa-git from the Arch User Repository. As a non-mesa-dev this seemed to be the easiest way for me to get mesa-git to work.
Anyway, I can confirm that the bug is fixed in mesa-git. Thanks for your help and for the excellent response time!
https://bugs.freedesktop.org/show_bug.cgi?id=94037
peter.fiss@gmx.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED
dri-devel@lists.freedesktop.org