From 333522ac623504086e6af0c0c1924b56f9dbf019 Mon Sep 17 00:00:00 2001 From: PancakeTAS Date: Sat, 25 Apr 2026 22:32:13 +0200 Subject: [PATCH] feat(bindless): Expose Vulkan instance & device --- lsfg-vk-backend/include/lsfg-vk/lsfgvk.hpp | 14 ++++++++++++++ lsfg-vk-backend/src/lsfgvk.cpp | 9 ++++++++- lsfg-vk-backend/src/lsfgvk.hpp | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lsfg-vk-backend/include/lsfg-vk/lsfgvk.hpp b/lsfg-vk-backend/include/lsfg-vk/lsfgvk.hpp index c270afc..b55ac86 100644 --- a/lsfg-vk-backend/include/lsfg-vk/lsfgvk.hpp +++ b/lsfg-vk-backend/include/lsfg-vk/lsfgvk.hpp @@ -7,6 +7,10 @@ #include #include +#ifdef LSFGVK_PRIV +#include +#endif // LSFGVK_PRIV + namespace lsfgvk { /// Forward declaration of implementation classes @@ -40,6 +44,16 @@ namespace lsfgvk { bool allowFP16 ); +#ifdef LSFGVK_PRIV + /// Get the underlying Vulkan instance handle + /// @return Vulkan instance + [[nodiscard]] VkInstance _instance() const; + + /// Get the underlying Vulkan device handle + /// @return Vulkan device + [[nodiscard]] VkDevice _device() const; +#endif // LSFGVK_PRIV + // Non-copyable, non-movable Instance(const Instance&) = delete; Instance& operator=(const Instance&) = delete; diff --git a/lsfg-vk-backend/src/lsfgvk.cpp b/lsfg-vk-backend/src/lsfgvk.cpp index 27b9321..fd5bdf0 100644 --- a/lsfg-vk-backend/src/lsfgvk.cpp +++ b/lsfg-vk-backend/src/lsfgvk.cpp @@ -1,6 +1,5 @@ /* SPDX-License-Identifier: GPL-3.0-or-later */ -#include "lsfg-vk/lsfgvk.hpp" #include "lsfgvk.hpp" #include "modules/library.hpp" #include "modules/pipeline.hpp" @@ -228,4 +227,12 @@ Context::~Context() { } } +VkInstance Instance::_instance() const { + return this->m_priv->vk.instance.get(); +} + +VkDevice Instance::_device() const { + return *this->m_priv->vk.device; +} + Instance::~Instance() = default; diff --git a/lsfg-vk-backend/src/lsfgvk.hpp b/lsfg-vk-backend/src/lsfgvk.hpp index 31a84e9..95e0aaa 100644 --- a/lsfg-vk-backend/src/lsfgvk.hpp +++ b/lsfg-vk-backend/src/lsfgvk.hpp @@ -2,6 +2,9 @@ #pragma once +#define LSFGVK_PRIV +#include "lsfg-vk/lsfgvk.hpp" // IWYU pragma: export + #include "modules/pipeline.hpp" #include "modules/library.hpp" #include "utility/vkhelper.hpp"