From fb8aa96a57468169f54ed9cc645bbd75cbc03d0b Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 14 Jun 2017 14:42:18 -0700 Subject: [PATCH] Add resource processing tracking to KTX --- .../src/model-networking/TextureCache.cpp | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 6c5fef7765..607338d32e 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -553,7 +553,19 @@ void NetworkTexture::ktxMipRequestFinished() { auto self = _self; auto data = _ktxMipRequest->getData(); auto mipLevel = _ktxMipLevelRangeInFlight.first; + DependencyManager::get()->incrementStat("PendingProcessing"); QtConcurrent::run(QThreadPool::globalInstance(), [this, self, data, mipLevel] { + PROFILE_RANGE_EX(resource_parse_image, "NetworkTexture - Processing Mip Data", 0xffff0000, 0, { { "url", _url.toString() } }); + DependencyManager::get()->decrementStat("PendingProcessing"); + CounterStat counter("Processing"); + + auto originalPriority = QThread::currentThread()->priority(); + if (originalPriority == QThread::InheritPriority) { + originalPriority = QThread::NormalPriority; + } + QThread::currentThread()->setPriority(QThread::LowPriority); + Finally restorePriority([originalPriority] { QThread::currentThread()->setPriority(originalPriority); }); + auto that = self.lock(); if (!that) { // Resource no longer exists, bail @@ -613,7 +625,19 @@ void NetworkTexture::handleFinishedInitialLoad() { _ktxHighMipData.clear(); auto self = _self; - QtConcurrent::run(QThreadPool::globalInstance(), [=] { + DependencyManager::get()->incrementStat("PendingProcessing"); + QtConcurrent::run(QThreadPool::globalInstance(), [this, self, ktxHeaderData, ktxHighMipData] { + PROFILE_RANGE_EX(resource_parse_image, "NetworkTexture - Processing Initial Data", 0xffff0000, 0, { { "url", _url.toString() } }); + DependencyManager::get()->decrementStat("PendingProcessing"); + CounterStat counter("Processing"); + + auto originalPriority = QThread::currentThread()->priority(); + if (originalPriority == QThread::InheritPriority) { + originalPriority = QThread::NormalPriority; + } + QThread::currentThread()->setPriority(QThread::LowPriority); + Finally restorePriority([originalPriority] { QThread::currentThread()->setPriority(originalPriority); }); + auto that = self.lock(); if (!that) { // Resource no longer exists, bail