More ktx work

This commit is contained in:
Atlante45 2017-06-13 13:20:19 -07:00
parent 35a0c41cf5
commit 3110dd72bf

View file

@ -498,17 +498,13 @@ void NetworkTexture::ktxHeaderRequestFinished() {
return;
}
ResourceCache::requestCompleted(_self);
TextureCache::requestCompleted(_self);
auto result = _ktxHeaderRequest->getResult();
if (result == ResourceRequest::Success) {
auto extraInfo = _url == _activeUrl ? "" : QString(", %1").arg(_activeUrl.toDisplayString());
qCDebug(networking).noquote() << QString("Request finished for %1%2").arg(_url.toDisplayString(), extraInfo);
auto data = _ktxHeaderRequest->getData();
//emit loaded(data);
//downloadFinished(data);
_ktxHeaderRequestFinished = true;
maybeHandleFinishedInitialLoad();
@ -541,51 +537,39 @@ void NetworkTexture::ktxMipRequestFinished() {
return;
}
ResourceCache::requestCompleted(_self);
TextureCache::requestCompleted(_self);
auto result = _ktxMipRequest->getResult();
if (result == ResourceRequest::Success) {
auto extraInfo = _url == _activeUrl ? "" : QString(", %1").arg(_activeUrl.toDisplayString());
qCDebug(networking).noquote() << QString("Request finished for %1%2").arg(_url.toDisplayString(), extraInfo);
auto data = _ktxMipRequest->getData();
//emit loaded(data);
//downloadFinished(data);
if (_ktxResourceState == LOADING_INITIAL_DATA) {
_ktxHighMipRequestFinished = true;
////
maybeHandleFinishedInitialLoad();
} else if (_ktxResourceState == REQUESTING_MIP) {
Q_ASSERT(_ktxMipLevelRangeInFlight.first != NULL_MIP_LEVEL);
Q_ASSERT(_ktxMipLevelRangeInFlight.second - _ktxMipLevelRangeInFlight.first == 0);
_lowestKnownPopulatedMip = _ktxMipLevelRangeInFlight.first;
_ktxResourceState = WAITING_FOR_MIP_REQUEST;
if (_ktxResourceState == WAITING_FOR_MIP_REQUEST && _lowestRequestedMipLevel < _lowestKnownPopulatedMip) {
if (_lowestRequestedMipLevel < _lowestKnownPopulatedMip) {
startRequestForNextMipLevel();
}
////
//// Move to other thread
auto texture = _textureSource->getGPUTexture();
if (texture) {
auto data = _ktxMipRequest->getData();
texture->assignStoredMip(_ktxMipLevelRangeInFlight.first,
_ktxMipRequest->getData().size(), reinterpret_cast<uint8_t*>(_ktxMipRequest->getData().data()));
if (texture->minAvailableMipLevel() <= _ktxMipLevelRangeInFlight.first) {
} else {
qWarning(networking) << "Failed to load mip: " << _url << ":" << _ktxMipLevelRangeInFlight.first;
_ktxResourceState = FAILED_TO_LOAD;
}
} else {
_ktxResourceState = WAITING_FOR_MIP_REQUEST;
qWarning(networking) << "Trying to update mips but texture is null";
data.size(), reinterpret_cast<uint8_t*>(data.data()));
}
finishedLoading(true);
} else {
qWarning() << "Mip request finished in an unexpected state: " << _ktxResourceState;
qWarning(networking) << "Mip request finished in an unexpected state: " << _ktxResourceState;
finishedLoading(false);
}
@ -610,15 +594,8 @@ void NetworkTexture::maybeHandleFinishedInitialLoad() {
if (_ktxHeaderRequestFinished && _ktxHighMipRequestFinished) {
TextureCache::requestCompleted(_self);
auto resource = _self;
if (_ktxHeaderRequest->getResult() != ResourceRequest::Success || _ktxMipRequest->getResult() != ResourceRequest::Success) {
if (handleFailedRequest(_ktxMipRequest->getResult())) {
_ktxResourceState = PENDING_INITIAL_LOAD;
} else {
_ktxResourceState = FAILED_TO_LOAD;
}
} else {
// create ktx...
auto ktxHeaderData = _ktxHeaderRequest->getData();
auto ktxHighMipData = _ktxMipRequest->getData();
@ -750,19 +727,11 @@ void NetworkTexture::maybeHandleFinishedInitialLoad() {
_lowestKnownPopulatedMip = texture->minAvailableMipLevel();
QMetaObject::invokeMethod(resource.data(), "ktxRequestProcessed",
QMetaObject::invokeMethod(resource.data(), "setImage",
Q_ARG(gpu::TexturePointer, texture),
Q_ARG(int, texture->getWidth()),
Q_ARG(int, texture->getHeight()));
}
_ktxHeaderRequest->deleteLater();
_ktxHeaderRequest = nullptr;
_ktxMipRequest->deleteLater();
_ktxMipRequest = nullptr;
startRequestForNextMipLevel();
}
}
void NetworkTexture::downloadFinished(const QByteArray& data) {