OSDN Git Service

Make utils.h self-contained.
authorGeorge Sapountzis <gsap7@yahoo.gr>
Sun, 11 May 2008 11:43:22 +0000 (14:43 +0300)
committerKristian Høgsberg <krh@redhat.com>
Tue, 20 May 2008 20:03:44 +0000 (16:03 -0400)
Move stuff with drm dependencies to dri_util.h, and move a couple of
types without drm dependencies to utils.h.

src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/common/dri_util.h
src/mesa/drivers/dri/common/utils.c
src/mesa/drivers/dri/common/utils.h
src/mesa/drivers/dri/unichrome/via_screen.c

index b7718f5..5870208 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "dri_util.h"
 #include "drm_sarea.h"
+#include "utils.h"
 
 #ifndef GLX_OML_sync_control
 typedef GLboolean ( * PFNGLXGETMSCRATEOMLPROC) (__DRIdrawable *drawable, int32_t *numerator, int32_t *denominator);
@@ -66,6 +67,18 @@ __driUtilMessage(const char *f, ...)
     }
 }
 
+GLint
+driIntersectArea( drm_clip_rect_t rect1, drm_clip_rect_t rect2 )
+{
+   if (rect2.x1 > rect1.x1) rect1.x1 = rect2.x1;
+   if (rect2.x2 < rect1.x2) rect1.x2 = rect2.x2;
+   if (rect2.y1 > rect1.y1) rect1.y1 = rect2.y1;
+   if (rect2.y2 < rect1.y2) rect1.y2 = rect2.y2;
+
+   if (rect1.x1 > rect1.x2 || rect1.y1 > rect1.y2) return 0;
+
+   return (rect1.x2 - rect1.x1) * (rect1.y2 - rect1.y1);
+}
 
 /*****************************************************************/
 /** \name Context (un)binding functions                          */
@@ -965,117 +978,6 @@ static const __DRIextension **driGetExtensions(__DRIscreen *psp)
     return psp->extensions;
 }
 
