33#if !defined(__APPLE__)
46#ifndef VK_NO_PROTOTYPES
47#define VK_NO_PROTOTYPES
49#include <vulkan/vulkan_raii.hpp>
52namespace visualization {
140 return static_cast<vk::Instance::CType
>(*instance_);
143 return static_cast<vk::Device::CType
>(*device_);
146 return static_cast<vk::PhysicalDevice::CType
>(*physical_device_);
149 return static_cast<vk::Queue::CType
>(*compute_queue_);
152 return compute_queue_family_;
161 return subgroup_supported_stages_;
164 return subgroup_supported_operations_;
179 const char* label =
nullptr);
185 const char* label =
nullptr);
198 VkMemoryPropertyFlags props)
const;
211 bool CreateInstance();
212 bool SelectPhysicalDevice();
213 bool CreateLogicalDevice();
217 bool AllocateExportableImage(std::uint32_t
width,
220 VkImageUsageFlags usage,
222 VkDeviceMemory& out_memory,
227 bool ImportFDIntoGL(
int fd,
230 VkDeviceSize memory_size,
232 std::uint32_t& out_gl_memory_object,
233 std::uint32_t& out_gl_texture)
const;
241 bool initialized_ =
false;
242 bool gl_extensions_ok_ =
false;
243 bool debug_utils_enabled_ =
245 std::uint32_t subgroup_size_ = 0;
246 std::uint32_t subgroup_supported_stages_ = 0;
247 std::uint32_t subgroup_supported_operations_ = 0;
248 std::string last_error_;
253 vk::raii::Context context_;
254 vk::raii::Instance instance_{
nullptr};
255 vk::raii::PhysicalDevice physical_device_{
nullptr};
256 vk::raii::Device device_{
nullptr};
257 vk::raii::Queue compute_queue_{
nullptr};
258 std::uint32_t compute_queue_family_ = UINT32_MAX;
260 VkPhysicalDeviceMemoryProperties memory_props_{};
filament::Texture::InternalFormat format
Definition FilamentResourceManager.cpp:202
Definition GaussianSplatVulkanInteropContext.h:107
SharedImageDesc CreateSharedColorImage(std::uint32_t width, std::uint32_t height, const char *label=nullptr)
Definition GaussianSplatVulkanInteropContext.cpp:763
VkQueue GetComputeQueue() const
Definition GaussianSplatVulkanInteropContext.h:148
static GaussianSplatVulkanInteropContext & GetInstance()
Definition GaussianSplatVulkanInteropContext.cpp:159
std::uint32_t GetSubgroupSupportedStages() const
Definition GaussianSplatVulkanInteropContext.h:160
std::uint32_t GetSubgroupSupportedOperations() const
Definition GaussianSplatVulkanInteropContext.h:163
SharedImageDesc CreateSharedDepthImage(std::uint32_t width, std::uint32_t height, const char *label=nullptr)
Definition GaussianSplatVulkanInteropContext.cpp:769
VkPhysicalDevice GetPhysicalDevice() const
Definition GaussianSplatVulkanInteropContext.h:145
bool GetDebugUtilsEnabled() const
Definition GaussianSplatVulkanInteropContext.h:156
std::uint32_t FindMemoryType(std::uint32_t type_filter, VkMemoryPropertyFlags props) const
Definition GaussianSplatVulkanInteropContext.cpp:455
void Shutdown()
Release all Vulkan resources and invalidate the context.
Definition GaussianSplatVulkanInteropContext.cpp:208
std::uint32_t GetSubgroupSize() const
Definition GaussianSplatVulkanInteropContext.h:159
bool ProbeGLExtensions()
Definition GaussianSplatVulkanInteropContext.cpp:242
const vk::raii::Instance & GetRaiiInstance() const
Definition GaussianSplatVulkanInteropContext.h:168
void DestroySharedImage(SharedImageDesc &desc)
Definition GaussianSplatVulkanInteropContext.cpp:775
VkInstance GetVkInstance() const
Definition GaussianSplatVulkanInteropContext.h:139
bool IsValid() const
Definition GaussianSplatVulkanInteropContext.h:121
const std::string & GetLastError() const
Human-readable description of the last failure (extension name, etc.).
Definition GaussianSplatVulkanInteropContext.h:131
std::uint32_t GetComputeQueueFamily() const
Definition GaussianSplatVulkanInteropContext.h:151
VkDevice GetDevice() const
Definition GaussianSplatVulkanInteropContext.h:142
bool Initialize()
Definition GaussianSplatVulkanInteropContext.cpp:172
const vk::raii::Device & GetRaiiDevice() const
Definition GaussianSplatVulkanInteropContext.h:169
bool AreGLExtensionsReady() const
Definition GaussianSplatVulkanInteropContext.h:128
VkInteropImageFormat
Image format selector used for interop image creation.
Definition GaussianSplatVulkanInteropContext.h:60
@ kDepth32F
Depth-only (VK_FORMAT_D32_SFLOAT / GL DEPTH_COMPONENT32F)
@ kRGBA16F
RGBA16F colour (VK_FORMAT_R16G16B16A16_SFLOAT / GL RGBA16F)
Definition PinholeCameraIntrinsic.cpp:16
Definition GaussianSplatVulkanInteropContext.h:76
std::uint32_t gl_texture
GL texture name; pass to Filament.
Definition GaussianSplatVulkanInteropContext.h:83
std::uint32_t width
Dimensions and format (stored for resize/recreate checks).
Definition GaussianSplatVulkanInteropContext.h:86
std::uint32_t height
Definition GaussianSplatVulkanInteropContext.h:87
VkImage vk_image
Definition GaussianSplatVulkanInteropContext.h:77
VkDeviceMemory vk_memory
Dedicated exportable alloc.
Definition GaussianSplatVulkanInteropContext.h:78
std::uint32_t gl_memory_object
glCreateMemoryObjectsEXT result
Definition GaussianSplatVulkanInteropContext.h:82
bool IsValid() const
Definition GaussianSplatVulkanInteropContext.h:94
VkInteropImageFormat format
Definition GaussianSplatVulkanInteropContext.h:88
VkImageLayout current_layout
Definition GaussianSplatVulkanInteropContext.h:92