MCPcopy Create free account
hub / github.com/a2flo/floor / copy

Method copy

src/device/vulkan/vulkan_buffer.cpp:329–356  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

327}
328
329void vulkan_buffer::copy(const device_queue& cqueue, const device_buffer& src,
330 const size_t size_, const size_t src_offset, const size_t dst_offset) {
331 if(buffer == nullptr) return;
332
333 const size_t src_size = src.get_size();
334 const size_t copy_size = (size_ == 0 ? std::min(src_size, size) : size_);
335 if(!copy_check(size, src_size, copy_size, dst_offset, src_offset)) return;
336
337 const auto& vk_queue = (const vulkan_queue&)cqueue;
338 VK_CMD_BLOCK_RET(vk_queue, "buffer zero", ({
339 const VkBufferCopy2 region {
340 .sType = VK_STRUCTURE_TYPE_BUFFER_COPY_2,
341 .pNext = nullptr,
342 .srcOffset = src_offset,
343 .dstOffset = dst_offset,
344 .size = copy_size,
345 };
346 const VkCopyBufferInfo2 info {
347 .sType = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2,
348 .pNext = nullptr,
349 .srcBuffer = ((const vulkan_buffer&)src).buffer,
350 .dstBuffer = buffer,
351 .regionCount = 1,
352 .pRegions = &region,
353 };
354 vkCmdCopyBuffer2(block_cmd_buffer.cmd_buffer, &info);
355 }), , true /* always blocking */);
356}
357
358bool vulkan_buffer::fill(const device_queue& cqueue,
359 const void* pattern, const size_t& pattern_size,

Callers

nothing calls this directly

Calls 1

minFunction · 0.50

Tested by

no test coverage detected