rhi: gl: Skip rebinding the same index buffer in the same pass

Already doing the same for GL_ARRAY_BUFFER, follow suit with
GL_ELEMENT_ARRAY_BUFFER.

Change-Id: I0cf44480abb3a60a44b316af2c09b2235f9f65e7
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
bb10
Laszlo Agocs 2020-10-01 13:17:53 +02:00
parent d92b0e18c1
commit cbd8dfb8f4
1 changed files with 5 additions and 1 deletions

View File

@ -2154,6 +2154,7 @@ void QRhiGles2::executeCommandBuffer(QRhiCommandBuffer *cb)
quint32 indexStride = sizeof(quint16);
quint32 indexOffset = 0;
GLuint currentArrayBuffer = 0;
GLuint currentElementArrayBuffer = 0;
static const int TRACKED_ATTRIB_COUNT = 16;
bool enabledAttribArrays[TRACKED_ATTRIB_COUNT];
memset(enabledAttribArrays, 0, sizeof(enabledAttribArrays));
@ -2321,7 +2322,10 @@ void QRhiGles2::executeCommandBuffer(QRhiCommandBuffer *cb)
indexType = cmd.args.bindIndexBuffer.type;
indexStride = indexType == GL_UNSIGNED_SHORT ? sizeof(quint16) : sizeof(quint32);
indexOffset = cmd.args.bindIndexBuffer.offset;
f->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cmd.args.bindIndexBuffer.buffer);
if (currentElementArrayBuffer != cmd.args.bindIndexBuffer.buffer) {
currentElementArrayBuffer = cmd.args.bindIndexBuffer.buffer;
f->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, currentElementArrayBuffer);
}
break;
case QGles2CommandBuffer::Command::Draw:
{