[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60054] trunk/blender/source: BGE: Potential fix for [#35522] Broken game engine compatibility since 2. 66a on some ATI cards?

Daniel Stokes kupomail at gmail.com
Thu Sep 12 01:24:46 CEST 2013


Revision: 60054
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60054
Author:   kupoman
Date:     2013-09-11 23:24:45 +0000 (Wed, 11 Sep 2013)
Log Message:
-----------
BGE: Potential fix for [#35522] Broken game engine compatibility since 2.66a on some ATI cards?

Disabling display lists for legacy ATI cards since they don't support display lists well.

Also removing an unused variable from the display list rasterizer.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/GPU_extensions.h
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c
    trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h

Modified: trunk/blender/source/blender/gpu/GPU_extensions.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_extensions.h	2013-09-11 21:27:14 UTC (rev 60053)
+++ trunk/blender/source/blender/gpu/GPU_extensions.h	2013-09-11 23:24:45 UTC (rev 60054)
@@ -61,6 +61,7 @@
 
 int GPU_glsl_support(void);
 int GPU_non_power_of_two_support(void);
+int GPU_display_list_support(void);
 int GPU_color_depth(void);
 void GPU_code_generate_glsl_lib(void);
 int GPU_bicubic_bump_support(void);

Modified: trunk/blender/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2013-09-11 21:27:14 UTC (rev 60053)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2013-09-11 23:24:45 UTC (rev 60054)
@@ -86,6 +86,7 @@
 	int extdisabled;
 	int colordepth;
 	int npotdisabled; /* ATI 3xx-5xx (and more) chipsets support NPoT partially (== not enough) */
+	int dlistsdisabled; /* Legacy ATI driver does not support display lists well */
 	GPUDeviceType device;
 	GPUOSType os;
 	GPUDriverType driver;
@@ -190,6 +191,9 @@
 		 * Incomplete list http://dri.freedesktop.org/wiki/ATIRadeon
 		 * New IDs from MESA's src/gallium/drivers/r300/r300_screen.c
 		 */
+		/* This list is close enough to those using the legacy driver which
+		 * has a bug with display lists and glVertexAttrib 
+		 */
 		if (strstr(renderer, "R3") || strstr(renderer, "RV3") ||
 		    strstr(renderer, "R4") || strstr(renderer, "RV4") ||
 		    strstr(renderer, "RS4") || strstr(renderer, "RC4") ||
@@ -200,6 +204,7 @@
 		    strstr(renderer, "RADEON 9"))
 		{
 			GG.npotdisabled = 1;
+			GG.dlistsdisabled = 1;
 		}
 	}
 
@@ -238,6 +243,11 @@
 	return GLEW_ARB_texture_non_power_of_two;
 }
 
+int GPU_display_list_support(void)
+{
+	return !GG.dlistsdisabled;
+}
+
 int GPU_color_depth(void)
 {
 	return GG.colordepth;

Modified: trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp	2013-09-11 21:27:14 UTC (rev 60053)
+++ trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp	2013-09-11 23:24:45 UTC (rev 60054)
@@ -266,7 +266,7 @@
 		bool profile = (SYS_GetCommandLineInt(syshandle, "show_profile", 0) != 0);
 		bool frameRate = (SYS_GetCommandLineInt(syshandle, "show_framerate", 0) != 0);
 		bool animation_record = (SYS_GetCommandLineInt(syshandle, "animation_record", 0) != 0);
-		bool displaylists = (SYS_GetCommandLineInt(syshandle, "displaylists", 0) != 0);
+		bool displaylists = (SYS_GetCommandLineInt(syshandle, "displaylists", 0) != 0) && GPU_display_list_support();
 #ifdef WITH_PYTHON
 		bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0);
 #endif

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2013-09-11 21:27:14 UTC (rev 60053)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2013-09-11 23:24:45 UTC (rev 60054)
@@ -566,7 +566,7 @@
 
 		bool fixed_framerate= (SYS_GetCommandLineInt(syshandle, "fixedtime", (gm->flag & GAME_ENABLE_ALL_FRAMES)) != 0);
 		bool frameRate = (SYS_GetCommandLineInt(syshandle, "show_framerate", 0) != 0);
-		bool useLists = (SYS_GetCommandLineInt(syshandle, "displaylists", gm->flag & GAME_DISPLAY_LISTS) != 0);
+		bool useLists = (SYS_GetCommandLineInt(syshandle, "displaylists", gm->flag & GAME_DISPLAY_LISTS) != 0) && GPU_display_list_support();
 		bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 1) != 0);
 		bool restrictAnimFPS = gm->flag & GAME_RESTRICT_ANIM_UPDATES;
 

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp	2013-09-11 21:27:14 UTC (rev 60053)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp	2013-09-11 23:24:45 UTC (rev 60054)
@@ -127,11 +127,8 @@
 
 
 RAS_ListRasterizer::RAS_ListRasterizer(RAS_ICanvas* canvas, bool lock, int storage)
-:	RAS_OpenGLRasterizer(canvas, storage),
-	mATI(false)
+:	RAS_OpenGLRasterizer(canvas, storage)
 {
-	if (!strcmp((const char*)glGetString(GL_VENDOR), "ATI Technologies Inc."))
-		mATI = true;
 }
 
 RAS_ListRasterizer::~RAS_ListRasterizer() 

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h	2013-09-11 21:27:14 UTC (rev 60053)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h	2013-09-11 23:24:45 UTC (rev 60054)
@@ -51,7 +51,6 @@
 
 class RAS_ListRasterizer : public RAS_OpenGLRasterizer
 {
-	bool mATI;
 	RAS_ArrayLists mArrayLists;
 	RAS_DerivedMeshLists mDerivedMeshLists;
 




More information about the Bf-blender-cvs mailing list