Donner SVG main
0.8.0 ยท 382bd0190.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
GeodeFilterEngine.h File Reference

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"
Include dependency graph for GeodeFilterEngine.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.

Detailed Description

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.

Function Documentation

◆ CreateReflectedProgram()

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.

Parameters
runtimeDevice receiving the selected precompiled projection.
linkedThe family's linked artifact.
labelDiagnostic program label.
Returns
The built program, or one with null handles when the build failed.

◆ operator<<()

std::ostream & donner::geode::operator<< ( std::ostream & os,
FilterExecutionResult::Kind kind )
inline

Streams kind for diagnostics.

Parameters
osOutput stream.
kindValue to print.