aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/glx/rensize.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/glx/rensize.c')
-rw-r--r--xorg-server/glx/rensize.c475
1 files changed, 250 insertions, 225 deletions
diff --git a/xorg-server/glx/rensize.c b/xorg-server/glx/rensize.c
index 8a58e08d7..bcc3a53ad 100644
--- a/xorg-server/glx/rensize.c
+++ b/xorg-server/glx/rensize.c
@@ -43,80 +43,88 @@
(((a & 0xff000000U)>>24) | ((a & 0xff0000U)>>8) | \
((a & 0xff00U)<<8) | ((a & 0xffU)<<24))
-static int Map1Size( GLint k, GLint order)
+static int
+Map1Size(GLint k, GLint order)
{
- if (order <= 0 || k < 0) return -1;
+ if (order <= 0 || k < 0)
+ return -1;
return k * order;
}
-int __glXMap1dReqSize( const GLbyte *pc, Bool swap )
+int
+__glXMap1dReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
GLint order, k;
- target = *(GLenum*) (pc + 16);
- order = *(GLint*) (pc + 20);
+ target = *(GLenum *) (pc + 16);
+ order = *(GLint *) (pc + 20);
if (swap) {
- target = SWAPL( target );
- order = SWAPL( order );
+ target = SWAPL(target);
+ order = SWAPL(order);
}
- k = __glMap1d_size( target );
- return 8 * Map1Size( k, order );
+ k = __glMap1d_size(target);
+ return 8 * Map1Size(k, order);
}
-int __glXMap1fReqSize( const GLbyte *pc, Bool swap )
+int
+__glXMap1fReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
GLint order, k;
- target = *(GLenum *)(pc + 0);
- order = *(GLint *)(pc + 12);
+ target = *(GLenum *) (pc + 0);
+ order = *(GLint *) (pc + 12);
if (swap) {
- target = SWAPL( target );
- order = SWAPL( order );
+ target = SWAPL(target);
+ order = SWAPL(order);
}
k = __glMap1f_size(target);
return 4 * Map1Size(k, order);
}
-static int Map2Size(int k, int majorOrder, int minorOrder)
+static int
+Map2Size(int k, int majorOrder, int minorOrder)
{
- if (majorOrder <= 0 || minorOrder <= 0 || k < 0) return -1;
+ if (majorOrder <= 0 || minorOrder <= 0 || k < 0)
+ return -1;
return k * majorOrder * minorOrder;
}
-int __glXMap2dReqSize( const GLbyte *pc, Bool swap )
+int
+__glXMap2dReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
GLint uorder, vorder, k;
- target = *(GLenum *)(pc + 32);
- uorder = *(GLint *)(pc + 36);
- vorder = *(GLint *)(pc + 40);
+ target = *(GLenum *) (pc + 32);
+ uorder = *(GLint *) (pc + 36);
+ vorder = *(GLint *) (pc + 40);
if (swap) {
- target = SWAPL( target );
- uorder = SWAPL( uorder );
- vorder = SWAPL( vorder );
+ target = SWAPL(target);
+ uorder = SWAPL(uorder);
+ vorder = SWAPL(vorder);
}
- k = __glMap2d_size( target );
- return 8 * Map2Size( k, uorder, vorder );
+ k = __glMap2d_size(target);
+ return 8 * Map2Size(k, uorder, vorder);
}
-int __glXMap2fReqSize( const GLbyte *pc, Bool swap )
+int
+__glXMap2fReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
GLint uorder, vorder, k;
- target = *(GLenum *)(pc + 0);
- uorder = *(GLint *)(pc + 12);
- vorder = *(GLint *)(pc + 24);
+ target = *(GLenum *) (pc + 0);
+ uorder = *(GLint *) (pc + 12);
+ vorder = *(GLint *) (pc + 24);
if (swap) {
- target = SWAPL( target );
- uorder = SWAPL( uorder );
- vorder = SWAPL( vorder );
+ target = SWAPL(target);
+ uorder = SWAPL(uorder);
+ vorder = SWAPL(vorder);
}
- k = __glMap2f_size( target );
- return 4 * Map2Size( k, uorder, vorder );
+ k = __glMap2f_size(target);
+ return 4 * Map2Size(k, uorder, vorder);
}
/**
@@ -158,22 +166,24 @@ int __glXMap2fReqSize( const GLbyte *pc, Bool swap )
* are invalid, -1 is returned. If \c target is one of \c GL_PROXY_*, zero
* is returned.
*/
-int __glXImageSize( GLenum format, GLenum type, GLenum target,
- GLsizei w, GLsizei h, GLsizei d,
- GLint imageHeight, GLint rowLength,
- GLint skipImages, GLint skipRows, GLint alignment )
+int
+__glXImageSize(GLenum format, GLenum type, GLenum target,
+ GLsizei w, GLsizei h, GLsizei d,
+ GLint imageHeight, GLint rowLength,
+ GLint skipImages, GLint skipRows, GLint alignment)
{
GLint bytesPerElement, elementsPerGroup, groupsPerRow;
GLint groupSize, rowSize, padding, imageSize;
if (w < 0 || h < 0 || d < 0 ||
- (type == GL_BITMAP &&
- (format != GL_COLOR_INDEX && format != GL_STENCIL_INDEX))) {
- return -1;
+ (type == GL_BITMAP &&
+ (format != GL_COLOR_INDEX && format != GL_STENCIL_INDEX))) {
+ return -1;
}
- if (w==0 || h==0 || d == 0) return 0;
+ if (w == 0 || h == 0 || d == 0)
+ return 0;
- switch( target ) {
+ switch (target) {
case GL_PROXY_TEXTURE_1D:
case GL_PROXY_TEXTURE_2D:
case GL_PROXY_TEXTURE_3D:
@@ -186,139 +196,153 @@ int __glXImageSize( GLenum format, GLenum type, GLenum target,
case GL_PROXY_POST_CONVOLUTION_COLOR_TABLE:
case GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE:
case GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP:
- return 0;
+ return 0;
}
if (type == GL_BITMAP) {
- if (rowLength > 0) {
- groupsPerRow = rowLength;
- } else {
- groupsPerRow = w;
- }
- rowSize = bits_to_bytes(groupsPerRow);
- padding = (rowSize % alignment);
- if (padding) {
- rowSize += alignment - padding;
- }
- return ((h + skipRows) * rowSize);
- } else {
- switch(format) {
- case GL_COLOR_INDEX:
- case GL_STENCIL_INDEX:
- case GL_DEPTH_COMPONENT:
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- case GL_INTENSITY:
- elementsPerGroup = 1;
- break;
- case GL_422_EXT:
- case GL_422_REV_EXT:
- case GL_422_AVERAGE_EXT:
- case GL_422_REV_AVERAGE_EXT:
- case GL_DEPTH_STENCIL_NV:
- case GL_DEPTH_STENCIL_MESA:
- case GL_YCBCR_MESA:
- case GL_LUMINANCE_ALPHA:
- elementsPerGroup = 2;
- break;
- case GL_RGB:
- case GL_BGR:
- elementsPerGroup = 3;
- break;
- case GL_RGBA:
- case GL_BGRA:
- case GL_ABGR_EXT:
- elementsPerGroup = 4;
- break;
- default:
- return -1;
- }
- switch(type) {
- case GL_UNSIGNED_BYTE:
- case GL_BYTE:
- bytesPerElement = 1;
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- bytesPerElement = 1;
- elementsPerGroup = 1;
- break;
- case GL_UNSIGNED_SHORT:
- case GL_SHORT:
- bytesPerElement = 2;
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- case GL_UNSIGNED_SHORT_8_8_APPLE:
- case GL_UNSIGNED_SHORT_8_8_REV_APPLE:
- case GL_UNSIGNED_SHORT_15_1_MESA:
- case GL_UNSIGNED_SHORT_1_15_REV_MESA:
- bytesPerElement = 2;
- elementsPerGroup = 1;
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- bytesPerElement = 4;
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- case GL_UNSIGNED_INT_24_8_NV:
- case GL_UNSIGNED_INT_24_8_MESA:
- case GL_UNSIGNED_INT_8_24_REV_MESA:
- bytesPerElement = 4;
- elementsPerGroup = 1;
- break;
- default:
- return -1;
- }
- groupSize = bytesPerElement * elementsPerGroup;
- if (rowLength > 0) {
- groupsPerRow = rowLength;
- } else {
- groupsPerRow = w;
- }
- rowSize = groupsPerRow * groupSize;
- padding = (rowSize % alignment);
- if (padding) {
- rowSize += alignment - padding;
- }
- if (imageHeight > 0) {
- imageSize = (imageHeight + skipRows) * rowSize;
- } else {
- imageSize = (h + skipRows) * rowSize;
- }
- return ((d + skipImages) * imageSize);
+ if (rowLength > 0) {
+ groupsPerRow = rowLength;
+ }
+ else {
+ groupsPerRow = w;
+ }
+ rowSize = bits_to_bytes(groupsPerRow);
+ padding = (rowSize % alignment);
+ if (padding) {
+ rowSize += alignment - padding;
+ }
+ return ((h + skipRows) * rowSize);
+ }
+ else {
+ switch (format) {
+ case GL_COLOR_INDEX:
+ case GL_STENCIL_INDEX:
+ case GL_DEPTH_COMPONENT:
+ case GL_RED:
+ case GL_GREEN:
+ case GL_BLUE:
+ case GL_ALPHA:
+ case GL_LUMINANCE:
+ case GL_INTENSITY:
+ elementsPerGroup = 1;
+ break;
+ case GL_422_EXT:
+ case GL_422_REV_EXT:
+ case GL_422_AVERAGE_EXT:
+ case GL_422_REV_AVERAGE_EXT:
+ case GL_DEPTH_STENCIL_NV:
+ case GL_DEPTH_STENCIL_MESA:
+ case GL_YCBCR_MESA:
+ case GL_LUMINANCE_ALPHA:
+ elementsPerGroup = 2;
+ break;
+ case GL_RGB:
+ case GL_BGR:
+ elementsPerGroup = 3;
+ break;
+ case GL_RGBA:
+ case GL_BGRA:
+ case GL_ABGR_EXT:
+ elementsPerGroup = 4;
+ break;
+ default:
+ return -1;
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE:
+ case GL_BYTE:
+ bytesPerElement = 1;
+ break;
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ bytesPerElement = 1;
+ elementsPerGroup = 1;
+ break;
+ case GL_UNSIGNED_SHORT:
+ case GL_SHORT:
+ bytesPerElement = 2;
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ case GL_UNSIGNED_SHORT_8_8_APPLE:
+ case GL_UNSIGNED_SHORT_8_8_REV_APPLE:
+ case GL_UNSIGNED_SHORT_15_1_MESA:
+ case GL_UNSIGNED_SHORT_1_15_REV_MESA:
+ bytesPerElement = 2;
+ elementsPerGroup = 1;
+ break;
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ case GL_FLOAT:
+ bytesPerElement = 4;
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ case GL_UNSIGNED_INT_24_8_NV:
+ case GL_UNSIGNED_INT_24_8_MESA:
+ case GL_UNSIGNED_INT_8_24_REV_MESA:
+ bytesPerElement = 4;
+ elementsPerGroup = 1;
+ break;
+ default:
+ return -1;
+ }
+ groupSize = bytesPerElement * elementsPerGroup;
+ if (rowLength > 0) {
+ groupsPerRow = rowLength;
+ }
+ else {
+ groupsPerRow = w;
+ }
+ rowSize = groupsPerRow * groupSize;
+ padding = (rowSize % alignment);
+ if (padding) {
+ rowSize += alignment - padding;
+ }
+ if (imageHeight > 0) {
+ imageSize = (imageHeight + skipRows) * rowSize;
+ }
+ else {
+ imageSize = (h + skipRows) * rowSize;
+ }
+ return ((d + skipImages) * imageSize);
}
}
-
/* XXX this is used elsewhere - should it be exported from glxserver.h? */
-int __glXTypeSize(GLenum enm)
+int
+__glXTypeSize(GLenum enm)
{
- switch(enm) {
- case GL_BYTE: return sizeof(GLbyte);
- case GL_UNSIGNED_BYTE: return sizeof(GLubyte);
- case GL_SHORT: return sizeof(GLshort);
- case GL_UNSIGNED_SHORT: return sizeof(GLushort);
- case GL_INT: return sizeof(GLint);
- case GL_UNSIGNED_INT: return sizeof(GLint);
- case GL_FLOAT: return sizeof(GLfloat);
- case GL_DOUBLE: return sizeof(GLdouble);
- default: return -1;
- }
+ switch (enm) {
+ case GL_BYTE:
+ return sizeof(GLbyte);
+ case GL_UNSIGNED_BYTE:
+ return sizeof(GLubyte);
+ case GL_SHORT:
+ return sizeof(GLshort);
+ case GL_UNSIGNED_SHORT:
+ return sizeof(GLushort);
+ case GL_INT:
+ return sizeof(GLint);
+ case GL_UNSIGNED_INT:
+ return sizeof(GLint);
+ case GL_FLOAT:
+ return sizeof(GLfloat);
+ case GL_DOUBLE:
+ return sizeof(GLdouble);
+ default:
+ return -1;
+ }
}
-int __glXDrawArraysReqSize( const GLbyte *pc, Bool swap )
+int
+__glXDrawArraysReqSize(const GLbyte * pc, Bool swap)
{
__GLXdispatchDrawArraysHeader *hdr = (__GLXdispatchDrawArraysHeader *) pc;
__GLXdispatchDrawArraysComponentHeader *compHeader;
@@ -328,67 +352,68 @@ int __glXDrawArraysReqSize( const GLbyte *pc, Bool swap )
int i;
if (swap) {
- numVertexes = SWAPL( numVertexes );
- numComponents = SWAPL( numComponents );
+ numVertexes = SWAPL(numVertexes);
+ numComponents = SWAPL(numComponents);
}
pc += sizeof(__GLXdispatchDrawArraysHeader);
compHeader = (__GLXdispatchDrawArraysComponentHeader *) pc;
- for (i=0; i<numComponents; i++) {
- GLenum datatype = compHeader[i].datatype;
- GLint numVals = compHeader[i].numVals;
- GLint component = compHeader[i].component;
-
- if (swap) {
- datatype = SWAPL( datatype );
- numVals = SWAPL( numVals );
- component = SWAPL( component );
- }
-
- switch (component) {
- case GL_VERTEX_ARRAY:
- case GL_COLOR_ARRAY:
- case GL_TEXTURE_COORD_ARRAY:
- break;
- case GL_SECONDARY_COLOR_ARRAY:
- case GL_NORMAL_ARRAY:
- if (numVals != 3) {
- /* bad size */
- return -1;
- }
- break;
- case GL_FOG_COORD_ARRAY:
- case GL_INDEX_ARRAY:
- if (numVals != 1) {
- /* bad size */
- return -1;
- }
- break;
- case GL_EDGE_FLAG_ARRAY:
- if ((numVals != 1) && (datatype != GL_UNSIGNED_BYTE)) {
- /* bad size or bad type */
- return -1;
- }
- break;
- default:
- /* unknown component type */
- return -1;
- }
-
- arrayElementSize += __GLX_PAD(numVals * __glXTypeSize(datatype));
-
- pc += sizeof(__GLXdispatchDrawArraysComponentHeader);
+ for (i = 0; i < numComponents; i++) {
+ GLenum datatype = compHeader[i].datatype;
+ GLint numVals = compHeader[i].numVals;
+ GLint component = compHeader[i].component;
+
+ if (swap) {
+ datatype = SWAPL(datatype);
+ numVals = SWAPL(numVals);
+ component = SWAPL(component);
+ }
+
+ switch (component) {
+ case GL_VERTEX_ARRAY:
+ case GL_COLOR_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY:
+ break;
+ case GL_SECONDARY_COLOR_ARRAY:
+ case GL_NORMAL_ARRAY:
+ if (numVals != 3) {
+ /* bad size */
+ return -1;
+ }
+ break;
+ case GL_FOG_COORD_ARRAY:
+ case GL_INDEX_ARRAY:
+ if (numVals != 1) {
+ /* bad size */
+ return -1;
+ }
+ break;
+ case GL_EDGE_FLAG_ARRAY:
+ if ((numVals != 1) && (datatype != GL_UNSIGNED_BYTE)) {
+ /* bad size or bad type */
+ return -1;
+ }
+ break;
+ default:
+ /* unknown component type */
+ return -1;
+ }
+
+ arrayElementSize += __GLX_PAD(numVals * __glXTypeSize(datatype));
+
+ pc += sizeof(__GLXdispatchDrawArraysComponentHeader);
}
return ((numComponents * sizeof(__GLXdispatchDrawArraysComponentHeader)) +
- (numVertexes * arrayElementSize));
+ (numVertexes * arrayElementSize));
}
-int __glXSeparableFilter2DReqSize( const GLbyte *pc, Bool swap )
+int
+__glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap)
{
__GLXdispatchConvolutionFilterHeader *hdr =
- (__GLXdispatchConvolutionFilterHeader *) pc;
+ (__GLXdispatchConvolutionFilterHeader *) pc;
GLint image1size, image2size;
GLenum format = hdr->format;
@@ -399,20 +424,20 @@ int __glXSeparableFilter2DReqSize( const GLbyte *pc, Bool swap )
GLint alignment = hdr->alignment;
if (swap) {
- format = SWAPL( format );
- type = SWAPL( type );
- w = SWAPL( w );
- h = SWAPL( h );
- rowLength = SWAPL( rowLength );
- alignment = SWAPL( alignment );
+ format = SWAPL(format);
+ type = SWAPL(type);
+ w = SWAPL(w);
+ h = SWAPL(h);
+ rowLength = SWAPL(rowLength);
+ alignment = SWAPL(alignment);
}
/* XXX Should rowLength be used for either or both image? */
- image1size = __glXImageSize( format, type, 0, w, 1, 1,
- 0, rowLength, 0, 0, alignment );
+ image1size = __glXImageSize(format, type, 0, w, 1, 1,
+ 0, rowLength, 0, 0, alignment);
image1size = __GLX_PAD(image1size);
- image2size = __glXImageSize( format, type, 0, h, 1, 1,
- 0, rowLength, 0, 0, alignment );
+ image2size = __glXImageSize(format, type, 0, h, 1, 1,
+ 0, rowLength, 0, 0, alignment);
return image1size + image2size;
}