mesa: Branch 'master' - 2 commits

George Sapountzis gsap7 at kemper.freedesktop.org
Fri Apr 6 10:30:26 UTC 2007


 src/mesa/drivers/x11/glxheader.h |    1 
 src/mesa/drivers/x11/xm_image.c  |  150 +++++++++++++++++++++++++++++++++++++++
 src/mesa/drivers/x11/xm_image.h  |   91 +++++++++++++++++++++++
 src/mesa/drivers/x11/xmesaP.h    |    8 --
 4 files changed, 244 insertions(+), 6 deletions(-)

New commits:
diff-tree 92b7fa7b48691e95d33bc0580cfad858782622ac (from eb4a8b4bb556524df9a8db066c512385e96d8487)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Fri Apr 6 13:28:39 2007 +0300

    xmesa: use newly added xm_image.[hc]
    
    Keep external includes to glxheader.h and xmesa includes to xmesaP.h.
    
    Drop the following from xm_image.h:
    - dix-config.h (comes from glheader.h)
    - xfree86 includes (come from GL/xmesa_xf86.h)
    - ifdef __CYGWIN__ (leftover ? xm_api.c has something similar)

diff --git a/src/mesa/drivers/x11/glxheader.h b/src/mesa/drivers/x11/glxheader.h
index 8c5c696..a402191 100644
--- a/src/mesa/drivers/x11/glxheader.h
+++ b/src/mesa/drivers/x11/glxheader.h
@@ -36,7 +36,6 @@
 
 # include "resource.h"
 # include "windowstr.h"
-# include "xf86glx_util.h"
 
 #else
 
diff --git a/src/mesa/drivers/x11/xm_image.c b/src/mesa/drivers/x11/xm_image.c
index 6af773f..b91d567 100644
--- a/src/mesa/drivers/x11/xm_image.c
+++ b/src/mesa/drivers/x11/xm_image.c
@@ -31,15 +31,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
  *   Brian Paul <brian at precisioninsight.com>
  */
 
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
 #include <stdlib.h>
-
-#include "xf86glx_util.h"
 #include <X11/Xmd.h>
 
+#include "glxheader.h"
+#include "xmesaP.h"
+
+#ifdef XFree86Server
+
 #ifdef ROUNDUP
 #undef ROUNDUP
 #endif
@@ -147,3 +146,5 @@ void XMesaPutImageHelper(ScreenPtr displ
     (*gc->ops->PutImage)(d, gc, d->depth, dest_x, dest_y, width, height,
 			 0, ZPixmap, src);
 }
+
+#endif /* XFree86Server */
diff --git a/src/mesa/drivers/x11/xm_image.h b/src/mesa/drivers/x11/xm_image.h
index bb31412..c91ab39 100644
--- a/src/mesa/drivers/x11/xm_image.h
+++ b/src/mesa/drivers/x11/xm_image.h
@@ -31,22 +31,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
  *   Brian Paul <brian at precisioninsight.com>
  */
 
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _XF86GLX_UTIL_H_
-#define _XF86GLX_UTIL_H_
-
-#ifdef __CYGWIN__
-#undef WIN32
-#undef _WIN32
-#endif
-
-#include <screenint.h>
-#include <pixmap.h>
-#include <gc.h>
-#include "GL/xmesa.h"
+#ifndef _XM_IMAGE_H_
+#define _XM_IMAGE_H_
 
 #define XMESA_USE_PUTPIXEL_MACRO
 
@@ -102,4 +88,4 @@ extern void XMesaPutImageHelper(ScreenPt
 				int dest_x, int dest_y,
 				unsigned int width, unsigned int height);
 
-#endif /* _XF86GLX_UTIL_H_ */
+#endif /* _XM_IMAGE_H_ */
diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h
index 03acd4c..bd5dce1 100644
--- a/src/mesa/drivers/x11/xmesaP.h
+++ b/src/mesa/drivers/x11/xmesaP.h
@@ -27,17 +27,15 @@
 #define XMESAP_H
 
 
-#ifdef XFree86Server
-# include "xf86glx_util.h"
-#elif defined(USE_XSHM)
-# include <X11/extensions/XShm.h>
-#endif
 #include "GL/xmesa.h"
 #include "mtypes.h"
 #if defined(FX)
 #include "GL/fxmesa.h"
 #include "../glide/fxdrv.h"
 #endif
+#ifdef XFree86Server
+#include "xm_image.h"
+#endif
 
 
 extern _glthread_Mutex _xmesa_lock;
diff-tree eb4a8b4bb556524df9a8db066c512385e96d8487 (from 663a3e9ba700c832bfaea1f2131a37c5505d1c25)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Fri Apr 6 13:27:43 2007 +0300

    xmesa: add xf86glx_util.[hc] from xserver as xm_image.[hc]