-#define __ATTRIB(attrib, field) \
-    { attrib, offsetof(__GLcontextModes, field) }
-
-static const struct { unsigned int attrib, offset; } attribMap[] = {
-    __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE,                 rgbBits),
-    __ATTRIB(__DRI_ATTRIB_LEVEL,                       level),
-    __ATTRIB(__DRI_ATTRIB_RED_SIZE,                    redBits),
-    __ATTRIB(__DRI_ATTRIB_GREEN_SIZE,                  greenBits),
-    __ATTRIB(__DRI_ATTRIB_BLUE_SIZE,                   blueBits),
-    __ATTRIB(__DRI_ATTRIB_ALPHA_SIZE,                  alphaBits),
-    __ATTRIB(__DRI_ATTRIB_DEPTH_SIZE,                  depthBits),
-    __ATTRIB(__DRI_ATTRIB_STENCIL_SIZE,                        stencilBits),
-    __ATTRIB(__DRI_ATTRIB_ACCUM_RED_SIZE,              accumRedBits),
-    __ATTRIB(__DRI_ATTRIB_ACCUM_GREEN_SIZE,            accumGreenBits),
-    __ATTRIB(__DRI_ATTRIB_ACCUM_BLUE_SIZE,             accumBlueBits),
-    __ATTRIB(__DRI_ATTRIB_ACCUM_ALPHA_SIZE,            accumAlphaBits),
-    __ATTRIB(__DRI_ATTRIB_SAMPLE_BUFFERS,              sampleBuffers),
-    __ATTRIB(__DRI_ATTRIB_SAMPLES,                     samples),
-    __ATTRIB(__DRI_ATTRIB_DOUBLE_BUFFER,               doubleBufferMode),
-    __ATTRIB(__DRI_ATTRIB_STEREO,                      stereoMode),
-    __ATTRIB(__DRI_ATTRIB_AUX_BUFFERS,                 numAuxBuffers),
-    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_TYPE,            transparentPixel),
-    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_INDEX_VALUE,     transparentPixel),
-    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_RED_VALUE,       transparentRed),
-    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_GREEN_VALUE,     transparentGreen),
-    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_BLUE_VALUE,      transparentBlue),
-    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE,     transparentAlpha),
-    __ATTRIB(__DRI_ATTRIB_FLOAT_MODE,                  floatMode),
-    __ATTRIB(__DRI_ATTRIB_RED_MASK,                    redMask),
-    __ATTRIB(__DRI_ATTRIB_GREEN_MASK,                  greenMask),
-    __ATTRIB(__DRI_ATTRIB_BLUE_MASK,                   blueMask),
-    __ATTRIB(__DRI_ATTRIB_ALPHA_MASK,                  alphaMask),
-    __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_WIDTH,           maxPbufferWidth),
-    __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_HEIGHT,          maxPbufferHeight),
-    __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_PIXELS,          maxPbufferPixels),
-    __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH,       optimalPbufferWidth),
-    __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT,      optimalPbufferHeight),
-    __ATTRIB(__DRI_ATTRIB_SWAP_METHOD,                 swapMethod),
-    __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB,         bindToTextureRgb),
-    __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGBA,                bindToTextureRgba),
-    __ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE,      bindToMipmapTexture),
-    __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS,     bindToTextureTargets),
-    __ATTRIB(__DRI_ATTRIB_YINVERTED,                   yInverted),
-
-    /* The struct field doesn't matter here, these are handled by the
-     * switch in driGetConfigAttribIndex.  We need them in the array
-     * so the iterator includes them though.*/
-    __ATTRIB(__DRI_ATTRIB_RENDER_TYPE,                 level),
-    __ATTRIB(__DRI_ATTRIB_CONFIG_CAVEAT,               level),
-    __ATTRIB(__DRI_ATTRIB_SWAP_METHOD,                 level)
-};
-
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
-
-static int
-driGetConfigAttribIndex(const __DRIconfig *config,
-                       unsigned int index, unsigned int *value)
-{
-    switch (attribMap[index].attrib) {
-    case __DRI_ATTRIB_RENDER_TYPE:
-       if (config->modes.rgbMode)
-           *value = __DRI_ATTRIB_RGBA_BIT;
-       else
-           *value = __DRI_ATTRIB_COLOR_INDEX_BIT;
-       break;
-    case __DRI_ATTRIB_CONFIG_CAVEAT:
-       if (config->modes.visualRating == GLX_NON_CONFORMANT_CONFIG)
-           *value = __DRI_ATTRIB_NON_CONFORMANT_CONFIG;
-       else if (config->modes.visualRating == GLX_SLOW_CONFIG)
-           *value = __DRI_ATTRIB_SLOW_BIT;
-       else
-           *value = 0;
-       break;
-    case __DRI_ATTRIB_SWAP_METHOD:
-       break;
-
-    default:
-       *value = *(unsigned int *)
-           ((char *) &config->modes + attribMap[index].offset);
-       
-       break;
-    }
-
-    return GL_TRUE;
-}
-
-static int
-driGetConfigAttrib(const __DRIconfig *config,
-                  unsigned int attrib, unsigned int *value)
-{
-    int i;
-
-    for (i = 0; i < ARRAY_SIZE(attribMap); i++)
-       if (attribMap[i].attrib == attrib)
-           return driGetConfigAttribIndex(config, i, value);
-
-    return GL_FALSE;
-}
-
-static int
-driIndexConfigAttrib(const __DRIconfig *config, int index,
-                    unsigned int *attrib, unsigned int *value)
-{
-    if (index >= 0 && index < ARRAY_SIZE(attribMap)) {
-       *attrib = attribMap[index].attrib;
-       return driGetConfigAttribIndex(config, index, value);
-    }
-
-    return GL_FALSE;
-}
-
 const __DRIlegacyExtension driLegacyExtension = {
     { __DRI_LEGACY, __DRI_LEGACY_VERSION },
     driCreateNewScreen,
index 06e1d20..8e1cdfc 100644 (file)
@@ -61,7 +61,6 @@
 #define GLX_BAD_CONTEXT                    5
 
 typedef struct __DRIswapInfoRec        __DRIswapInfo;
-typedef struct __DRIutilversionRec2    __DRIutilversion2;
 
 /* Typedefs to avoid rewriting the world. */
 typedef struct __DRIscreenRec  __DRIscreenPrivate;
@@ -536,22 +535,6 @@ struct __DRIscreenRec {
     drmLock *lock;
 };
 
-struct __DRIconfigRec {
-    __GLcontextModes modes;
-};
-
-/**
- * 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, ...);
 
@@ -566,4 +549,7 @@ extern float
 driCalculateSwapUsage( __DRIdrawable *dPriv,
                       int64_t last_swap_ust, int64_t current_ust );
 
+extern GLint
+driIntersectArea( drm_clip_rect_t rect1, drm_clip_rect_t rect2 );
+
 #endif /* _DRI_UTIL_H_ */
index 237d51c..48c0f46 100644 (file)
@@ -419,21 +419,6 @@ driCheckDriDdxDrmVersions2(const char * driver_name,
                                drmActual, drmExpected);
 }
 
