Donner SVG main
0.8.0 ยท 382bd0190.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::gpu::vulkan::VulkanSharedRoot Class Referencefinal

One native Vulkan instance, device and graphics queue shared by runtime devices. More...

#include "donner/gpu/vulkan/VulkanDevice.h"

Public Member Functions

 ~VulkanSharedRoot ()
 Releases native handles when the last holder has proved its work complete.
uint32_t maxTextureDimension2D () const
 Largest 2D texture dimension reported by this root's physical device.
const std::shared_ptr< DeviceLostState > & lostState () const
 Sticky loss condition shared by every runtime device opened over this root.
std::shared_ptr< VulkanSurfaceRetirement > registerExternalSurface (uint64_t surfaceHandle)
 Registers an external surface once for this root, refusing duplicates and later reuse.
bool destroyExternalSurface (uint64_t surfaceHandle, const std::shared_ptr< VulkanSurfaceRetirement > &retirement)
 Destroys an embedder surface after its registration proves retirement or no attachment.
std::optional< TextureFormat > preferredExternalSurfaceFormat (uint64_t surfaceHandle) const
 Chooses a format offered by the selected physical device for an external surface. Called before rendering pipelines are compiled for the editor window.
void * nativeInstance () const
 Borrowed instance for an embedder to create its own window-system surface, or null when this root was created for headless work. The root must outlive the embedder surface.
bool executionLockedForTest () const
 True while another thread holds the root's encode-through-submit lock. Test accessor.

Friends

class VulkanDevice

Detailed Description

One native Vulkan instance, device and graphics queue shared by runtime devices.

Runtime devices keep this owner alive while each owns its command pool, handles, serials and retirement. The native queue is serialized across their submissions and presentations.

Member Function Documentation

◆ destroyExternalSurface()

bool donner::gpu::vulkan::VulkanSharedRoot::destroyExternalSurface ( uint64_t surfaceHandle,
const std::shared_ptr< VulkanSurfaceRetirement > & retirement )
nodiscard

Destroys an embedder surface after its registration proves retirement or no attachment.

Parameters
surfaceHandleRegistered VkSurfaceKHR bits.
retirementExact registration returned by registerExternalSurface.

◆ preferredExternalSurfaceFormat()

std::optional< TextureFormat > donner::gpu::vulkan::VulkanSharedRoot::preferredExternalSurfaceFormat ( uint64_t surfaceHandle) const
nodiscard

Chooses a format offered by the selected physical device for an external surface. Called before rendering pipelines are compiled for the editor window.

Parameters
surfaceHandleVkSurfaceKHR bits owned by the embedder.

◆ registerExternalSurface()

std::shared_ptr< VulkanSurfaceRetirement > donner::gpu::vulkan::VulkanSharedRoot::registerExternalSurface ( uint64_t surfaceHandle)

Registers an external surface once for this root, refusing duplicates and later reuse.

Parameters
surfaceHandleVkSurfaceKHR bits from the instance this root owns.

The documentation for this class was generated from the following file: