Foundation
Loading...
Searching...
No Matches
Swapchain.hpp
Go to the documentation of this file.
1#pragma once
3#include "Common.hpp"
4#include "Resource.hpp"
5namespace Foundation::RHI {
8 switch (mode) {
9 case Mailbox: return vk::PresentModeKHR::eMailbox;
10 case Tearing: return vk::PresentModeKHR::eImmediate;
11 case Fifo:
12 default:
13 return vk::PresentModeKHR::eFifo;
14 }
15 }
16 class VulkanDevice;
20 vk::raii::SwapchainKHR mSwapchain{ nullptr };
21 std::array<uint32_t, 2> mQueueFamilyIndices{};
24
25 void Instantiate();
26 vk::SwapchainCreateInfoKHR vkSwapchainCreateInfoFromSwapchainDesc(SwapchainDesc desc);
27 public:
28 VulkanSwapchain(const VulkanDevice& device, SwapchainDesc const& desc);
29
30 [[nodiscard]] Span<RHITexture* const> GetImages() const override;
31
32 [[nodiscard]] auto const& GetVkSwapchain() const { return mSwapchain; }
33 [[nodiscard]] RHIExtent2D GetExtents() const override;
35 uint64_t timeout_ns,
38 uint32_t& imageIndex
39 ) override;
40
41 void DebugSetObjectName(const char* name) override;
42 };
43}
Handle type for RHI Objects.
Definition Details.hpp:43
Definition Swapchain.hpp:32
Definition Device.hpp:122
Definition Swapchain.hpp:17
auto const & GetVkSwapchain() const
Definition Swapchain.hpp:32
Vector< RHITexture * > mImagesPtrs
Definition Swapchain.hpp:23
vk::raii::SwapchainKHR mSwapchain
Definition Swapchain.hpp:20
const VulkanDevice & mDevice
Definition Swapchain.hpp:18
RHIExtent2D GetExtents() const override
Definition Swapchain.cpp:99
std::array< uint32_t, 2 > mQueueFamilyIndices
Definition Swapchain.hpp:21
void Instantiate()
Definition Swapchain.cpp:71
RHIDeviceHandle< RHISurface > mSurface
Definition Swapchain.hpp:19
RHISwapchainResult GetNextImage(uint64_t timeout_ns, RHIDeviceHandle< RHIDeviceSemaphore > semaphore, RHIDeviceHandle< RHIDeviceFence > fence, uint32_t &imageIndex) override
Definition Swapchain.cpp:103
vk::SwapchainCreateInfoKHR vkSwapchainCreateInfoFromSwapchainDesc(SwapchainDesc desc)
Definition Swapchain.cpp:10
void DebugSetObjectName(const char *name) override
Definition Swapchain.cpp:139
Span< RHITexture *const > GetImages() const override
Definition Swapchain.cpp:96
UniquePtr< RHIObjectPool< VulkanTexture > > mImages
Definition Swapchain.hpp:22
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:149
std::unique_ptr< T, Deleter > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:180
std::span< T > Span
Alias for std::span
Definition Container.hpp:62
Low-level Rendering Hardware Interface (RHI) abstractions.
Definition Application.hpp:3
RHISwapchainPresentMode
Definition Swapchain.hpp:24
vk::PresentModeKHR vkPresentModeFromSwapchainDesc(RHISwapchainPresentMode mode)
Definition Swapchain.hpp:6
glm::vec< 2, uint32_t > RHIExtent2D
Definition Common.hpp:10
RHISwapchainResult
Definition Swapchain.hpp:9