12class IGraphicsBackend;
50 void register_callbacks()
override;
51 void start()
override;
53 void pause()
override;
54 void resume()
override;
72 return m_graphics_thread_id;
80 return std::this_thread::get_id() == m_graphics_thread_id;
86 [[nodiscard]] uint32_t get_target_fps()
const;
91 [[nodiscard]]
double get_measured_fps()
const;
96 void set_target_fps(uint32_t fps);
116 void register_windows_for_processing();
124 void render_all_windows();
126 bool is_ready()
const override {
return m_is_ready; }
127 bool is_running()
const override {
return m_running.load(std::memory_order_acquire) && !m_paused.load(std::memory_order_acquire); }
128 void shutdown()
override;
151 std::atomic<bool> m_running {
false };
152 std::atomic<bool> m_paused {
false };
168 void initialize_graphics_portal();
178 void register_frame_processor();
191 void graphics_thread_loop();
202 void process_frame_coroutines_impl(
const std::vector<std::shared_ptr<Vruta::Routine>>& tasks, uint64_t processing_units);
207 void cleanup_closed_windows();
SubsystemType get_type() const override
Get the type of this subsystem.
std::vector< std::shared_ptr< Window > > m_registered_windows
std::thread m_graphics_thread
Vruta::FrameClock & get_frame_clock()
Get frame clock.
SubsystemTokens get_tokens() const override
Get the processing token configuration this subsystem manages.
std::thread::id m_graphics_thread_id
const Vruta::FrameClock & get_frame_clock() const
SubsystemProcessingHandle * get_processing_context_handle() override
Get the processing context handle for this subsystem.
bool is_ready() const override
Check if subsystem is ready for operation.
const IGraphicsBackend * get_backend() const
SubsystemProcessingHandle * m_handle
Reference to processing handle.
IGraphicsBackend * get_backend()
Get underlying graphics backend for advanced usage Can be cast to VulkanBackend* or OpenGLBackend* fo...
std::shared_ptr< Vruta::FrameClock > m_frame_clock
bool is_running() const override
Check if subsystem is currently processing.
std::unique_ptr< IGraphicsBackend > m_backend
SubsystemTokens m_subsystem_tokens
Processing token configuration.
std::thread::id get_graphics_thread_id() const
Get graphics thread ID.
GlobalGraphicsConfig::GraphicsApi get_backend_type() const
Get the type of the graphics backend.
GlobalGraphicsConfig m_graphics_config
Graphics/windowing configuration.
bool is_graphics_thread() const
Check if currently on graphics thread.
Backend agnostic graphics subsystem for visual processing.
Base interface for all subsystems in the MayaFlux processing architecture.
Unified interface combining buffer and node processing for subsystems.
Frame-accurate timing system for visual processing domain.
Processing token configuration for subsystem operation.