[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33356] trunk/blender/source/blender/gpu/ intern/gpu_extensions.c: Detect Gallium driver.

gsr b3d gsr.b3d at infernal-iceberg.com
Sat Nov 27 20:59:00 CET 2010


Revision: 33356
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33356
Author:   gsrb3d
Date:     2010-11-27 20:59:00 +0100 (Sat, 27 Nov 2010)

Log Message:
-----------
Detect Gallium driver. Extend NPoT workaround to opensource drivers.

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	2010-11-27 19:33:40 UTC (rev 33355)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2010-11-27 19:59:00 UTC (rev 33356)
@@ -67,7 +67,7 @@
 	int glslsupport;
 	int extdisabled;
 	int colordepth;
-	int npotdisabled; /* Special case for Ati R500 chipset cards that only support npot with severe restrictions */
+	int npotdisabled; /* ATI 3xx-5xx (and more) chipsets support NPoT partially (== not enough) */
 	GPUDeviceType device;
 	GPUOSType os;
 	GPUDriverType driver;
@@ -92,7 +92,7 @@
 	GLint r, g, b;
 	const char *vendor, *renderer;
 
-	/* can't avoid calling this multiple times, see wm_window_add_ghostwindow */	
+	/* can't avoid calling this multiple times, see wm_window_add_ghostwindow */
 	static char init= 0;
 	if(init) return;
 	init= 1;
@@ -138,9 +138,20 @@
 		GG.device = GPU_DEVICE_INTEL;
 		GG.driver = GPU_DRIVER_OFFICIAL;
 	}
-	else if(strstr(renderer, "Mesa DRI R")) {
+	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;





More information about the Bf-blender-cvs mailing list