Added a Spanish translation by David Rubio Miguélezand a Dutch
[mesa.git] / src / mesa / drivers / dri / common / dri_util.h
index 5c198810f72e08f2bd3448c08509b71f346c89a0..6ef1b114f9c684bc361ef93f685d00ba592f6909 100644 (file)
 #ifndef _DRI_UTIL_H_
 #define _DRI_UTIL_H_
 
-#ifdef GLX_DIRECT_RENDERING
-
 #define CAPI  /* XXX this should be globally defined somewhere */
 
-#include <inttypes.h>
-#include "glxclient.h"           /* for GLXDrawable */
-/* temporary */
-/* typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); */
-#include "drm.h"             /* for drm_clip_rect_t */
-#include "sarea.h"               /* for XF86DRISAREAPtr */
-#include "GL/internal/glcore.h"  /* for __GLcontextModes */
+#ifdef DRI_NEW_INTERFACE_ONLY
+# include <GL/gl.h>
+#else
+# include "glxclient.h"
+#endif /* DRI_NEW_INTERFACE_ONLY */
+#include "drm.h"
+#include "drm_sarea.h"
+#include "GL/internal/glcore.h"
+#include "GL/internal/dri_interface.h"
+
+#define GLX_BAD_CONTEXT                    5
 
+/* This is a temporary relic.  Once all drivers are converted to support
+ * the new interface, it can go away.
+ */
+#ifdef DRI_NEW_INTERFACE_ONLY
+#define USE_NEW_INTERFACE
+#endif
 
 typedef struct __DRIdisplayPrivateRec  __DRIdisplayPrivate;
 typedef struct __DRIscreenPrivateRec   __DRIscreenPrivate;
 typedef struct __DRIcontextPrivateRec  __DRIcontextPrivate;
 typedef struct __DRIdrawablePrivateRec __DRIdrawablePrivate;
 typedef struct __DRIswapInfoRec        __DRIswapInfo;
+typedef struct __DRIutilversionRec2    __DRIutilversion2;
 
 
 /**
@@ -164,36 +173,6 @@ struct __DriverAPIRec {
      */
     GLboolean (*UnbindContext)(__DRIcontextPrivate *driContextPriv);
   
-    /**
-     * Full screen mode opening callback.
-     * 
-     * \deprecated
-     * Full screen functionality is no longer used by DRI.  Drivers should
-     * simply install a function returning \c GL_TRUE for backwards
-     * compatability.
-     *
-     * \todo
-     * Nothing calls this function anymore.  Since this data structure is only
-     * accessed with in the driver (i.e., libGL never sees it), we need to
-     * remove the other cases that set this field and remove the field.
-     */
-    GLboolean (*OpenFullScreen)(__DRIcontextPrivate *driContextPriv);
-
-    /**
-     * Full screen mode closing callback.
-     *
-     * \deprecated
-     * Full screen functionality is no longer used by DRI.  Drivers should
-     * simply install a function returning \c GL_TRUE for backwards
-     * compatability.
-     *
-     * \todo
-     * Nothing calls this function anymore.  Since this data structure is only
-     * accessed with in the driver (i.e., libGL never sees it), we need to
-     * remove the other cases that set this field and remove the field.
-     */
-    GLboolean (*CloseFullScreen)(__DRIcontextPrivate *driContextPriv);
-
     /**
      * Retrieves statistics about buffer swap operations.  Required if
      * GLX_OML_sync_control or GLX_MESA_swap_frame_usage is supported.
@@ -227,7 +206,7 @@ struct __DRIswapInfoRec {
     /** 
      * Number of swapBuffers operations that have been *completed*. 
      */
-    uint64_t  swap_count;
+    u_int64_t swap_count;
 
     /**
      * Unadjusted system time of the last buffer swap.  This is the time
@@ -241,7 +220,7 @@ struct __DRIswapInfoRec {
      * swap, it has missed its deadline.  If swap_interval is 0, then the
      * swap deadline is 1 frame after the previous swap.
      */
-    uint64_t  swap_missed_count;
+    u_int64_t swap_missed_count;
 
     /**
      * Amount of time used by the last swap that missed its deadline.  This
@@ -254,14 +233,6 @@ struct __DRIswapInfoRec {
 };
 
 
-typedef Bool (GetDrawableInfo)( Display *dpy, int scrn, Drawable draw,
-    unsigned int * index, unsigned int * stamp,
-    int * x, int * y, int * width, int * height,
-    int * numClipRects, drm_clip_rect_t * pClipRects,
-    int * backX, int * backY,
-    int * numBackClipRects, drm_clip_rect_t * pBackClipRects );
-
-
 /**
  * Per-drawable private DRI driver information.
  */
