... and radeon 9500 and up.

Now the problem with your code is that you don't initialize the code correctly. You can't specify an internalformat with glcopyteximage2d. You need glteximage2d.

There's no idea in building mipmaps as he doesn't use any mipmap filtering. besides he can't mipmap textures which a copied from screen unless he has fbo's (glgeneratemipmapext)