u_format.h revision 42b15b26fd946c9511bd4bd5f23ec7e76e15507c
115422b2d99be074e1d6ac064b6f791245975da83José Fonseca/************************************************************************** 215422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 315422b2d99be074e1d6ac064b6f791245975da83José Fonseca * Copyright 2009 Vmware, Inc. 415422b2d99be074e1d6ac064b6f791245975da83José Fonseca * All Rights Reserved. 515422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 615422b2d99be074e1d6ac064b6f791245975da83José Fonseca * Permission is hereby granted, free of charge, to any person obtaining a 715422b2d99be074e1d6ac064b6f791245975da83José Fonseca * copy of this software and associated documentation files (the 815422b2d99be074e1d6ac064b6f791245975da83José Fonseca * "Software"), to deal in the Software without restriction, including 915422b2d99be074e1d6ac064b6f791245975da83José Fonseca * without limitation the rights to use, copy, modify, merge, publish, 1015422b2d99be074e1d6ac064b6f791245975da83José Fonseca * distribute, sub license, and/or sell copies of the Software, and to 1115422b2d99be074e1d6ac064b6f791245975da83José Fonseca * permit persons to whom the Software is furnished to do so, subject to 1215422b2d99be074e1d6ac064b6f791245975da83José Fonseca * the following conditions: 1315422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 1415422b2d99be074e1d6ac064b6f791245975da83José Fonseca * The above copyright notice and this permission notice (including the 1515422b2d99be074e1d6ac064b6f791245975da83José Fonseca * next paragraph) shall be included in all copies or substantial portions 1615422b2d99be074e1d6ac064b6f791245975da83José Fonseca * of the Software. 1715422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 1815422b2d99be074e1d6ac064b6f791245975da83José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1915422b2d99be074e1d6ac064b6f791245975da83José Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2015422b2d99be074e1d6ac064b6f791245975da83José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 2115422b2d99be074e1d6ac064b6f791245975da83José Fonseca * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 2215422b2d99be074e1d6ac064b6f791245975da83José Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2315422b2d99be074e1d6ac064b6f791245975da83José Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2415422b2d99be074e1d6ac064b6f791245975da83José Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2515422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 2615422b2d99be074e1d6ac064b6f791245975da83José Fonseca **************************************************************************/ 2715422b2d99be074e1d6ac064b6f791245975da83José Fonseca 2815422b2d99be074e1d6ac064b6f791245975da83José Fonseca 2915422b2d99be074e1d6ac064b6f791245975da83José Fonseca#ifndef U_FORMAT_H 3015422b2d99be074e1d6ac064b6f791245975da83José Fonseca#define U_FORMAT_H 3115422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3315422b2d99be074e1d6ac064b6f791245975da83José Fonseca#include "pipe/p_format.h" 3415422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3515422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3615422b2d99be074e1d6ac064b6f791245975da83José Fonsecaenum util_format_layout { 3742b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_LAYOUT_SCALAR = 0, 3842b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_LAYOUT_ARITH = 1, 3942b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_LAYOUT_ARRAY = 2, 4042b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_LAYOUT_YUV = 3, 4142b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_LAYOUT_DXT = 4 4215422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 4315422b2d99be074e1d6ac064b6f791245975da83José Fonseca 4415422b2d99be074e1d6ac064b6f791245975da83José Fonseca 4515422b2d99be074e1d6ac064b6f791245975da83José Fonsecastruct util_format_block 4615422b2d99be074e1d6ac064b6f791245975da83José Fonseca{ 4715422b2d99be074e1d6ac064b6f791245975da83José Fonseca /** Block width in pixels */ 4815422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned width; 4915422b2d99be074e1d6ac064b6f791245975da83José Fonseca 5015422b2d99be074e1d6ac064b6f791245975da83José Fonseca /** Block height in pixels */ 5115422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned height; 5215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 5315422b2d99be074e1d6ac064b6f791245975da83José Fonseca /** Block size in bytes */ 5415422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned bits; 5515422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 5615422b2d99be074e1d6ac064b6f791245975da83José Fonseca 5715422b2d99be074e1d6ac064b6f791245975da83José Fonseca 5815422b2d99be074e1d6ac064b6f791245975da83José Fonsecaenum util_format_type { 5915422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_TYPE_VOID = 0, 6015422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_TYPE_UNSIGNED = 1, 6115422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_TYPE_SIGNED = 2, 6215422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_TYPE_FIXED = 3, 6315422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_TYPE_FLOAT = 4 6415422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 6515422b2d99be074e1d6ac064b6f791245975da83José Fonseca 6615422b2d99be074e1d6ac064b6f791245975da83José Fonseca 6715422b2d99be074e1d6ac064b6f791245975da83José Fonsecaenum util_format_swizzle { 6815422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_X = 0, 6915422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_Y = 1, 7015422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_Z = 2, 7115422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_W = 3, 7215422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_0 = 4, 7315422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_1 = 5, 7415422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_SWIZZLE_NONE = 6 7515422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 7615422b2d99be074e1d6ac064b6f791245975da83José Fonseca 7715422b2d99be074e1d6ac064b6f791245975da83José Fonseca 7815422b2d99be074e1d6ac064b6f791245975da83José Fonsecaenum util_format_colorspace { 7915422b2d99be074e1d6ac064b6f791245975da83José Fonseca UTIL_FORMAT_COLORSPACE_RGB = 0, 8042b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_COLORSPACE_SRGB = 1, 8142b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_COLORSPACE_YUV = 2, 8242b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca UTIL_FORMAT_COLORSPACE_ZS = 3, 8315422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 8415422b2d99be074e1d6ac064b6f791245975da83José Fonseca 8515422b2d99be074e1d6ac064b6f791245975da83José Fonseca 8615422b2d99be074e1d6ac064b6f791245975da83José Fonsecastruct util_format_channel_description 8715422b2d99be074e1d6ac064b6f791245975da83José Fonseca{ 8815422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned type:6; 8915422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned normalized:1; 9015422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned size:9; 9115422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 9215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 9315422b2d99be074e1d6ac064b6f791245975da83José Fonseca 9415422b2d99be074e1d6ac064b6f791245975da83José Fonsecastruct util_format_description 9515422b2d99be074e1d6ac064b6f791245975da83José Fonseca{ 9615422b2d99be074e1d6ac064b6f791245975da83José Fonseca enum pipe_format format; 9715422b2d99be074e1d6ac064b6f791245975da83José Fonseca const char *name; 9815422b2d99be074e1d6ac064b6f791245975da83José Fonseca struct util_format_block block; 9915422b2d99be074e1d6ac064b6f791245975da83José Fonseca enum util_format_layout layout; 10015422b2d99be074e1d6ac064b6f791245975da83José Fonseca struct util_format_channel_description channel[4]; 10115422b2d99be074e1d6ac064b6f791245975da83José Fonseca unsigned char swizzle[4]; 10215422b2d99be074e1d6ac064b6f791245975da83José Fonseca enum util_format_colorspace colorspace; 10315422b2d99be074e1d6ac064b6f791245975da83José Fonseca}; 10415422b2d99be074e1d6ac064b6f791245975da83José Fonseca 10515422b2d99be074e1d6ac064b6f791245975da83José Fonseca 10615422b2d99be074e1d6ac064b6f791245975da83José Fonsecaextern const struct util_format_description 10715422b2d99be074e1d6ac064b6f791245975da83José Fonsecautil_format_description_table[]; 10815422b2d99be074e1d6ac064b6f791245975da83José Fonseca 10915422b2d99be074e1d6ac064b6f791245975da83José Fonseca 11015422b2d99be074e1d6ac064b6f791245975da83José Fonsecaconst struct util_format_description * 11115422b2d99be074e1d6ac064b6f791245975da83José Fonsecautil_format_description(enum pipe_format format); 11215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 11315422b2d99be074e1d6ac064b6f791245975da83José Fonseca 11415422b2d99be074e1d6ac064b6f791245975da83José Fonseca#endif /* ! U_FORMAT_H */ 115