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 containsDataToTransfer()
const {
return !dataMap.empty() || !imageInfoSet.empty(); }
113 void _transferBufferInfos(
DataToCopy& dataToCopy, VkCommandBuffer vk_commandBuffer,
TransferBlock& frame, VkDeviceSize& offset);
115 void _transferImageInfos(
DataToCopy& dataToCopy, VkCommandBuffer vk_commandBuffer,
TransferBlock& frame, VkDeviceSize& offset);
116 void _transferImageInfo(VkCommandBuffer vk_commandBuffer,
TransferBlock& frame, VkDeviceSize& offset,
ImageInfo& imageInfo);
ref_ptr< Instrumentation > instrumentation
hook for assigning Instrumentation to enable profiling of record traversal.
Definition TransferTask.h:64