/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/RendererVulkan/Resources/Implementation/ReadbackTextureVulkan.cpp
51 строка
2 KB
Sanakan8472
Copy / Readback fixes (#1963)
11 июн 2026, 18:07
Не верифицирован
11 июн 2026, 18:07
b50d6f1
Код
Авторство
О чём код?
#include <RendererVulkan/RendererVulkanPCH.h> #include <RendererVulkan/Device/DeviceVulkan.h> #include <RendererVulkan/Resources/ReadbackTextureVulkan.h> #include <RendererVulkan/Resources/TextureVulkan.h> ezGALReadbackTextureVulkan::ezGALReadbackTextureVulkan(const ezGALTextureCreationDescription& Description) : ezGALReadbackTexture(Description) { } ezGALReadbackTextureVulkan::~ezGALReadbackTextureVulkan() = default; ezResult ezGALReadbackTextureVulkan::InitPlatform(ezGALDevice* pDevice) { m_pDevice = static_cast<ezGALDeviceVulkan*>(pDevice); vk::BufferCreateInfo bufferCreateInfo; bufferCreateInfo.usage = vk::BufferUsageFlagBits::eTransferSrc | vk::BufferUsageFlagBits::eTransferDst | vk::BufferUsageFlagBits::eStorageBuffer; bufferCreateInfo.pQueueFamilyIndices = nullptr; bufferCreateInfo.queueFamilyIndexCount = 0; bufferCreateInfo.sharingMode = vk::SharingMode::eExclusive; ezHybridArray<ezGALTextureVulkan::SubResourceOffset, 8> subResourceSizes; bufferCreateInfo.size = ezGALTextureVulkan::ComputeSubResourceOffsets(m_pDevice, m_Description, subResourceSizes); ezVulkanAllocationCreateInfo allocCreateInfo; allocCreateInfo.m_usage = ezVulkanMemoryUsage::Auto; allocCreateInfo.m_flags = ezVulkanAllocationCreateFlags::HostAccessRandom /*| ezVulkanAllocationCreateFlags::Mapped*/; VK_ASSERT_DEV(ezMemoryAllocatorVulkan::CreateBuffer(bufferCreateInfo, allocCreateInfo, m_Buffer, m_pBufferAlloc, &m_BufferAllocInfo)); return EZ_SUCCESS; } ezResult ezGALReadbackTextureVulkan::DeInitPlatform(ezGALDevice* pDevice) { if (m_Buffer) { ezGALDeviceVulkan* pVulkanDevice = static_cast<ezGALDeviceVulkan*>(pDevice); pVulkanDevice->DeleteLater(m_Buffer, m_pBufferAlloc); m_BufferAllocInfo = {}; m_Buffer = nullptr; } return EZ_SUCCESS; } void ezGALReadbackTextureVulkan::SetDebugNamePlatform(const char* szName) const { m_pDevice->SetDebugName(szName, m_Buffer, m_pBufferAlloc); }