1 /* 2 * Copyright 2013 Keith Packard 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that copyright 7 * notice and this permission notice appear in supporting documentation, and 8 * that the name of the copyright holders not be used in advertising or 9 * publicity pertaining to distribution of the software without specific, 10 * written prior permission. The copyright holders make no representations 11 * about the suitability of this software for any purpose. It is provided "as 12 * is" without express or implied warranty. 13 * 14 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 20 * OF THIS SOFTWARE. 21 */ 22 23 #ifndef _PRESENT_TOKENS_H_ 24 #define _PRESENT_TOKENS_H_ 25 26 #define PRESENT_NAME "Present" 27 #define PRESENT_MAJOR 1 28 #define PRESENT_MINOR 4 29 30 #define PresentNumberErrors 0 31 #define PresentNumberEvents 0 32 33 /* Requests */ 34 #define X_PresentQueryVersion 0 35 #define X_PresentPixmap 1 36 #define X_PresentNotifyMSC 2 37 #define X_PresentSelectInput 3 38 #define X_PresentQueryCapabilities 4 39 #define X_PresentPixmapSynced 5 40 41 #define PresentNumberRequests 6 42 43 /* Present operation options */ 44 #define PresentOptionNone 0 45 #define PresentOptionAsync (1 << 0) 46 #define PresentOptionCopy (1 << 1) 47 #define PresentOptionUST (1 << 2) 48 #define PresentOptionSuboptimal (1 << 3) 49 #define PresentOptionAsyncMayTear (1 << 4) 50 51 #define PresentAllOptions (PresentOptionAsync | \ 52 PresentOptionCopy | \ 53 PresentOptionUST | \ 54 PresentOptionSuboptimal | \ 55 PresentOptionAsyncMayTear) 56 57 #define PresentAllAsyncOptions (PresentOptionAsync | PresentOptionAsyncMayTear) 58 59 /* Present capabilities */ 60 61 #define PresentCapabilityNone 0 62 #define PresentCapabilityAsync 1 63 #define PresentCapabilityFence 2 64 #define PresentCapabilityUST 4 65 #define PresentCapabilityAsyncMayTear 8 66 #define PresentCapabilitySyncobj 16 67 68 #define PresentAllCapabilities (PresentCapabilityAsync | \ 69 PresentCapabilityFence | \ 70 PresentCapabilityUST | \ 71 PresentCapabilityAsyncMayTear | \ 72 PresentCapabilitySyncobj) 73 74 #define PresentAllAsyncCapabilities (PresentCapabilityAsync | PresentCapabilityAsyncMayTear) 75 76 /* Events */ 77 #define PresentConfigureNotify 0 78 #define PresentCompleteNotify 1 79 #define PresentIdleNotify 2 80 #if PRESENT_FUTURE_VERSION 81 #define PresentRedirectNotify 3 82 #endif 83 84 /* Event Masks */ 85 #define PresentConfigureNotifyMask 1 86 #define PresentCompleteNotifyMask 2 87 #define PresentIdleNotifyMask 4 88 #if PRESENT_FUTURE_VERSION 89 #define PresentRedirectNotifyMask 8 90 #endif 91 92 #if PRESENT_FUTURE_VERSION 93 #define PRESENT_REDIRECT_NOTIFY_MASK PresentRedirectNotifyMask 94 #else 95 #define PRESENT_REDIRECT_NOTIFY_MASK 0 96 #endif 97 98 #define PresentAllEvents (PresentConfigureNotifyMask | \ 99 PresentCompleteNotifyMask | \ 100 PresentIdleNotifyMask | \ 101 PRESENT_REDIRECT_NOTIFY_MASK) 102 103 /* Complete Kinds */ 104 105 #define PresentCompleteKindPixmap 0 106 #define PresentCompleteKindNotifyMSC 1 107 108 /* Complete Modes */ 109 110 #define PresentCompleteModeCopy 0 111 #define PresentCompleteModeFlip 1 112 #define PresentCompleteModeSkip 2 113 #define PresentCompleteModeSuboptimalCopy 3 114 115 #endif 116