-
-
-GLint
-driIntersectArea( drm_clip_rect_t rect1, drm_clip_rect_t rect2 )
-{
-   if (rect2.x1 > rect1.x1) rect1.x1 = rect2.x1;
-   if (rect2.x2 < rect1.x2) rect1.x2 = rect2.x2;
-   if (rect2.y1 > rect1.y1) rect1.y1 = rect2.y1;
-   if (rect2.y2 < rect1.y2) rect1.y2 = rect2.y2;
-
-   if (rect1.x1 > rect1.x2 || rect1.y1 > rect1.y2) return 0;
-
-   return (rect1.x2 - rect1.x1) * (rect1.y2 - rect1.y1);
-}
-
 GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
                                    GLint *x, GLint *y,
                                    GLsizei *width, GLsizei *height )
@@ -755,3 +740,114 @@ const __DRIconfig **driConcatConfigs(__DRIconfig **a, __DRIconfig **b)
 
     return all;
 }
+
+#define __ATTRIB(attrib, field) \
+    { attrib, offsetof(__GLcontextModes, field) }
+
+static const struct { unsigned int attrib, offset; } attribMap[] = {
+    __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE,                 rgbBits),
+    __ATTRIB(__DRI_ATTRIB_LEVEL,                       level),
+    __ATTRIB(__DRI_ATTRIB_RED_SIZE,                    redBits),
+    __ATTRIB(__DRI_ATTRIB_GREEN_SIZE,                  greenBits),
+    __ATTRIB(__DRI_ATTRIB_BLUE_SIZE,                   blueBits),
+    __ATTRIB(__DRI_ATTRIB_ALPHA_SIZE,                  alphaBits),
+    __ATTRIB(__DRI_ATTRIB_DEPTH_SIZE,                  depthBits),
+    __ATTRIB(__DRI_ATTRIB_STENCIL_SIZE,                        stencilBits),
+    __ATTRIB(__DRI_ATTRIB_ACCUM_RED_SIZE,              accumRedBits),
+    __ATTRIB(__DRI_ATTRIB_ACCUM_GREEN_SIZE,            accumGreenBits),
+    __ATTRIB(__DRI_ATTRIB_ACCUM_BLUE_SIZE,             accumBlueBits),
+    __ATTRIB(__DRI_ATTRIB_ACCUM_ALPHA_SIZE,            accumAlphaBits),
+    __ATTRIB(__DRI_ATTRIB_SAMPLE_BUFFERS,              sampleBuffers),
+    __ATTRIB(__DRI_ATTRIB_SAMPLES,                     samples),
+    __ATTRIB(__DRI_ATTRIB_DOUBLE_BUFFER,               doubleBufferMode),
+    __ATTRIB(__DRI_ATTRIB_STEREO,                      stereoMode),
+    __ATTRIB(__DRI_ATTRIB_AUX_BUFFERS,                 numAuxBuffers),
+    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_TYPE,            transparentPixel),
+    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_INDEX_VALUE,     transparentPixel),
+    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_RED_VALUE,       transparentRed),
+    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_GREEN_VALUE,     transparentGreen),
+    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_BLUE_VALUE,      transparentBlue),
+    __ATTRIB(__DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE,     transparentAlpha),
+    __ATTRIB(__DRI_ATTRIB_FLOAT_MODE,                  floatMode),
+    __ATTRIB(__DRI_ATTRIB_RED_MASK,                    redMask),
+    __ATTRIB(__DRI_ATTRIB_GREEN_MASK,                  greenMask),
+    __ATTRIB(__DRI_ATTRIB_BLUE_MASK,                   blueMask),
+    __ATTRIB(__DRI_ATTRIB_ALPHA_MASK,                  alphaMask),
+    __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_WIDTH,           maxPbufferWidth),
+    __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_HEIGHT,          maxPbufferHeight),
+    __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_PIXELS,          maxPbufferPixels),
+    __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH,       optimalPbufferWidth),
+    __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT,      optimalPbufferHeight),
+    __ATTRIB(__DRI_ATTRIB_SWAP_METHOD,                 swapMethod),
+    __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB,         bindToTextureRgb),
+    __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGBA,                bindToTextureRgba),
+    __ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE,      bindToMipmapTexture),
+    __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS,     bindToTextureTargets),
+    __ATTRIB(__DRI_ATTRIB_YINVERTED,                   yInverted),
+
+    /* The struct field doesn't matter here, these are handled by the
+     * switch in driGetConfigAttribIndex.  We need them in the array
+     * so the iterator includes them though.*/
+    __ATTRIB(__DRI_ATTRIB_RENDER_TYPE,                 level),
+    __ATTRIB(__DRI_ATTRIB_CONFIG_CAVEAT,               level),
+    __ATTRIB(__DRI_ATTRIB_SWAP_METHOD,                 level)
+};
+
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+
+static int
+driGetConfigAttribIndex(const __DRIconfig *config,
+                       unsigned int index, unsigned int *value)
+{
+    switch (attribMap[index].attrib) {
+    case __DRI_ATTRIB_RENDER_TYPE:
+       if (config->modes.rgbMode)
+           *value = __DRI_ATTRIB_RGBA_BIT;
+       else
+           *value = __DRI_ATTRIB_COLOR_INDEX_BIT;
+       break;
+    case __DRI_ATTRIB_CONFIG_CAVEAT:
+       if (config->modes.visualRating == GLX_NON_CONFORMANT_CONFIG)
+           *value = __DRI_ATTRIB_NON_CONFORMANT_CONFIG;
+       else if (config->modes.visualRating == GLX_SLOW_CONFIG)
+           *value = __DRI_ATTRIB_SLOW_BIT;
+       else
+           *value = 0;
+       break;
+    case __DRI_ATTRIB_SWAP_METHOD:
+       break;
+
+    default:
+       *value = *(unsigned int *)
+           ((char *) &config->modes + attribMap[index].offset);
+       
+       break;
+    }
+
+    return GL_TRUE;
+}
+
+int
+driGetConfigAttrib(const __DRIconfig *config,
+                  unsigned int attrib, unsigned int *value)
+{
+    int i;
+
+    for (i = 0; i < ARRAY_SIZE(attribMap); i++)
+       if (attribMap[i].attrib == attrib)
+           return driGetConfigAttribIndex(config, i, value);
+
+    return GL_FALSE;
+}
+
+int
+driIndexConfigAttrib(const __DRIconfig *config, int index,
+                    unsigned int *attrib, unsigned int *value)
+{
+    if (index >= 0 && index < ARRAY_SIZE(attribMap)) {
+       *attrib = attribMap[index].attrib;
+       return driGetConfigAttribIndex(config, index, value);
+    }
+
+    return GL_FALSE;
+}
index 45a78e5..31a26ed 100644 (file)
 #ifndef DRI_DEBUG_H
 #define DRI_DEBUG_H
 
