egl: Update to Wayland 1.2 server API
[mesa.git] / src / gallium / state_trackers / egl / common / native.h
index 58593a489cd948c4cb77e96ab24059a204ab99be..797933d8d753c718b470a3d726344e7aee03dc3f 100644 (file)
@@ -1,6 +1,5 @@
 /*
  * Mesa 3-D graphics library
- * Version:  7.8
  *
  * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org>
  *
@@ -70,7 +69,46 @@ enum native_param_type {
    /**
     * Return the maximum supported swap interval.
     */
-   NATIVE_PARAM_MAX_SWAP_INTERVAL
+   NATIVE_PARAM_MAX_SWAP_INTERVAL,
+
+   /**
+    * Return TRUE if the display supports premultiplied alpha, regardless of
+    * the surface color format.
+    *
+    * Note that returning TRUE for this parameter will make
+    * EGL_VG_ALPHA_FORMAT_PRE_BIT to be set for all EGLConfig's with non-zero
+    * EGL_ALPHA_SIZE.  EGL_VG_ALPHA_FORMAT attribute of a surface will affect
+    * how the surface is presented.
+    */
+   NATIVE_PARAM_PREMULTIPLIED_ALPHA,
+
+   /**
+    * Return TRUE if native_surface::present supports presenting a partial
+    * surface.
+    */
+   NATIVE_PARAM_PRESENT_REGION
+};
+
+/**
+ * Control how a surface presentation should happen.
+ */
+struct native_present_control {
+   /**< the attachment to present */
+   enum native_attachment natt;
+
+   /**< the contents of the presented attachment should be preserved */
+   boolean preserve;
+
+   /**< wait until the given vsyncs has passed since the last presentation */
+   uint swap_interval;
+
+   /**< pixels use premultiplied alpha */
+   boolean premultiplied_alpha;
+
+   /**< The region to present. y=0=top.
+        If num_rects is 0, the whole surface is to be presented */
+   int num_rects;
+   const int *rects; /* x, y, width, height */
 };
 
 struct native_surface {
@@ -85,9 +123,7 @@ struct native_surface {
     * Present the given buffer to the native engine.
     */
    boolean (*present)(struct native_surface *nsurf,
-                      enum native_attachment natt,
-                      boolean preserve,
-                      uint swap_interval);
+                      const struct native_present_control *ctrl);
 
    /**
     * Validate the buffers of the surface.  textures, if not NULL, points to an
@@ -209,7 +245,7 @@ struct native_display {
 
    const struct native_display_buffer *buffer;
    const struct native_display_modeset *modeset;
-   const struct native_display_wayland_bufmgr *wayland_bufmgr;
+   struct native_display_wayland_bufmgr *wayland_bufmgr;
 };
 
 /**
@@ -293,6 +329,9 @@ native_get_drm_platform(const struct native_event_handler *event_handler);
 const struct native_platform *
 native_get_fbdev_platform(const struct native_event_handler *event_handler);
 
+const struct native_platform *
+native_get_null_platform(const struct native_event_handler *event_handler);
+
 const struct native_platform *
 native_get_android_platform(const struct native_event_handler *event_handler);