I've got here a long standing problem which so far I temporarily solved by disallowing filtering on cube-maps. That's though not a possible final solution. In short whenever I try to use filtered cube maps on nVidia hardware like this
glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_CUBE_MAP, texture );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glEnable( GL_TEXTURE_CUBE_MAP_SEAMLESS ); // crashes with or without this
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE );
the rendering crashes inside the nVidia driver blob
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6811e50 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0 0x00007ffff6811e50 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff23eb027 in ?? () from /usr/lib/nvidia-current-updates/libnvidia-glcore.so.304.51
#2 0x00007ffff23ec18a in ?? () from /usr/lib/nvidia-current-updates/libnvidia-glcore.so.304.51
#3 0x00007ffff23ec7a8 in ?? () from /usr/lib/nvidia-current-updates/libnvidia-glcore.so.304.51
#4 0x00007ffff2531e1b in ?? () from /usr/lib/nvidia-current-updates/libnvidia-glcore.so.304.51
#5 0x00007ffff2204d69 in ?? () from /usr/lib/nvidia-current-updates/libnvidia-glcore.so.304.51
(...)
When I use no filtering instead like this
glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_CUBE_MAP, texture );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); // <== !
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); // <== !
glEnable( GL_TEXTURE_CUBE_MAP_SEAMLESS ); // crashes with or without this
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE );
then no crashing happens (but obviously also no filtering). On ATI/AMD no such crash happens and all renders fine.
Has anybody an idea what nVidia fucks up here in the driver? Any work-around? Any special tokens to set?