28 class VSG_DECLSPEC TransferTask :
public Inherit<Object, TransferTask>
31 explicit TransferTask(
Device* in_device, uint32_t numBuffers = 3);
35 VkResult result = VK_SUCCESS;
42 TRANSFER_BEFORE_RECORD_TRAVERSAL = 1 << 0,
43 TRANSFER_AFTER_RECORD_TRAVERSAL = 1 << 1,
44 TRANSFER_ALL = TRANSFER_BEFORE_RECORD_TRAVERSAL | TRANSFER_AFTER_RECORD_TRAVERSAL
50 virtual bool containsDataToTransfer(TransferMask transferMask)
const;
55 void assign(
const BufferInfoList& bufferInfoList);
56 void assign(
const ImageInfoList& imageInfoList);
67 Logger::Level
level = Logger::LOGGER_DEBUG;
69 void assignTransferConsumedCompletedSemaphore(TransferMask transferMask,
ref_ptr<Semaphore> semaphore);
72 using OffsetBufferInfoMap = std::map<VkDeviceSize, ref_ptr<BufferInfo>>;
73 using BufferMap = std::map<ref_ptr<Buffer>, OffsetBufferInfoMap>;
75 mutable std::mutex _mutex;
82 void* buffer_data =
nullptr;
83 std::vector<VkBufferCopy> copyRegions;
84 bool waitOnFence =
false;
91 std::set<ref_ptr<ImageInfo>> imageInfoSet;
93 uint32_t frameIndex = 0;
94 std::vector<ref_ptr<TransferBlock>> frames;
96 VkDeviceSize dataTotalRegions = 0;
97 VkDeviceSize dataTotalSize = 0;
98 VkDeviceSize imageTotalSize = 0;
103 bool requiresCopy(uint32_t deviceID)
const;
104 bool containsDataToTransfer()
const {
return !dataMap.empty() || !imageInfoSet.empty(); }
114 void _transferBufferInfos(
DataToCopy& dataToCopy, VkCommandBuffer vk_commandBuffer,
TransferBlock& frame, VkDeviceSize& offset);
116 void _transferImageInfos(
DataToCopy& dataToCopy, VkCommandBuffer vk_commandBuffer,
TransferBlock& frame, VkDeviceSize& offset);
117 void _transferImageInfo(VkCommandBuffer vk_commandBuffer,
TransferBlock& frame, VkDeviceSize& offset,
ImageInfo& imageInfo);
122 extern VSG_DECLSPEC
void transferImageData(
ref_ptr<ImageView> imageView, VkImageLayout targetImageLayout,
Data::Properties properties, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels,
ref_ptr<Buffer> stagingBuffer, VkDeviceSize stagingBufferOffset, VkCommandBuffer vk_commandBuffer,
vsg::Device* device);
ref_ptr< Instrumentation > instrumentation
hook for assigning Instrumentation to enable profiling of record traversal.
Definition TransferTask.h:64