|
|
@ -328,12 +328,13 @@ void ASTCDecoderPass::Assemble(Image& image, const StagingBufferRef& map, |
|
|
const VkImageAspectFlags aspect_mask = image.AspectMask(); |
|
|
const VkImageAspectFlags aspect_mask = image.AspectMask(); |
|
|
const VkImage vk_image = image.Handle(); |
|
|
const VkImage vk_image = image.Handle(); |
|
|
const bool is_initialized = image.ExchangeInitialization(); |
|
|
const bool is_initialized = image.ExchangeInitialization(); |
|
|
scheduler.Record( |
|
|
|
|
|
[vk_pipeline, vk_image, aspect_mask, is_initialized](vk::CommandBuffer cmdbuf) { |
|
|
|
|
|
|
|
|
scheduler.Record([vk_pipeline, vk_image, aspect_mask, |
|
|
|
|
|
is_initialized](vk::CommandBuffer cmdbuf) { |
|
|
const VkImageMemoryBarrier image_barrier{ |
|
|
const VkImageMemoryBarrier image_barrier{ |
|
|
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, |
|
|
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, |
|
|
.pNext = nullptr, |
|
|
.pNext = nullptr, |
|
|
.srcAccessMask = is_initialized ? VK_ACCESS_SHADER_WRITE_BIT : VK_ACCESS_NONE, |
|
|
|
|
|
|
|
|
.srcAccessMask = static_cast<VkAccessFlags>(is_initialized ? VK_ACCESS_SHADER_WRITE_BIT |
|
|
|
|
|
: VK_ACCESS_NONE), |
|
|
.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, |
|
|
.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, |
|
|
.oldLayout = is_initialized ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_UNDEFINED, |
|
|
.oldLayout = is_initialized ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_UNDEFINED, |
|
|
.newLayout = VK_IMAGE_LAYOUT_GENERAL, |
|
|
.newLayout = VK_IMAGE_LAYOUT_GENERAL, |
|
|
|