SpiecsEngine
 
Loading...
Searching...
No Matches

◆ CopyImageToBuffer()

void Spices::VulkanImage::CopyImageToBuffer ( VkBuffer dstBuffer,
const std::vector< VkBufferImageCopy > & regions )

@breif Copy data from a VkImage.

Parameters
[in]dstBufferThe Dst Buffer.
[in]regionsSpecific Regions.

Use Custom Cmd.

Use Custom Cmd.

Definition at line 522 of file VulkanImage.cpp.

523 {
525
526 /*
527 * @brief Transfer image layout from whatever to transfer src.
528 */
530 m_Format,
531 VK_IMAGE_LAYOUT_UNDEFINED,
532 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
533 );
534
538 VulkanCommandBuffer::CustomGraphicCmd(m_VulkanState, [&](const VkCommandBuffer& commandBuffer) {
539 vkCmdCopyImageToBuffer(commandBuffer, m_Image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, dstBuffer, regions.size(), regions.data());
540 });
541
542 /*
543 * @brief Transfer image layout from transfer src to shader read.
544 * means only can get data from a shader read layout image.
545 * @note In SpicesEngine, we need transform layout to shader read in scene compose renderer first,
546 * and after that, you can do this here.
547 */
549 m_Format,
550 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
551 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
552 );
553 }
#define SPICES_PROFILE_ZONE
static void CustomGraphicCmd(VulkanState &vulkanState, T func)
Create a new command buffer and record custom cmd, submit to graphic queue, execute it immediately.
VkFormat m_Format
The image format.
void TransitionImageLayout(VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout)
VkImage m_Image
The VkImage this Class Wrapped.
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.

References Spices::VulkanObject::m_VulkanState.