a9934a9f649d397384db8fc6eb268663ea44b9de

While the hardware supports both counter and boolean occlusion queries, the programming model is quite different from OpenGL. In AGX (and in Metal), there is a single "visibility result buffer" associated with the render pass. Each draw that uses occlusion queries writes into this render pass global visibility result buffer at a particular index. By contrast, the OpenGL occlusion query model supposes that each query has independent state that can be mixed and matched within a render pass. We can't simply allocate backing memory for a query and write to it from a job. We can't allocate visibility result buffers for each batch up front and statically assign OpenGL queries to indices, because the OpenGL query can span multiple batches. Finally we can't use a global visibility result buffer without introducing additional synchronization, given that we now support multiple batches in-flight at once. In this patch, I've elected to use a simple solution: allocate visibility result buffers and indices on the fly as needed, and accumulate the results on the CPU at the end of the render pass. When we have proper synchronization we'll want to revisit this, but as everything is stalling at submit time now, I'm not inclined to "optimize" something I can't test. Passes dEQP-GLES3.functional.occlusion_query.* and the relevant piglit tests. The piglits are considerably more thorough, checking lots of "we hate tilers" conditions that dEQP skips over. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20123>
`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library ====================================================== Source ------ This repository lives at https://gitlab.freedesktop.org/mesa/mesa. Other repositories are likely forks, and code found there is not supported. Build & install --------------- You can find more information in our documentation (`docs/install.rst <https://mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_): .. code-block:: sh $ mkdir build $ cd build $ meson .. $ sudo ninja install Support ------- Many Mesa devs hang on IRC; if you're not sure which channel is appropriate, you should ask your question on `OFTC's #dri-devel <irc://irc.oftc.net/dri-devel>`_, someone will redirect you if necessary. Remember that not everyone is in the same timezone as you, so it might take a while before someone qualified sees your question. To figure out who you're talking to, or which nick to ping for your question, check out `Who's Who on IRC <https://dri.freedesktop.org/wiki/WhosWho/>`_. The next best option is to ask your question in an email to the mailing lists: `mesa-dev\@lists.freedesktop.org <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ Bug reports ----------- If you think something isn't working properly, please file a bug report (`docs/bugs.rst <https://mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.
Description
Languages
C
75.3%
C++
18.2%
Python
2.7%
Assembly
1.5%
Rust
1.2%
Other
0.9%