@@ -269,7 +240,7 @@ struct __DRIdrawablePrivateRec {
     /**
      * Kernel drawable handle
      */
-    drmDrawable hHWDrawable;
+    drm_drawable_t hHWDrawable;
 
     /**
      * Driver's private drawable information.  
@@ -281,7 +252,7 @@ struct __DRIdrawablePrivateRec {
     /**
      * X's drawable ID associated with this private drawable.
      */
-    GLXDrawable draw;
+    __DRIid draw;
     __DRIdrawable *pdraw;
 
     /**
@@ -357,7 +328,7 @@ struct __DRIdrawablePrivateRec {
      * __driUtilUpdateDrawableInfo() which calls XF86DRIGetDrawableInfo().
      */
     /*@{*/
-    Display *display;
+    __DRInativeDisplay *display;
     int screen;
     /*@}*/
 
@@ -370,7 +341,7 @@ struct __DRIdrawablePrivateRec {
      * Get information about the location, size, and clip rects of the
      * drawable within the display.
      */
-    GetDrawableInfo * getInfo;
+    PFNGLXGETDRAWABLEINFOPROC getInfo;
 };
 
 /**
@@ -380,12 +351,12 @@ struct __DRIcontextPrivateRec {
     /**
      * Kernel context handle used to access the device lock.
      */
-    XID contextID;
+    __DRIid contextID;
 
     /**
      * Kernel context handle used to access the device lock.
      */
-    drmContext hHWContext;
+    drm_context_t hHWContext;
 
     /**
      * Device driver's private context data.  This structure is opaque.
@@ -395,7 +366,7 @@ struct __DRIcontextPrivateRec {
     /**
      * This context's display pointer.
      */
-    Display *display;
+    __DRInativeDisplay *display;
 
     /**
      * Pointer to drawable currently bound to this context.
@@ -415,7 +386,7 @@ struct __DRIscreenPrivateRec {
     /**
      * Display for this screen
      */
-    Display *display;
+    __DRInativeDisplay *display;
 
     /**
      * Current screen's number
@@ -485,7 +456,7 @@ struct __DRIscreenPrivateRec {
      *   - the device lock
      *   - the device-independent per-drawable and per-context(?) information
      */
-    XF86DRISAREAPtr pSAREA;
+    drm_sarea_t *pSAREA;
 
     /**
      * \name Direct frame buffer access information 
@@ -554,6 +525,17 @@ struct __DRIscreenPrivateRec {
 };
 
 
+/**
+ * Used to store a version which includes a major range instead of a single
+ * major version number.
+ */
+struct __DRIutilversionRec2 {
+    int    major_min;    /** min allowed Major version number. */
+    int    major_max;    /** max allowed Major version number. */
+    int    minor;        /**< Minor version number. */
+    int    patch;        /**< Patch-level. */
+};
+
 
 extern void
 __driUtilMessage(const char *f, ...);
@@ -563,26 +545,32 @@ extern void
 __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp);
 
 
-extern __DRIscreenPrivate * __driUtilCreateNewScreen( Display *dpy,
+extern __DRIscreenPrivate * __driUtilCreateNewScreen( __DRInativeDisplay *dpy,
     int scrn, __DRIscreen *psc, __GLcontextModes * modes,
     const __DRIversion * ddx_version, const __DRIversion * dri_version,
     const __DRIversion * drm_version, const __DRIframebuffer * frame_buffer,
-    drmAddress pSAREA, int fd, int internal_api_version,
+    drm_sarea_t *pSAREA, int fd, int internal_api_version,
     const struct __DriverAPIRec *driverAPI );
 
+#ifndef DRI_NEW_INTERFACE_ONLY
 extern __DRIscreenPrivate *
 __driUtilCreateScreen(Display *dpy, int scrn, __DRIscreen *psc,
                       int numConfigs, __GLXvisualConfig *config,
                       const struct __DriverAPIRec *driverAPI);
+#endif /* DRI_NEW_INTERFACE_ONLY */
 
 /* Test the version of the internal GLX API.  Returns a value like strcmp. */
 extern int
-driCompareGLXAPIVersion( GLuint required_version );
+driCompareGLXAPIVersion( GLint required_version );
 
 extern float
 driCalculateSwapUsage( __DRIdrawablePrivate *dPriv,
                       int64_t last_swap_ust, int64_t current_ust );
 
-#endif /* GLX_DIRECT_RENDERING */
+/* Test for the GLX header glx.h */
+#ifndef GLX
+extern void 
+(*glXGetProcAddress(const GLubyte *procname))( void );
+#endif
 
 #endif /* _DRI_UTIL_H_ */