mesa/st: implement hardware accelerated GL_SELECT
authorQiang Yu <yuq825@gmail.com>
Sat, 2 Apr 2022 09:12:20 +0000 (17:12 +0800)
committerMarge Bot <emma+marge@anholt.net>
Mon, 6 Jun 2022 18:23:49 +0000 (18:23 +0000)
commit9b22ab4167e6c2c0cf8868a9109545fe2c0d164b
tree278c179b7502bf2426de06383705f50b9aadbc50
parent19f373726237ff93bb2e933e1d2ca3201c154772
mesa/st: implement hardware accelerated GL_SELECT

Use an internal geometry shader to handle input primitives. Do full
accurate culling and clipping in the shader and output hit result and
min/max depth to a SSBO for final being written to select buffer.

With multiple result slots in SSBO we can left multiple draws on the
fly and wait them done when buffer is full or exit GL_SELECT mode.

This provides quicker selection response compared to software based
solution. Tested on Discovery Studio 2020: some complex model needs
1~2s selection response time originally, now it's almost selected
immidiately.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15765>
src/mesa/main/feedback.c
src/mesa/meson.build
src/mesa/state_tracker/st_cb_feedback.c
src/mesa/state_tracker/st_context.c
src/mesa/state_tracker/st_context.h
src/mesa/state_tracker/st_draw.c
src/mesa/state_tracker/st_draw.h
src/mesa/state_tracker/st_draw_hw_select.c [new file with mode: 0644]