Make utils.h self-contained.
Move stuff with drm dependencies to dri_util.h, and move a couple of types without drm dependencies to utils.h.
This commit is contained in:

committed by
Kristian Høgsberg

parent
b539b61321
commit
c95e66120b
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include "dri_util.h"
|
#include "dri_util.h"
|
||||||
#include "drm_sarea.h"
|
#include "drm_sarea.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
#ifndef GLX_OML_sync_control
|
#ifndef GLX_OML_sync_control
|
||||||
typedef GLboolean ( * PFNGLXGETMSCRATEOMLPROC) (__DRIdrawable *drawable, int32_t *numerator, int32_t *denominator);
|
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 */
|
/** \name Context (un)binding functions */
|
||||||
@@ -965,117 +978,6 @@ static const __DRIextension **driGetExtensions(__DRIscreen *psp)
|
|||||||
return psp->extensions;
|
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 = {
|
const __DRIlegacyExtension driLegacyExtension = {
|
||||||
{ __DRI_LEGACY, __DRI_LEGACY_VERSION },
|
{ __DRI_LEGACY, __DRI_LEGACY_VERSION },
|
||||||
driCreateNewScreen,
|
driCreateNewScreen,
|
||||||
|
@@ -61,7 +61,6 @@
|
|||||||
#define GLX_BAD_CONTEXT 5
|
#define GLX_BAD_CONTEXT 5
|
||||||
|
|
||||||
typedef struct __DRIswapInfoRec __DRIswapInfo;
|
typedef struct __DRIswapInfoRec __DRIswapInfo;
|
||||||
typedef struct __DRIutilversionRec2 __DRIutilversion2;
|
|
||||||
|
|
||||||
/* Typedefs to avoid rewriting the world. */
|
/* Typedefs to avoid rewriting the world. */
|
||||||
typedef struct __DRIscreenRec __DRIscreenPrivate;
|
typedef struct __DRIscreenRec __DRIscreenPrivate;
|
||||||
@@ -536,22 +535,6 @@ struct __DRIscreenRec {
|
|||||||
drmLock *lock;
|
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
|
extern void
|
||||||
__driUtilMessage(const char *f, ...);
|
__driUtilMessage(const char *f, ...);
|
||||||
|
|
||||||
@@ -566,4 +549,7 @@ extern float
|
|||||||
driCalculateSwapUsage( __DRIdrawable *dPriv,
|
driCalculateSwapUsage( __DRIdrawable *dPriv,
|
||||||
int64_t last_swap_ust, int64_t current_ust );
|
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_ */
|
#endif /* _DRI_UTIL_H_ */
|
||||||
|
@@ -419,21 +419,6 @@ driCheckDriDdxDrmVersions2(const char * driver_name,
|
|||||||
drmActual, drmExpected);
|
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,
|
GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
|
||||||
GLint *x, GLint *y,
|
GLint *x, GLint *y,
|
||||||
GLsizei *width, GLsizei *height )
|
GLsizei *width, GLsizei *height )
|
||||||
@@ -755,3 +740,114 @@ const __DRIconfig **driConcatConfigs(__DRIconfig **a, __DRIconfig **b)
|
|||||||
|
|
||||||
return all;
|
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;
|
||||||
|
}
|
||||||
|
@@ -29,8 +29,10 @@
|
|||||||
#ifndef DRI_DEBUG_H
|
#ifndef DRI_DEBUG_H
|
||||||
#define DRI_DEBUG_H
|
#define DRI_DEBUG_H
|
||||||
|
|
||||||
|
#include "GL/internal/dri_interface.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "dri_util.h"
|
|
||||||
|
typedef struct __DRIutilversionRec2 __DRIutilversion2;
|
||||||
|
|
||||||
struct dri_debug_control {
|
struct dri_debug_control {
|
||||||
const char * string;
|
const char * string;
|
||||||
@@ -84,6 +86,17 @@ struct dri_extension {
|
|||||||
const struct dri_extension_function * functions;
|
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,
|
extern unsigned driParseDebugString( const char * debug,
|
||||||
const struct dri_debug_control * control );
|
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 * ddxActual, const __DRIutilversion2 * ddxExpected,
|
||||||
const __DRIversion * drmActual, const __DRIversion * drmExpected);
|
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,
|
extern GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
|
||||||
GLint *x, GLint *y,
|
GLint *x, GLint *y,
|
||||||
GLsizei *width, GLsizei *height );
|
GLsizei *width, GLsizei *height );
|
||||||
|
|
||||||
|
struct __DRIconfigRec {
|
||||||
|
__GLcontextModes modes;
|
||||||
|
};
|
||||||
|
|
||||||
extern __DRIconfig **
|
extern __DRIconfig **
|
||||||
driCreateConfigs(GLenum fb_format, GLenum fb_type,
|
driCreateConfigs(GLenum fb_format, GLenum fb_type,
|
||||||
const u_int8_t * depth_bits, const u_int8_t * stencil_bits,
|
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);
|
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 */
|
#endif /* DRI_DEBUG_H */
|
||||||
|
@@ -24,8 +24,8 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "utils.h"
|
|
||||||
#include "dri_util.h"
|
#include "dri_util.h"
|
||||||
|
#include "utils.h"
|
||||||
#include "glheader.h"
|
#include "glheader.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
|
Reference in New Issue
Block a user