I took another look at this as part of handling bug #556631.
In Karmic, /usr/bin/compiz was a shell script, which included a check for max texture size:
check_texture_size()
{
# Check how many screens we've got and iterate over them N=$(xdpyinfo | grep -i "number of screens" | sed 's/.*[^0-9]//g')
for i in $(seq 1 $N); do
verbose "Checking screen $i" TEXTURE_LIMIT=$(glxinfo -l | grep GL_MAX_TEXTURE_SIZE | sed -n "$i s/^.*=[^0-9]//g p") RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed -n -e "$i s/^ *dimensions: *\([0-9]*x[0-9]*\) pixels.*/\1/ p") VRES=$(echo $RESOLUTION | sed 's/.*x//') HRES=$(echo $RESOLUTION | sed 's/x.*//')
verbose "Comparing resolution ($RESOLUTION) to maximum 3D texture size ($TEXTURE_LIMIT): ";
if [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then verbose "Failed.\n"
return 1;
fi
verbose "Passed.\n"
done
return 0
}
It appears that as of 1:0.8.4-0ubuntu4 in lucid, the checks that the compiz wrapper had been doing have moved to the compiz binary itself:
compiz (1:0.8.4-0ubuntu4) lucid; urgency=low
...
[ Travis Watkins ]
* debian/patches/060_move_checks_to_compiz.patch:
- add all relevant checks from compiz-manager to compiz itself
Compiz already checks for almost everything it needs so there is no
need to check twice.
So the texture size check appears to be occurring in this chunk of the patch:
@@ -244,13 +246,21 @@
CompFBConfig *config = &screen->glxPixmapFBConfigs[depth];
int attribs[7], i = 0;
+ if (width > screen->maxTextureSize || height > screen->maxTextureSize)
+ {
+ compLogMessage ("core", CompLogLevelWarn,
+ "Exceeded max texture size");
+
+ launchFallbackWM ();
+ }
+
if (!config->fbConfig)
{
compLogMessage ("core", CompLogLevelWarn,
"No GLXFBConfig for depth %d",
depth);
- return FALSE;
+ launchFallbackWM ();
}
attribs[i++] = GLX_TEXTURE_FORMAT_EXT;
So that all looks like it should work... You should get an error message "Exceeded max texture size" in your compiz log
I took another look at this as part of handling bug #556631.
In Karmic, /usr/bin/compiz was a shell script, which included a check for max texture size:
check_texture_ size()
N=$(xdpyinfo | grep -i "number of screens" | sed 's/.*[^0-9]//g')
TEXTURE_ LIMIT=$ (glxinfo -l | grep GL_MAX_TEXTURE_SIZE | sed -n "$i s/^.*=[^0-9]//g p")
RESOLUTION =$(xdpyinfo | grep -i dimensions: | sed -n -e "$i s/^ *dimensions: *\([0-9]*x[0-9]*\) pixels.*/\1/ p")
VRES= $(echo $RESOLUTION | sed 's/.*x//')
HRES= $(echo $RESOLUTION | sed 's/x.*//')
verbose "Failed.\n"
{
# Check how many screens we've got and iterate over them
for i in $(seq 1 $N); do
verbose "Checking screen $i"
verbose "Comparing resolution ($RESOLUTION) to maximum 3D texture size ($TEXTURE_LIMIT): ";
if [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then
return 1;
fi
verbose "Passed.\n"
done
return 0
}
It appears that as of 1:0.8.4-0ubuntu4 in lucid, the checks that the compiz wrapper had been doing have moved to the compiz binary itself:
bryce@blumonc:~$ cat /etc/lsb-release ; file /usr/bin/compiz RELEASE= 10.04 CODENAME= lucid DESCRIPTION= "Ubuntu lucid (development branch)"
DISTRIB_ID=Ubuntu
DISTRIB_
DISTRIB_
DISTRIB_
/usr/bin/compiz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
compiz (1:0.8.4-0ubuntu4) lucid; urgency=low patches/ 060_move_ checks_ to_compiz. patch:
...
[ Travis Watkins ]
* debian/
- add all relevant checks from compiz-manager to compiz itself
Compiz already checks for almost everything it needs so there is no
need to check twice.
So the texture size check appears to be occurring in this chunk of the patch:
@@ -244,13 +246,21 @@ >glxPixmapFBCon figs[depth] ;
CompFBConfig *config = &screen-
int attribs[7], i = 0;
+ if (width > screen- >maxTextureSize || height > screen- >maxTextureSize )
+ {
+ compLogMessage ("core", CompLogLevelWarn,
+ "Exceeded max texture size");
+
+ launchFallbackWM ();
+ }
+
if (!config->fbConfig)
{
compLogMessage ("core", CompLogLevelWarn,
"No GLXFBConfig for depth %d",
depth);
- return FALSE;
+ launchFallbackWM ();
}
attribs[i++] = GLX_TEXTURE_ FORMAT_ EXT;
So that all looks like it should work... You should get an error message "Exceeded max texture size" in your compiz log