Monado OpenXR Runtime
comp_target_swapchain Struct Reference

Wraps and manage VkSwapchainKHR and VkSurfaceKHR, used by Compositor code. More...

#include <main/comp_target_swapchain.h>

Inheritance diagram for comp_target_swapchain:
Collaboration diagram for comp_target_swapchain:

Data Fields

struct comp_target base
 Base target. More...
 
struct u_pacing_compositorupc
 Compositor frame pacing helper. More...
 
enum comp_target_display_timing_usage timing_usage
 If we should use display timing. More...
 
int64_t current_frame_id
 Also works as a frame index. More...
 
struct {
   bool   compositor_extent
 Should we ignore the compositor's preferred extents. More...
 
   VkExtent2D   extent
 The extents that a sub-class wants us to use, see ignore_compositor_extent above. More...
 
override
 
struct {
   VkSwapchainKHR   handle
 
swapchain
 
struct {
   VkSurfaceKHR   handle
 
   VkSurfaceFormatKHR   format
 
surface
 
struct {
   VkFormat   color_format
 
   VkColorSpaceKHR   color_space
 
preferred
 
VkPresentModeKHR present_mode
 Present mode that the system must support. More...
 
VkDisplayKHR display
 The current display used for direct mode, VK_NULL_HANDLE else. More...
 
struct {
   bool   has_started
 Must only be accessed from main compositor thread. More...
 
   bool   should_wait
 Protected by event_thread lock. More...
 
   uint64_t   last_vblank_ns
 Protected by event_thread lock. More...
 
   struct os_thread_helper   event_thread
 Thread waiting on vblank_event_fence (first pixel out). More...
 
vblank
 
bool has_logged_info
 We print swapchain info as INFO the first time we create a VkSWapchain, this keeps track if we have done it. More...
 

Protected Member Functions

void comp_target_swapchain_init_and_set_fnptrs (struct comp_target_swapchain *cts, enum comp_target_display_timing_usage timing_usage)
 Pre Vulkan initialisation, sets function pointers. More...
 
void comp_target_swapchain_override_extents (struct comp_target_swapchain *cts, VkExtent2D extent)
 Set that any size from the compositor should be ignored and that given size must be used for the VkSwapchain the helper code creates. More...
 
void comp_target_swapchain_cleanup (struct comp_target_swapchain *cts)
 Free all managed resources on the given comp_target_swapchain, does not free the struct itself. More...
 

Detailed Description

Wraps and manage VkSwapchainKHR and VkSurfaceKHR, used by Compositor code.

Field Documentation

◆ base

◆ compositor_extent

bool comp_target_swapchain::compositor_extent

Should we ignore the compositor's preferred extents.

Some targets, like the direct mode ones, requires a particular set of dimensions.

Referenced by comp_target_swapchain_override_extents().

◆ current_frame_id

int64_t comp_target_swapchain::current_frame_id

Also works as a frame index.

◆ display

VkDisplayKHR comp_target_swapchain::display

The current display used for direct mode, VK_NULL_HANDLE else.

◆ event_thread

struct os_thread_helper comp_target_swapchain::event_thread

Thread waiting on vblank_event_fence (first pixel out).

◆ extent

VkExtent2D comp_target_swapchain::extent

The extents that a sub-class wants us to use, see ignore_compositor_extent above.

Referenced by comp_target_swapchain_override_extents().

◆ has_logged_info

bool comp_target_swapchain::has_logged_info

We print swapchain info as INFO the first time we create a VkSWapchain, this keeps track if we have done it.

◆ has_started

bool comp_target_swapchain::has_started

Must only be accessed from main compositor thread.

◆ last_vblank_ns

uint64_t comp_target_swapchain::last_vblank_ns

Protected by event_thread lock.

◆ present_mode

VkPresentModeKHR comp_target_swapchain::present_mode

Present mode that the system must support.

◆ should_wait

bool comp_target_swapchain::should_wait

Protected by event_thread lock.

◆ timing_usage

enum comp_target_display_timing_usage comp_target_swapchain::timing_usage

If we should use display timing.

Referenced by comp_target_swapchain_init_and_set_fnptrs().

◆ upc

struct u_pacing_compositor* comp_target_swapchain::upc

Compositor frame pacing helper.


The documentation for this struct was generated from the following file: