177a5bcaff43df8d54e0e0ef833726e4b41d7eb36Eric Anholt#include "intel_context.h"
277a5bcaff43df8d54e0e0ef833726e4b41d7eb36Eric Anholt#include "intel_tex.h"
3ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/enums.h"
47554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt#include "main/formats.h"
5645f220710923f72e80281fa75e577e133b5a53cBrian Paul
6645f220710923f72e80281fa75e577e133b5a53cBrian Paul/**
7e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt * Returns the renderbuffer DataType for a MESA_FORMAT.
8e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt */
9e339b669a14f37698b842c0c51c1f5e4001ef12fEric AnholtGLenum
10e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholtintel_mesa_format_to_rb_datatype(gl_format format)
11e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt{
12e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   switch (format) {
13e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_ARGB8888:
14e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_XRGB8888:
15e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_SARGB8:
16e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_R8:
170a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul   case MESA_FORMAT_GR88:
18e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_A8:
19dad95c112f09b9978d71ababe80c4e34121d49f0Eric Anholt   case MESA_FORMAT_I8:
20dad95c112f09b9978d71ababe80c4e34121d49f0Eric Anholt   case MESA_FORMAT_L8:
21e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_AL88:
22e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_RGB565:
23e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_ARGB1555:
24e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_ARGB4444:
25b5c847c7ca06823af3b72324056a2e478caca70bChad Versace   case MESA_FORMAT_S8:
26e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt      return GL_UNSIGNED_BYTE;
27e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_R16:
28e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_RG1616:
29e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_Z16:
30e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt      return GL_UNSIGNED_SHORT;
31e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_X8_Z24:
32e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt      return GL_UNSIGNED_INT;
33e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   case MESA_FORMAT_S8_Z24:
34e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt      return GL_UNSIGNED_INT_24_8_EXT;
3587478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_RGBA_FLOAT32:
3687478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_RG_FLOAT32:
3787478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_R_FLOAT32:
3887478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_INTENSITY_FLOAT32:
3987478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_LUMINANCE_FLOAT32:
4087478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_ALPHA_FLOAT32:
4187478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
4287478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt      return GL_FLOAT;
4387478cd6e3e6349abc2688b390f8845d1e21af3dEric Anholt
44507e71e45a2e46c6e01423ab00948a72f435396cEric Anholt      /* The core depthstencil wrappers demand this. */
45507e71e45a2e46c6e01423ab00948a72f435396cEric Anholt   case MESA_FORMAT_Z32_FLOAT_X24S8:
46507e71e45a2e46c6e01423ab00948a72f435396cEric Anholt      return GL_FLOAT_32_UNSIGNED_INT_24_8_REV;
47507e71e45a2e46c6e01423ab00948a72f435396cEric Anholt
48e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   default:
49b5444a6ebd48a2bf4c258be98aac831636164e10Eric Anholt      /* Unsupported format.  We may hit this when people ask for FBO-incomplete
50b5444a6ebd48a2bf4c258be98aac831636164e10Eric Anholt       * formats.
51b5444a6ebd48a2bf4c258be98aac831636164e10Eric Anholt       */
52b5444a6ebd48a2bf4c258be98aac831636164e10Eric Anholt      return GL_NONE;
53e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt   }
54e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt}
55e339b669a14f37698b842c0c51c1f5e4001ef12fEric Anholt
5677a5bcaff43df8d54e0e0ef833726e4b41d7eb36Eric Anholtint intel_compressed_num_bytes(GLuint mesaFormat)
5777a5bcaff43df8d54e0e0ef833726e4b41d7eb36Eric Anholt{
587554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt   GLuint bw, bh;
597554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt   GLuint block_size;
607554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt
617554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt   block_size = _mesa_get_format_bytes(mesaFormat);
627554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt   _mesa_get_format_block_size(mesaFormat, &bw, &bh);
637554b83a21bd62b20df5a7327b69f08108ac9ab6Eric Anholt
6418a6e5ee73c5cef283c6bef906e5f8e4f60d4000Eric Anholt   return block_size / bw;
6577a5bcaff43df8d54e0e0ef833726e4b41d7eb36Eric Anholt}
66