meson: Fix GL and EGL pkg-config files with glvnd
[mesa.git] / src / loader / loader_dri3_helper.h
index cd9e8286792f6e4970c9e56fe339b177dfe64812..5caf214b37233dca28f3f742282afc0de97e2b0d 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <GL/gl.h>
 #include <GL/internal/dri_interface.h>
+#include <c11/threads.h>
 
 enum loader_dri3_buffer_type {
    loader_dri3_buffer_back = 0,
@@ -67,8 +68,6 @@ struct loader_dri3_buffer {
    uint32_t     flags;
    uint32_t     width, height;
    uint64_t     last_swap;
-
-   enum loader_dri3_buffer_type        buffer_type;
 };
 
 
@@ -100,6 +99,7 @@ struct loader_dri3_vtable {
    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);
 };
@@ -116,7 +116,6 @@ struct loader_dri3_drawable {
    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;
@@ -138,10 +137,6 @@ struct loader_dri3_drawable {
    /* Last received UST/MSC values from present notify msc event */
    uint64_t notify_ust, notify_msc;
 
-   /* Serial numbers for tracking wait_for_msc events */
-   uint32_t send_msc_serial;
-   uint32_t recv_msc_serial;
-
    struct loader_dri3_buffer *buffers[LOADER_DRI3_NUM_BUFFERS];
    int cur_back;
    int num_back;
@@ -160,6 +155,17 @@ struct loader_dri3_drawable {
    const struct loader_dri3_vtable *vtable;
 
    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,
+    * recv_sbc, ust, msc, recv_msc_serial,
+    * notify_ust, notify_msc
+    */
+   mtx_t mtx;
+   cnd_t event_cnd;
+   bool has_event_waiter;
 };
 
 void