+#include "GL/internal/dri_interface.h"
 #include "context.h"
-#include "dri_util.h"
+
+typedef struct __DRIutilversionRec2    __DRIutilversion2;
 
 struct dri_debug_control {
     const char * string;
@@ -84,6 +86,17 @@ struct dri_extension {
     const struct dri_extension_function * functions;
 };
 
+/**
+ * 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 unsigned driParseDebugString( const char * debug,
     const struct dri_debug_control * control );
 
@@ -106,12 +119,14 @@ extern GLboolean driCheckDriDdxDrmVersions3(const char * driver_name,
     const __DRIversion * ddxActual, const __DRIutilversion2 * ddxExpected,
     const __DRIversion * drmActual, const __DRIversion * drmExpected);
 
-extern GLint driIntersectArea( drm_clip_rect_t rect1, drm_clip_rect_t rect2 );
-
 extern GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
                                           GLint *x, GLint *y,
                                           GLsizei *width, GLsizei *height );
 
+struct __DRIconfigRec {
+    __GLcontextModes modes;
+};
+
 extern __DRIconfig **
 driCreateConfigs(GLenum fb_format, GLenum fb_type,
                 const u_int8_t * depth_bits, const u_int8_t * stencil_bits,
@@ -120,4 +135,11 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
 
 const __DRIconfig **driConcatConfigs(__DRIconfig **a, __DRIconfig **b);
 
+int
+driGetConfigAttrib(const __DRIconfig *config,
+                  unsigned int attrib, unsigned int *value);
+int
+driIndexConfigAttrib(const __DRIconfig *config, int index,
+                    unsigned int *attrib, unsigned int *value);
+
 #endif /* DRI_DEBUG_H */
index ca193bf..3648710 100644 (file)
@@ -24,8 +24,8 @@
 
 #include <stdio.h>
 
-#include "utils.h"
 #include "dri_util.h"
+#include "utils.h"
 #include "glheader.h"
 #include "context.h"
 #include "framebuffer.h"