Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Page 1 of 2 12 LastLast
Results 1 to 10 of 16

Thread: ATI VBO Performance problems

  1. #1
    Intern Newbie
    Join Date
    Jun 2003
    Location
    NI,Germany
    Posts
    31

    ATI VBO Performance problems

    Hi,

    the last weekend i've played with VBOs and all works fine. On my first System, with an nVidia
    GeForce Ti4800 i get more than 300 Frames per
    second by rendering an object with more than 72000 polygons ...

    When i test the same code with the same model on my second System, with an ATI Radeon 8500 i only got 140 Frames per Second. A second test the next generation of this ATI card reduces the Frames again by 10 and more FPS ...

    Knows anyone something about bottlenecks by using ARB_Vertex_Buffer_Objects on ATI based Systems? I can't belive, that an older nVidia Card should be better (more than 40%) than ATI cards on the same or better generations ...

    Thx,
    Christian

  2. #2
    Senior Member OpenGL Guru Humus's Avatar
    Join Date
    Mar 2000
    Location
    Stockholm, Sweden
    Posts
    2,444

    Re: ATI VBO Performance problems

    What vertex format are you using?

  3. #3
    Junior Member Newbie
    Join Date
    Aug 2004
    Location
    Austin, TX
    Posts
    4

    Re: ATI VBO Performance problems

    Make sure your drivers are up to date. I got a 4x performance boost with vbos after I updated my ATI 9200 drivers.

  4. #4
    Senior Member OpenGL Guru
    Join Date
    Mar 2001
    Posts
    3,768

    Re: ATI VBO Performance problems

    The 8500 is an old card; it is not the ATi equivalent of the Ti4800 in performance. Technically, it's more around a Ti4200 (or even a GeForce3) in performance, so your numbers are hardly surprising.

    When you say "the next generation of this ATI card," what card are you specifically refering to?

  5. #5
    Intern Newbie
    Join Date
    Jun 2003
    Location
    NI,Germany
    Posts
    31

    Re: ATI VBO Performance problems

    @ Humus
    I using an array of vector elements, based on a special class with public float coords. All datas are sorted as triangle tripletts and are redered with glDrawArray (glDrawElements will not work currently) as triangles. Later, this array should hold the datas for a trianglestrip render process to increase the performance.

    @ Roco and Korval
    I use the newest ATI and NVidia drivers. With the next generation i mean the 9000 ATI card series.

    When i test the Performance of the cards with the Aquamark benchmark, the ATI have everytime better results, more than doubled values. Only on my rendering process the ATI laggs ...

  6. #6
    Junior Member Newbie
    Join Date
    Aug 2004
    Location
    Austin, TX
    Posts
    4

    Re: ATI VBO Performance problems

    How much data (megabytes) is being put into the buffer? Is it even a megabyte? If it isn't, I'm stumped. Otherwise, I think I read right on these forums that there is a limit to how many vertices one should try to draw from a buffer at once. Look here:

    http://www.opengl.org/discussion_boa...c;f=3;t=012324

    I had suggest to the original poster in that thread to check their drivers as well hehe.

  7. #7
    Senior Member OpenGL Guru
    Join Date
    Mar 2001
    Posts
    3,768

    Re: ATI VBO Performance problems

    I use the newest ATI and NVidia drivers. With the next generation i mean the 9000 ATI card series.
    I meant specific cards. A 9200 is running on the R200 core that comprises the 8500. A 9500 and above runs on the far more advanced R300 core.

  8. #8
    Intern Newbie
    Join Date
    Jun 2003
    Location
    NI,Germany
    Posts
    31

    Re: ATI VBO Performance problems

    @Korval
    i've tested both, a 9200 and a 9600, both with the same result, i got 50% less performance compared to the nVidia Cards with correspondents generations...

    @Rocko
    it's more than one megabyte (circa 2,5MB), and yes both are the newest drivers (Catalyst and Forceware). I dont't think that i have reached the vertices limit (the GPU gems book tells something about 7000+ vertices are nessesary but nothing about a limit), and why should be the ATI limited and the nVidia not?

    I've checked out the performance increase vs. normal Rendering and i have more than doubled the performance, but all nVidia cards have an additonal increase of 30-50% ...

  9. #9
    Senior Member OpenGL Guru
    Join Date
    Mar 2001
    Posts
    3,768

    Re: ATI VBO Performance problems

    ATi cards are known to be sensitive to the alignment of the incoming data. How is your vertex data aligned?

    Since no one else is having any problems similar to this, it must be your rendering code. Could you post a representative sample for us to look at?

  10. #10
    Intern Newbie
    Join Date
    Jun 2003
    Location
    NI,Germany
    Posts
    31

    Re: ATI VBO Performance problems

    I couldn't belive that the failure is in the code, but as u wish, here is the render code :

    Code :
    // enable all
    glEnableClientState(GL_VERTEX_ARRAY);				
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
     
    // get Offset-ID 
    glBindBufferARB(GL_ARRAY_BUFFER_ARB, *m_pObject->getVBONameID());
     
    // Setting des Vertex-Pointers to Vertex-Buffer.
    glVertexPointer( 3, GL_FLOAT, 0, (char *) NULL );
     
    //render texture
    mapTexture();		
     
    // render VBO
    glDrawArrays(GL_TRIANGLES, 0, m_pObject->getVertexCount());	
     
    // disable all
    glDisableClientState( GL_VERTEX_ARRAY );
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    And here is the part of setting the id's
    Code :
    // build and bind offset-ID 
    glGenBuffersARB( 1, m_pObject->getVBONameID());
    glBindBufferARB( GL_ARRAY_BUFFER_ARB, *m_pObject->getVBONameID()); 
     
    // load up datas
    glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_pObject->getVertexCount()*3*
    		sizeof(float), m_pObject->getVertices(), GL_DYNAMIC_DRAW_ARB );
     
    // do the same for textures
    glGenBuffersARB( 1, m_pObject->getVBOTextureNameID());					
    glBindBufferARB( GL_ARRAY_BUFFER_ARB, *m_pObject->getVBOTextureNameID());	
     
    glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_pObject->getVertexCount()*2*
    		sizeof(float), m_pObject->getTextureCoords(), GL_STATIC_DRAW_ARB);

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •