10class BufferProcessingChain;
83 void process_default()
override;
91 return m_child_buffers;
104 void set_final_processor(std::shared_ptr<BufferProcessor> processor);
110 std::shared_ptr<BufferProcessor> get_final_processor()
const;
131 void cleanup_marked_buffers();
144 bool has_buffer(
const std::shared_ptr<VKBuffer>&
buffer)
const;
167 return m_renderable_buffers;
177 m_renderable_buffers.clear();
192 m_pending_presentation_refreshes.insert(
window);
200 return m_pending_presentation_refreshes;
208 m_pending_presentation_refreshes.erase(
window);
216 void detach_window(
const std::shared_ptr<Core::Window>&
window);
225 std::shared_ptr<BufferProcessor> create_default_processor();
234 m_renderable_buffers.push_back(info);
243 std::ranges::stable_sort(m_renderable_buffers, {},
245 return info.buffer ? info.buffer->get_render_config().draw_priority : int64_t {};
260 bool m_token_active {};
298 void processing_function(
const std::shared_ptr<Buffer>&
buffer)
override;
307 void on_attach(
const std::shared_ptr<Buffer>&
buffer)
override;
314 [[nodiscard]]
bool is_compatible_with(
const std::shared_ptr<Buffer>&
buffer)
const override;
375 using RenderCallback = std::function<void(
const std::shared_ptr<RootGraphicsBuffer>& root)>;
404 void processing_function(
const std::shared_ptr<Buffer>&
buffer)
override;
413 void on_attach(
const std::shared_ptr<Buffer>&
buffer)
override;
419 void on_detach(
const std::shared_ptr<Buffer>&
buffer)
override;
426 [[nodiscard]]
bool is_compatible_with(
const std::shared_ptr<Buffer>&
buffer)
const override;
441 [[nodiscard]]
bool has_callback()
const {
return static_cast<bool>(m_callback); }
462 void fallback_renderer(
const std::shared_ptr<RootGraphicsBuffer>& root);
std::shared_ptr< NetworkGeometryBuffer > buffer
std::weak_ptr< Core::Window > window
Central computational transformation interface for continuous buffer processing.
std::weak_ptr< RootGraphicsBuffer > m_root_buffer
Root buffer this processor manages.
Default processor for coordinating batch GPU buffer processing.
std::function< void(const std::shared_ptr< RootGraphicsBuffer > &root)> RenderCallback
Callback signature for render operations.
RenderCallback m_callback
User-provided render callback.
bool has_callback() const
Checks if a callback is configured.
std::weak_ptr< RootGraphicsBuffer > m_root_buffer
Root buffer this presenter is attached to.
~PresentProcessor() override=default
void clear_callback()
Clears the current callback.
Final processor that executes render operations after all buffer processing.
std::vector< RenderableBufferInfo > m_renderable_buffers
size_t get_buffer_count() const
Gets the number of child buffers.
const std::unordered_set< std::shared_ptr< Core::Window > > & get_pending_presentation_refreshes() const
Get explicit refresh requests, retained independently of frame draws.
const std::vector< RenderableBufferInfo > & get_renderable_buffers() const
Get list of buffers ready for rendering.
std::unordered_set< std::shared_ptr< Core::Window > > m_pending_presentation_refreshes
const std::vector< std::shared_ptr< VKBuffer > > & get_child_buffers() const
Gets all child buffers managed by this root.
void clear_renderable_buffers()
Clear the renderable buffers list.
void add_renderable_buffer(const RenderableBufferInfo &info)
Add a buffer to the renderable list.
void sort_renderable_buffers()
Stable-sort the collected renderable buffers by each buffer's RenderConfig::draw_priority,...
void set_token_active(bool active) override
Activates/deactivates processing for the current token.
bool is_token_active() const override
Checks if the buffer is active for its assigned token.
std::shared_ptr< BufferProcessor > m_final_processor
Optional final processor (rarely used in graphics)
void request_presentation_refresh(const std::shared_ptr< Core::Window > &window)
Request presentation even if the window has no draw commands.
void clear_presentation_refresh(const std::shared_ptr< Core::Window > &window)
Consume a refresh after submission, or discard it for a closed window.
Root container for GPU buffer lifecycle management and batch processing.
uint64_t RenderPipelineID
BufferUsageHint
Semantic usage hint for buffer allocation and memory properties.
CommandBufferID command_buffer_id
std::shared_ptr< VKBuffer > buffer
std::shared_ptr< Core::Window > target_window
RenderPipelineID pipeline_id
Information about a buffer that's ready to render.