Since upgrading to Ubuntu 10.04 (hardware details below), I can trigger this behavior in an OpenGL app I'm developing, and I've narrowed it down to very specific bits of fragment shader code.
In the fragment shader code below, if the GLSL uniform variable 'rgb_separation' is 0.0, this code runs normally (fast), if it's >0.0, it outputs the "Error setting memory domains" error, runs at about 1 fps, and will eventually crash if left above 0.0 for a few seconds. void main(void) { vec4 color = gl_Color; vec2 tcoords = gl_TexCoord[0].st; ... if(rgb_separation > 0.0) { vec2 offset = vec2(rgb_separation, 0.0); vec4 left_pixel = texture2D(tex, tcoords - offset); vec4 center_pixel = texture2D(tex, tcoords); vec4 right_pixel = texture2D(tex, tcoords + offset); color *= vec4(left_pixel.r, center_pixel.g, right_pixel.b, (left_pixel.a + center_pixel.a + right_pixel.a) / 3.0); } else { vec4 texture_color = texture2D(tex, tcoords); color *= texture_color; } ... gl_FragColor = color; } (Other parts of the shader use texture2D(tex, ...) to successfully read from the set texture.) (This happens both when 'tex' is a normal GL texture loaded from disk, and when it is an image attached to a FrameBufferObject.) So I've experimented a bit with this, and found that if I comment out the "color *= vec4(...)" line then it does NOT exhibit the problem. I've also tried splitting that line into individual expressions, to see if that changed anything. The code is below. Oddly, if I uncomment any line below besides the first, it then exhibits the problem. With just the red channel it runs fast (although it doesn't look correct). color.r = color.r * left_pixel.r; //color.g = color.g * left_pixel.g; //color.b = color.b * left_pixel.b; //color.a = color.a * ((left_pixel.a + center_pixel.a + right_pixel.a) / 3.0); I'm not sure what to make of that-- but maybe it rings a bell for someone. Hardware details: Laptop is a T61. $ lspci | grep Display 00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c) $ glxinfo | grep OpenGL OpenGL vendor string: Tungsten Graphics, Inc OpenGL renderer string: Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4 x86/MMX/SSE2 OpenGL version string: 2.1 Mesa 7.7.1 OpenGL shading language version string: 1.20 -- [i965gm] X often crashes when starting xmoto levels (i915 GPU hung) https://bugs.launchpad.net/bugs/580449 You received this bug notification because you are a member of Ubuntu-X, which is subscribed to xserver-xorg-video-intel in ubuntu. _______________________________________________ Mailing list: https://launchpad.net/~ubuntu-x-swat Post to : ubuntu-x-swat@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-x-swat More help : https://help.launchpad.net/ListHelp