diff options
author | Jonas Karlsson <jonas.karlsson@qt.io> | 2020-12-22 13:52:50 +0100 |
---|---|---|
committer | Jonas Karlsson <jonas.karlsson@qt.io> | 2021-01-07 13:21:45 +0100 |
commit | dfb36c91b401308f74a5bc635f9a77ba2f9872a0 (patch) | |
tree | 749fb94601d9f6077a4ec8130df401c030959022 /src | |
parent | 1cd696cf9e10f62caf69cd671fb5c34964a1c107 (diff) |
Use new QTextureFileData::getDataView method
Change-Id: Ib675bfaa3fd818ef3e372bc2affd87e0d9d8f480
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src')
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; |