Donner SVG Editor & Engine
SVG-native editor and embeddable SVG2 + CSS3 engine in C++20, with GPU (WebGPU) and compact CPU renderers, built for correctness, security, and performance.
Loading...
Searching...
No Matches
Handles.h File Reference

Move-only, generation-checked resource handles for donner::gpu. More...

#include <cstdint>
#include <ostream>
Include dependency graph for Handles.h:
This graph shows which files directly or indirectly include this file:

Classes

class  donner::gpu::Handle< Tag >
 Move-only handle to a device resource. More...
class  donner::gpu::HandleRef< Tag >
 Copyable non-owning reference to a Handle, used inside descriptor structs. More...
struct  donner::gpu::BufferTag
 Tag for Buffer handles. More...
struct  donner::gpu::TextureTag
 Tag for Texture handles. More...
struct  donner::gpu::TextureViewTag
 Tag for TextureView handles. More...
struct  donner::gpu::SamplerTag
 Tag for Sampler handles. More...
struct  donner::gpu::BindGroupLayoutTag
 Tag for BindGroupLayout handles. More...
struct  donner::gpu::BindGroupTag
 Tag for BindGroup handles. More...
struct  donner::gpu::PipelineLayoutTag
 Tag for PipelineLayout handles. More...
struct  donner::gpu::ShaderModuleTag
 Tag for ShaderModule handles. More...
struct  donner::gpu::RenderPipelineTag
 Tag for RenderPipeline handles. More...
struct  donner::gpu::CommandBufferTag
 Tag for CommandBuffer handles. More...

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.

Typedefs

using donner::gpu::Buffer = Handle<BufferTag>
 Buffer handle.
using donner::gpu::Texture = Handle<TextureTag>
 Texture handle.
using donner::gpu::TextureView = Handle<TextureViewTag>
 Texture view handle.
using donner::gpu::Sampler = Handle<SamplerTag>
 Sampler handle.
using donner::gpu::BindGroupLayout = Handle<BindGroupLayoutTag>
 Bind group layout handle.
using donner::gpu::BindGroup = Handle<BindGroupTag>
 Bind group handle.
using donner::gpu::PipelineLayout = Handle<PipelineLayoutTag>
 Pipeline layout handle.
using donner::gpu::ShaderModule = Handle<ShaderModuleTag>
 Shader module handle.
using donner::gpu::RenderPipeline = Handle<RenderPipelineTag>
 Render pipeline handle.
using donner::gpu::CommandBuffer = Handle<CommandBufferTag>
 Finished command buffer handle.
using donner::gpu::BufferRef = HandleRef<BufferTag>
 Buffer reference.
using donner::gpu::TextureRef = HandleRef<TextureTag>
 Texture reference.
using donner::gpu::TextureViewRef = HandleRef<TextureViewTag>
 Texture view reference.
using donner::gpu::SamplerRef = HandleRef<SamplerTag>
 Sampler reference.
using donner::gpu::BindGroupLayoutRef = HandleRef<BindGroupLayoutTag>
 Bind group layout reference.
using donner::gpu::BindGroupRef = HandleRef<BindGroupTag>
 Bind group reference.
using donner::gpu::PipelineLayoutRef = HandleRef<PipelineLayoutTag>
 Pipeline layout reference.
using donner::gpu::ShaderModuleRef = HandleRef<ShaderModuleTag>
 Shader module reference.
using donner::gpu::RenderPipelineRef = HandleRef<RenderPipelineTag>
 Render pipeline reference.

Functions

template<typename Tag>
void donner::gpu::PrintTo (const Handle< Tag > &handle, std::ostream *os)
 gtest PrintTo support: prints <name>#<slot>@<generation> or <name>(null).
template<typename Tag>
void donner::gpu::PrintTo (const HandleRef< Tag > &ref, std::ostream *os)
 gtest PrintTo support: prints <name>#<slot>@<generation> or <name>(null).

Detailed Description

Move-only, generation-checked resource handles for donner::gpu.

Handles are NOT RAII in this packet: resources are freed by an explicit Device::destroy*(handle) call, and device teardown frees everything that remains. RAII ownership wrappers arrive with the resource-lifetime packet (design 0053 change sequence step 3, "Resource lifetime and submission model"). Dropping a handle without destroying the resource does not dangle or leak beyond the device's lifetime; the resource simply stays alive until device teardown.

Function Documentation

◆ PrintTo() [1/2]

template<typename Tag>
void donner::gpu::PrintTo ( const Handle< Tag > & handle,
std::ostream * os )

gtest PrintTo support: prints <name>#<slot>@<generation> or <name>(null).

Parameters
handleHandle to print.
osOutput stream.

◆ PrintTo() [2/2]

template<typename Tag>
void donner::gpu::PrintTo ( const HandleRef< Tag > & ref,
std::ostream * os )

gtest PrintTo support: prints <name>#<slot>@<generation> or <name>(null).

Parameters
refReference to print.
osOutput stream.