[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43885] trunk/blender/source/blender/gpu/ intern/gpu_extensions.c: Fix: non-power-of-two-textures were always disabled on ATI/Apple due to poor

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Feb 4 20:57:16 CET 2012


Revision: 43885
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43885
Author:   blendix
Date:     2012-02-04 19:57:09 +0000 (Sat, 04 Feb 2012)
Log Message:
-----------
Fix: non-power-of-two-textures were always disabled on ATI/Apple due to poor
support in some older cards, now it does a more precise check for problematic
cards so that it can be enabled on new cards that do support it properly.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c

Modified: trunk/blender/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2012-02-04 17:20:38 UTC (rev 43884)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2012-02-04 19:57:09 UTC (rev 43885)
@@ -126,12 +126,6 @@
 	if(strstr(vendor, "ATI")) {
 		GG.device = GPU_DEVICE_ATI;
 		GG.driver = GPU_DRIVER_OFFICIAL;
-
-		/* ATI X1xxx cards (R500 chipset) lack full support for npot textures
-		 * although they report the GLEW_ARB_texture_non_power_of_two extension.
-		 */
-		if(strstr(renderer, "X1"))
-			GG.npotdisabled = 1;
 	}
 	else if(strstr(vendor, "NVIDIA")) {
 		GG.device = GPU_DEVICE_NVIDIA;
@@ -147,17 +141,6 @@
 	else if(strstr(renderer, "Mesa DRI R") || (strstr(renderer, "Gallium ") && strstr(renderer, " on ATI "))) {
 		GG.device = GPU_DEVICE_ATI;
 		GG.driver = GPU_DRIVER_OPENSOURCE;
-		/* ATI 9500 to X2300 cards support NPoT textures poorly
-		 * Incomplete list http://dri.freedesktop.org/wiki/ATIRadeon
-		 * New IDs from MESA's src/gallium/drivers/r300/r300_screen.c
-		 */
-		if(strstr(renderer, "R3") || strstr(renderer, "RV3") ||
-		   strstr(renderer, "R4") || strstr(renderer, "RV4") ||
-		   strstr(renderer, "RS4") || strstr(renderer, "RC4") ||
-		   strstr(renderer, "R5") || strstr(renderer, "RV5") ||
-		   strstr(renderer, "RS600") || strstr(renderer, "RS690") ||
-		   strstr(renderer, "RS740"))
-			GG.npotdisabled = 1;
 	}
 	else if(strstr(renderer, "Nouveau") || strstr(vendor, "nouveau")) {
 		GG.device = GPU_DEVICE_NVIDIA;
@@ -180,6 +163,21 @@
 		GG.driver = GPU_DRIVER_ANY;
 	}
 
+	if(GG.device == GPU_DEVICE_ATI) {
+		/* ATI 9500 to X2300 cards support NPoT textures poorly
+		 * Incomplete list http://dri.freedesktop.org/wiki/ATIRadeon
+		 * New IDs from MESA's src/gallium/drivers/r300/r300_screen.c
+		 */
+		if(strstr(renderer, "R3") || strstr(renderer, "RV3") ||
+		   strstr(renderer, "R4") || strstr(renderer, "RV4") ||
+		   strstr(renderer, "RS4") || strstr(renderer, "RC4") ||
+		   strstr(renderer, "R5") || strstr(renderer, "RV5") ||
+		   strstr(renderer, "RS600") || strstr(renderer, "RS690") ||
+		   strstr(renderer, "RS740") || strstr(renderer, "X1") ||
+		   strstr(renderer, "X2"))
+			GG.npotdisabled = 1;
+	}
+
 	GG.os = GPU_OS_UNIX;
 #ifdef _WIN32
 	GG.os = GPU_OS_WIN;
@@ -202,11 +200,6 @@
 
 int GPU_non_power_of_two_support(void)
 {
-	/* Exception for buggy ATI/Apple driver in Mac OS X 10.5/10.6,
-	 * they claim to support this but can cause system freeze */
-	if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_MAC, GPU_DRIVER_OFFICIAL))
-		return 0;
-
 	if(GG.npotdisabled)
 		return 0;
 




More information about the Bf-blender-cvs mailing list