Remove didQueueTransfer check from populateTransferQueue

This commit is contained in:
Ryan Huffman 2017-04-26 14:26:09 -07:00
parent 6a0474934c
commit 1bd95ee19f
2 changed files with 8 additions and 18 deletions

View file

@ -416,7 +416,6 @@ void GL41VariableAllocationTexture::populateTransferQueue() {
--sourceMip; --sourceMip;
auto targetMip = sourceMip - _allocatedMip; auto targetMip = sourceMip - _allocatedMip;
auto mipDimensions = _gpuObject.evalMipDimensions(sourceMip); auto mipDimensions = _gpuObject.evalMipDimensions(sourceMip);
bool didQueueTransfer = false;
for (uint8_t face = 0; face < maxFace; ++face) { for (uint8_t face = 0; face < maxFace; ++face) {
if (!_gpuObject.isStoredMipFaceAvailable(sourceMip, face)) { if (!_gpuObject.isStoredMipFaceAvailable(sourceMip, face)) {
continue; continue;
@ -426,7 +425,6 @@ void GL41VariableAllocationTexture::populateTransferQueue() {
if (glm::all(glm::lessThanEqual(mipDimensions, MAX_TRANSFER_DIMENSIONS))) { if (glm::all(glm::lessThanEqual(mipDimensions, MAX_TRANSFER_DIMENSIONS))) {
// Can the mip be transferred in one go // Can the mip be transferred in one go
_pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face)); _pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face));
didQueueTransfer = true;
continue; continue;
} }
@ -442,17 +440,14 @@ void GL41VariableAllocationTexture::populateTransferQueue() {
uint32_t linesToCopy = std::min<uint32_t>(lines - lineOffset, linesPerTransfer); uint32_t linesToCopy = std::min<uint32_t>(lines - lineOffset, linesPerTransfer);
_pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face, linesToCopy, lineOffset)); _pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face, linesToCopy, lineOffset));
lineOffset += linesToCopy; lineOffset += linesToCopy;
didQueueTransfer = true;
} }
} }
// queue up the sampler and populated mip change for after the transfer has completed // queue up the sampler and populated mip change for after the transfer has completed
if (didQueueTransfer) { _pendingTransfers.emplace(new TransferJob(*this, [=] {
_pendingTransfers.emplace(new TransferJob(*this, [=] { _populatedMip = sourceMip;
_populatedMip = sourceMip; syncSampler();
syncSampler(); }));
}));
}
} while (sourceMip != _allocatedMip); } while (sourceMip != _allocatedMip);
} }

View file

@ -186,7 +186,6 @@ void GL45ResourceTexture::populateTransferQueue() {
--sourceMip; --sourceMip;
auto targetMip = sourceMip - _allocatedMip; auto targetMip = sourceMip - _allocatedMip;
auto mipDimensions = _gpuObject.evalMipDimensions(sourceMip); auto mipDimensions = _gpuObject.evalMipDimensions(sourceMip);
bool didQueueTransfer = false;
for (uint8_t face = 0; face < maxFace; ++face) { for (uint8_t face = 0; face < maxFace; ++face) {
if (!_gpuObject.isStoredMipFaceAvailable(sourceMip, face)) { if (!_gpuObject.isStoredMipFaceAvailable(sourceMip, face)) {
continue; continue;
@ -196,7 +195,6 @@ void GL45ResourceTexture::populateTransferQueue() {
if (glm::all(glm::lessThanEqual(mipDimensions, MAX_TRANSFER_DIMENSIONS))) { if (glm::all(glm::lessThanEqual(mipDimensions, MAX_TRANSFER_DIMENSIONS))) {
// Can the mip be transferred in one go // Can the mip be transferred in one go
_pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face)); _pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face));
didQueueTransfer = true;
continue; continue;
} }
@ -212,17 +210,14 @@ void GL45ResourceTexture::populateTransferQueue() {
uint32_t linesToCopy = std::min<uint32_t>(lines - lineOffset, linesPerTransfer); uint32_t linesToCopy = std::min<uint32_t>(lines - lineOffset, linesPerTransfer);
_pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face, linesToCopy, lineOffset)); _pendingTransfers.emplace(new TransferJob(*this, sourceMip, targetMip, face, linesToCopy, lineOffset));
lineOffset += linesToCopy; lineOffset += linesToCopy;
didQueueTransfer = true;
} }
} }
// queue up the sampler and populated mip change for after the transfer has completed // queue up the sampler and populated mip change for after the transfer has completed
if (didQueueTransfer) { _pendingTransfers.emplace(new TransferJob(*this, [=] {
_pendingTransfers.emplace(new TransferJob(*this, [=] { _populatedMip = sourceMip;
_populatedMip = sourceMip; syncSampler();
syncSampler(); }));
}));
}
} while (sourceMip != _allocatedMip); } while (sourceMip != _allocatedMip);
} }