summaryrefslogtreecommitdiff
path: root/xc/extras/Mesa/src/texformat.h
diff options
context:
space:
mode:
Diffstat (limited to 'xc/extras/Mesa/src/texformat.h')
-rw-r--r--xc/extras/Mesa/src/texformat.h76
1 files changed, 63 insertions, 13 deletions
diff --git a/xc/extras/Mesa/src/texformat.h b/xc/extras/Mesa/src/texformat.h
index 8f5e7de75..72b473cdf 100644
--- a/xc/extras/Mesa/src/texformat.h
+++ b/xc/extras/Mesa/src/texformat.h
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 3.4
+ * Version: 3.5
*
- * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2001 Brian Paul 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"),
@@ -29,19 +29,28 @@
#ifndef TEXFORMAT_H
#define TEXFORMAT_H
-#include "types.h"
+#include "mtypes.h"
/* The Mesa internal texture image types. These will be set to their
* default value, but may be changed by drivers as required.
*/
+enum _format {
+ /* Hardware-friendly formats. Drivers can override the default
+ * formats and convert texture images to one of these as required.
+ * These formats are all little endian, as shown below. They will be
+ * most useful for x86-based PC graphics card drivers.
+ *
+ * NOTE: In the default case, some of these formats will be
+ * duplicates of the default formats listed above. However, these
+ * formats guarantee their internal component sizes, while GLchan may
+ * vary betwen GLubyte, GLushort and GLfloat.
+ */
/* msb <------ TEXEL BITS -----------> lsb */
-enum _format { /* ---- ---- ---- ---- ---- ---- ---- ---- */
+ /* ---- ---- ---- ---- ---- ---- ---- ---- */
MESA_FORMAT_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
- MESA_FORMAT_ABGR8888, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
MESA_FORMAT_ARGB8888, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */
MESA_FORMAT_RGB888, /* RRRR RRRR GGGG GGGG BBBB BBBB */
- MESA_FORMAT_BGR888, /* BBBB BBBB GGGG GGGG RRRR RRRR */
MESA_FORMAT_RGB565, /* RRRR RGGG GGGB BBBB */
MESA_FORMAT_ARGB4444, /* AAAA RRRR GGGG BBBB */
MESA_FORMAT_ARGB1555, /* ARRR RRGG GGGB BBBB */
@@ -50,21 +59,60 @@ enum _format { /* ---- ---- ---- ---- ---- ---- ---- ---- */
MESA_FORMAT_A8, /* AAAA AAAA */
MESA_FORMAT_L8, /* LLLL LLLL */
MESA_FORMAT_I8, /* IIII IIII */
- MESA_FORMAT_CI8 /* CCCC CCCC */
+ MESA_FORMAT_CI8, /* CCCC CCCC */
+
+ /* Generic GLchan-based formats. These are the default formats used
+ * by the software rasterizer and, unless the driver overrides the
+ * texture image functions, incoming images will be converted to one
+ * of these formats. Components are arrays of GLchan values, so
+ * there will be no big/little endian issues.
+ *
+ * NOTE: Because these are based on the GLchan datatype, one cannot
+ * assume 8 bits per channel with these formats. If you require
+ * GLubyte per channel, use one of the hardware formats above.
+ */
+ MESA_FORMAT_RGBA,
+ MESA_FORMAT_RGB,
+ MESA_FORMAT_ALPHA,
+ MESA_FORMAT_LUMINANCE,
+ MESA_FORMAT_LUMINANCE_ALPHA,
+ MESA_FORMAT_INTENSITY,
+ MESA_FORMAT_COLOR_INDEX,
+ MESA_FORMAT_DEPTH_COMPONENT
};
-extern void
-_mesa_init_texture_format( GLcontext *ctx,
- struct gl_texture_image *texImage,
- GLenum internalFormat );
+extern GLboolean
+_mesa_is_hardware_tex_format( const struct gl_texture_format *format );
+
+extern const struct gl_texture_format *
+_mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
+ GLenum format, GLenum type );
+
+extern GLint
+_mesa_base_compressed_texformat(GLcontext *ctx, GLint intFormat);
+
+extern GLint
+_mesa_compressed_texture_size(GLcontext *ctx,
+ const struct gl_texture_image *texImage);
+/* The default formats, GLchan per component:
+ */
+extern const struct gl_texture_format _mesa_texformat_rgba;
+extern const struct gl_texture_format _mesa_texformat_rgb;
+extern const struct gl_texture_format _mesa_texformat_alpha;
+extern const struct gl_texture_format _mesa_texformat_luminance;
+extern const struct gl_texture_format _mesa_texformat_luminance_alpha;
+extern const struct gl_texture_format _mesa_texformat_intensity;
+extern const struct gl_texture_format _mesa_texformat_color_index;
+extern const struct gl_texture_format _mesa_texformat_depth_component;
+
+/* The hardware-friendly formats:
+ */
extern const struct gl_texture_format _mesa_texformat_rgba8888;
-extern const struct gl_texture_format _mesa_texformat_abgr8888;
extern const struct gl_texture_format _mesa_texformat_argb8888;
extern const struct gl_texture_format _mesa_texformat_rgb888;
-extern const struct gl_texture_format _mesa_texformat_bgr888;
extern const struct gl_texture_format _mesa_texformat_rgb565;
extern const struct gl_texture_format _mesa_texformat_argb4444;
extern const struct gl_texture_format _mesa_texformat_argb1555;
@@ -75,6 +123,8 @@ extern const struct gl_texture_format _mesa_texformat_l8;
extern const struct gl_texture_format _mesa_texformat_i8;
extern const struct gl_texture_format _mesa_texformat_ci8;
+/* The null format:
+ */
extern const struct gl_texture_format _mesa_null_texformat;
#endif