+ Reply to Thread
Results 1 to 6 of 6

Thread: Why doesn't ARB_VBO function correctly with FGLRX?

  1. #1
    Join Date
    Jun 2007
    Posts
    260

    Default Why doesn't ARB_VBO function correctly with FGLRX?

    I had a problem with WoW being slower on Linux than on Windows (I use Cedega, but it's the same with Wine).
    I searched around the Cedega forums, and if I understood correctly, it's due to the ARB_VBO extension being disabled so that the game can run correctly.
    When enabled, the game is so massively slow, it's unplayable.
    And from what I gather, if it is functioning correctly, I should get a better performance, something closer to the performance in Windows.

    Anyone care to enlighten me on this?

  2. #2
    Join Date
    Jul 2008
    Posts
    275

    Default

    My best guess is that it's just something that hasn't been fully implemented yet - although if you look at my thread about ETQW, it works fine if the game uses VBOs for "index" buffers as well as vertex buffers. I have no idea what these indices refer to in the renderer, compared to triangle vertices, my knowledge of 3d rendering isn't that advanced...

  3. #3
    Join Date
    Jun 2007
    Posts
    260

    Default

    Quote Originally Posted by grantek View Post
    My best guess is that it's just something that hasn't been fully implemented yet - although if you look at my thread about ETQW, it works fine if the game uses VBOs for "index" buffers as well as vertex buffers. I have no idea what these indices refer to in the renderer, compared to triangle vertices, my knowledge of 3d rendering isn't that advanced...
    Well, in the Graphics tab in Cedega, there are three settings:
    ARB_VBO Extension
    -Dynamic VBO
    -Index VBO

    You can use ARB_VBO alone, or you can use one of the subsettings(but you need to have ARB_VBO activated)

    I tried again, in Index VBO, things are still massively slow like in ARB_VBO normally, and surprisingly, with Dynamic VBO, speed is atleast the same as with ARB_VBO unchecked (It may be higher, but I messed up my WoW install, I used WC3 to check)

  4. #4
    Join Date
    Oct 2007
    Location
    Toronto-ish
    Posts
    6,087

    Default

    I have no idea what these indices refer to in the renderer, compared to triangle vertices
    It's just a more efficient way of communicating vertex information.

    A triangle has three vertices, each with a *lot* of associated information (location, colour, texture coordinates etc..). A lot of graphics operations involve drawing a bunch of connected triangles to form a curved surface, which results in the same vertex appearing multiple times, once for each of the triangles which touches that point. This means that (a) more deta needs to be transferred (vertex information is *big*) and (b) each copy of the vertex typically need to get processed by the TCL or vertex shaders, which wastes processing power.

    One solution is to use structures like triangle fans or triangle strips so you don't have to send as much repeated vertex information. A more general solution is to send each vertex only once, giving each vertex a number (aka index) then draw triangles by sending sets of "vertex numbers" instead of the much larger vertices themselves.

    Example :

    Two triangles, connected on one edge, let's say triangle 1 has vertices A,B,C while triangle 2 has vertices B,C,D

    Only vertex buffers :

    DRAW_TRIANGLES:
    Vertex A info
    Vertex B info
    Vertex C info
    Vertex B info
    Vertex C info
    Vertex D info

    Vertex and Index buffers

    VERTEX_BUFFER:
    1. Vertex A info
    2. Vertex B info
    3. Vertex C info
    4. Vertex D info

    DRAW_TRIANGLES:
    1
    2
    3
    2
    3
    4

    The savings here is only maybe 50% because only 2 of the 4 vertices are re-used, but in some cases you can save a lot more.
    Last edited by bridgman; 08-28-2008 at 10:28 PM.

  5. #5
    Join Date
    Jul 2008
    Posts
    275

    Default

    Quote Originally Posted by bridgman View Post
    A more general solution is to send each vertex only once, giving each vertex a number (aka index)
    Thanks!

  6. #6
    Join Date
    Jan 2008
    Posts
    294

    Default

    Quote Originally Posted by Extreme Coder View Post
    I had a problem with WoW being slower on Linux than on Windows (I use Cedega, but it's the same with Wine).
    I searched around the Cedega forums, and if I understood correctly, it's due to the ARB_VBO extension being disabled so that the game can run correctly.
    When enabled, the game is so massively slow, it's unplayable.
    And from what I gather, if it is functioning correctly, I should get a better performance, something closer to the performance in Windows.

    Anyone care to enlighten me on this?
    Probably not the reason it doesn't work for WOW, but you need to have direct rendering to get GL_ARB_vertex_buffer_object.

    If you use compiz/effects and glxinfo | grep direct says no then you won't get it.

+ Reply to Thread

Posting Permissions

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