@@ -2743,9 +2743,6 @@ lvk::VulkanStagingDevice::VulkanStagingDevice(VulkanContext& ctx) : ctx_(ctx) {
27432743 maxBufferSize_ = std::min (limits.maxStorageBufferRange , 128u * 1024u * 1024u );
27442744
27452745 LVK_ASSERT (minBufferSize_ <= maxBufferSize_);
2746-
2747- immediate_ = std::make_unique<lvk::VulkanImmediateCommands>(
2748- ctx_.getVkDevice (), ctx_.deviceQueues_ .graphicsQueueFamilyIndex , " VulkanStagingDevice::immediate_" );
27492746}
27502747
27512748void lvk::VulkanStagingDevice::bufferSubData (VulkanBuffer& buffer, size_t dstOffset, size_t size, const void * data) {
@@ -2775,7 +2772,7 @@ void lvk::VulkanStagingDevice::bufferSubData(VulkanBuffer& buffer, size_t dstOff
27752772 .size = chunkSize,
27762773 };
27772774
2778- auto & wrapper = immediate_->acquire ();
2775+ auto & wrapper = ctx_. immediate_ ->acquire ();
27792776 vkCmdCopyBuffer (wrapper.cmdBuf_ , stagingBuffer->vkBuffer_ , buffer.vkBuffer_ , 1 , ©);
27802777 VkBufferMemoryBarrier barrier = {
27812778 .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
@@ -2806,7 +2803,7 @@ void lvk::VulkanStagingDevice::bufferSubData(VulkanBuffer& buffer, size_t dstOff
28062803 }
28072804 vkCmdPipelineBarrier (
28082805 wrapper.cmdBuf_ , VK_PIPELINE_STAGE_TRANSFER_BIT, dstMask, VkDependencyFlags{}, 0 , nullptr , 1 , &barrier, 0 , nullptr );
2809- desc.handle_ = immediate_->submit (wrapper);
2806+ desc.handle_ = ctx_. immediate_ ->submit (wrapper);
28102807 regions_.push_back (desc);
28112808
28122809 size -= chunkSize;
@@ -2859,7 +2856,7 @@ void lvk::VulkanStagingDevice::imageData2D(VulkanImage& image,
28592856 }
28602857 LVK_ASSERT (desc.size_ >= storageSize);
28612858
2862- auto & wrapper = immediate_->acquire ();
2859+ auto & wrapper = ctx_. immediate_ ->acquire ();
28632860
28642861 lvk::VulkanBuffer* stagingBuffer = ctx_.buffersPool_ .get (stagingBuffer_);
28652862
@@ -2953,7 +2950,7 @@ void lvk::VulkanStagingDevice::imageData2D(VulkanImage& image,
29532950
29542951 image.vkImageLayout_ = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
29552952
2956- desc.handle_ = immediate_->submit (wrapper);
2953+ desc.handle_ = ctx_. immediate_ ->submit (wrapper);
29572954 regions_.push_back (desc);
29582955}
29592956
@@ -2988,7 +2985,7 @@ void lvk::VulkanStagingDevice::imageData3D(VulkanImage& image,
29882985 // 1. Copy the pixel data into the host visible staging buffer
29892986 stagingBuffer->bufferSubData (ctx_, desc.offset_ , storageSize, data);
29902987
2991- auto & wrapper = immediate_->acquire ();
2988+ auto & wrapper = ctx_. immediate_ ->acquire ();
29922989
29932990 // 1. Transition initial image layout into TRANSFER_DST_OPTIMAL
29942991 lvk::imageMemoryBarrier (wrapper.cmdBuf_ ,
@@ -3025,7 +3022,7 @@ void lvk::VulkanStagingDevice::imageData3D(VulkanImage& image,
30253022
30263023 image.vkImageLayout_ = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
30273024
3028- desc.handle_ = immediate_->submit (wrapper);
3025+ desc.handle_ = ctx_. immediate_ ->submit (wrapper);
30293026 regions_.push_back (desc);
30303027}
30313028
@@ -3058,7 +3055,7 @@ void lvk::VulkanStagingDevice::getImageData(VulkanImage& image,
30583055
30593056 lvk::VulkanBuffer* stagingBuffer = ctx_.buffersPool_ .get (stagingBuffer_);
30603057
3061- auto & wrapper1 = immediate_->acquire ();
3058+ auto & wrapper1 = ctx_. immediate_ ->acquire ();
30623059
30633060 // 1. Transition to VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
30643061 lvk::imageMemoryBarrier (wrapper1.cmdBuf_ ,
@@ -3088,7 +3085,7 @@ void lvk::VulkanStagingDevice::getImageData(VulkanImage& image,
30883085 };
30893086 vkCmdCopyImageToBuffer (wrapper1.cmdBuf_ , image.vkImage_ , VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, stagingBuffer->vkBuffer_ , 1 , ©);
30903087
3091- desc.handle_ = immediate_->submit (wrapper1);
3088+ desc.handle_ = ctx_. immediate_ ->submit (wrapper1);
30923089 regions_.push_back (desc);
30933090
30943091 waitAndReset ();
@@ -3101,7 +3098,7 @@ void lvk::VulkanStagingDevice::getImageData(VulkanImage& image,
31013098 memcpy (outData, stagingBuffer->getMappedPtr () + desc.offset_ , storageSize);
31023099
31033100 // 4. Transition back to the initial image layout
3104- auto & wrapper2 = immediate_->acquire ();
3101+ auto & wrapper2 = ctx_. immediate_ ->acquire ();
31053102
31063103 lvk::imageMemoryBarrier (wrapper2.cmdBuf_ ,
31073104 image.vkImage_ ,
@@ -3113,7 +3110,7 @@ void lvk::VulkanStagingDevice::getImageData(VulkanImage& image,
31133110 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, // dstStageMask
31143111 range);
31153112
3116- immediate_->wait (immediate_->submit (wrapper2));
3113+ ctx_. immediate_ ->wait (ctx_. immediate_ ->submit (wrapper2));
31173114}
31183115
31193116void lvk::VulkanStagingDevice::ensureStagingBufferSize (uint32_t sizeNeeded) {
@@ -3174,7 +3171,7 @@ lvk::VulkanStagingDevice::MemoryRegionDesc lvk::VulkanStagingDevice::getNextFree
31743171 auto bestNextIt = regions_.begin ();
31753172
31763173 for (auto it = regions_.begin (); it != regions_.end (); ++it) {
3177- if (immediate_->isReady (it->handle_ )) {
3174+ if (ctx_. immediate_ ->isReady (it->handle_ )) {
31783175 // This region is free, but is it big enough?
31793176 if (it->size_ >= requestedAlignedSize) {
31803177 // It is big enough!
@@ -3199,7 +3196,7 @@ lvk::VulkanStagingDevice::MemoryRegionDesc lvk::VulkanStagingDevice::getNextFree
31993196 }
32003197
32013198 // we found a region that is available that is smaller than the requested size. It's the best we can do
3202- if (bestNextIt != regions_.end () && immediate_->isReady (bestNextIt->handle_ )) {
3199+ if (bestNextIt != regions_.end () && ctx_. immediate_ ->isReady (bestNextIt->handle_ )) {
32033200 SCOPE_EXIT {
32043201 regions_.erase (bestNextIt);
32053202 };
@@ -3234,7 +3231,7 @@ void lvk::VulkanStagingDevice::waitAndReset() {
32343231 LVK_PROFILER_FUNCTION_COLOR (LVK_PROFILER_COLOR_WAIT);
32353232
32363233 for (const auto & r : regions_) {
3237- immediate_->wait (r.handle_ );
3234+ ctx_. immediate_ ->wait (r.handle_ );
32383235 };
32393236
32403237 regions_.clear ();
0 commit comments