[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