diff --git a/src/mesa/drivers/x11/xm_image.c b/src/mesa/drivers/x11/xm_image.c
new file mode 100644
index 0000000..6af773f
--- /dev/null
+++ b/src/mesa/drivers/x11/xm_image.c
@@ -0,0 +1,149 @@
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <kevin at precisioninsight.com>
+ *   Brian Paul <brian at precisioninsight.com>
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdlib.h>
+
+#include "xf86glx_util.h"
+#include <X11/Xmd.h>
+
+#ifdef ROUNDUP
+#undef ROUNDUP
+#endif
+
+#define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3))
+
+XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data)
+{
+    XMesaImage *image;
+
+    image = (XMesaImage *)xalloc(sizeof(XMesaImage));
+
+    if (image) {
+	image->width = width;
+	image->height = height;
+	image->data = data;
+	/* Always pad to 32 bits */
+	image->bytes_per_line = ROUNDUP((bitsPerPixel * width), 32);
+	image->bits_per_pixel = bitsPerPixel;
+    }
+
+    return image;
+}
+
+void XMesaDestroyImage(XMesaImage *image)
+{
+    if (image->data)
+	free(image->data);
+    xfree(image);
+}
+
+unsigned long XMesaGetPixel(XMesaImage *image, int x, int y)
+{
+    CARD8  *row = (CARD8 *)(image->data + y*image->bytes_per_line);
+    CARD8  *i8;
+    CARD16 *i16;
+    CARD32 *i32;
+    switch (image->bits_per_pixel) {
+    case 8:
+	i8 = (CARD8 *)row;
+	return i8[x];
+	break;
+    case 15:
+    case 16:
+	i16 = (CARD16 *)row;
+	return i16[x];
+	break;
+    case 24: /* WARNING: architecture specific code */
+	i8 = (CARD8 *)row;
+	return (((CARD32)i8[x*3]) |
+		(((CARD32)i8[x*3+1])<<8) |
+		(((CARD32)i8[x*3+2])<<16));
+	break;
+    case 32:
+	i32 = (CARD32 *)row;
+	return i32[x];
+	break;
+    }
+    return 0;
+}
+
+#ifndef XMESA_USE_PUTPIXEL_MACRO
+void XMesaPutPixel(XMesaImage *image, int x, int y, unsigned long pixel)
+{
+    CARD8  *row = (CARD8 *)(image->data + y*image->bytes_per_line);
+    CARD8  *i8;
+    CARD16 *i16;
+    CARD32 *i32;
+    switch (image->bits_per_pixel) {
+    case 8:
+	i8 = (CARD8 *)row;
+	i8[x] = (CARD8)pixel;
+	break;
+    case 15:
+    case 16:
+	i16 = (CARD16 *)row;
+	i16[x] = (CARD16)pixel;
+	break;
+    case 24: /* WARNING: architecture specific code */
+	i8 = (CARD8 *)__row;
+	i8[x*3]   = (CARD8)(p);
+	i8[x*3+1] = (CARD8)(p>>8);
+	i8[x*3+2] = (CARD8)(p>>16);
+    case 32:
+	i32 = (CARD32 *)row;
+	i32[x] = (CARD32)pixel;
+	break;
+    }
+}
+#endif
+
+void XMesaPutImageHelper(ScreenPtr display,
+			 DrawablePtr d, GCPtr gc,
+			 XMesaImage *image,
+			 int src_x, int src_y,
+			 int dest_x, int dest_y,
+			 unsigned int width, unsigned int height)
+{
+    /* NOT_DONE: Verify that the following works for all depths */
+    char *src = (image->data +
+		 src_y * image->bytes_per_line +
+		 ((src_x * image->bits_per_pixel) >> 3));
+
+    ValidateGC(d, gc);
+    (*gc->ops->PutImage)(d, gc, d->depth, dest_x, dest_y, width, height,
+			 0, ZPixmap, src);
+}
diff --git a/src/mesa/drivers/x11/xm_image.h b/src/mesa/drivers/x11/xm_image.h
new file mode 100644
index 0000000..bb31412
--- /dev/null
+++ b/src/mesa/drivers/x11/xm_image.h
@@ -0,0 +1,105 @@
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <kevin at precisioninsight.com>
+ *   Brian Paul <brian at precisioninsight.com>
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#ifndef _XF86GLX_UTIL_H_
+#define _XF86GLX_UTIL_H_
+
+#ifdef __CYGWIN__
+#undef WIN32
+#undef _WIN32
+#endif
+
+#include <screenint.h>
+#include <pixmap.h>
+#include <gc.h>
+#include "GL/xmesa.h"
+
+#define XMESA_USE_PUTPIXEL_MACRO
+
+struct _XMesaImageRec {
+    int width, height;
+    char *data;
+    int bytes_per_line; /* Padded to 32 bits */
+    int bits_per_pixel;
+};
+
+extern XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height,
+				    char *data);
+extern void XMesaDestroyImage(XMesaImage *image);
+extern unsigned long XMesaGetPixel(XMesaImage *image, int x, int y);
+#ifdef XMESA_USE_PUTPIXEL_MACRO
+#define XMesaPutPixel(__i,__x,__y,__p) \
+{ \
+    CARD8  *__row = (CARD8 *)(__i->data + __y*__i->bytes_per_line); \
+    CARD8  *__i8; \
+    CARD16 *__i16; \
+    CARD32 *__i32; \
+    switch (__i->bits_per_pixel) { \
+    case 8: \
+	__i8 = (CARD8 *)__row; \
+	__i8[__x] = (CARD8)__p; \
+	break; \
+    case 15: \
+    case 16: \
+	__i16 = (CARD16 *)__row; \
+	__i16[__x] = (CARD16)__p; \
+	break; \
+    case 24: /* WARNING: architecture specific code */ \
+	__i8 = (CARD8 *)__row; \
+	__i8[__x*3]   = (CARD8)(__p); \
+	__i8[__x*3+1] = (CARD8)(__p>>8); \
+	__i8[__x*3+2] = (CARD8)(__p>>16); \
+	break; \
+    case 32: \
+	__i32 = (CARD32 *)__row; \
+	__i32[__x] = (CARD32)__p; \
+	break; \
+    } \
+}
+#else
+extern void XMesaPutPixel(XMesaImage *image, int x, int y,
+			  unsigned long pixel);
+#endif
+
+extern void XMesaPutImageHelper(ScreenPtr display,
+				DrawablePtr d, GCPtr gc,
+				XMesaImage *image,
+				int src_x, int src_y,
+				int dest_x, int dest_y,
+				unsigned int width, unsigned int height);
+
+#endif /* _XF86GLX_UTIL_H_ */



More information about the mesa-commit mailing list