reverse some debug that slipped through
[mesa.git] / src / mesa / drivers / x11 / fakeglx.c
index 909aabd48bf1091db15aa691842d359945b8cb85..1ad62d9e0d95c0123e94014e3b368a0a1391c4e7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.2
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -136,7 +136,6 @@ typedef struct _OverlayInfo {
 
 
 
-
 /*
  * Test if the given XVisualInfo is usable for Mesa rendering.
  */
@@ -169,26 +168,22 @@ is_usable_visual( XVisualInfo *vinfo )
 
 
 
-/*
- * Return the level (overlay, normal, underlay) of a given XVisualInfo.
- * Input:  dpy - the X display
- *         vinfo - the XVisualInfo to test
- * Return:  level of the visual:
- *             0 = normal planes
- *            >0 = overlay planes
- *            <0 = underlay planes
+/**
+ * Get an array OverlayInfo records for specified screen.
+ * \param dpy  the display
+ * \param screen  screen number
+ * \param numOverlays  returns numver of OverlayInfo records
+ * \return  pointer to OverlayInfo array, free with XFree()
  */
-static int
-level_of_visual( Display *dpy, XVisualInfo *vinfo )
+static OverlayInfo *
+GetOverlayInfo(Display *dpy, int screen, int *numOverlays)
 {
    Atom overlayVisualsAtom;
-   OverlayInfo *overlay_info = NULL;
-   int numOverlaysPerScreen;
-   Status status;
    Atom actualType;
-   int actualFormat;
+   Status status;
+   unsigned char *ovInfo;
    unsigned long sizeData, bytesLeft;
-   int i;
+   int actualFormat;
 
    /*
     * The SERVER_OVERLAY_VISUALS property on the root window contains
@@ -199,25 +194,50 @@ level_of_visual( Display *dpy, XVisualInfo *vinfo )
       return 0;
    }
 
-   status = XGetWindowProperty(dpy, RootWindow( dpy, vinfo->screen ),
+   status = XGetWindowProperty(dpy, RootWindow(dpy, screen),
                                overlayVisualsAtom, 0L, (long) 10000, False,
                                overlayVisualsAtom, &actualType, &actualFormat,
                                &sizeData, &bytesLeft,
-                               (unsigned char **) &overlay_info );
+                               &ovInfo);
 
    if (status != Success || actualType != overlayVisualsAtom ||
        actualFormat != 32 || sizeData < 4) {
       /* something went wrong */
-      XFree((void *) overlay_info);
+      XFree((void *) ovInfo);
+      *numOverlays = 0;
+      return NULL;
+   }
+
+   *numOverlays = sizeData / 4;
+   return (OverlayInfo *) ovInfo;
+}
+
+
+
+/**
+ * Return the level (overlay, normal, underlay) of a given XVisualInfo.
+ * Input:  dpy - the X display
+ *         vinfo - the XVisualInfo to test
+ * Return:  level of the visual:
+ *             0 = normal planes
+ *            >0 = overlay planes
+ *            <0 = underlay planes
+ */
+static int
+level_of_visual( Display *dpy, XVisualInfo *vinfo )
+{
+   OverlayInfo *overlay_info;
+   int numOverlaysPerScreen, i;
+
+   overlay_info = GetOverlayInfo(dpy, vinfo->screen, &numOverlaysPerScreen);
+   if (!overlay_info) {
       return 0;
    }
 
    /* search the overlay visual list for the visual ID of interest */
-   numOverlaysPerScreen = (int) (sizeData / 4);
-   for (i=0;i<numOverlaysPerScreen;i++) {
-      OverlayInfo *ov;
-      ov = overlay_info + i;
-      if (ov->overlay_visual==vinfo->visualid) {
+   for (i = 0; i < numOverlaysPerScreen; i++) {
+      const OverlayInfo *ov = overlay_info + i;
+      if (ov->overlay_visual == vinfo->visualid) {
          /* found the visual */
          if (/*ov->transparent_type==1 &&*/ ov->layer!=0) {
             int level = ov->layer;
@@ -462,7 +482,7 @@ find_glx_visual( Display *dpy, XVisualInfo *vinfo )
 
 
 
-/*
+/**
  * Return the transparent pixel value for a GLX visual.
  * Input:  glxvis - the glx_visual
  * Return:  a pixel value or -1 if no transparent pixel
@@ -472,45 +492,19 @@ transparent_pixel( XMesaVisual glxvis )
 {
    Display *dpy = glxvis->display;
    XVisualInfo *vinfo = glxvis->visinfo;
-   Atom overlayVisualsAtom;
-   OverlayInfo *overlay_info = NULL;
-   int numOverlaysPerScreen;
-   Status status;
-   Atom actualType;
-   int actualFormat;
-   unsigned long sizeData, bytesLeft;
-   int i;
-
-   /*
-    * The SERVER_OVERLAY_VISUALS property on the root window contains
-    * a list of overlay visuals.  Get that list now.
-    */
-   overlayVisualsAtom = XInternAtom(dpy,"SERVER_OVERLAY_VISUALS", True);
-   if (overlayVisualsAtom == None) {
-      return -1;
-   }
-
-   status = XGetWindowProperty(dpy, RootWindow( dpy, vinfo->screen ),
-                               overlayVisualsAtom, 0L, (long) 10000, False,
-                               overlayVisualsAtom, &actualType, &actualFormat,
-                               &sizeData, &bytesLeft,
-                               (unsigned char **) &overlay_info );
+   OverlayInfo *overlay_info;
+   int numOverlaysPerScreen, i;
 
-   if (status != Success || actualType != overlayVisualsAtom ||
-       actualFormat != 32 || sizeData < 4) {
-      /* something went wrong */
-      XFree((void *) overlay_info);
+   overlay_info = GetOverlayInfo(dpy, vinfo->screen, &numOverlaysPerScreen);
+   if (!overlay_info) {
       return -1;
    }
 
-   /* search the overlay visual list for the visual ID of interest */
-   numOverlaysPerScreen = (int) (sizeData / 4);
-   for (i=0;i<numOverlaysPerScreen;i++) {
-      OverlayInfo *ov;
-      ov = overlay_info + i;
-      if (ov->overlay_visual==vinfo->visualid) {
+   for (i = 0; i < numOverlaysPerScreen; i++) {
+      const OverlayInfo *ov = overlay_info + i;
+      if (ov->overlay_visual == vinfo->visualid) {
          /* found it! */
-         if (ov->transparent_type==0) {
+         if (ov->transparent_type == 0) {
             /* type 0 indicates no transparency */
             XFree((void *) overlay_info);
             return -1;
@@ -530,7 +524,7 @@ transparent_pixel( XMesaVisual glxvis )
 
 
 
-/*
+/**
  * Try to get an X visual which matches the given arguments.
  */
 static XVisualInfo *
@@ -808,13 +802,8 @@ choose_x_overlay_visual( Display *dpy, int scr, GLboolean rgbFlag,
                          int level, int trans_type, int trans_value,
                          int min_depth, int preferred_class )
 {
-   Atom overlayVisualsAtom;
    OverlayInfo *overlay_info;
    int numOverlaysPerScreen;
-   Status status;
-   Atom actualType;
-   int actualFormat;
-   unsigned long sizeData, bytesLeft;
    int i;
    XVisualInfo *deepvis;
    int deepest;
@@ -831,24 +820,8 @@ choose_x_overlay_visual( Display *dpy, int scr, GLboolean rgbFlag,
       default:                    preferred_class = DONT_CARE;
    }
 
-   /*
-    * The SERVER_OVERLAY_VISUALS property on the root window contains
-    * a list of overlay visuals.  Get that list now.
-    */
-   overlayVisualsAtom = XInternAtom(dpy,"SERVER_OVERLAY_VISUALS", True);
-   if (overlayVisualsAtom == (Atom) None) {
-      return NULL;
-   }
-
-   status = XGetWindowProperty(dpy, RootWindow( dpy, scr ),
-                               overlayVisualsAtom, 0L, (long) 10000, False,
-                               overlayVisualsAtom, &actualType, &actualFormat,
-                               &sizeData, &bytesLeft,
-                               (unsigned char **) &overlay_info );
-
-   if (status != Success || actualType != overlayVisualsAtom ||
-       actualFormat != 32 || sizeData < 4) {
-      /* something went wrong */
+   overlay_info = GetOverlayInfo(dpy, scr, &numOverlaysPerScreen);
+   if (!overlay_info) {
       return NULL;
    }
 
@@ -856,12 +829,10 @@ choose_x_overlay_visual( Display *dpy, int scr, GLboolean rgbFlag,
    deepest = min_depth;
    deepvis = NULL;
 
-   numOverlaysPerScreen = (int) (sizeData / 4);
-   for (i=0;i<numOverlaysPerScreen;i++) {
+   for (i = 0; i < numOverlaysPerScreen; i++) {
+      const OverlayInfo *ov = overlay_info + i;
       XVisualInfo *vislist, vistemplate;
       int count;
-      OverlayInfo *ov;
-      ov = overlay_info + i;
 
       if (ov->layer!=level) {
          /* failed overlay level criteria */
@@ -2108,16 +2079,16 @@ Fake_glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
 
    switch (attribute) {
       case GLX_WIDTH:
-         *value = xmbuf->width;
+         *value = xmbuf->mesa_buffer.Width;
          break;
       case GLX_HEIGHT:
-         *value = xmbuf->height;
+         *value = xmbuf->mesa_buffer.Height;
          break;
       case GLX_PRESERVED_CONTENTS:
          *value = True;
          break;
       case GLX_LARGEST_PBUFFER:
-         *value = xmbuf->width * xmbuf->height;
+         *value = xmbuf->mesa_buffer.Width * xmbuf->mesa_buffer.Height;
          break;
       case GLX_FBCONFIG_ID:
          *value = xmbuf->xm_visual->visinfo->visualid;
@@ -2468,13 +2439,13 @@ Fake_glXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, un
          *value = True;
          break;
       case GLX_LARGEST_PBUFFER_SGIX:
-         *value = xmbuf->width * xmbuf->height;
+         *value = xmbuf->mesa_buffer.Width * xmbuf->mesa_buffer.Height;
          break;
       case GLX_WIDTH_SGIX:
-         *value = xmbuf->width;
+         *value = xmbuf->mesa_buffer.Width;
          break;
       case GLX_HEIGHT_SGIX:
-         *value = xmbuf->height;
+         *value = xmbuf->mesa_buffer.Height;
          break;
       case GLX_EVENT_MASK_SGIX:
          *value = 0;  /* XXX might be wrong */
@@ -2709,29 +2680,6 @@ Fake_glXGetAGPOffsetMESA( const GLvoid *pointer )
 }
 
 
-/*** GLX_ARB_render_texture ***/
-
-static Bool
-Fake_glXBindTexImageARB( Display *dpy, GLXPbuffer pbuffer, int buffer )
-{
-   return False;
-}
-
-
-static Bool
-Fake_glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer )
-{
-   return False;
-}
-
-
-static Bool
-Fake_glXDrawableAttribARB( Display *dpy, GLXDrawable draw, const int *attribList )
-{
-   return False;
-}
-
-
 /* silence warning */
 extern struct _glxapi_table *_mesa_GetGLXDispatchTable(void);
 
@@ -2887,10 +2835,5 @@ _mesa_GetGLXDispatchTable(void)
    /*** GLX_MESA_agp_offset ***/
    glx.GetAGPOffsetMESA = Fake_glXGetAGPOffsetMESA;
 
-   /*** GLX_ARB_render_texture ***/
-   glx.BindTexImageARB = Fake_glXBindTexImageARB;
-   glx.ReleaseTexImageARB = Fake_glXReleaseTexImageARB;
-   glx.DrawableAttribARB = Fake_glXDrawableAttribARB;
-
    return &glx;
 }