hal/live-artifact-tests.lisp
Backend-independent live-pipeline ownership probe -------------------------
Replace the probe's fragment method at its ordinary DEFMETHOD coordinate.
The changed live source value requests an attempt. Pipeline creation fails after both candidate modules exist: the old installed cohort survives and both candidates are reclaimed.
A second value change retries without any method edit. The complete candidate installs, then the old cohort retires.
Ordinary method replacement is a narrow MOP dependency, quite separate from live values and the global reusable-source stamp.
Reusable shader functions and abstractions carry a conservative global revision because their call graph is deliberately late bound. It rebuilds the complete candidate and stamps success.
A global reusable-source revision used to resurrect a released pipeline. Release is now terminal and idempotent.
The error is a published diagnostic, not a claim that teardown may be replayed against wrappers the application has already relinquished.
(artifact)Return ARTIFACT's lifecycle status. Concrete artifacts normally use :BUILDING, :INSTALLED, :FAILED, :RELEASING, and :RELEASED. :FAILED means that the last attempt failed while the previous installed artifact, when any, remains usable.
(artifact)Return ARTIFACT's newest build or retirement diagnostic, or NIL.
(artifact)Return ARTIFACT's monotonically increasing installed revision.
(artifact)Attempt pending source for ARTIFACT at its owning application boundary. Implementations must build away from installed state, publish only a complete candidate, preserve the last-known-good artifact on failure, and coalesce newer invalidations without performing GPU work in definition callbacks. Explicitly released…
(artifact)Explicitly and idempotently release ARTIFACT and its subscriptions. Release is terminal. Application owners remain responsible for calling this at a boundary where no new encoding can borrow the installed GPU resources.
(application)Return APPLICATION's live artifacts as a fresh list. The list is an enumeration, not a transfer of ownership. Applications with no live artifacts inherit the empty default. An artifact may represent one GPU pipeline, a complete renderer cohort, or another transactionally replaced application derivative; the…
(application)Test whether two compatible scalars are equal.
(name)The live value NAME stands for in shader source, or NIL when NAME names none. Returns (VALUES VALUE DECLARATION FOUND-P): VALUE is a real, and DECLARATION, when given, is a represented-value declaration whose quantity the literal takes on.
(generic-function name specialized-lambda-list options &body body)Define a shader-producing method with ordinary DEFMETHOD identity. Calling the method reparses its small source form so changes to source-level abstractions participate in live rebuilding. Method replacement remains the role/stage identity watched by the MOP; abstraction revisions are tracked separately by live…
(role stage)Return the current durable shader specification for ROLE and STAGE.
(handle)Logically invalidate HANDLE immediately. Native teardown may be deferred until submitted work which captured HANDLE has completed.
(device descriptor)Asks the DEVICE for a handle to newly created instance of some object fulfilling the DESCRIPTOR.
(artifact)(&key role (stage :fragment) vertex-role label device layout vertex-module
vertex-buffers target-format target-blend primitive depth-stencil)Create and install a live mathematical render pipeline. VERTEX-MODULE is borrowed when VERTEX-ROLE is NIL and STAGE is not :VERTEX. Every module compiled from ROLE or VERTEX-ROLE is owned by the returned artifact and retired on replacement or explicit release.
(artifact)(dependent)Logical negation of one test or raw truth value.
All named failures from a completed release sequence.
The generic protocol deliberately requires no common superclass. This is the adapter shape a whole
luftrenderer cohort can use without pretending to be one per-pipeline artifact.