#1415 accepted todo

setup proxying through BufferProvider

Reported by: Ichthyostega Owned by: Ichthyostega
Priority: normal Milestone: 0integration
Component: lumieraSteam Keywords: steam render research
Sub Tickets: #1410 Parent Tickets: #830, #1374, #1395

Description

As a LumieraDeveloper,
I want a pre-configured setup with a BufferProvider implementation,
in order to expose some memory resource (buffer) through a BuffHandle as front-end

prototyping work

Such a setup would be prerequisite for solving the mismatch (#1395) between the Buffer Provider Protocol and the intended usage of OutputSlot and DataSink. Previously, attempts at resolving those problems failed, due to the prelminary implementation backing both the BufferProviderProtocol_test and the OutputSlotProtocol_test. In-depth analysis showed, that there is no fundamental problem involved, and thus I have worked through all that (quite dated) demo and exploration code and achieved a better separation between the implementation backbone and the actual test/instrumentation code.

It seems thus that I'd be able now to put together such a forwarding implementation of BufferProvider. However, there is the twist that such a usage will stretch the contract of BufferProvider to some degree; that set me onto the idea to repackage that task in the form of an implementation building block — thereby completely encapsulating this specific back-end implementation, while exposing only the Buffer Descriptor and Buffer Handle.

Now I need some prototyping work to see if doing so is viable

Change history (2)

comment:1 by Ichthyostega, at 2026-03-16T23:22:59Z

Owner: set to Ichthyostega
Status: newaccepted

Gradually I have paved my way towards such a setup

  • a special metaprogramming setup was created to generate data records
  • this was used to build a Policy with several callback-λ
  • furthermore I have rearranged the implementation APIs of BufferProvider to simplify passing of allocation data

I can demonstrate a working BufferProxyAdaptor and are now about to see how this might fit into the OutputSlot base implementation

comment:2 by Ichthyostega <prg@…>, at 2026-03-23T00:23:00Z

In c87bc7f/Lumiera:

OutputSlot: complete connection of redesigned implementation (see #1415)

After resolving the inner tensions in the old prototype from 2012,
it was now possible to resolve all issues in a single strike

  • DataSink becomes a functor, yet embeds a shared ref-count
  • in the λ-closure a specific Buffer Descriptor is prepared for each feed
  • building upon the prototyping work, a dedicated OutputBufferProxy exposes a BuffHandle to the client, with emit() and release() calls
  • the implementation delegates directly to the OutputSlot::Connection
  • an this is where all actual output technology is encapsulated
Note: See TracTickets for help on using tickets.