1#include "intel_context.h"
2#include "intel_tex.h"
3#include "main/enums.h"
4#include "main/formats.h"
5
6/**
7 * Returns the renderbuffer DataType for a MESA_FORMAT.
8 */
9GLenum
10intel_mesa_format_to_rb_datatype(gl_format format)
11{
12   switch (format) {
13   case MESA_FORMAT_ARGB8888:
14   case MESA_FORMAT_XRGB8888:
15   case MESA_FORMAT_SARGB8:
16   case MESA_FORMAT_R8:
17   case MESA_FORMAT_GR88:
18   case MESA_FORMAT_A8:
19   case MESA_FORMAT_I8:
20   case MESA_FORMAT_L8:
21   case MESA_FORMAT_AL88:
22   case MESA_FORMAT_RGB565:
23   case MESA_FORMAT_ARGB1555:
24   case MESA_FORMAT_ARGB4444:
25   case MESA_FORMAT_S8:
26      return GL_UNSIGNED_BYTE;
27   case MESA_FORMAT_R16:
28   case MESA_FORMAT_RG1616:
29   case MESA_FORMAT_Z16:
30      return GL_UNSIGNED_SHORT;
31   case MESA_FORMAT_X8_Z24:
32      return GL_UNSIGNED_INT;
33   case MESA_FORMAT_S8_Z24:
34      return GL_UNSIGNED_INT_24_8_EXT;
35   case MESA_FORMAT_RGBA_FLOAT32:
36   case MESA_FORMAT_RG_FLOAT32:
37   case MESA_FORMAT_R_FLOAT32:
38   case MESA_FORMAT_INTENSITY_FLOAT32:
39   case MESA_FORMAT_LUMINANCE_FLOAT32:
40   case MESA_FORMAT_ALPHA_FLOAT32:
41   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
42      return GL_FLOAT;
43
44      /* The core depthstencil wrappers demand this. */
45   case MESA_FORMAT_Z32_FLOAT_X24S8:
46      return GL_FLOAT_32_UNSIGNED_INT_24_8_REV;
47
48   default:
49      /* Unsupported format.  We may hit this when people ask for FBO-incomplete
50       * formats.
51       */
52      return GL_NONE;
53   }
54}
55
56int intel_compressed_num_bytes(GLuint mesaFormat)
57{
58   GLuint bw, bh;
59   GLuint block_size;
60
61   block_size = _mesa_get_format_bytes(mesaFormat);
62   _mesa_get_format_block_size(mesaFormat, &bw, &bh);
63
64   return block_size / bw;
65}
66