texture_buffer_object slow performance

Hi Guys,

I am having some problems with TBOs. I am attempting to do character skinning on the GPU (Vista nVidia 9600GT ForceWare 175.19 Drivers 7.15.11.7519).
The code works, but it does it at a really slow pace. I used gDEBugger to help track the problem and using the nVidia GLExpert options it looks like all my TBO are in “SYSTEM_HEAP” memory.

The code is as follows (Which is paraphrased so there might be some typos):
I have 6 TBO allocated as follows:

glGenBuffers( 1, &vertexBO);
glBindBuffer( GL_TEXTURE_BUFFER_EXT, vertexBO);
glBufferData( GL_TEXTURE_BUFFER_EXT, vertexCount, NULL, GL_STATIC_DRAW);

glBufferSubData( GL_TEXTURE_BUFFER_EXT, offset, size, pointer);

I have 6 textures allocated as follows:

glGenTextures( 1, &textureBO);

Then when I want to do actual skinning I do:

glUseProgram( shaderID);

and for each of the six TBOs:

glActiveTexture( GL_TEXTURE0);
glBindTexture( GL_TEXTURE_BUFFER_EXT, textureID);
glTexBufferEXT( GL_TEXTURE_BUFFER_EXT, format, vertexBO);

Where ‘format’ is one of GL_LUMINANCE_ALPHA32I_EXT, GL_LUMINANCE32I_EXT, GL_LUMINANCE32F_ARB, GL_RGBA32F_ARB

and finishing with a glBegin( GL_TRIANGLE_STRIP)/glEnd() to draw a quad into a frame buffer. One RGBA/XYZW pixel per vertex.

The shader used is like this:

[b]uniform samplerBuffer sampler_1;
uniform usamplerBuffer sampler_2;

void main(){

uvec2 data2 = texelFetchBuffer( sampler_2, someUV).xa;

float data1 = texelFetchBuffer( sampler_1, someOtherUV).x;

}[/b]

Does anybody have any ideas why I am getting so bad performance or how I can fix it.

Thanks.

Maybe one or more formats you use (GL_LUMINANCE_ALPHA32I_EXT, GL_LUMINANCE32I_EXT, GL_LUMINANCE32F_ARB, GL_RGBA32F_ARB) may not be accelerated by your graphics card.

I would first check the performance of each format seperately, I am sure you should find at least one with poor performance.

Good call, I will try that.
Is there also any way to tell the GL/drivers not to emulate and just fail, or even to enumerate these formats?

Thanks.