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