| #include "intel_context.h" |
| #include "intel_tex.h" |
| #include "main/enums.h" |
| #include "main/formats.h" |
| |
| /** |
| * Returns the renderbuffer DataType for a MESA_FORMAT. |
| */ |
| GLenum |
| intel_mesa_format_to_rb_datatype(gl_format format) |
| { |
| switch (format) { |
| case MESA_FORMAT_ARGB8888: |
| case MESA_FORMAT_XRGB8888: |
| case MESA_FORMAT_SARGB8: |
| case MESA_FORMAT_R8: |
| case MESA_FORMAT_GR88: |
| case MESA_FORMAT_A8: |
| case MESA_FORMAT_I8: |
| case MESA_FORMAT_L8: |
| case MESA_FORMAT_AL88: |
| case MESA_FORMAT_RGB565: |
| case MESA_FORMAT_ARGB1555: |
| case MESA_FORMAT_ARGB4444: |
| case MESA_FORMAT_S8: |
| return GL_UNSIGNED_BYTE; |
| case MESA_FORMAT_R16: |
| case MESA_FORMAT_RG1616: |
| case MESA_FORMAT_Z16: |
| return GL_UNSIGNED_SHORT; |
| case MESA_FORMAT_X8_Z24: |
| return GL_UNSIGNED_INT; |
| case MESA_FORMAT_S8_Z24: |
| return GL_UNSIGNED_INT_24_8_EXT; |
| case MESA_FORMAT_RGBA_FLOAT32: |
| case MESA_FORMAT_RG_FLOAT32: |
| case MESA_FORMAT_R_FLOAT32: |
| case MESA_FORMAT_INTENSITY_FLOAT32: |
| case MESA_FORMAT_LUMINANCE_FLOAT32: |
| case MESA_FORMAT_ALPHA_FLOAT32: |
| case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: |
| return GL_FLOAT; |
| |
| /* The core depthstencil wrappers demand this. */ |
| case MESA_FORMAT_Z32_FLOAT_X24S8: |
| return GL_FLOAT_32_UNSIGNED_INT_24_8_REV; |
| |
| default: |
| /* Unsupported format. We may hit this when people ask for FBO-incomplete |
| * formats. |
| */ |
| return GL_NONE; |
| } |
| } |
| |
| int intel_compressed_num_bytes(GLuint mesaFormat) |
| { |
| GLuint bw, bh; |
| GLuint block_size; |
| |
| block_size = _mesa_get_format_bytes(mesaFormat); |
| _mesa_get_format_block_size(mesaFormat, &bw, &bh); |
| |
| return block_size / bw; |
| } |