|
|
Donner SVG 0.8.0-pre
SVG editor and embeddable C++20 engine.
|
Move-only RAII, generation-checked resource handles for donner::gpu.
More...
#include <cstdint>#include <memory>#include <ostream>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::Surface = Handle<SurfaceTag> |
| Surface handle. | |
| using | donner::gpu::BufferMapping = Handle<BufferMappingTag> |
| Buffer mapping handle. | |
| using | donner::gpu::RenderPipeline = Handle<RenderPipelineTag> |
| Render pipeline handle. | |
| using | donner::gpu::ComputePipeline = Handle<ComputePipelineTag> |
| Compute 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. | |
| using | donner::gpu::ComputePipelineRef = HandleRef<ComputePipelineTag> |
| Compute 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). | |
Move-only RAII, generation-checked resource handles for donner::gpu.
Destroying a live handle releases its resource through the owning device. Teardown ordering is safe in every direction: an explicit Device::destroy*(std::move(handle)) call makes the RAII release a no-op, and a handle destroyed after its device holds an expired device-alive token, so the release is skipped (device teardown already freed everything that remained). Backend objects referenced by in-flight submissions are additionally kept alive by the device's deferred-destruction queue, so an RAII release never destroys a backend object the GPU is still using.
| void donner::gpu::PrintTo | ( | const Handle< Tag > & | handle, |
| std::ostream * | os ) |
gtest PrintTo support: prints <name>#<slot>@<generation> or <name>(null).
| handle | Handle to print. |
| os | Output stream. |
| void donner::gpu::PrintTo | ( | const HandleRef< Tag > & | ref, |
| std::ostream * | os ) |
gtest PrintTo support: prints <name>#<slot>@<generation> or <name>(null).
| ref | Reference to print. |
| os | Output stream. |