From 1fec531c68418b6320924cb85c522c4457a9f25f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 10 Apr 2017 07:12:49 -0700 Subject: [PATCH] Add basic mip writing to gpu::Texture --- interface/src/Application.cpp | 2 +- libraries/gpu/src/gpu/Texture.h | 2 ++ libraries/ktx/src/ktx/Writer.cpp | 9 +++++++-- .../src/model-networking/TextureCache.cpp | 3 ++- libraries/networking/src/ResourceCache.cpp | 1 + 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 886487603e..8703c09497 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -626,7 +626,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName("127.0.0.1"); proxy.setPort(8888); - QNetworkProxy::setApplicationProxy(proxy); + //QNetworkProxy::setApplicationProxy(proxy); // make sure the debug draw singleton is initialized on the main thread. DebugDraw::getInstance().removeMarker(""); diff --git a/libraries/gpu/src/gpu/Texture.h b/libraries/gpu/src/gpu/Texture.h index 756748497d..b01ec8f0bc 100755 --- a/libraries/gpu/src/gpu/Texture.h +++ b/libraries/gpu/src/gpu/Texture.h @@ -270,6 +270,7 @@ public: virtual void reset() = 0; virtual PixelsPointer getMipFace(uint16 level, uint8 face = 0) const = 0; virtual Size getMipFaceSize(uint16 level, uint8 face = 0) const = 0; + virtual void assignMipData(uint16 level, const char* data, const size_t length) = 0; virtual void assignMipData(uint16 level, const storage::StoragePointer& storage) = 0; virtual void assignMipFaceData(uint16 level, uint8 face, const storage::StoragePointer& storage) = 0; virtual bool isMipAvailable(uint16 level, uint8 face = 0) const = 0; @@ -296,6 +297,7 @@ public: void reset() override; PixelsPointer getMipFace(uint16 level, uint8 face = 0) const override; Size getMipFaceSize(uint16 level, uint8 face = 0) const override; + void assignMipData(uint16 level, const char* data, const size_t length) override; void assignMipData(uint16 level, const storage::StoragePointer& storage) override; void assignMipFaceData(uint16 level, uint8 face, const storage::StoragePointer& storage) override; bool isMipAvailable(uint16 level, uint8 face = 0) const override; diff --git a/libraries/ktx/src/ktx/Writer.cpp b/libraries/ktx/src/ktx/Writer.cpp index 396aa09f9a..e2803a2258 100644 --- a/libraries/ktx/src/ktx/Writer.cpp +++ b/libraries/ktx/src/ktx/Writer.cpp @@ -141,8 +141,13 @@ namespace ktx { } currentDestPtr += destHeader->bytesOfKeyValueData; - for (int i = 0; i < descriptors.size(); ++i) { - *currentDestPtr = descriptors[i]._imageSize; + for (size_t i = 0; i < descriptors.size(); ++i) { + auto ptr = reinterpret_cast(currentDestPtr); + *ptr = descriptors[i]._imageSize; + ptr++; + for (size_t k = 0; k < descriptors[i]._imageSize/4; k++) { + *(ptr + k) = 0xFFFF0000; + } currentDestPtr += descriptors[i]._imageSize + sizeof(uint32_t); } diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 6b6fc09975..593a7c163e 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -393,7 +393,8 @@ void NetworkTexture::loadContent(const QByteArray& content) { auto numMipsToGet = glm::min(numMips, 6); auto sizeOfTopMips = 0; for (int i = 0; i < numMipsToGet; ++i) { - auto& img = desc.images[i]; + auto mipLevel = numMips - 1 - i; + auto& img = desc.images[mipLevel]; sizeOfTopMips += img._imageSize; } _requestByteRange.fromInclusive = length - sizeOfTopMips; diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 7fdbc7885b..8373a9cf99 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -665,6 +665,7 @@ void Resource::makeRequest() { } PROFILE_ASYNC_BEGIN(resource, "Resource:" + getType(), QString::number(_requestID), { { "url", _url.toString() }, { "activeURL", _activeUrl.toString() } }); + qDebug() << "Making request to " << _url << " for byte range " << _requestByteRange.fromInclusive << "-" << _requestByteRange.toExclusive; _request = ResourceManager::createResourceRequest(this, _activeUrl);