SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
VulkanGraphicsAdapter.h
1#pragma once
2
3#include "spark/render/GraphicsAdapter.h"
4#include "spark/render/Resource.h"
5#include "spark/render/vk/Export.h"
6#include "spark/render/vk/Helpers.h"
7
8#include <memory>
9#include <string>
10#include <vector>
11
12SPARK_FWD_DECLARE_VK_HANDLE(VkPhysicalDevice)
13struct VkPhysicalDeviceLimits;
14
15namespace spark::render::vk
16{
20 class SPARK_RENDER_VK_EXPORT VulkanGraphicsAdapter final : public IGraphicsAdapter, public Resource<VkPhysicalDevice>
21 {
22 public:
27 explicit VulkanGraphicsAdapter(VkPhysicalDevice adapter);
28 ~VulkanGraphicsAdapter() override;
29
30 VulkanGraphicsAdapter(const VulkanGraphicsAdapter& other) = delete;
31 VulkanGraphicsAdapter(VulkanGraphicsAdapter&& other) noexcept = delete;
32 VulkanGraphicsAdapter& operator=(const VulkanGraphicsAdapter& other) = delete;
33 VulkanGraphicsAdapter& operator=(VulkanGraphicsAdapter&& other) noexcept = delete;
34
36 [[nodiscard]] std::string name() const noexcept override;
37
39 [[nodiscard]] lib::Uuid uuid() const noexcept override;
40
42 [[nodiscard]] unsigned vendorId() const noexcept override;
43
45 [[nodiscard]] unsigned deviceId() const noexcept override;
46
48 [[nodiscard]] GraphicsAdapterType type() const noexcept override;
49
51 [[nodiscard]] unsigned driverVersion() const noexcept override;
52
54 [[nodiscard]] unsigned apiVersion() const noexcept override;
55
57 [[nodiscard]] unsigned long long dedicatedVideoMemory() const noexcept override;
58
63 [[nodiscard]] VkPhysicalDeviceLimits limits() const noexcept;
64
69 [[nodiscard]] std::vector<std::string> deviceExtensions() const noexcept;
70
78 [[nodiscard]] bool validateDeviceExtensions(const std::vector<std::string>& extensions) const noexcept;
79
84 [[nodiscard]] std::vector<std::string> deviceValidationLayers() const noexcept;
85
93 [[nodiscard]] bool validateDeviceValidationLayers(const std::vector<std::string>& layers) const noexcept;
94
95 private:
96 struct Impl;
97 std::unique_ptr<Impl> m_impl;
98 };
99}
A 128-bit universally unique identifier (UUID).
Definition Uuid.h:22
Represents a physical graphics adapter.
Definition GraphicsAdapter.h:37
Definition Resource.h:34
Implementation of IGraphicsAdapter for Vulkan.
Definition VulkanGraphicsAdapter.h:21
Definition VulkanGraphicsAdapter.cpp:14