There is a bug in Catalyst Opengl driver when I try to upload an image through a PBO and copy it to a texture.
To produce this issue, three conditions must be met:
1) The image to be uploaded should be large enough, such as 3000+ pixels in width
2) The width of the image is not will aligned, such as not aligned to a multiple of 16/8/4, but store it in PBO in a aligned manner ( an aligned stride)
3) Use glPixelStorei() to set GL_UNPACK_ROW_LENGTH to specify the row length before call glTexSubImage2D()
I have write a sample program to reproduce this bug which has been attached. Build the program under windows 7 x64 with vc10 and run it, after the main window has show up, two images named "correct.bmp" and "bad.bmp" should be generated. "correct.bmp" is the image i want to upload and "bad.bmp" is the image I upload to a texture and then downloaded. You can see "bad.bmp" is a damaged version of "corrent.bmp".
You can use Catalyst 13.4 or 13.9 to reproduce it.
BTW, This sample works fine in nVidia's openGL dirver.