Files
Renderive/Core/architecture/Render_Config.h
T
2026-08-02 18:58:35 +08:00

90 lines
2.4 KiB
C++

#pragma once
#include <cstddef>
#include <cstdint>
namespace renderive {
using Plot_Execution_Id = std::uint64_t;
enum class Dirty_Reason : std::uint8_t {
Core_Data,
Config,
Viewport
};
enum class Render_Task_Kind : std::uint8_t {
Frame,
Curve,
Waterfall,
Primitive,
Compose,
Performance
};
struct Render_Runtime_Config {
std::size_t worker_count{};
};
struct Render_Executor_Snapshot {
std::size_t worker_count{};
std::size_t active_workers{};
std::size_t idle_workers{};
std::size_t active_frame_jobs{};
std::size_t queued_frame_jobs{};
std::uint64_t submitted_jobs{};
std::uint64_t started_task_nodes{};
std::uint64_t completed_task_nodes{};
std::uint64_t rejected_frame_jobs{};
std::uint64_t dropped_frame_attempts{};
std::uint64_t peak_concurrency{};
std::uint64_t average_queue_wait_ns{};
std::uint64_t max_queue_wait_ns{};
std::uint64_t average_task_duration_ns{};
std::uint64_t max_task_duration_ns{};
std::uint64_t curve_tasks{};
std::uint64_t waterfall_tasks{};
std::uint64_t primitive_tasks{};
std::uint64_t compose_tasks{};
std::uint64_t performance_tasks{};
};
struct Frame_Worker_Stats {
Render_Executor_Snapshot executor_at_submit;
Render_Executor_Snapshot executor_at_finish;
std::uint32_t task_count{};
std::uint32_t peak_parallelism{};
std::uint64_t queue_wait_total_ns{};
std::uint64_t queue_wait_max_ns{};
std::uint64_t worker_run_total_ns{};
std::uint64_t parallel_stage_wall_ns{};
std::uint64_t rejected_task_count{};
};
enum class Refresh_Limit_Source : std::uint8_t {
Unknown,
Input,
Render,
Paint,
User
};
enum class Low_Latency_Bottleneck_State : std::uint8_t {
Unknown,
Input_Limited,
Producer_Limited,
Consumer_Limited,
User_Limited
};
enum class Low_Latency_Production_Strategy : std::uint8_t {
Latency_Eager,
Cost_Balanced
};
enum class Frame_Outcome : std::uint8_t {
Presented,
Superseded,
Render_Acquire_Dropped,
Publish_Dropped,
Paint_Acquire_Dropped,
Worker_Budget_Dropped,
Cancelled
};
/// @brief Rendering cache strategy for a renderable subtree.
enum class Renderable_Cache_Mode : std::uint8_t {
/// @brief Draw directly into the target painter each frame.
Direct,
/// @brief Rebuild a local image cache when state changes, then compose it.
Local_Pixel
};
} // namespace renderive