struct xshmfence *shm_fence; /* pointer to xshmfence object */
bool busy; /* Set on swap, cleared on IdleNotify */
bool own_pixmap; /* We allocated the pixmap ID, free on destroy */
+ bool reallocate; /* Buffer should be reallocated and not reused */
+ uint32_t num_planes;
uint32_t size;
- uint32_t pitch;
+ int strides[4];
+ int offsets[4];
+ uint64_t modifier;
uint32_t cpp;
uint32_t flags;
uint32_t width, height;
void (*set_drawable_size)(struct loader_dri3_drawable *, int, int);
bool (*in_current_context)(struct loader_dri3_drawable *);
__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);
};
struct loader_dri3_drawable {
xcb_connection_t *conn;
+ xcb_screen_t *screen;
__DRIdrawable *dri_drawable;
xcb_drawable_t drawable;
+ xcb_window_t window;
int width;
int height;
int depth;
uint8_t have_back;
uint8_t have_fake_front;
uint8_t is_pixmap;
- uint8_t flipping;
/* Information about the GPU owning the buffer */
__DRIscreen *dri_screen;
bool is_different_gpu;
+ bool multiplanes_available;
/* Present extension capabilities
*/
xcb_special_event_t *special_event;
bool first_init;
+ bool adaptive_sync;
+ bool adaptive_sync_active;
int swap_interval;
struct loader_dri3_extensions *ext;
unsigned int swap_method;
unsigned int back_format;
+ xcb_present_complete_mode_t last_present_mode;
/* Currently protects the following fields:
* event_cnd, has_event_waiter,
*/
mtx_t mtx;
cnd_t event_cnd;
+ unsigned last_special_event_sequence;
bool has_event_waiter;
};
xcb_drawable_t drawable,
__DRIscreen *dri_screen,
bool is_different_gpu,
+ bool is_multiplanes_available,
const __DRIconfig *dri_config,
struct loader_dri3_extensions *ext,
const struct loader_dri3_vtable *vtable,
loader_dri3_swap_buffers_msc(struct loader_dri3_drawable *draw,
int64_t target_msc, int64_t divisor,
int64_t remainder, unsigned flush_flags,
+ const int *rects, int n_rects,
bool force_copy);
int
const __DRIimageExtension *image,
void *loaderPrivate);
+#ifdef HAVE_DRI3_MODIFIERS
+__DRIimage *
+loader_dri3_create_image_from_buffers(xcb_connection_t *c,
+ xcb_dri3_buffers_from_pixmap_reply_t *bp_reply,
+ unsigned int format,
+ __DRIscreen *dri_screen,
+ const __DRIimageExtension *image,
+ void *loaderPrivate);
+#endif
int
loader_dri3_get_buffers(__DRIdrawable *driDrawable,
unsigned int format,