typedef unsigned int GLenum; typedef unsigned char GLboolean; typedef void GLvoid; typedef int GLint; typedef unsigned char GLubyte; typedef unsigned int GLuint; typedef float GLfloat; typedef GLubyte GLchan; typedef struct __GLcontextRec GLcontext; enum { VERT_ATTRIB_POS = 0, VERT_ATTRIB_WEIGHT = 1, VERT_ATTRIB_NORMAL = 2, VERT_ATTRIB_COLOR0 = 3, VERT_ATTRIB_COLOR1 = 4, VERT_ATTRIB_FOG = 5, VERT_ATTRIB_COLOR_INDEX = 6, VERT_ATTRIB_EDGEFLAG = 7, VERT_ATTRIB_TEX0 = 8, VERT_ATTRIB_TEX1 = 9, VERT_ATTRIB_TEX2 = 10, VERT_ATTRIB_TEX3 = 11, VERT_ATTRIB_TEX4 = 12, VERT_ATTRIB_TEX5 = 13, VERT_ATTRIB_TEX6 = 14, VERT_ATTRIB_TEX7 = 15, VERT_ATTRIB_GENERIC0 = 16, VERT_ATTRIB_GENERIC1 = 17, VERT_ATTRIB_GENERIC2 = 18, VERT_ATTRIB_GENERIC3 = 19, VERT_ATTRIB_GENERIC4 = 20, VERT_ATTRIB_GENERIC5 = 21, VERT_ATTRIB_GENERIC6 = 22, VERT_ATTRIB_GENERIC7 = 23, VERT_ATTRIB_GENERIC8 = 24, VERT_ATTRIB_GENERIC9 = 25, VERT_ATTRIB_GENERIC10 = 26, VERT_ATTRIB_GENERIC11 = 27, VERT_ATTRIB_GENERIC12 = 28, VERT_ATTRIB_GENERIC13 = 29, VERT_ATTRIB_GENERIC14 = 30, VERT_ATTRIB_GENERIC15 = 31, VERT_ATTRIB_MAX = 32 }; struct gl_color_table { }; typedef void (*FetchTexelFuncF) (const struct gl_texture_image * texImage, GLint col, GLint row, GLint img, GLfloat * texelOut); typedef void (*StoreTexelFunc) (struct gl_texture_image * texImage, GLint col, GLint row, GLint img, const void *texel); struct gl_texture_format { GLint MesaFormat; GLenum BaseFormat; GLenum DataType; GLubyte RedBits; GLubyte GreenBits; GLubyte BlueBits; GLubyte AlphaBits; GLubyte LuminanceBits; GLubyte IntensityBits; GLubyte IndexBits; GLubyte DepthBits; GLubyte StencilBits; FetchTexelFuncF FetchTexel3Df; StoreTexelFunc StoreTexel; }; enum _format { MESA_FORMAT_RGBA8888, MESA_FORMAT_RGBA8888_REV, MESA_FORMAT_ARGB8888, MESA_FORMAT_ARGB8888_REV, MESA_FORMAT_RGB888, MESA_FORMAT_BGR888, MESA_FORMAT_RGB565, MESA_FORMAT_RGB565_REV, MESA_FORMAT_ARGB4444, MESA_FORMAT_ARGB4444_REV, MESA_FORMAT_ARGB1555, MESA_FORMAT_ARGB1555_REV, MESA_FORMAT_AL88, MESA_FORMAT_AL88_REV, MESA_FORMAT_RGB332, MESA_FORMAT_A8, MESA_FORMAT_L8, MESA_FORMAT_I8, MESA_FORMAT_CI8, MESA_FORMAT_YCBCR, MESA_FORMAT_YCBCR_REV, MESA_FORMAT_Z24_S8, MESA_FORMAT_Z16, MESA_FORMAT_Z32, MESA_FORMAT_SRGB8, MESA_FORMAT_SRGBA8, MESA_FORMAT_SL8, MESA_FORMAT_SLA8, MESA_FORMAT_RGB_FXT1, MESA_FORMAT_RGBA_FXT1, MESA_FORMAT_RGB_DXT1, MESA_FORMAT_RGBA_DXT1, MESA_FORMAT_RGBA_DXT3, MESA_FORMAT_RGBA_DXT5, MESA_FORMAT_RGBA, MESA_FORMAT_RGB, MESA_FORMAT_ALPHA, MESA_FORMAT_LUMINANCE, MESA_FORMAT_LUMINANCE_ALPHA, MESA_FORMAT_INTENSITY, MESA_FORMAT_RGBA_FLOAT32, MESA_FORMAT_RGBA_FLOAT16, MESA_FORMAT_RGB_FLOAT32, MESA_FORMAT_RGB_FLOAT16, MESA_FORMAT_ALPHA_FLOAT32, MESA_FORMAT_ALPHA_FLOAT16, MESA_FORMAT_LUMINANCE_FLOAT32, MESA_FORMAT_LUMINANCE_FLOAT16, MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, MESA_FORMAT_INTENSITY_FLOAT32, MESA_FORMAT_INTENSITY_FLOAT16 }; static void fxt1_encode(GLuint width, GLuint height, GLint comps, const void *source, GLint srcRowStride, void *dest, GLint destRowStride); static GLboolean texstore_rgba_fxt1(GLcontext * ctx, GLuint dims, GLenum baseInternalFormat, const struct gl_texture_format *dstFormat, GLvoid * dstAddr, GLint dstXoffset, GLint dstYoffset, GLint dstZoffset, GLint dstRowStride, const GLuint * dstImageOffsets, GLint srcWidth, GLint srcHeight, GLint srcDepth, GLenum srcFormat, GLenum srcType, const GLvoid * srcAddr, const struct gl_pixelstore_attrib *srcPacking) { const GLchan *pixels; GLint srcRowStride; GLubyte *dst; fxt1_encode(srcWidth, srcHeight, 4, pixels, srcRowStride, dst, dstRowStride); } static void fetch_texel_2d_rgba_fxt1(const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan * texel) { } static void fetch_texel_2d_f_rgba_fxt1(const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLfloat * texel) { } const struct gl_texture_format _mesa_texformat_rgba_fxt1 = { MESA_FORMAT_RGBA_FXT1, 0x1908, 0x8C17, 4, 4, 4, 1, 0, 0, 0, 0, 0, 0, texstore_rgba_fxt1, ((void *)0), fetch_texel_2d_rgba_fxt1, ((void *)0), ((void *)0), fetch_texel_2d_f_rgba_fxt1, ((void *)0), ((void *)0) }; typedef unsigned long long Fx64; static void fxt1_quantize_CHROMA(GLuint * cc, GLubyte input[32][4]) { const GLint n_vect = 4; GLint i, j, k; for (j = n_vect - 1; k >= 32 / 2; k--) { } } static void fxt1_quantize_ALPHA1(GLuint * cc, GLubyte input[32][4]) { const GLint n_vect = 3; const GLint n_comp = 4; GLfloat vec[1 + 1 + 1][4]; GLint i, j, k; Fx64 hi; { GLint j1, j2; GLint v1 = 0, v2 = 0; GLfloat err = 1e9; GLfloat tv[2 * 2][4]; for (i = 0; i < n_comp; i++) { } for (j1 = 0; j1 < 2; j1++) { for (j2 = 2; j2 < 4; j2++) { GLfloat e = 0.0F; for (i = 0; i < n_comp; i++) { e += (tv[j1][i] - tv[j2][i]) * (tv[j1][i] - tv[j2][i]); } if (e < err) { v1 = j1; } } } for (i = 0; i < n_comp; i++) { vec[0][i] = tv[1 - v1][i]; } } for (j = n_vect - 1; j >= 0; j--) { for (i = 0; i < n_comp - 1; i++) { hi |= (GLuint) (vec[j][i] / 8.0F); } } ((Fx64 *) cc)[1] = hi; } static void fxt1_quantize(GLuint * cc, const GLubyte * lines[], GLint comps) { GLubyte input[32][4]; GLint i, k, l; for (l = 0; l < 4; l++) { for (k = 0; k < 4; k++) { for (i = 0; i < comps; i++) { } } fxt1_quantize_ALPHA1(cc, input); } } static void fxt1_encode(GLuint width, GLuint height, GLint comps, const void *source, GLint srcRowStride, void *dest, GLint destRowStride) { GLuint x, y; GLuint *encoded = (GLuint *) dest; for (y = 0; y < height; y += 4) { for (x = 0; x < width; x += 8) { const GLubyte *lines[4]; fxt1_quantize(encoded, lines, comps); } } }