summaryrefslogtreecommitdiff
path: root/exa/exa.h
diff options
context:
space:
mode:
authorMichel Dänzer <daenzer@vmware.com>2009-05-18 17:48:57 +0200
committerMichel Dänzer <daenzer@vmware.com>2009-05-18 17:48:57 +0200
commit510cbd43cd4e34bd459e8f74ab2855714b4ca95d (patch)
treeaab6ba5505b9d6ff97e5b32993fc5b5a43720ce4 /exa/exa.h
parent8331bde0adeccefb275c4d707e7b2cb1d95b1581 (diff)
EXA: Defragment offscreen memory.
At most once per second, under the following circumstances: * We can't satisfy an offscreen memory allocation, but there seems to be enough offscreen memory available in total. or * The server has been idle for at least 100ms, and there is more than one available offscreen area. Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Diffstat (limited to 'exa/exa.h')
-rw-r--r--exa/exa.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/exa/exa.h b/exa/exa.h
index 3e1f1c75a..0701ec98f 100644
--- a/exa/exa.h
+++ b/exa/exa.h
@@ -66,6 +66,9 @@ struct _ExaOffscreenArea {
ExaOffscreenArea *next;
unsigned eviction_cost;
+
+ ExaOffscreenArea *prev; /* Double-linked list for defragmentation */
+ int align; /* required alignment */
};
/**
@@ -744,6 +747,16 @@ typedef struct _ExaDriver {
*/
#define EXA_SUPPORTS_PREPARE_AUX (1 << 4)
+/**
+ * EXA_SUPPORTS_OFFSCREEN_OVERLAPS indicates to EXA that the driver Copy hooks
+ * can handle the source and destination occupying overlapping offscreen memory
+ * areas. This allows the offscreen memory defragmentation code to defragment
+ * areas where the defragmented position overlaps the fragmented position.
+ *
+ * Typically this is supported by traditional 2D engines but not by 3D engines.
+ */
+#define EXA_SUPPORTS_OFFSCREEN_OVERLAPS (1 << 5)
+
/** @} */
/* in exa.c */