3#include "spark/render/DeviceState.h"
4#include "spark/render/GraphicsDevice.h"
5#include "spark/render/Image.h"
6#include "spark/render/Resource.h"
7#include "spark/render/vk/Export.h"
8#include "spark/render/vk/Helpers.h"
9#include "spark/render/vk/VulkanFactory.h"
10#include "spark/render/vk/VulkanGraphicsAdapter.h"
11#include "spark/render/vk/VulkanQueue.h"
12#include "spark/render/vk/VulkanRenderPass.h"
13#include "spark/render/vk/VulkanSurface.h"
14#include "spark/render/vk/VulkanSwapChain.h"
16SPARK_FWD_DECLARE_VK_HANDLE(VkDevice)
18namespace spark::render::vk
23 class SPARK_RENDER_VK_EXPORT
VulkanDevice final :
public GraphicsDevice<VulkanFactory, VulkanSurface, VulkanGraphicsAdapter, VulkanSwapChain, VulkanQueue, VulkanRenderPass>,
45 std::unique_ptr<VulkanSurface>&& surface,
48 unsigned frame_buffers,
49 std::span<std::string> extensions = {});
61 [[nodiscard]] std::span<std::string> enabledExtensions()
const noexcept;
64 [[nodiscard]] MultiSamplingLevel maximumMultiSamplingLevel(Format format)
const noexcept override;
67 [[nodiscard]]
double ticksPerMillisecond()
const noexcept override;
70 void wait()
const override;
73 [[nodiscard]]
DeviceState& state()
noexcept override;
76 [[nodiscard]]
const VulkanSurface& surface()
const noexcept override;
82 [[nodiscard]]
const VulkanFactory& factory()
const noexcept override;
85 [[nodiscard]]
const VulkanSwapChain& swapChain()
const noexcept override;
91 [[nodiscard]]
const VulkanQueue& graphicsQueue()
const noexcept override;
94 [[nodiscard]]
const VulkanQueue& transferQueue()
const noexcept override;
97 [[nodiscard]]
const VulkanQueue& bufferQueue()
const noexcept override;
100 [[nodiscard]]
const VulkanQueue& computeQueue()
const noexcept override;
104 std::unique_ptr<Impl> m_impl;
A vector with two components.
Definition Vector2.h:13
A class used to manage the state of a IGraphicsDevice.
Definition DeviceState.h:27
Represents the graphics device that a rendering back-end is doing work on.
Definition GraphicsDevice.h:121
Vulkan implementation of IGraphicsDevice.
Definition VulkanDevice.h:25
Vulkan implementation of IGraphicsFactory.
Definition VulkanFactory.h:18
Implementation of IGraphicsAdapter for Vulkan.
Definition VulkanGraphicsAdapter.h:21
Vulkan implementation of ICommandQueue.
Definition VulkanQueue.h:23
Implementation of ISurface for Vulkan.
Definition VulkanSurface.h:19
Vulkan implementation of ISwapChain.
Definition VulkanSwapChain.h:22
Definition VulkanDevice.cpp:88