Skip to content

Commit eca5b32

Browse files
committed
upd
1 parent 28831ee commit eca5b32

6 files changed

Lines changed: 26 additions & 9 deletions

File tree

EppoEngine/Source/Platform/Vulkan/VulkanImage.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,19 @@ namespace Eppo
217217
}
218218
}
219219

220-
void VulkanImage::TransitionImage(const VkCommandBuffer commandBuffer, const VkImage image, const VkImageLayout srcLayout, const VkImageLayout dstLayout)
220+
void VulkanImage::TransitionImage(const VkCommandBuffer commandBuffer, const VkImage image, const VkImageLayout srcLayout, const VkImageLayout dstLayout, VkPipelineStageFlags2 srcStageMask, VkPipelineStageFlags2 dstStageMask)
221221
{
222222
EPPO_PROFILE_FUNCTION("VulkanImage::TransitionImage");
223223

224+
if (!srcStageMask)
225+
srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
226+
if (!dstStageMask)
227+
dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
228+
224229
VkImageMemoryBarrier2 imageBarrier{};
225230
imageBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2;
226-
imageBarrier.srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
227-
imageBarrier.dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
231+
imageBarrier.srcStageMask = srcStageMask;
232+
imageBarrier.dstStageMask = dstStageMask;
228233
imageBarrier.srcAccessMask = VK_ACCESS_2_MEMORY_WRITE_BIT;
229234
imageBarrier.dstAccessMask = VK_ACCESS_2_MEMORY_WRITE_BIT | VK_ACCESS_2_MEMORY_READ_BIT;
230235
imageBarrier.oldLayout = srcLayout;

EppoEngine/Source/Platform/Vulkan/VulkanImage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace Eppo
3131

3232
ImageInfo& GetImageInfo() { return m_ImageInfo; }
3333

34-
static void TransitionImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout srcLayout, VkImageLayout dstLayout);
34+
static void TransitionImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout srcLayout, VkImageLayout dstLayout, VkPipelineStageFlags2 srcStageMask = VK_PIPELINE_STAGE_2_NONE, VkPipelineStageFlags2 dstStageMask = VK_PIPELINE_STAGE_2_NONE);
3535
static VkImageAspectFlags GetImageAspectFlags(VkImageLayout layout);
3636

3737
private:

EppoEngine/Source/Platform/Vulkan/VulkanLogicalDevice.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ namespace Eppo
168168
vkFreeCommandBuffers(m_Device, m_CommandPool, 1, &commandBuffer);
169169
}
170170

171-
void VulkanLogicalDevice::FreeCommandBuffer(VkCommandBuffer commandBuffer) const
171+
void VulkanLogicalDevice::FreeCommandBuffer(const VkCommandBuffer commandBuffer) const
172172
{
173173
vkFreeCommandBuffers(m_Device, m_CommandPool, 1, &commandBuffer);
174174
}

EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,14 @@ namespace Eppo
469469

470470
// Transition depth images for writing
471471
for (uint32_t i = 0; i < s_MaxLights; i++)
472-
VulkanImage::TransitionImage(commandBuffer, std::static_pointer_cast<VulkanImage>(m_ShadowMaps[i])->GetImageInfo().Image, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
472+
VulkanImage::TransitionImage(
473+
commandBuffer,
474+
std::static_pointer_cast<VulkanImage>(m_ShadowMaps[i])->GetImageInfo().Image,
475+
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
476+
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
477+
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT,
478+
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT
479+
);
473480
});
474481
}
475482

@@ -668,7 +675,12 @@ namespace Eppo
668675

669676
// Transition image for reading
670677
for (uint32_t i = 0; i < s_MaxLights; i++)
671-
VulkanImage::TransitionImage(commandBuffer, std::static_pointer_cast<VulkanImage>(m_ShadowMaps[i])->GetImageInfo().Image, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL);
678+
VulkanImage::TransitionImage(
679+
commandBuffer,
680+
std::static_pointer_cast<VulkanImage>(m_ShadowMaps[i])->GetImageInfo().Image,
681+
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
682+
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
683+
);
672684

673685
if (m_RenderSpecification.DebugRendering)
674686
m_DebugRenderer->EndDebugLabel(m_CommandBuffer);

EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace Eppo
3535
void PrepareImages() const;
3636
void UpdateDescriptors();
3737

38-
void GuiPass();
38+
static void GuiPass();
3939
void PreDepthPass();
4040
void EnvPass();
4141
void SkyboxPass();

EppoEngine/Source/Platform/Vulkan/VulkanSwapchain.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ namespace Eppo
4040
[[nodiscard]] Ref<VulkanCommandBuffer> GetCommandBuffer() const { return m_CommandBuffer; }
4141

4242
private:
43-
SwapchainSupportDetails QuerySwapchainSupportDetails(const Ref<VulkanPhysicalDevice>& physicalDevice) const;
43+
[[nodiscard]] SwapchainSupportDetails QuerySwapchainSupportDetails(const Ref<VulkanPhysicalDevice>& physicalDevice) const;
4444

4545
static VkSurfaceFormatKHR SelectSurfaceFormat(const std::vector<VkSurfaceFormatKHR>& surfaceFormats);
4646
static VkPresentModeKHR SelectPresentMode(const std::vector<VkPresentModeKHR>& presentModes);

0 commit comments

Comments
 (0)