I made new program (now I used RenderTexture from NVidia SDK 8.0 initialized just with “rgba” parameter):
if (pbuffer_enabled)RenderTex->Activate();
RenderScene();
if (pbuffer_enabled)
{
RenderTex->Deactivate();
}
else
{
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256,
256, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 256, 256);
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
if (pbuffer_enabled)RenderTex->Bind();
else glBindTexture(GL_TEXTURE_2D, tex);
DrawQuad();
Results:
Scene that has single quad (64 tris) -
glCopyTexSubImage2D: 200 FPS
RenderTexture: 140 FPS
Very big scene (couple of thousand tris)
glCopyTexSubImage2D: 50 FPS
RenderTexture: 4 FPS
So where is this great new RenderTexture faster than normal glCopyTexSubImage2D??
What am I doing wrong?
I’m using NV implementation of PBuffer so I think it should be good.
UPDATE:
I found where is the problem. PBuffer doesn’t like when there are thousands of triangles drawn using glDrawElements or similar functions. It works even faster when I draw triangles using simple glVertex3f.
No I’m gonna find where is the bug. Keep your fingers crossed 
UPDATE2:
It work fast if I don’t use GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV. I don’t get it. I cannot read vertices from AGP mem because pbuffer works slowly then.
I think that it is a bug in driver or something, because lots of AGP reads causes pbuffer to work veeeery slowly (pbuffer is in APG mem I think).
Or mayby I have to do something to speed it up ?