DRI2: report swap events correctly in direct rendered case
[mesa.git] / src / gallium / state_trackers / dri / dri_drawable.h
index 0f654d804a7dceb4582c757bd636a2e2df647aee..8bc59cb4c3d20bd05be9570c26b4cc7d71d102d6 100644 (file)
@@ -33,6 +33,7 @@
 struct pipe_surface;
 struct pipe_fence_handle;
 struct st_framebuffer;
+struct dri_context;
 
 #define DRI_SWAP_FENCES_MAX  8
 #define DRI_SWAP_FENCES_MASK 7
@@ -40,12 +41,14 @@ struct st_framebuffer;
 struct dri_drawable
 {
    /* dri */
-   __DRIdrawablePrivate *dPriv;
-   __DRIscreenPrivate *sPriv;
+   __DRIdrawable *dPriv;
+   __DRIscreen *sPriv;
 
    unsigned attachments[8];
    unsigned num_attachments;
 
+   boolean is_pixmap;
+
    __DRIbuffer old[8];
    unsigned old_num;
    unsigned old_w;
@@ -58,10 +61,13 @@ struct dri_drawable
    unsigned int tail;
    unsigned int desired_fences;
    unsigned int cur_fences;
+
+   enum pipe_format color_format;
+   enum pipe_format depth_stencil_format;
 };
 
 static INLINE struct dri_drawable *
-dri_drawable(__DRIdrawablePrivate * driDrawPriv)
+dri_drawable(__DRIdrawable * driDrawPriv)
 {
    return (struct dri_drawable *)driDrawPriv->driverPrivate;
 }
@@ -70,22 +76,31 @@ dri_drawable(__DRIdrawablePrivate * driDrawPriv)
  * dri_drawable.c
  */
 boolean
-dri_create_buffer(__DRIscreenPrivate * sPriv,
-                 __DRIdrawablePrivate * dPriv,
+dri_create_buffer(__DRIscreen * sPriv,
+                 __DRIdrawable * dPriv,
                  const __GLcontextModes * visual, boolean isPixmap);
 
+void
+dri_update_buffer(struct pipe_screen *screen, void *context_private);
+
 void
 dri_flush_frontbuffer(struct pipe_screen *screen,
                      struct pipe_surface *surf, void *context_private);
 
-void dri_swap_buffers(__DRIdrawablePrivate * dPriv);
+void dri_swap_buffers(__DRIdrawable * dPriv);
 
 void
-dri_copy_sub_buffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h);
+dri_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h);
+
+void dri_get_buffers(__DRIdrawable * dPriv);
+
+void dri_destroy_buffer(__DRIdrawable * dPriv);
 
-void dri_get_buffers(__DRIdrawablePrivate * dPriv);
+void dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
+                          GLint glx_texture_format, __DRIdrawable *dPriv);
 
-void dri_destroy_buffer(__DRIdrawablePrivate * dPriv);
+void dri2_set_tex_buffer(__DRIcontext *pDRICtx, GLint target,
+                         __DRIdrawable *dPriv);
 
 void
 dri1_update_drawables(struct dri_context *ctx,