diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-10-01 13:17:53 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-10-02 13:14:18 +0200 |
commit | cbd8dfb8f4168a284ec89fbc4e1ffe5c5c22b762 (patch) | |
tree | fa34d4cf282fef4281cf3fb11927f41348f3f295 /src/gui/rhi | |
parent | d92b0e18c1b987e60304c2e366ff374405adaab1 (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.cpp | 6 |
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: { |