Use QList instead of QVector in opengl

Task-number: QTBUG-84469
Change-Id: I26c1cfab7f2d9aa5c71847ae02bfe0cf15c04a1b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This commit is contained in:
Jarek Kobus 2020-06-22 12:36:03 +02:00
parent f529f94132
commit b043871d2b
13 changed files with 62 additions and 74 deletions

View File

@ -1079,10 +1079,8 @@ public:
void handleMessage(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *rawMessage);
void controlDebugMessages(QOpenGLDebugMessage::Sources sources,
QOpenGLDebugMessage::Types types,
QOpenGLDebugMessage::Severities severities,
const QVector<GLuint> &ids,
const QByteArray &callerName,
bool enable);
QOpenGLDebugMessage::Severities severities, const QList<GLuint> &ids,
const QByteArray &callerName, bool enable);
void _q_contextAboutToBeDestroyed();
qt_glDebugMessageControl_t glDebugMessageControl;
@ -1159,9 +1157,8 @@ void QOpenGLDebugLoggerPrivate::handleMessage(GLenum source,
void QOpenGLDebugLoggerPrivate::controlDebugMessages(QOpenGLDebugMessage::Sources sources,
QOpenGLDebugMessage::Types types,
QOpenGLDebugMessage::Severities severities,
const QVector<GLuint> &ids,
const QByteArray &callerName,
bool enable)
const QList<GLuint> &ids,
const QByteArray &callerName, bool enable)
{
if (!initialized) {
qWarning("QOpenGLDebugLogger::%s(): object must be initialized before enabling/disabling messages", callerName.constData());
@ -1644,12 +1641,8 @@ void QOpenGLDebugLogger::enableMessages(QOpenGLDebugMessage::Sources sources,
QOpenGLDebugMessage::Severities severities)
{
Q_D(QOpenGLDebugLogger);
d->controlDebugMessages(sources,
types,
severities,
QVector<GLuint>(),
QByteArrayLiteral("enableMessages"),
true);
d->controlDebugMessages(sources, types, severities, QList<GLuint>(),
QByteArrayLiteral("enableMessages"), true);
}
/*!
@ -1660,7 +1653,7 @@ void QOpenGLDebugLogger::enableMessages(QOpenGLDebugMessage::Sources sources,
\sa disableMessages(), pushGroup(), popGroup()
*/
void QOpenGLDebugLogger::enableMessages(const QVector<GLuint> &ids,
void QOpenGLDebugLogger::enableMessages(const QList<GLuint> &ids,
QOpenGLDebugMessage::Sources sources,
QOpenGLDebugMessage::Types types)
{
@ -1686,12 +1679,8 @@ void QOpenGLDebugLogger::disableMessages(QOpenGLDebugMessage::Sources sources,
QOpenGLDebugMessage::Severities severities)
{
Q_D(QOpenGLDebugLogger);
d->controlDebugMessages(sources,
types,
severities,
QVector<GLuint>(),
QByteArrayLiteral("disableMessages"),
false);
d->controlDebugMessages(sources, types, severities, QList<GLuint>(),
QByteArrayLiteral("disableMessages"), false);
}
/*!
@ -1702,7 +1691,7 @@ void QOpenGLDebugLogger::disableMessages(QOpenGLDebugMessage::Sources sources,
\sa enableMessages(), pushGroup(), popGroup()
*/
void QOpenGLDebugLogger::disableMessages(const QVector<GLuint> &ids,
void QOpenGLDebugLogger::disableMessages(const QList<GLuint> &ids,
QOpenGLDebugMessage::Sources sources,
QOpenGLDebugMessage::Types types)
{

View File

@ -47,7 +47,6 @@
#include <QtCore/qshareddata.h>
#include <QtCore/qflags.h>
#include <QtCore/qlist.h>
#include <QtCore/qvector.h>
#include <QtCore/qmetatype.h>
#include <QtCore/qdebug.h>
#include <QtGui/qopenglcontext.h>
@ -184,7 +183,7 @@ public:
QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType,
QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity);
void enableMessages(const QVector<GLuint> &ids,
void enableMessages(const QList<GLuint> &ids,
QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType);
@ -192,7 +191,7 @@ public:
QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType,
QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity);
void disableMessages(const QVector<GLuint> &ids,
void disableMessages(const QList<GLuint> &ids,
QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType);

View File

@ -524,7 +524,7 @@ GLuint QOpenGLEngineShaderManager::getUniformLocation(Uniform id)
if (!currentShaderProg)
return 0;
QVector<uint> &uniformLocations = currentShaderProg->uniformLocations;
QList<uint> &uniformLocations = currentShaderProg->uniformLocations;
if (uniformLocations.isEmpty())
uniformLocations.fill(GLuint(-1), NumUniforms);

View File

@ -386,7 +386,7 @@ public:
QByteArray customStageSource; //TODO: Decent cache key for custom stages
QOpenGLShaderProgram* program;
QVector<uint> uniformLocations;
QList<uint> uniformLocations;
bool useTextureCoords;
bool useOpacityAttribute;

View File

@ -1223,10 +1223,10 @@ GLuint QOpenGLFramebufferObject::texture() const
\sa takeTexture(), texture()
*/
QVector<GLuint> QOpenGLFramebufferObject::textures() const
QList<GLuint> QOpenGLFramebufferObject::textures() const
{
Q_D(const QOpenGLFramebufferObject);
QVector<GLuint> ids;
QList<GLuint> ids;
if (d->format.samples() != 0)
return ids;
ids.reserve(d->colorAttachments.count());
@ -1310,10 +1310,10 @@ QSize QOpenGLFramebufferObject::size() const
\since 5.6
*/
QVector<QSize> QOpenGLFramebufferObject::sizes() const
QList<QSize> QOpenGLFramebufferObject::sizes() const
{
Q_D(const QOpenGLFramebufferObject);
QVector<QSize> sz;
QList<QSize> sz;
sz.reserve(d->colorAttachments.size());
for (const auto &color : d->colorAttachments)
sz.append(color.size);

View File

@ -100,13 +100,13 @@ public:
int height() const { return size().height(); }
GLuint texture() const;
QVector<GLuint> textures() const;
QList<GLuint> textures() const;
GLuint takeTexture();
GLuint takeTexture(int colorAttachmentIndex);
QSize size() const;
QVector<QSize> sizes() const;
QList<QSize> sizes() const;
QImage toImage() const;
QImage toImage(bool flipped) const;

View File

@ -141,7 +141,7 @@ public:
GLenum internalFormat;
QOpenGLSharedResourceGuard *guard;
};
QVector<ColorAttachment> colorAttachments;
QList<ColorAttachment> colorAttachments;
inline GLuint fbo() const { return fbo_guard ? fbo_guard->id() : 0; }
};

View File

@ -306,7 +306,7 @@ public:
QOpenGL2PEXVertexArray vertexCoordinateArray;
QOpenGL2PEXVertexArray textureCoordinateArray;
QVector<GLushort> elementIndices;
QList<GLushort> elementIndices;
GLuint elementIndicesVBOId;
QDataBuffer<GLfloat> opacityArray;
GLfloat staticVertexCoordinateArray[8];
@ -332,8 +332,8 @@ public:
QTriangulatingStroker stroker;
QDashedStrokeProcessor dasher;
QVector<GLuint> unusedVBOSToClean;
QVector<GLuint> unusedIBOSToClean;
QList<GLuint> unusedVBOSToClean;
QList<GLuint> unusedIBOSToClean;
const GLfloat *vertexAttribPointers[3];
};

View File

@ -44,9 +44,9 @@
#include <QtCore/private/qobject_p.h>
#include <QtCore/qdebug.h>
#include <QtCore/qfile.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qvector.h>
#include <QtCore/qlist.h>
#include <QtCore/qloggingcategory.h>
#include <QtCore/qvarlengtharray.h>
#include <QtGui/private/qopenglprogrambinarycache_p.h>
#include <QtGui/qtransform.h>
#include <QtGui/QColor>
@ -3552,7 +3552,7 @@ int QOpenGLShaderProgram::patchVertexCount() const
does not output them to \a levels. For more details on OpenGL and Tessellation
shaders see \l{OpenGL Tessellation Shaders}.
The \a levels argument should be a QVector consisting of 4 floats. Not all
The \a levels argument should be a QList consisting of 4 floats. Not all
of the values make sense for all tessellation modes. If you specify a vector with
fewer than 4 elements, the remaining elements will be given a default value of 1.
@ -3566,12 +3566,12 @@ int QOpenGLShaderProgram::patchVertexCount() const
\sa defaultOuterTessellationLevels(), setDefaultInnerTessellationLevels()
*/
void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QVector<float> &levels)
void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QList<float> &levels)
{
#if !QT_CONFIG(opengles2)
Q_D(QOpenGLShaderProgram);
if (d->tessellationFuncs) {
QVector<float> tessLevels = levels;
QList<float> tessLevels = levels;
// Ensure we have the required 4 outer tessellation levels
// Use default of 1 for missing entries (same as spec)
@ -3594,7 +3594,7 @@ void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QVector<float
does not output them. For more details on OpenGL and Tessellation shaders see
\l{OpenGL Tessellation Shaders}.
Returns a QVector of floats describing the outer tessellation levels. The vector
Returns a QList of floats describing the outer tessellation levels. The vector
will always have four elements but not all of them make sense for every mode
of tessellation.
@ -3606,16 +3606,16 @@ void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QVector<float
\sa setDefaultOuterTessellationLevels(), defaultInnerTessellationLevels()
*/
QVector<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const
QList<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const
{
#if !QT_CONFIG(opengles2)
QVector<float> tessLevels(4, 1.0f);
QList<float> tessLevels(4, 1.0f);
Q_D(const QOpenGLShaderProgram);
if (d->tessellationFuncs)
d->tessellationFuncs->glGetFloatv(GL_PATCH_DEFAULT_OUTER_LEVEL, tessLevels.data());
return tessLevels;
#else
return QVector<float>();
return QList<float>();
#endif
}
@ -3625,7 +3625,7 @@ QVector<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const
does not output them to \a levels. For more details on OpenGL and Tessellation shaders see
\l{OpenGL Tessellation Shaders}.
The \a levels argument should be a QVector consisting of 2 floats. Not all
The \a levels argument should be a QList consisting of 2 floats. Not all
of the values make sense for all tessellation modes. If you specify a vector with
fewer than 2 elements, the remaining elements will be given a default value of 1.
@ -3639,12 +3639,12 @@ QVector<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const
\sa defaultInnerTessellationLevels(), setDefaultOuterTessellationLevels()
*/
void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QVector<float> &levels)
void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QList<float> &levels)
{
#if !QT_CONFIG(opengles2)
Q_D(QOpenGLShaderProgram);
if (d->tessellationFuncs) {
QVector<float> tessLevels = levels;
QList<float> tessLevels = levels;
// Ensure we have the required 2 inner tessellation levels
// Use default of 1 for missing entries (same as spec)
@ -3667,7 +3667,7 @@ void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QVector<float
does not output them. For more details on OpenGL and Tessellation shaders see
\l{OpenGL Tessellation Shaders}.
Returns a QVector of floats describing the inner tessellation levels. The vector
Returns a QList of floats describing the inner tessellation levels. The vector
will always have two elements but not all of them make sense for every mode
of tessellation.
@ -3679,16 +3679,16 @@ void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QVector<float
\sa setDefaultInnerTessellationLevels(), defaultOuterTessellationLevels()
*/
QVector<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const
QList<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const
{
#if !QT_CONFIG(opengles2)
QVector<float> tessLevels(2, 1.0f);
QList<float> tessLevels(2, 1.0f);
Q_D(const QOpenGLShaderProgram);
if (d->tessellationFuncs)
d->tessellationFuncs->glGetFloatv(GL_PATCH_DEFAULT_INNER_LEVEL, tessLevels.data());
return tessLevels;
#else
return QVector<float>();
return QList<float>();
#endif
}

View File

@ -140,11 +140,11 @@ public:
void setPatchVertexCount(int count);
int patchVertexCount() const;
void setDefaultOuterTessellationLevels(const QVector<float> &levels);
QVector<float> defaultOuterTessellationLevels() const;
void setDefaultOuterTessellationLevels(const QList<float> &levels);
QList<float> defaultOuterTessellationLevels() const;
void setDefaultInnerTessellationLevels(const QVector<float> &levels);
QVector<float> defaultInnerTessellationLevels() const;
void setDefaultInnerTessellationLevels(const QList<float> &levels);
QList<float> defaultInnerTessellationLevels() const;
void bindAttributeLocation(const char *name, int location);
void bindAttributeLocation(const QByteArray& name, int location);

View File

@ -487,12 +487,12 @@ public:
void destroy();
void recordSample();
bool isResultAvailable() const;
QVector<GLuint64> samples() const;
QVector<GLuint64> intervals() const;
QList<GLuint64> samples() const;
QList<GLuint64> intervals() const;
void reset();
QVector<GLuint> timers;
mutable QVector<GLuint64> timeSamples;
QList<GLuint> timers;
mutable QList<GLuint64> timeSamples;
QOpenGLContext *context;
QOpenGLQueryHelper *core;
@ -596,7 +596,7 @@ bool QOpenGLTimeMonitorPrivate::isResultAvailable() const
return available;
}
QVector<GLuint64> QOpenGLTimeMonitorPrivate::samples() const
QList<GLuint64> QOpenGLTimeMonitorPrivate::samples() const
{
// For the Core and ARB options just ask for the timestamp for each timer query.
// For the EXT implementation we cannot obtain timestamps so we defer any result
@ -611,12 +611,12 @@ QVector<GLuint64> QOpenGLTimeMonitorPrivate::samples() const
return timeSamples;
}
QVector<GLuint64> QOpenGLTimeMonitorPrivate::intervals() const
QList<GLuint64> QOpenGLTimeMonitorPrivate::intervals() const
{
QVector<GLuint64> intervals(timers.size() - 1);
QList<GLuint64> intervals(timers.size() - 1);
if (!ext) {
// Obtain the timestamp samples and calculate the interval durations
const QVector<GLuint64> timeStamps = samples();
const QList<GLuint64> timeStamps = samples();
for (int i = 0; i < intervals.size(); ++i)
intervals[i] = timeStamps[i+1] - timeStamps[i];
} else {
@ -794,9 +794,9 @@ bool QOpenGLTimeMonitor::isCreated() const
}
/*!
Returns a QVector containing the object Ids of the OpenGL timer query objects.
Returns a QList containing the object Ids of the OpenGL timer query objects.
*/
QVector<GLuint> QOpenGLTimeMonitor::objectIds() const
QList<GLuint> QOpenGLTimeMonitor::objectIds() const
{
Q_D(const QOpenGLTimeMonitor);
return d->timers;
@ -829,7 +829,7 @@ bool QOpenGLTimeMonitor::isResultAvailable() const
}
/*!
Returns a QVector containing the GPU timestamps taken with recordSample().
Returns a QList containing the GPU timestamps taken with recordSample().
This function will block until OpenGL indicates the results are available. It
is recommended to check the availability of the result prior to calling this
@ -840,14 +840,14 @@ bool QOpenGLTimeMonitor::isResultAvailable() const
\sa waitForIntervals(), isResultAvailable()
*/
QVector<GLuint64> QOpenGLTimeMonitor::waitForSamples() const
QList<GLuint64> QOpenGLTimeMonitor::waitForSamples() const
{
Q_D(const QOpenGLTimeMonitor);
return d->samples();
}
/*!
Returns a QVector containing the time intervals delimited by the calls to
Returns a QList containing the time intervals delimited by the calls to
recordSample(). The resulting vector will contain one fewer element as
this represents the intervening intervals rather than the actual timestamp
samples.
@ -858,7 +858,7 @@ QVector<GLuint64> QOpenGLTimeMonitor::waitForSamples() const
\sa waitForSamples(), isResultAvailable()
*/
QVector<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const
QList<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const
{
Q_D(const QOpenGLTimeMonitor);
return d->intervals();

View File

@ -93,14 +93,14 @@ public:
bool create();
void destroy();
bool isCreated() const;
QVector<GLuint> objectIds() const;
QList<GLuint> objectIds() const;
int recordSample();
bool isResultAvailable() const;
QVector<GLuint64> waitForSamples() const;
QVector<GLuint64> waitForIntervals() const;
QList<GLuint64> waitForSamples() const;
QList<GLuint64> waitForIntervals() const;
void reset();

View File

@ -94,7 +94,7 @@ static QRegion deviceRegion(const QRegion &region, QWindow *window, const QPoint
if (offset.isNull() && window->devicePixelRatio() <= 1)
return region;
QVector<QRect> rects;
QList<QRect> rects;
rects.reserve(region.rectCount());
for (const QRect &rect : region)
rects.append(deviceRect(rect.translated(offset), window));