diff options
Diffstat (limited to 'src/loader/loader_dri3_helper.h')
-rw-r--r-- | src/loader/loader_dri3_helper.h | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h index 028e25dc070..cc2362dd599 100644 --- a/src/loader/loader_dri3_helper.h +++ b/src/loader/loader_dri3_helper.h @@ -111,11 +111,17 @@ struct loader_dri3_vtable { __DRIcontext *(*get_dri_context)(struct loader_dri3_drawable *); __DRIscreen *(*get_dri_screen)(void); void (*flush_drawable)(struct loader_dri3_drawable *, unsigned); - void (*show_fps)(struct loader_dri3_drawable *, uint64_t); }; #define LOADER_DRI3_NUM_BUFFERS (1 + LOADER_DRI3_MAX_BACK) +enum loader_dri3_drawable_type { + LOADER_DRI3_DRAWABLE_UNKNOWN, + LOADER_DRI3_DRAWABLE_WINDOW, + LOADER_DRI3_DRAWABLE_PIXMAP, + LOADER_DRI3_DRAWABLE_PBUFFER, +}; + struct loader_dri3_drawable { xcb_connection_t *conn; xcb_screen_t *screen; @@ -128,19 +134,19 @@ struct loader_dri3_drawable { int depth; uint8_t have_back; uint8_t have_fake_front; - uint8_t is_pixmap; + enum loader_dri3_drawable_type type; /* Information about the GPU owning the buffer */ - __DRIscreen *dri_screen; - bool is_different_gpu; bool multiplanes_available; - - /* DRI screen created for display GPU in case of prime */ - __DRIscreen *dri_screen_display_gpu; - - /* Present extension capabilities + bool prefer_back_buffer_reuse; + __DRIscreen *dri_screen_render_gpu; + /* dri_screen_display_gpu holds display GPU in case of prime gpu offloading else + * dri_screen_render_gpu and dri_screen_display_gpu is same. + * In case of prime gpu offloading, if display and render driver names are different + * (potentially not compatible), dri_screen_display_gpu will be NULL but fd_display_gpu + * will still hold fd for display driver. */ - uint32_t present_capabilities; + __DRIscreen *dri_screen_display_gpu; /* SBC numbers are tracked by using the serial numbers * in the present request and complete events @@ -169,12 +175,13 @@ struct loader_dri3_drawable { bool first_init; bool adaptive_sync; bool adaptive_sync_active; + bool block_on_depleted_buffers; + bool queries_buffer_age; int swap_interval; struct loader_dri3_extensions *ext; const struct loader_dri3_vtable *vtable; - unsigned int swap_method; unsigned int back_format; xcb_present_complete_mode_t last_present_mode; @@ -201,9 +208,11 @@ loader_dri3_drawable_fini(struct loader_dri3_drawable *draw); int loader_dri3_drawable_init(xcb_connection_t *conn, xcb_drawable_t drawable, - __DRIscreen *dri_screen, - bool is_different_gpu, + enum loader_dri3_drawable_type type, + __DRIscreen *dri_screen_render_gpu, + __DRIscreen *dri_screen_display_gpu, bool is_multiplanes_available, + bool prefer_back_buffer_reuse, const __DRIconfig *dri_config, struct loader_dri3_extensions *ext, const struct loader_dri3_vtable *vtable, @@ -287,4 +296,5 @@ loader_dri3_swapbuffer_barrier(struct loader_dri3_drawable *draw); void loader_dri3_close_screen(__DRIscreen *dri_screen); + #endif |