44 VkExtent2D vk_extent_ = {};
45 VkSurfaceFormatKHR swap_chain_format_ = {};
46 GPUTexture *surface_texture_ =
nullptr;
50 render_graph::VKResourceAccessInfo access_info_ = {};
52 std::optional<std::reference_wrapper<VKThreadData>> thread_data_;
53 std::optional<std::reference_wrapper<render_graph::VKRenderGraph>> render_graph_;
56 shader::SpecializationConstants constants_state_;
61 using Clock = std::chrono::steady_clock;
62 using TimePoint = Clock::time_point;
63 using Nanoseconds = std::chrono::nanoseconds;
67 TimePoint cpu_start, cpu_end;
69 Vector<ScopeTimings> scope_timings;
71 void process_frame_timings();
78 return render_graph_.value().get();
82 return render_graph_.value().get();
85 VKContext(
void *ghost_window,
void *ghost_context);
93 void flush()
override;
97 VkPipelineStageFlags wait_dst_stage_mask = VK_PIPELINE_STAGE_NONE,
98 VkSemaphore wait_semaphore = VK_NULL_HANDLE,
99 VkSemaphore signal_semaphore = VK_NULL_HANDLE,
100 VkFence signal_fence = VK_NULL_HANDLE);
159 void swap_buffers_pre_handler(
const GHOST_VulkanSwapChainData &
data);
160 void swap_buffers_post_handler();
162 void openxr_acquire_framebuffer_image_handler(GHOST_VulkanOpenXRData &
data);
163 void openxr_release_framebuffer_image_handler(GHOST_VulkanOpenXRData &
data);
166 VkPipeline vk_pipeline,
render_graph::VKRenderGraph & render_graph()
void debug_unbind_all_ssbo() override
void sync_backbuffer(bool cycle_resource_pool)
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
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_buffers_post_callback()
VKFrameBuffer * active_framebuffer_get() const
const render_graph::VKRenderGraph & render_graph() const
bool has_active_framebuffer() const
void debug_unbind_all_ubo() override
static void swap_buffers_pre_callback(const GHOST_VulkanSwapChainData *data)
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()
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)