diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-06-30 09:28:38 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-06-30 15:24:43 +0200 |
commit | bed8c5d678bc73bede59bbddf5e8b6af05185780 (patch) | |
tree | 3becd8c3cc73115fe0c5746f0dc652c876cab20e /src/gui/rhi/qrhigles2_p_p.h | |
parent | 60666ed2fa20fa64ca9ad02c2124876a1d11b42a (diff) |
Switch to qvla where it makes sense in rhi
For all of these we know in advance that the vast majority of usages
will not exceed a certain number of elements. Also, none of these are
copied or moved ever.
Change-Id: I48aedf143e221dc178d661e23454d1e4fb7a271b
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhigles2_p_p.h')
-rw-r--r-- | src/gui/rhi/qrhigles2_p_p.h | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/gui/rhi/qrhigles2_p_p.h b/src/gui/rhi/qrhigles2_p_p.h index 26a0925dee..32e7d1185d 100644 --- a/src/gui/rhi/qrhigles2_p_p.h +++ b/src/gui/rhi/qrhigles2_p_p.h @@ -266,6 +266,9 @@ struct QGles2SamplerDescription Q_DECLARE_TYPEINFO(QGles2SamplerDescription, Q_MOVABLE_TYPE); +using QGles2UniformDescriptionVector = QVarLengthArray<QGles2UniformDescription, 8>; +using QGles2SamplerDescriptionVector = QVarLengthArray<QGles2SamplerDescription, 4>; + struct QGles2GraphicsPipeline : public QRhiGraphicsPipeline { QGles2GraphicsPipeline(QRhiImplementation *rhi); @@ -275,8 +278,8 @@ struct QGles2GraphicsPipeline : public QRhiGraphicsPipeline GLuint program = 0; GLenum drawMode = GL_TRIANGLES; - QList<QGles2UniformDescription> uniforms; - QList<QGles2SamplerDescription> samplers; + QGles2UniformDescriptionVector uniforms; + QGles2SamplerDescriptionVector samplers; uint generation = 0; friend class QRhiGles2; }; @@ -289,8 +292,8 @@ struct QGles2ComputePipeline : public QRhiComputePipeline bool create() override; GLuint program = 0; - QList<QGles2UniformDescription> uniforms; - QList<QGles2SamplerDescription> samplers; + QGles2UniformDescriptionVector uniforms; + QGles2SamplerDescriptionVector samplers; uint generation = 0; friend class QRhiGles2; }; @@ -574,17 +577,17 @@ struct QGles2CommandBuffer : public QRhiCommandBuffer } } computePassState; - QList<QByteArray> dataRetainPool; - QList<QImage> imageRetainPool; + QVarLengthArray<QByteArray, 4> dataRetainPool; + QVarLengthArray<QImage, 4> imageRetainPool; // relies heavily on implicit sharing (no copies of the actual data will be made) const void *retainData(const QByteArray &data) { dataRetainPool.append(data); - return dataRetainPool.constLast().constData(); + return dataRetainPool.last().constData(); } const void *retainImage(const QImage &image) { imageRetainPool.append(image); - return imageRetainPool.constLast().constBits(); + return imageRetainPool.last().constBits(); } void resetCommands() { commands.clear(); @@ -810,11 +813,11 @@ public: bool linkProgram(GLuint program); void registerUniformIfActive(const QShaderDescription::BlockVariable &var, const QByteArray &namePrefix, int binding, int baseOffset, - GLuint program, QList<QGles2UniformDescription> *dst); + GLuint program, QGles2UniformDescriptionVector *dst); void gatherUniforms(GLuint program, const QShaderDescription::UniformBlock &ub, - QList<QGles2UniformDescription> *dst); + QGles2UniformDescriptionVector *dst); void gatherSamplers(GLuint program, const QShaderDescription::InOutVariable &v, - QList<QGles2SamplerDescription> *dst); + QGles2SamplerDescriptionVector *dst); bool isProgramBinaryDiskCacheEnabled() const; enum DiskCacheResult { |