https://bugs.freedesktop.org/show_bug.cgi?id=105251
--- Comment #69 from Hleb Valoshka 375gnu@gmail.com --- I have this fault with 2400G and mesa 18.3 & 19.1.1 with Linux 4.19 (other versions haven't been tested).
It seems that Vega is unable to handle tiny VBO correctly. I have an old application that uses a lot of immediate mode GL functions to create small billboards using GL_QUADS like the following one:
glTexCoord2f(0, 0); glVertex(v0 * Size); glTexCoord2f(1, 0); glVertex(v1 * Size); glTexCoord2f(1, 1); glVertex(v2 * Size); glTexCoord2f(0, 1); glVertex(v3 * Size);
Initially I have replaced this code with static GLfloat Vtx[] = { -1, -1, 0, 0, 0, 1, -1, 0, 1, 0, 1, 1, 0, 1, 1, -1, 1, 0, 0, 1 };
glBufferData(GL_ARRAY_BUFFER, sizeof(Vtx), Vtx, GL_STATIC_DRAW); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(3, GL_FLOAT, 5*sizeof(GLfloat), 0); glTexCoordPointer(2, GL_FLOAT, 5*sizeof(GLfloat), 3*sizeof(GLfloat));
+ I use VAO if it's available.
As a variant I used independent arrays for position and texture coordinates. But with the same fault.
So as a result I added required data to another related VBO which contains 8192 vertices. Now I don't have this fault.
I know that OpenGL doesn't like herds of small VBOs, but the hardware failure is not an expected result if we use them.