summaryrefslogtreecommitdiffstats
path: root/src/gui/rhi/qrhigles2.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2020-09-25 12:51:47 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2020-09-25 16:58:46 +0200
commit89f7389494c6fc917f189150e06ed1fcfaa238e8 (patch)
tree6bf6860bfe83f41917a3b7da1345f8b7c6c9ade8 /src/gui/rhi/qrhigles2.cpp
parentcc5287a0a99a943febe2a16362d355bab65d7678 (diff)
rhi: gl: d3d: Do not use QByteArray where there is no point
The real benefit in practice is getting rid of profilers going wild about QByteArray::begin() and similar. The actual perf. gain is fairly small. Change-Id: I25e4c762f303b41f0aaf914bc62751f3265d3cf8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhigles2.cpp')
-rw-r--r--src/gui/rhi/qrhigles2.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp
index 6f140487d6..e787d439c2 100644
--- a/src/gui/rhi/qrhigles2.cpp
+++ b/src/gui/rhi/qrhigles2.cpp
@@ -1697,7 +1697,7 @@ void QRhiGles2::enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdate
QGles2Buffer *bufD = QRHI_RES(QGles2Buffer, u.buf);
Q_ASSERT(bufD->m_type == QRhiBuffer::Dynamic);
if (bufD->m_usage.testFlag(QRhiBuffer::UniformBuffer)) {
- memcpy(bufD->ubuf.data() + u.offset, u.data.constData(), size_t(u.dataSize));
+ memcpy(bufD->ubuf + u.offset, u.data.constData(), size_t(u.dataSize));
} else {
trackedBufferBarrier(cbD, bufD, QGles2Buffer::AccessUpdate);
QGles2CommandBuffer::Command cmd;
@@ -1714,7 +1714,7 @@ void QRhiGles2::enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdate
Q_ASSERT(bufD->m_type != QRhiBuffer::Dynamic);
Q_ASSERT(u.offset + u.dataSize <= bufD->m_size);
if (bufD->m_usage.testFlag(QRhiBuffer::UniformBuffer)) {
- memcpy(bufD->ubuf.data() + u.offset, u.data.constData(), size_t(u.dataSize));
+ memcpy(bufD->ubuf + u.offset, u.data.constData(), size_t(u.dataSize));
} else {
trackedBufferBarrier(cbD, bufD, QGles2Buffer::AccessUpdate);
QGles2CommandBuffer::Command cmd;
@@ -1730,7 +1730,7 @@ void QRhiGles2::enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdate
QGles2Buffer *bufD = QRHI_RES(QGles2Buffer, u.buf);
if (bufD->m_usage.testFlag(QRhiBuffer::UniformBuffer)) {
u.result->data.resize(u.readSize);
- memcpy(u.result->data.data(), bufD->ubuf.constData() + u.offset, size_t(u.readSize));
+ memcpy(u.result->data.data(), bufD->ubuf + u.offset, size_t(u.readSize));
if (u.result->completed)
u.result->completed();
} else {
@@ -2836,7 +2836,7 @@ void QRhiGles2::bindShaderResources(QRhiGraphicsPipeline *maybeGraphicsPs, QRhiC
}
}
QGles2Buffer *bufD = QRHI_RES(QGles2Buffer, b->u.ubuf.buf);
- const QByteArray bufView = QByteArray::fromRawData(bufD->ubuf.constData() + viewOffset,
+ const QByteArray bufView = QByteArray::fromRawData(bufD->ubuf + viewOffset,
b->u.ubuf.maybeSize ? b->u.ubuf.maybeSize : bufD->m_size);
QGles2UniformDescriptionVector &uniforms(maybeGraphicsPs ? QRHI_RES(QGles2GraphicsPipeline, maybeGraphicsPs)->uniforms
: QRHI_RES(QGles2ComputePipeline, maybeComputePs)->uniforms);
@@ -3706,6 +3706,8 @@ void QGles2Buffer::destroy()
e.buffer.buffer = buffer;
buffer = 0;
+ delete[] ubuf;
+ ubuf = nullptr;
QRHI_RES_RHI(QRhiGles2);
rhiD->releaseQueue.append(e);
@@ -3729,7 +3731,7 @@ bool QGles2Buffer::create()
qWarning("Uniform buffer: multiple usages specified, this is not supported by the OpenGL backend");
return false;
}
- ubuf.resize(nonZeroSize);
+ ubuf = new char[nonZeroSize];
QRHI_PROF_F(newBuffer(this, uint(nonZeroSize), 0, 1));
return true;
}