st/dri: Find out if the drawable is a pixmap
[mesa.git] / src / gallium / state_trackers / dri / dri_drawable.h
index c1341deb5212534de4c3e66e234d7a31e0c8ebcb..eaf0b954bd48ab9264b3597d7ea98c3e0f356f64 100644 (file)
@@ -46,6 +46,13 @@ struct dri_drawable
    unsigned attachments[8];
    unsigned num_attachments;
 
+   boolean is_pixmap;
+
+   __DRIbuffer old[8];
+   unsigned old_num;
+   unsigned old_w;
+   unsigned old_h;
+
    /* gallium */
    struct st_framebuffer *stfb;
    struct pipe_fence_handle *swap_fences[DRI_SWAP_FENCES_MAX];
@@ -53,53 +60,52 @@ struct dri_drawable
    unsigned int tail;
    unsigned int desired_fences;
    unsigned int cur_fences;
-};
 
+   enum pipe_format color_format;
+   enum pipe_format depth_format;
+   enum pipe_format stencil_format;
+};
 
 static INLINE struct dri_drawable *
 dri_drawable(__DRIdrawablePrivate * driDrawPriv)
 {
-   return (struct dri_drawable *) driDrawPriv->driverPrivate;
+   return (struct dri_drawable *)driDrawPriv->driverPrivate;
 }
 
-
 /***********************************************************************
  * dri_drawable.c
  */
 boolean
-dri_create_buffer(__DRIscreenPrivate *sPriv,
-                  __DRIdrawablePrivate *dPriv,
-                  const __GLcontextModes *visual,
-                  boolean isPixmap);
+dri_create_buffer(__DRIscreenPrivate * sPriv,
+                 __DRIdrawablePrivate * dPriv,
+                 const __GLcontextModes * visual, boolean isPixmap);
 
 void
 dri_flush_frontbuffer(struct pipe_screen *screen,
-                      struct pipe_surface *surf,
-                      void *context_private);
+                     struct pipe_surface *surf, void *context_private);
 
-void
-dri_swap_buffers(__DRIdrawablePrivate * dPriv);
+void dri_swap_buffers(__DRIdrawablePrivate * dPriv);
 
 void
-dri_copy_sub_buffer(__DRIdrawablePrivate * dPriv,
-                    int x, int y,
-                    int w, int h);
+dri_copy_sub_buffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h);
 
-void
-dri_get_buffers(__DRIdrawablePrivate * dPriv);
+void dri_get_buffers(__DRIdrawablePrivate * dPriv);
 
-void
-dri_destroy_buffer(__DRIdrawablePrivate *dPriv);
+void dri_destroy_buffer(__DRIdrawablePrivate * dPriv);
+
+void dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
+                          GLint glx_texture_format, __DRIdrawable *dPriv);
+
+void dri2_set_tex_buffer(__DRIcontext *pDRICtx, GLint target,
+                         __DRIdrawable *dPriv);
 
 void
 dri1_update_drawables(struct dri_context *ctx,
-                     struct dri_drawable *draw,
-                     struct dri_drawable *read);
+                     struct dri_drawable *draw, struct dri_drawable *read);
 
 void
 dri1_flush_frontbuffer(struct pipe_screen *screen,
-                      struct pipe_surface *surf,
-                      void *context_private);
+                      struct pipe_surface *surf, void *context_private);
 #endif
 
 /* vim: set sw=3 ts=8 sts=3 expandtab: */