29 explicit VulkanBackend(std::span<std::string> extensions = {}, std::span<std::string> validation_layers = {});
42 [[nodiscard]] std::unique_ptr<VulkanSurface> createSurface(
const std::function<VkSurfaceKHR(
const VkInstance&)>& predicate)
const;
49 static bool ValidateInstanceLayers(std::span<std::string> validation_layers)
noexcept;
55 static std::vector<std::string> InstanceValidationLayers()
noexcept;
61 std::span<std::string> enabledValidationLayers()
const noexcept;
68 static bool ValidateInstanceExtensions(std::span<std::string> extensions)
noexcept;
74 static std::vector<std::string> AvailableInstanceExtensions()
noexcept;
77 [[nodiscard]] std::vector<const VulkanGraphicsAdapter*> adapters()
const noexcept override;
80 [[nodiscard]]
const VulkanGraphicsAdapter* findAdapter(
const std::optional<lib::Uuid>&
id)
const override;
83 [[nodiscard]]
VulkanDevice* device(
const std::string& name)
noexcept override;
86 [[nodiscard]]
const VulkanDevice* device(
const std::string& name)
const noexcept override;
89 void registerDevice(std::string name, std::unique_ptr<VulkanDevice>&& device)
override;
92 void releaseDevice(
const std::string& name)
override;
96 std::unique_ptr<Impl> m_impl;