GPU filter-graph executor for the Geode rendering backend. More...
#include <array>#include <deque>#include <functional>#include <memory>#include <optional>#include <ostream>#include <string_view>#include <type_traits>#include "donner/base/Box.h"#include "donner/base/Transform.h"#include "donner/gpu/Device.h"#include "donner/gpu/shader/CompiledShader.h"Classes | |
| struct | donner::geode::RuntimeComputeProgram |
| A compute pipeline built from a precompiled shader artifact, with the objects it is layered on. More... | |
| class | donner::geode::FilterTextureAllocator |
| Renderer-owned allocation boundary for filter textures. More... | |
| struct | donner::geode::RetainedFilterResources |
| Runtime handles a filter execution's recorded commands reference, moved to whatever outlives those commands. More... | |
| class | donner::geode::FrameCommandBufferSink |
| Renderer-owned collection point for the command buffers one frame records. More... | |
| struct | donner::geode::FilterTexture |
| A texture flowing between filter primitives: the runtime handle holding it and the descriptor it was allocated with. More... | |
| struct | donner::geode::FilterExecutionResult |
| Outcome of running a filter graph, and the ownership that comes with it. More... | |
| struct | donner::geode::FilterTilePlan |
| Exact-resolution tile layout with overlapping sampling halos. More... | |
| struct | donner::geode::FilterExecutionMemory |
| GPU allocation bytes retained by an execution, excluding the caller's source/capture. More... | |
| class | donner::geode::GeodeFilterEngine |
| GPU filter-graph executor. More... | |
Namespaces | |
| namespace | donner |
| Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css. | |
| namespace | donner::svg |
| Donner SVG library, which can load, manipulate and render SVG files. | |
| namespace | donner::svg::components |
| Contains the implementation of the Donner ECS,. | |
| namespace | donner::svg::components::filter_primitive |
| Variant holding the parameters for each type of filter primitive. | |
Functions | |
| RuntimeComputeProgram | donner::geode::CreateReflectedProgram (gpu::Device &runtime, const gpu::shader::CompiledShaderView &linked, std::string_view label) |
Creates the compute program of one shader family from the projection runtime consumes. | |
| std::ostream & | donner::geode::operator<< (std::ostream &os, FilterExecutionResult::Kind kind) |
Streams kind for diagnostics. | |
GPU filter-graph executor for the Geode rendering backend.
Owns compute pipelines for filter primitives and executes a donner::svg::components::FilterGraph against a source-graphic texture, returning the filtered output texture.
Implemented primitives: feGaussianBlur, feOffset, feColorMatrix, feFlood, feMerge, feComposite, feBlend, feMorphology, feComponentTransfer, feConvolveMatrix, feTurbulence, feDisplacementMap, feDiffuseLighting, feSpecularLighting, feDropShadow, feImage, feTile. The primitive visitor is exhaustive.
| RuntimeComputeProgram donner::geode::CreateReflectedProgram | ( | gpu::Device & | runtime, |
| const gpu::shader::CompiledShaderView & | linked, | ||
| std::string_view | label ) |
Creates the compute program of one shader family from the projection runtime consumes.
linked is the one artifact of the family this build links, named with DONNER_LINKED_SHADER_ARTIFACT; SelectShaderProjection picks the view runtime consumes from it, and a device consuming a projection the build does not carry fails closed at module creation. The shader module descriptor and the group-zero binding layout are both derived from the selected artifact, so the source a device compiles and the interface the host binds against always come from the same compiled program. A family that does not expose exactly one two-dimensional compute entry point yields a program with null handles, which a dispatch refuses.
| runtime | Device receiving the selected precompiled projection. |
| linked | The family's linked artifact. |
| label | Diagnostic program label. |
|
inline |
Streams kind for diagnostics.
| os | Output stream. |
| kind | Value to print. |