st/xa: Add a scanout flag for surfaces
authorThomas Hellstrom <thellstrom@vmware.com>
Tue, 1 Nov 2011 16:42:21 +0000 (17:42 +0100)
committerThomas Hellstrom <thellstrom@vmware.com>
Tue, 1 Nov 2011 17:18:14 +0000 (18:18 +0100)
Bump minor to signal availability.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
src/gallium/state_trackers/xa/xa_tracker.c
src/gallium/state_trackers/xa/xa_tracker.h

index 50bf4b7e00c06133c9733b17494a6d3e0ce06574..529279ad8659fd65e0b34a22bee96b56c25d37f3 100644 (file)
@@ -219,6 +219,12 @@ xa_flags_compat(unsigned int old_flags, unsigned int new_flags)
     if (flag_diff & XA_FLAG_RENDER_TARGET)
        return ((new_flags & XA_FLAG_RENDER_TARGET) == 0);
 
+    /*
+     * Don't recreate if we're dropping the scanout flag.
+     */
+    if (flag_diff & XA_FLAG_SCANOUT)
+       return ((new_flags & XA_FLAG_SCANOUT) == 0);
+
     /*
      * Always recreate for unknown / unimplemented flags.
      */
@@ -263,6 +269,8 @@ xa_format_check_supported(struct xa_tracker *xa,
        bind |= PIPE_BIND_SHARED;
     if (flags & XA_FLAG_RENDER_TARGET)
        bind |= PIPE_BIND_RENDER_TARGET;
+    if (flags & XA_FLAG_SCANOUT)
+       bind |= PIPE_BIND_SCANOUT;
 
     if (!xa->screen->is_format_supported(xa->screen, fdesc.format,
                                         PIPE_TEXTURE_2D, 0, bind))
@@ -309,6 +317,8 @@ xa_surface_create(struct xa_tracker *xa,
        template->bind |= PIPE_BIND_SHARED;
     if (flags & XA_FLAG_RENDER_TARGET)
        template->bind |= PIPE_BIND_RENDER_TARGET;
+    if (flags & XA_FLAG_SCANOUT)
+       template->bind |= PIPE_BIND_SCANOUT;
 
     srf->tex = xa->screen->resource_create(xa->screen, template);
     if (!srf->tex)
@@ -359,6 +369,8 @@ xa_surface_redefine(struct xa_surface *srf,
        template->bind |= PIPE_BIND_SHARED;
     if (new_flags & XA_FLAG_RENDER_TARGET)
        template->bind |= PIPE_BIND_RENDER_TARGET;
+    if (new_flags & XA_FLAG_SCANOUT)
+       template->bind |= PIPE_BIND_SCANOUT;
 
     if (copy_contents) {
        if (!xa_format_type_is_color(fdesc.xa_format) ||
index 62f8a210fb6ab7d07f2bf84a8de5a16bac738df0..abc2457a0569259a68416b1afd08ad0b3893ccd0 100644 (file)
 #include <stdint.h>
 
 #define XA_TRACKER_VERSION_MAJOR 0
-#define XA_TRACKER_VERSION_MINOR 4
+#define XA_TRACKER_VERSION_MINOR 5
 #define XA_TRACKER_VERSION_PATCH 0
 
 #define XA_FLAG_SHARED         (1 << 0)
 #define XA_FLAG_RENDER_TARGET  (1 << 1)
+#define XA_FLAG_SCANOUT        (1 << 2)
 
 #define XA_MAP_READ            (1 << 0)
 #define XA_MAP_WRITE           (1 << 1)