[Bf-codereview] [PATCH] Fix FDO 34495: Selecting objects in Blender slow due to GL_SELECT

Laura Ekstrand laura at jlekstrand.net
Sat Sep 5 05:45:34 CEST 2015


Refer to bug: https://bugs.freedesktop.org/show_bug.cgi?id=34495, Comment 78

The default selection mode (File > User Preferences > System > Selection) of
Automatic preferred using glRenderMode(GL_SELECT) unless the user's GPU was an
ATI. Since glRenderMode(GL_SELECT) is deprecated, driver developers rely on
software fallbacks for its implementation.  These software fallbacks are slow.

Since all drivers (including all open source drivers) now implement
GL_ARB_OCCLUSION_QUERY, this patch sets the selection mode to always
use occlusion query unless:

1. GL_ARB_OCCLUSION_QUERY is not present in the driver, or
2. The user has selected the GL_SELECT selection mode manually using File >
User Preferences > System > Selection.
---
 source/blender/gpu/intern/gpu_select.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/source/blender/gpu/intern/gpu_select.c b/source/blender/gpu/intern/gpu_select.c
index 4978229..0d0dd33 100644
--- a/source/blender/gpu/intern/gpu_select.c
+++ b/source/blender/gpu/intern/gpu_select.c
@@ -243,6 +243,5 @@ bool GPU_select_query_check_support(void)
 bool GPU_select_query_check_active(void)
 {
 	return GLEW_ARB_occlusion_query &&
-	       ((U.gpu_select_method == USER_SELECT_USE_OCCLUSION_QUERY) ||
-	        ((U.gpu_select_method == USER_SELECT_AUTO) && GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_ANY)));
+	        (U.gpu_select_method != USER_SELECT_USE_SELECT_RENDERMODE);
 }
-- 
2.4.3



More information about the Bf-codereview mailing list