+ NATIVE_PARAM_USE_NATIVE_BUFFER,
+
+ /**
+ * Return TRUE if native_surface::present can preserve the buffer.
+ */
+ NATIVE_PARAM_PRESERVE_BUFFER,
+
+ /**
+ * Return the maximum supported 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 */