summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-05-13 14:48:13 -0700
committerEric Anholt <eric@anholt.net>2010-05-14 11:27:59 -0700
commit7554b83a21bd62b20df5a7327b69f08108ac9ab6 (patch)
treeb0c2856d5778831759e2b9e82075df3614cae4f2
parent07ff65925fdcc2d0ff449b6474f3cbd1351b2b18 (diff)
intel: Handle arbitrary compressed formats in intel_compressed_num_bytes.
Note that we don't support arbitrary block size for compressed quite yet -- block height of 4 is hard-coded all over the place. Bug #27098 (srgb dxt1 producing a bytes per pixel of 0).
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_format.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c
index 7be5231eae..610a169beb 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_format.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_format.c
@@ -1,7 +1,7 @@
#include "intel_context.h"
#include "intel_tex.h"
#include "main/enums.h"
-
+#include "main/formats.h"
/**
* Choose hardware texture format given the user's glTexImage parameters.
@@ -208,22 +208,11 @@ intelChooseTextureFormat(GLcontext * ctx, GLint internalFormat,
int intel_compressed_num_bytes(GLuint mesaFormat)
{
- int bytes = 0;
- switch(mesaFormat) {
-
- case MESA_FORMAT_RGB_FXT1:
- case MESA_FORMAT_RGBA_FXT1:
- case MESA_FORMAT_RGB_DXT1:
- case MESA_FORMAT_RGBA_DXT1:
- bytes = 2;
- break;
-
- case MESA_FORMAT_RGBA_DXT3:
- case MESA_FORMAT_RGBA_DXT5:
- bytes = 4;
- default:
- break;
- }
-
- return bytes;
+ GLuint bw, bh;
+ GLuint block_size;
+
+ block_size = _mesa_get_format_bytes(mesaFormat);
+ _mesa_get_format_block_size(mesaFormat, &bw, &bh);
+
+ return block_size / bh;
}