summaryrefslogtreecommitdiffstats
path: root/src/gui/rhi
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2020-10-01 13:17:53 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2020-10-02 13:14:18 +0200
commitcbd8dfb8f4168a284ec89fbc4e1ffe5c5c22b762 (patch)
treefa34d4cf282fef4281cf3fb11927f41348f3f295 /src/gui/rhi
parentd92b0e18c1b987e60304c2e366ff374405adaab1 (diff)
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>
Diffstat (limited to 'src/gui/rhi')
-rw-r--r--src/gui/rhi/qrhigles2.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp
index 02990e8c92..b57558889a 100644
--- a/src/gui/rhi/qrhigles2.cpp
+++ b/src/gui/rhi/qrhigles2.cpp
@@ -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:
{