aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph
diff options
context:
space:
mode:
authorJonas Karlsson <jonas.karlsson@qt.io>2020-12-22 13:52:50 +0100
committerJonas Karlsson <jonas.karlsson@qt.io>2021-01-07 13:21:45 +0100
commitdfb36c91b401308f74a5bc635f9a77ba2f9872a0 (patch)
tree749fb94601d9f6077a4ec8130df401c030959022 /src/quick/scenegraph
parent1cd696cf9e10f62caf69cd671fb5c34964a1c107 (diff)
Use new QTextureFileData::getDataView method
Change-Id: Ib675bfaa3fd818ef3e372bc2affd87e0d9d8f480 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/quick/scenegraph')
-rw-r--r--src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture.cpp18
-rw-r--r--src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture_p.h9
-rw-r--r--src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp9
-rw-r--r--src/quick/scenegraph/util/qsgrhiatlastexture.cpp2
4 files changed, 16 insertions, 22 deletions
diff --git a/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture.cpp b/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture.cpp
index 8084d5a128..d1aef21d47 100644
--- a/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture.cpp
+++ b/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture.cpp
@@ -68,14 +68,14 @@ Atlas::~Atlas()
{
}
-Texture *Atlas::create(const QByteArray &data, int dataLength, int dataOffset, const QSize &size)
+Texture *Atlas::create(QByteArrayView data, const QSize &size)
{
// Align reservation to 16x16, >= any compressed block size
QSize paddedSize(((size.width() + 15) / 16) * 16, ((size.height() + 15) / 16) * 16);
// No need to lock, as manager already locked it.
QRect rect = m_allocator.allocate(paddedSize);
if (rect.width() > 0 && rect.height() > 0) {
- Texture *t = new Texture(this, rect, data, dataLength, dataOffset, size);
+ Texture *t = new Texture(this, rect, data, size);
m_pending_uploads << t;
return t;
}
@@ -109,8 +109,8 @@ void Atlas::enqueueTextureUpload(QSGRhiAtlasTexture::TextureBase *t, QRhiResourc
const QRect &r = texture->atlasSubRect();
- const char *rawData = texture->data().constData() + texture->dataOffset();
- QRhiTextureSubresourceUploadDescription subresDesc(rawData, texture->sizeInBytes());
+ QRhiTextureSubresourceUploadDescription subresDesc(texture->data().constData(),
+ texture->sizeInBytes());
subresDesc.setSourceSize(texture->textureSize());
subresDesc.setDestinationTopLeft(r.topLeft());
@@ -121,14 +121,10 @@ void Atlas::enqueueTextureUpload(QSGRhiAtlasTexture::TextureBase *t, QRhiResourc
t->textureSize().width(), t->textureSize().height(), m_format);
}
-Texture::Texture(Atlas *atlas, const QRect &textureRect, const QByteArray &data, int dataLength,
- int dataOffset, const QSize &size)
+Texture::Texture(Atlas *atlas, const QRect &textureRect, QByteArrayView data, const QSize &size)
: QSGRhiAtlasTexture::TextureBase(atlas, textureRect),
m_nonatlas_texture(nullptr),
- m_data(data),
- m_size(size),
- m_dataLength(dataLength),
- m_dataOffset(dataOffset)
+ m_data(data.toByteArray())
{
float w = atlas->size().width();
float h = atlas->size().height();
@@ -163,8 +159,6 @@ QSGTexture *Texture::removedFromAtlas(QRhiResourceUpdateBatch *) const
texData.setData(m_data);
texData.setSize(m_size);
texData.setGLInternalFormat(static_cast<Atlas*>(m_atlas)->format());
- texData.setDataLength(m_dataLength);
- texData.setDataOffset(m_dataOffset);
m_nonatlas_texture = new QSGCompressedTexture(texData);
m_nonatlas_texture->setMipmapFiltering(mipmapFiltering());
m_nonatlas_texture->setFiltering(filtering());
diff --git a/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture_p.h b/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture_p.h
index fd60aa5f02..7e5e3ea5ee 100644
--- a/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture_p.h
+++ b/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture_p.h
@@ -75,7 +75,7 @@ public:
void enqueueTextureUpload(QSGRhiAtlasTexture::TextureBase *t,
QRhiResourceUpdateBatch *rcub) override;
- Texture *create(const QByteArray &data, int dataLength, int dataOffset, const QSize &size);
+ Texture *create(QByteArrayView data, const QSize &size);
uint format() const { return m_format; }
@@ -87,7 +87,7 @@ class Texture : public QSGRhiAtlasTexture::TextureBase
{
Q_OBJECT
public:
- Texture(Atlas *atlas, const QRect &textureRect, const QByteArray &data, int dataLength, int dataOffset, const QSize &size);
+ Texture(Atlas *atlas, const QRect &textureRect, QByteArrayView data, const QSize &size);
~Texture();
QSize textureSize() const override { return m_size; }
@@ -99,16 +99,13 @@ public:
QSGTexture *removedFromAtlas(QRhiResourceUpdateBatch *) const override;
const QByteArray &data() const { return m_data; }
- int sizeInBytes() const { return m_dataLength; }
- int dataOffset() const { return m_dataOffset; }
+ int sizeInBytes() const { return m_data.length(); }
private:
QRectF m_texture_coords_rect;
mutable QSGTexture *m_nonatlas_texture;
QByteArray m_data;
QSize m_size;
- int m_dataLength;
- int m_dataOffset;
};
}
diff --git a/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp b/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
index 5562ea3185..46dc6c5507 100644
--- a/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
+++ b/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
@@ -397,8 +397,11 @@ void QSGCompressedTexture::commitTextureOperations(QRhi *rhi, QRhiResourceUpdate
}
// only upload mip level 0 since we never do mipmapping for compressed textures (for now?)
- resourceUpdates->uploadTexture(m_texture, QRhiTextureUploadEntry(0, 0,
- { m_textureData.data().constData() + m_textureData.dataOffset(), m_textureData.dataLength() }));
+ resourceUpdates->uploadTexture(
+ m_texture,
+ QRhiTextureUploadEntry(0, 0,
+ QRhiTextureSubresourceUploadDescription(
+ m_textureData.getDataView().toByteArray())));
m_textureData = QTextureFileData(); // Release this memory, not needed anymore
}
@@ -454,7 +457,7 @@ QSGTexture *QSGCompressedTextureFactory::createTexture(QQuickWindow *window) con
int QSGCompressedTextureFactory::textureByteCount() const
{
- return qMax(0, m_textureData.data().size() - m_textureData.dataOffset());
+ return m_textureData.getDataView().size();
}
QSize QSGCompressedTextureFactory::textureSize() const
diff --git a/src/quick/scenegraph/util/qsgrhiatlastexture.cpp b/src/quick/scenegraph/util/qsgrhiatlastexture.cpp
index 10c8f934f8..d60b77ce2e 100644
--- a/src/quick/scenegraph/util/qsgrhiatlastexture.cpp
+++ b/src/quick/scenegraph/util/qsgrhiatlastexture.cpp
@@ -140,7 +140,7 @@ QSGTexture *Manager::create(const QSGCompressedTextureFactory *factory)
i = m_atlases.insert(format, newAtlas);
}
const QTextureFileData *cmpData = factory->textureData();
- t = i.value()->create(cmpData->data(), cmpData->dataLength(), cmpData->dataOffset(), size);
+ t = i.value()->create(cmpData->getDataView(), size);
}
return t;