Enable DRI2 based on Dodji Seketeli's DRI work
[xephyr-with-gl-acceleration:xephyr-with-gl-acceleration.git] / xserver / hw / kdrive / ephyr / ephyrdri2.h
1 /*
2  * Xephyr - A kdrive X server thats runs in a host X window.
3  *          Authored by Matthew Allum <mallum@openedhand.com>
4  *
5  * Copyright © 2007 OpenedHand Ltd
6  *
7  * Permission to use, copy, modify, distribute, and sell this software and its
8  * documentation for any purpose is hereby granted without fee, provided that
9  * the above copyright notice appear in all copies and that both that
10  * copyright notice and this permission notice appear in supporting
11  * documentation, and that the name of OpenedHand Ltd not be used in
12  * advertising or publicity pertaining to distribution of the software without
13  * specific, written prior permission. OpenedHand Ltd makes no
14  * representations about the suitability of this software for any purpose.  It
15  * is provided "as is" without express or implied warranty.
16  *
17  * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19  * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
23  * PERFORMANCE OF THIS SOFTWARE.
24  *
25  * Authors:
26  *    Haitao Feng <haitao.feng@intel.com>
27  */
28
29 #ifndef __EPHYRDRI2_H__
30 #define __EPHYRDRI2_H__
31
32 #include <X11/extensions/dri2tokens.h>
33 #include "dri2.h"
34 #include "ephyrdri2ext.h"
35
36 void ephyrDRI2CloseScreen(ScreenPtr pScreen);
37
38 Bool ephyrDRI2Connect(ScreenPtr pScreen,
39                  unsigned int driverType,
40                  int *fd,
41                  char **driverName,
42                  char **deviceName);
43
44 Bool ephyrDRI2Authenticate(ScreenPtr pScreen, drm_magic_t magic);
45
46 int ephyrDRI2CreateDrawable(XID drawable);
47
48 void ephyrDRI2DestroyDrawable(XID drawable);
49
50 DRI2Buffer *ephyrDRI2GetBuffers(XID drawable,
51                              int *width,
52                              int *height,
53                              unsigned int *attachments,
54                              int count,
55                              int *out_count);
56
57 int ephyrDRI2CopyRegion(XID drawable,
58                    EphyrDRI2WindowPair *pair,
59                    RegionPtr pRegion,
60                    unsigned int dest,
61                    unsigned int src);
62
63 /**
64  * Determine the major and minor version of the DRI2 extension.
65  *
66  * Provides a mechanism to other modules (e.g., 2D drivers) to determine the
67  * version of the DRI2 extension.  While it is possible to peek directly at
68  * the \c XF86ModuleData from a layered module, such a module will fail to
69  * load (due to an unresolved symbol) if the DRI2 extension is not loaded.
70  *
71  * \param major  Location to store the major verion of the DRI2 extension
72  * \param minor  Location to store the minor verion of the DRI2 extension
73  *
74  * \note
75  * This interface was added some time after the initial release of the DRI2
76  * module.  Layered modules that wish to use this interface must first test
77  * its existance by calling \c xf86LoaderCheckSymbol.
78  */
79 extern _X_EXPORT void ephyrDRI2Version(int *major, int *minor);
80
81 extern _X_EXPORT DRI2Buffer *ephyrDRI2GetBuffersWithFormat(XID drawable,
82         int *width, int *height, unsigned int *attachments, int count,
83         int *out_count);
84
85 #endif /*__EPHYRDRI2_H__*/