45 VkExtent2D vk_extent_ = {};
46 VkSurfaceFormatKHR swap_chain_format_ = {};
53 render_graph::VKResourceAccessInfo access_info_ = {};
55 std::optional<std::reference_wrapper<VKThreadData>> thread_data_;
56 std::optional<std::reference_wrapper<render_graph::VKRenderGraph>> render_graph_;
59 shader::SpecializationConstants constants_state_;
64 using Clock = std::chrono::steady_clock;
65 using TimePoint = Clock::time_point;
66 using Nanoseconds = std::chrono::nanoseconds;
70 TimePoint cpu_start, cpu_end;
72 Vector<ScopeTimings> scope_timings;
74 void process_frame_timings();
81 return render_graph_.value().get();
85 return render_graph_.value().get();
88 VKContext(
void *ghost_window,
void *ghost_context);
96 void flush()
override;
100 VkPipelineStageFlags wait_dst_stage_mask = VK_PIPELINE_STAGE_NONE,
101 VkSemaphore wait_semaphore = VK_NULL_HANDLE,
102 VkSemaphore signal_semaphore = VK_NULL_HANDLE,
103 VkFence signal_fence = VK_NULL_HANDLE);
162 VKBuffer &buffer, VkDeviceSize min_offset_alignment);
165 void swap_buffer_draw_handler(
const GHOST_VulkanSwapChainData &
data);
166 void swap_buffer_acquired_handler();
168 void openxr_acquire_framebuffer_image_handler(GHOST_VulkanOpenXRData &
data);
169 void openxr_release_framebuffer_image_handler(GHOST_VulkanOpenXRData &
data);
172 VkPipeline vk_pipeline,
render_graph::VKRenderGraph & render_graph()
void debug_unbind_all_ssbo() override
render_graph::VKResourceAccessInfo & reset_and_get_access_info()
void debug_group_begin(const char *, int) override
void debug_group_end() override
static void openxr_acquire_framebuffer_image_callback(GHOST_VulkanOpenXRData *data)
void deactivate_framebuffer()
bool debug_capture_scope_begin(void *scope) override
void specialization_constants_set(const shader::SpecializationConstants *constants_state)
void deactivate() override
void memory_statistics_get(int *r_total_mem_kb, int *r_free_mem_kb) override
VKContext(void *ghost_window, void *ghost_context)
VKDiscardPool discard_pool
static void swap_buffer_acquired_callback()
void * debug_capture_scope_create(const char *name) override
static void openxr_release_framebuffer_image_callback(GHOST_VulkanOpenXRData *data)
bool debug_capture_begin(const char *title) override
static void swap_buffer_draw_callback(const GHOST_VulkanSwapChainData *data)
VKFrameBuffer * active_framebuffer_get() const
const render_graph::VKRenderGraph & render_graph() const
bool has_active_framebuffer() const
void debug_unbind_all_ubo() override
void debug_capture_end() override
void activate_framebuffer(VKFrameBuffer &framebuffer)
void debug_capture_scope_end(void *scope) override
VKStateManager & state_manager_get() const
VKDescriptorSetTracker & descriptor_set_get()
std::unique_ptr< VKStreamingBuffer > & get_or_create_streaming_buffer(VKBuffer &buffer, VkDeviceSize min_offset_alignment)
void update_pipeline_data(render_graph::VKPipelineData &r_pipeline_data)
void begin_frame() override
VKDescriptorPools & descriptor_pools_get()
void end_frame() override
TimelineValue flush_render_graph(RenderGraphFlushFlags flags, VkPipelineStageFlags wait_dst_stage_mask=VK_PIPELINE_STAGE_NONE, VkSemaphore wait_semaphore=VK_NULL_HANDLE, VkSemaphore signal_semaphore=VK_NULL_HANDLE, VkFence signal_fence=VK_NULL_HANDLE)