[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28008] trunk/blender/source/blender: Fix #21349: triple buffer drawing doesn't work well with thousands of

Brecht Van Lommel brecht at blender.org
Mon Apr 5 12:25:41 CEST 2010


Revision: 28008
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28008
Author:   blendix
Date:     2010-04-05 12:25:40 +0200 (Mon, 05 Apr 2010)

Log Message:
-----------
Fix #21349: triple buffer drawing doesn't work well with thousands of
colors setting on Mac, just disabled it in that case.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/GPU_extensions.h
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c
    trunk/blender/source/blender/windowmanager/intern/wm_draw.c

Modified: trunk/blender/source/blender/gpu/GPU_extensions.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_extensions.h	2010-04-05 09:46:01 UTC (rev 28007)
+++ trunk/blender/source/blender/gpu/GPU_extensions.h	2010-04-05 10:25:40 UTC (rev 28008)
@@ -57,9 +57,11 @@
 void GPU_extensions_disable(void);
 void GPU_extensions_init(void); /* call this before running any of the functions below */
 void GPU_extensions_exit(void);
+int GPU_print_error(char *str);
+
 int GPU_glsl_support(void);
 int GPU_non_power_of_two_support(void);
-int GPU_print_error(char *str);
+int GPU_24bit_color_support(void);
 
 /* GPU Types */
 

Modified: trunk/blender/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2010-04-05 09:46:01 UTC (rev 28007)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2010-04-05 10:25:40 UTC (rev 28008)
@@ -71,6 +71,7 @@
 	GLuint currentfb;
 	int glslsupport;
 	int extdisabled;
+	int color24bit;
 	GPUDeviceType device;
 	GPUOSType os;
 	GPUDriverType driver;
@@ -92,6 +93,7 @@
 
 void GPU_extensions_init()
 {
+	GLint bits;
 	const char *vendor, *renderer;
 
 	glewInit();
@@ -106,6 +108,9 @@
 	if (!GLEW_ARB_vertex_shader) GG.glslsupport = 0;
 	if (!GLEW_ARB_fragment_shader) GG.glslsupport = 0;
 
+	glGetIntegerv(GL_RED_BITS, &bits);
+	GG.color24bit = (bits >= 8);
+
 	vendor = (const char*)glGetString(GL_VENDOR);
 	renderer = (const char*)glGetString(GL_RENDERER);
 
@@ -170,6 +175,11 @@
 	return GLEW_ARB_texture_non_power_of_two;
 }
 
+int GPU_24bit_color_support()
+{
+	return GG.color24bit;
+}
+
 int GPU_print_error(char *str)
 {
 	GLenum errCode;

Modified: trunk/blender/source/blender/windowmanager/intern/wm_draw.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2010-04-05 09:46:01 UTC (rev 28007)
+++ trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2010-04-05 10:25:40 UTC (rev 28008)
@@ -674,6 +674,8 @@
 		/* Windows software driver darkens color on each redraw */
 		else if(GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE))
 			return USER_DRAW_OVERLAP_FLIP;
+		else if(!GPU_24bit_color_support())
+			return USER_DRAW_OVERLAP;
 		else
 			return USER_DRAW_TRIPLE;
 	}





More information about the Bf-blender-cvs mailing list