summaryrefslogtreecommitdiff
path: root/src/loader/loader_dri3_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/loader/loader_dri3_helper.h')
-rw-r--r--src/loader/loader_dri3_helper.h36
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