Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
nepp95 committed Jan 4, 2025
1 parent 28831ee commit eca5b32
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 9 deletions.
11 changes: 8 additions & 3 deletions EppoEngine/Source/Platform/Vulkan/VulkanImage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,14 +217,19 @@ namespace Eppo
}
}

void VulkanImage::TransitionImage(const VkCommandBuffer commandBuffer, const VkImage image, const VkImageLayout srcLayout, const VkImageLayout dstLayout)
void VulkanImage::TransitionImage(const VkCommandBuffer commandBuffer, const VkImage image, const VkImageLayout srcLayout, const VkImageLayout dstLayout, VkPipelineStageFlags2 srcStageMask, VkPipelineStageFlags2 dstStageMask)
{
EPPO_PROFILE_FUNCTION("VulkanImage::TransitionImage");

if (!srcStageMask)
srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
if (!dstStageMask)
dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;

VkImageMemoryBarrier2 imageBarrier{};
imageBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2;
imageBarrier.srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
imageBarrier.dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
imageBarrier.srcStageMask = srcStageMask;
imageBarrier.dstStageMask = dstStageMask;
imageBarrier.srcAccessMask = VK_ACCESS_2_MEMORY_WRITE_BIT;
imageBarrier.dstAccessMask = VK_ACCESS_2_MEMORY_WRITE_BIT | VK_ACCESS_2_MEMORY_READ_BIT;
imageBarrier.oldLayout = srcLayout;
Expand Down
2 changes: 1 addition & 1 deletion EppoEngine/Source/Platform/Vulkan/VulkanImage.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace Eppo

ImageInfo& GetImageInfo() { return m_ImageInfo; }

static void TransitionImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout srcLayout, VkImageLayout dstLayout);
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);
static VkImageAspectFlags GetImageAspectFlags(VkImageLayout layout);

private:
Expand Down
2 changes: 1 addition & 1 deletion EppoEngine/Source/Platform/Vulkan/VulkanLogicalDevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ namespace Eppo
vkFreeCommandBuffers(m_Device, m_CommandPool, 1, &commandBuffer);
}

void VulkanLogicalDevice::FreeCommandBuffer(VkCommandBuffer commandBuffer) const
void VulkanLogicalDevice::FreeCommandBuffer(const VkCommandBuffer commandBuffer) const
{
vkFreeCommandBuffers(m_Device, m_CommandPool, 1, &commandBuffer);
}
Expand Down
16 changes: 14 additions & 2 deletions EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,14 @@ namespace Eppo

// Transition depth images for writing
for (uint32_t i = 0; i < s_MaxLights; i++)
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);
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,
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT,
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT
);
});
}

Expand Down Expand Up @@ -668,7 +675,12 @@ namespace Eppo

// Transition image for reading
for (uint32_t i = 0; i < s_MaxLights; i++)
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);
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
);

if (m_RenderSpecification.DebugRendering)
m_DebugRenderer->EndDebugLabel(m_CommandBuffer);
Expand Down
2 changes: 1 addition & 1 deletion EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ namespace Eppo
void PrepareImages() const;
void UpdateDescriptors();

void GuiPass();
static void GuiPass();
void PreDepthPass();
void EnvPass();
void SkyboxPass();
Expand Down
2 changes: 1 addition & 1 deletion EppoEngine/Source/Platform/Vulkan/VulkanSwapchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ namespace Eppo
[[nodiscard]] Ref<VulkanCommandBuffer> GetCommandBuffer() const { return m_CommandBuffer; }

private:
SwapchainSupportDetails QuerySwapchainSupportDetails(const Ref<VulkanPhysicalDevice>& physicalDevice) const;
[[nodiscard]] SwapchainSupportDetails QuerySwapchainSupportDetails(const Ref<VulkanPhysicalDevice>& physicalDevice) const;

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

0 comments on commit eca5b32

Please sign in to comment.