MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ on_attach()

void MayaFlux::Buffers::RenderProcessor::on_attach ( const std::shared_ptr< Buffer > &  )
overridevirtual

Called when this processor is attached to a buffer.

Parameters
bufferBuffer this processor is being attached to

Provides an opportunity for the processor to initialize buffer-specific state, allocate resources, or perform validation. With expanded processor capabilities, this method can also:

  • Analyze Buffer Characteristics: Examine data type, size, and format requirements
  • Select Optimal Backend: Choose the most appropriate processing backend for the buffer
  • Initialize Hardware Resources: Set up GPU contexts, CUDA streams, or other acceleration
  • Configure Processing Parameters: Adapt algorithm parameters to buffer characteristics
  • Establish Processing Strategy: Determine whether to use sequential or parallel execution
  • Validate Compatibility: Ensure the processor can handle the buffer's data type and format

Default implementation does nothing, but derived classes should override this method to leverage the full capabilities of the expanded processor architecture.

Reimplemented from MayaFlux::Buffers::BufferProcessor.

Definition at line 964 of file RenderProcessor.cpp.

965{
966 auto vk_buffer = std::dynamic_pointer_cast<VKBuffer>(buffer);
967 if (!vk_buffer)
968 return;
969
971 "RenderProcessor attached to VKBuffer (size: {} bytes, modality: {})",
972 vk_buffer->get_size_bytes(),
973 static_cast<int>(vk_buffer->get_modality()));
974
975 if (vk_buffer && vk_buffer->has_vertex_layout()) {
976 auto vertex_layout = vk_buffer->get_vertex_layout();
977 if (vertex_layout.has_value()) {
979 "RenderProcessor: Auto-injecting vertex layout "
980 "({} vertices, {} attributes)",
981 vertex_layout->vertex_count,
982 vertex_layout->attributes.size());
983
985 auto& state = m_buffer_info[vk_buffer];
986 state.semantic_layout = vertex_layout.value();
987 state.use_reflection = false;
988 }
989 }
990
991 if (m_depth_enabled) {
992 vk_buffer->set_needs_depth_attachment(true);
993 }
994
995 if (!m_display_service) {
997 .get_service<Registry::Service::DisplayService>();
998 }
999}
#define MF_INFO(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
std::shared_ptr< NetworkGeometryBuffer > buffer
Registry::Service::DisplayService * m_display_service
std::unordered_map< std::shared_ptr< VKBuffer >, BufferState > m_buffer_info
Interface * get_service()
Query for a backend service.
static BackendRegistry & instance()
Get the global registry instance.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.

References buffer, MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Registry::BackendRegistry::get_service(), MayaFlux::Registry::BackendRegistry::instance(), MF_DEBUG, and MF_INFO.

+ Here is the call graph for this function: