1 /************************************************************************** 2 * 3 * Copyright 2007 VMware, Inc. 4 * Copyright (c) 2008 VMware, Inc. 5 * All Rights Reserved. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * copy of this software and associated documentation files (the 9 * "Software"), to deal in the Software without restriction, including 10 * without limitation the rights to use, copy, modify, merge, publish, 11 * distribute, sub license, and/or sell copies of the Software, and to 12 * permit persons to whom the Software is furnished to do so, subject to 13 * the following conditions: 14 * 15 * The above copyright notice and this permission notice (including the 16 * next paragraph) shall be included in all copies or substantial portions 17 * of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 23 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 * 27 **************************************************************************/ 28 29 #ifndef PIPE_FORMAT_H 30 #define PIPE_FORMAT_H 31 32 #include "p_config.h" 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 /** 39 * Formats for textures, surfaces and vertex data 40 */ 41 enum pipe_format { 42 PIPE_FORMAT_NONE, 43 /* Vertex formats must be first and must be <= 255. */ 44 PIPE_FORMAT_R64_UINT, /**< raw doubles (ARB_vertex_attrib_64bit) */ 45 PIPE_FORMAT_R64G64_UINT, 46 PIPE_FORMAT_R64G64B64_UINT, 47 PIPE_FORMAT_R64G64B64A64_UINT, 48 PIPE_FORMAT_R64_FLOAT, /**< doubles converted to float */ 49 PIPE_FORMAT_R64G64_FLOAT, 50 PIPE_FORMAT_R64G64B64_FLOAT, 51 PIPE_FORMAT_R64G64B64A64_FLOAT, 52 PIPE_FORMAT_R32_FLOAT, 53 PIPE_FORMAT_R32G32_FLOAT, 54 PIPE_FORMAT_R32G32B32_FLOAT, 55 PIPE_FORMAT_R32G32B32A32_FLOAT, 56 PIPE_FORMAT_R32_UNORM, 57 PIPE_FORMAT_R32G32_UNORM, 58 PIPE_FORMAT_R32G32B32_UNORM, 59 PIPE_FORMAT_R32G32B32A32_UNORM, 60 PIPE_FORMAT_R32_USCALED, 61 PIPE_FORMAT_R32G32_USCALED, 62 PIPE_FORMAT_R32G32B32_USCALED, 63 PIPE_FORMAT_R32G32B32A32_USCALED, 64 PIPE_FORMAT_R32_SNORM, 65 PIPE_FORMAT_R32G32_SNORM, 66 PIPE_FORMAT_R32G32B32_SNORM, 67 PIPE_FORMAT_R32G32B32A32_SNORM, 68 PIPE_FORMAT_R32_SSCALED, 69 PIPE_FORMAT_R32G32_SSCALED, 70 PIPE_FORMAT_R32G32B32_SSCALED, 71 PIPE_FORMAT_R32G32B32A32_SSCALED, 72 PIPE_FORMAT_R16_UNORM, 73 PIPE_FORMAT_R16G16_UNORM, 74 PIPE_FORMAT_R16G16B16_UNORM, 75 PIPE_FORMAT_R16G16B16A16_UNORM, 76 PIPE_FORMAT_R16_USCALED, 77 PIPE_FORMAT_R16G16_USCALED, 78 PIPE_FORMAT_R16G16B16_USCALED, 79 PIPE_FORMAT_R16G16B16A16_USCALED, 80 PIPE_FORMAT_R16_SNORM, 81 PIPE_FORMAT_R16G16_SNORM, 82 PIPE_FORMAT_R16G16B16_SNORM, 83 PIPE_FORMAT_R16G16B16A16_SNORM, 84 PIPE_FORMAT_R16_SSCALED, 85 PIPE_FORMAT_R16G16_SSCALED, 86 PIPE_FORMAT_R16G16B16_SSCALED, 87 PIPE_FORMAT_R16G16B16A16_SSCALED, 88 PIPE_FORMAT_R8_UNORM, 89 PIPE_FORMAT_R8G8_UNORM, 90 PIPE_FORMAT_R8G8B8_UNORM, 91 PIPE_FORMAT_R8G8B8A8_UNORM, 92 PIPE_FORMAT_B8G8R8A8_UNORM, 93 PIPE_FORMAT_R8_USCALED, 94 PIPE_FORMAT_R8G8_USCALED, 95 PIPE_FORMAT_R8G8B8_USCALED, 96 PIPE_FORMAT_B8G8R8_USCALED, 97 PIPE_FORMAT_R8G8B8A8_USCALED, 98 PIPE_FORMAT_B8G8R8A8_USCALED, 99 PIPE_FORMAT_A8B8G8R8_USCALED, 100 PIPE_FORMAT_R8_SNORM, 101 PIPE_FORMAT_R8G8_SNORM, 102 PIPE_FORMAT_R8G8B8_SNORM, 103 PIPE_FORMAT_B8G8R8_SNORM, 104 PIPE_FORMAT_R8G8B8A8_SNORM, 105 PIPE_FORMAT_B8G8R8A8_SNORM, 106 PIPE_FORMAT_R8_SSCALED, 107 PIPE_FORMAT_R8G8_SSCALED, 108 PIPE_FORMAT_R8G8B8_SSCALED, 109 PIPE_FORMAT_B8G8R8_SSCALED, 110 PIPE_FORMAT_R8G8B8A8_SSCALED, 111 PIPE_FORMAT_B8G8R8A8_SSCALED, 112 PIPE_FORMAT_A8B8G8R8_SSCALED, 113 PIPE_FORMAT_A8R8G8B8_UNORM, 114 PIPE_FORMAT_R32_FIXED, 115 PIPE_FORMAT_R32G32_FIXED, 116 PIPE_FORMAT_R32G32B32_FIXED, 117 PIPE_FORMAT_R32G32B32A32_FIXED, 118 PIPE_FORMAT_R16_FLOAT, 119 PIPE_FORMAT_R16G16_FLOAT, 120 PIPE_FORMAT_R16G16B16_FLOAT, 121 PIPE_FORMAT_R16G16B16A16_FLOAT, 122 PIPE_FORMAT_R8_UINT, 123 PIPE_FORMAT_R8G8_UINT, 124 PIPE_FORMAT_R8G8B8_UINT, 125 PIPE_FORMAT_R8G8B8A8_UINT, 126 PIPE_FORMAT_R8_SINT, 127 PIPE_FORMAT_R8G8_SINT, 128 PIPE_FORMAT_R8G8B8_SINT, 129 PIPE_FORMAT_R8G8B8A8_SINT, 130 PIPE_FORMAT_R16_UINT, 131 PIPE_FORMAT_R16G16_UINT, 132 PIPE_FORMAT_R16G16B16_UINT, 133 PIPE_FORMAT_R16G16B16A16_UINT, 134 PIPE_FORMAT_R16_SINT, 135 PIPE_FORMAT_R16G16_SINT, 136 PIPE_FORMAT_R16G16B16_SINT, 137 PIPE_FORMAT_R16G16B16A16_SINT, 138 PIPE_FORMAT_R32_UINT, 139 PIPE_FORMAT_R32G32_UINT, 140 PIPE_FORMAT_R32G32B32_UINT, 141 PIPE_FORMAT_R32G32B32A32_UINT, 142 PIPE_FORMAT_R32_SINT, 143 PIPE_FORMAT_R32G32_SINT, 144 PIPE_FORMAT_R32G32B32_SINT, 145 PIPE_FORMAT_R32G32B32A32_SINT, 146 147 PIPE_FORMAT_R10G10B10A2_UNORM, 148 PIPE_FORMAT_R10G10B10A2_SNORM, 149 PIPE_FORMAT_R10G10B10A2_USCALED, 150 PIPE_FORMAT_R10G10B10A2_SSCALED, 151 152 PIPE_FORMAT_B10G10R10A2_UNORM, 153 PIPE_FORMAT_B10G10R10A2_SNORM, 154 PIPE_FORMAT_B10G10R10A2_USCALED, 155 PIPE_FORMAT_B10G10R10A2_SSCALED, 156 157 PIPE_FORMAT_R11G11B10_FLOAT, 158 159 PIPE_FORMAT_B10G10R10A2_UINT, 160 PIPE_FORMAT_B10G10R10A2_SINT, 161 162 /* End of vertex formats. */ 163 164 /* Texture-only formats are below. */ 165 PIPE_FORMAT_B8G8R8_UNORM, 166 PIPE_FORMAT_B8G8R8X8_UNORM, 167 PIPE_FORMAT_X8B8G8R8_UNORM, 168 PIPE_FORMAT_X8R8G8B8_UNORM, 169 PIPE_FORMAT_B5G5R5A1_UNORM, 170 PIPE_FORMAT_R4G4B4A4_UNORM, 171 PIPE_FORMAT_B4G4R4A4_UNORM, 172 PIPE_FORMAT_R5G6B5_UNORM, 173 PIPE_FORMAT_B5G6R5_UNORM, 174 PIPE_FORMAT_L8_UNORM, /**< ubyte luminance */ 175 PIPE_FORMAT_A8_UNORM, /**< ubyte alpha */ 176 PIPE_FORMAT_I8_UNORM, /**< ubyte intensity */ 177 PIPE_FORMAT_L8A8_UNORM, /**< ubyte alpha, luminance */ 178 PIPE_FORMAT_L16_UNORM, /**< ushort luminance */ 179 PIPE_FORMAT_UYVY, 180 PIPE_FORMAT_YUYV, 181 PIPE_FORMAT_Z16_UNORM, 182 PIPE_FORMAT_Z16_UNORM_S8_UINT, 183 PIPE_FORMAT_Z32_UNORM, 184 PIPE_FORMAT_Z32_FLOAT, 185 PIPE_FORMAT_Z24_UNORM_S8_UINT, 186 PIPE_FORMAT_S8_UINT_Z24_UNORM, 187 PIPE_FORMAT_Z24X8_UNORM, 188 PIPE_FORMAT_X8Z24_UNORM, 189 PIPE_FORMAT_S8_UINT, /**< ubyte stencil */ 190 191 /* sRGB formats */ 192 PIPE_FORMAT_L8_SRGB, 193 PIPE_FORMAT_R8_SRGB, 194 PIPE_FORMAT_L8A8_SRGB, 195 PIPE_FORMAT_R8G8_SRGB, 196 PIPE_FORMAT_R8G8B8_SRGB, 197 PIPE_FORMAT_B8G8R8_SRGB, 198 PIPE_FORMAT_A8B8G8R8_SRGB, 199 PIPE_FORMAT_X8B8G8R8_SRGB, 200 PIPE_FORMAT_B8G8R8A8_SRGB, 201 PIPE_FORMAT_B8G8R8X8_SRGB, 202 PIPE_FORMAT_A8R8G8B8_SRGB, 203 PIPE_FORMAT_X8R8G8B8_SRGB, 204 PIPE_FORMAT_R8G8B8A8_SRGB, 205 206 /* compressed formats */ 207 PIPE_FORMAT_DXT1_RGB, 208 PIPE_FORMAT_DXT1_RGBA, 209 PIPE_FORMAT_DXT3_RGBA, 210 PIPE_FORMAT_DXT5_RGBA, 211 212 /* sRGB, compressed */ 213 PIPE_FORMAT_DXT1_SRGB, 214 PIPE_FORMAT_DXT1_SRGBA, 215 PIPE_FORMAT_DXT3_SRGBA, 216 PIPE_FORMAT_DXT5_SRGBA, 217 218 /* rgtc compressed */ 219 PIPE_FORMAT_RGTC1_UNORM, 220 PIPE_FORMAT_RGTC1_SNORM, 221 PIPE_FORMAT_RGTC2_UNORM, 222 PIPE_FORMAT_RGTC2_SNORM, 223 224 PIPE_FORMAT_R8G8_B8G8_UNORM, 225 PIPE_FORMAT_G8R8_G8B8_UNORM, 226 227 /* mixed formats */ 228 PIPE_FORMAT_R8SG8SB8UX8U_NORM, 229 PIPE_FORMAT_R5SG5SB6U_NORM, 230 231 /* TODO: re-order these */ 232 PIPE_FORMAT_A8B8G8R8_UNORM, 233 PIPE_FORMAT_B5G5R5X1_UNORM, 234 PIPE_FORMAT_R9G9B9E5_FLOAT, 235 PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, 236 PIPE_FORMAT_R1_UNORM, 237 PIPE_FORMAT_R10G10B10X2_USCALED, 238 PIPE_FORMAT_R10G10B10X2_SNORM, 239 PIPE_FORMAT_L4A4_UNORM, 240 PIPE_FORMAT_A2R10G10B10_UNORM, 241 PIPE_FORMAT_A2B10G10R10_UNORM, 242 PIPE_FORMAT_R10SG10SB10SA2U_NORM, 243 PIPE_FORMAT_R8G8Bx_SNORM, 244 PIPE_FORMAT_R8G8B8X8_UNORM, 245 PIPE_FORMAT_B4G4R4X4_UNORM, 246 247 /* some stencil samplers formats */ 248 PIPE_FORMAT_X24S8_UINT, 249 PIPE_FORMAT_S8X24_UINT, 250 PIPE_FORMAT_X32_S8X24_UINT, 251 252 PIPE_FORMAT_R3G3B2_UNORM, 253 PIPE_FORMAT_B2G3R3_UNORM, 254 PIPE_FORMAT_L16A16_UNORM, 255 PIPE_FORMAT_A16_UNORM, 256 PIPE_FORMAT_I16_UNORM, 257 258 PIPE_FORMAT_LATC1_UNORM, 259 PIPE_FORMAT_LATC1_SNORM, 260 PIPE_FORMAT_LATC2_UNORM, 261 PIPE_FORMAT_LATC2_SNORM, 262 263 PIPE_FORMAT_A8_SNORM, 264 PIPE_FORMAT_L8_SNORM, 265 PIPE_FORMAT_L8A8_SNORM, 266 PIPE_FORMAT_I8_SNORM, 267 PIPE_FORMAT_A16_SNORM, 268 PIPE_FORMAT_L16_SNORM, 269 PIPE_FORMAT_L16A16_SNORM, 270 PIPE_FORMAT_I16_SNORM, 271 272 PIPE_FORMAT_A16_FLOAT, 273 PIPE_FORMAT_L16_FLOAT, 274 PIPE_FORMAT_L16A16_FLOAT, 275 PIPE_FORMAT_I16_FLOAT, 276 PIPE_FORMAT_A32_FLOAT, 277 PIPE_FORMAT_L32_FLOAT, 278 PIPE_FORMAT_L32A32_FLOAT, 279 PIPE_FORMAT_I32_FLOAT, 280 281 PIPE_FORMAT_YV12, 282 PIPE_FORMAT_YV16, 283 PIPE_FORMAT_IYUV, /**< aka I420 */ 284 PIPE_FORMAT_NV12, 285 PIPE_FORMAT_NV21, 286 287 /* PIPE_FORMAT_Y8_U8_V8_420_UNORM = IYUV */ 288 /* PIPE_FORMAT_Y8_U8V8_420_UNORM = NV12 */ 289 PIPE_FORMAT_Y8_U8_V8_422_UNORM, 290 PIPE_FORMAT_Y8_U8V8_422_UNORM, 291 PIPE_FORMAT_Y8_U8_V8_444_UNORM, 292 293 PIPE_FORMAT_Y16_U16_V16_420_UNORM, 294 /* PIPE_FORMAT_Y16_U16V16_420_UNORM */ 295 PIPE_FORMAT_Y16_U16_V16_422_UNORM, 296 PIPE_FORMAT_Y16_U16V16_422_UNORM, 297 PIPE_FORMAT_Y16_U16_V16_444_UNORM, 298 299 PIPE_FORMAT_A4R4_UNORM, 300 PIPE_FORMAT_R4A4_UNORM, 301 PIPE_FORMAT_R8A8_UNORM, 302 PIPE_FORMAT_A8R8_UNORM, 303 304 PIPE_FORMAT_R64_SINT, 305 306 PIPE_FORMAT_A8_UINT, 307 PIPE_FORMAT_I8_UINT, 308 PIPE_FORMAT_L8_UINT, 309 PIPE_FORMAT_L8A8_UINT, 310 311 PIPE_FORMAT_A8_SINT, 312 PIPE_FORMAT_I8_SINT, 313 PIPE_FORMAT_L8_SINT, 314 PIPE_FORMAT_L8A8_SINT, 315 316 PIPE_FORMAT_A16_UINT, 317 PIPE_FORMAT_I16_UINT, 318 PIPE_FORMAT_L16_UINT, 319 PIPE_FORMAT_L16A16_UINT, 320 321 PIPE_FORMAT_A16_SINT, 322 PIPE_FORMAT_I16_SINT, 323 PIPE_FORMAT_L16_SINT, 324 PIPE_FORMAT_L16A16_SINT, 325 326 PIPE_FORMAT_A32_UINT, 327 PIPE_FORMAT_I32_UINT, 328 PIPE_FORMAT_L32_UINT, 329 PIPE_FORMAT_L32A32_UINT, 330 331 PIPE_FORMAT_A32_SINT, 332 PIPE_FORMAT_I32_SINT, 333 PIPE_FORMAT_L32_SINT, 334 PIPE_FORMAT_L32A32_SINT, 335 336 PIPE_FORMAT_B8G8R8_UINT, 337 PIPE_FORMAT_B8G8R8A8_UINT, 338 339 PIPE_FORMAT_B8G8R8_SINT, 340 PIPE_FORMAT_B8G8R8A8_SINT, 341 342 PIPE_FORMAT_A8R8G8B8_UINT, 343 PIPE_FORMAT_A8B8G8R8_UINT, 344 PIPE_FORMAT_A2R10G10B10_UINT, 345 PIPE_FORMAT_A2B10G10R10_UINT, 346 PIPE_FORMAT_R5G6B5_UINT, 347 PIPE_FORMAT_B5G6R5_UINT, 348 PIPE_FORMAT_R5G5B5A1_UINT, 349 PIPE_FORMAT_B5G5R5A1_UINT, 350 PIPE_FORMAT_A1R5G5B5_UINT, 351 PIPE_FORMAT_A1B5G5R5_UINT, 352 PIPE_FORMAT_R4G4B4A4_UINT, 353 PIPE_FORMAT_B4G4R4A4_UINT, 354 PIPE_FORMAT_A4R4G4B4_UINT, 355 PIPE_FORMAT_A4B4G4R4_UINT, 356 PIPE_FORMAT_R3G3B2_UINT, 357 PIPE_FORMAT_B2G3R3_UINT, 358 359 PIPE_FORMAT_ETC1_RGB8, 360 361 PIPE_FORMAT_R8G8_R8B8_UNORM, 362 PIPE_FORMAT_G8R8_B8R8_UNORM, 363 364 PIPE_FORMAT_R8G8B8X8_SNORM, 365 PIPE_FORMAT_R8G8B8X8_SRGB, 366 PIPE_FORMAT_R8G8B8X8_UINT, 367 PIPE_FORMAT_R8G8B8X8_SINT, 368 PIPE_FORMAT_B10G10R10X2_UNORM, 369 PIPE_FORMAT_R16G16B16X16_UNORM, 370 PIPE_FORMAT_R16G16B16X16_SNORM, 371 PIPE_FORMAT_R16G16B16X16_FLOAT, 372 PIPE_FORMAT_R16G16B16X16_UINT, 373 PIPE_FORMAT_R16G16B16X16_SINT, 374 PIPE_FORMAT_R32G32B32X32_FLOAT, 375 PIPE_FORMAT_R32G32B32X32_UINT, 376 PIPE_FORMAT_R32G32B32X32_SINT, 377 378 PIPE_FORMAT_R8A8_SNORM, 379 PIPE_FORMAT_R16A16_UNORM, 380 PIPE_FORMAT_R16A16_SNORM, 381 PIPE_FORMAT_R16A16_FLOAT, 382 PIPE_FORMAT_R32A32_FLOAT, 383 PIPE_FORMAT_R8A8_UINT, 384 PIPE_FORMAT_R8A8_SINT, 385 PIPE_FORMAT_R16A16_UINT, 386 PIPE_FORMAT_R16A16_SINT, 387 PIPE_FORMAT_R32A32_UINT, 388 PIPE_FORMAT_R32A32_SINT, 389 PIPE_FORMAT_R10G10B10A2_UINT, 390 PIPE_FORMAT_R10G10B10A2_SINT, 391 392 PIPE_FORMAT_B5G6R5_SRGB, 393 394 PIPE_FORMAT_BPTC_RGBA_UNORM, 395 PIPE_FORMAT_BPTC_SRGBA, 396 PIPE_FORMAT_BPTC_RGB_FLOAT, 397 PIPE_FORMAT_BPTC_RGB_UFLOAT, 398 399 PIPE_FORMAT_G8R8_UNORM, 400 PIPE_FORMAT_G8R8_SNORM, 401 PIPE_FORMAT_G16R16_UNORM, 402 PIPE_FORMAT_G16R16_SNORM, 403 404 PIPE_FORMAT_A8B8G8R8_SNORM, 405 PIPE_FORMAT_X8B8G8R8_SNORM, 406 407 PIPE_FORMAT_ETC2_RGB8, 408 PIPE_FORMAT_ETC2_SRGB8, 409 PIPE_FORMAT_ETC2_RGB8A1, 410 PIPE_FORMAT_ETC2_SRGB8A1, 411 PIPE_FORMAT_ETC2_RGBA8, 412 PIPE_FORMAT_ETC2_SRGBA8, 413 PIPE_FORMAT_ETC2_R11_UNORM, 414 PIPE_FORMAT_ETC2_R11_SNORM, 415 PIPE_FORMAT_ETC2_RG11_UNORM, 416 PIPE_FORMAT_ETC2_RG11_SNORM, 417 418 PIPE_FORMAT_ASTC_4x4, 419 PIPE_FORMAT_ASTC_5x4, 420 PIPE_FORMAT_ASTC_5x5, 421 PIPE_FORMAT_ASTC_6x5, 422 PIPE_FORMAT_ASTC_6x6, 423 PIPE_FORMAT_ASTC_8x5, 424 PIPE_FORMAT_ASTC_8x6, 425 PIPE_FORMAT_ASTC_8x8, 426 PIPE_FORMAT_ASTC_10x5, 427 PIPE_FORMAT_ASTC_10x6, 428 PIPE_FORMAT_ASTC_10x8, 429 PIPE_FORMAT_ASTC_10x10, 430 PIPE_FORMAT_ASTC_12x10, 431 PIPE_FORMAT_ASTC_12x12, 432 433 PIPE_FORMAT_ASTC_4x4_SRGB, 434 PIPE_FORMAT_ASTC_5x4_SRGB, 435 PIPE_FORMAT_ASTC_5x5_SRGB, 436 PIPE_FORMAT_ASTC_6x5_SRGB, 437 PIPE_FORMAT_ASTC_6x6_SRGB, 438 PIPE_FORMAT_ASTC_8x5_SRGB, 439 PIPE_FORMAT_ASTC_8x6_SRGB, 440 PIPE_FORMAT_ASTC_8x8_SRGB, 441 PIPE_FORMAT_ASTC_10x5_SRGB, 442 PIPE_FORMAT_ASTC_10x6_SRGB, 443 PIPE_FORMAT_ASTC_10x8_SRGB, 444 PIPE_FORMAT_ASTC_10x10_SRGB, 445 PIPE_FORMAT_ASTC_12x10_SRGB, 446 PIPE_FORMAT_ASTC_12x12_SRGB, 447 448 PIPE_FORMAT_ASTC_3x3x3, 449 PIPE_FORMAT_ASTC_4x3x3, 450 PIPE_FORMAT_ASTC_4x4x3, 451 PIPE_FORMAT_ASTC_4x4x4, 452 PIPE_FORMAT_ASTC_5x4x4, 453 PIPE_FORMAT_ASTC_5x5x4, 454 PIPE_FORMAT_ASTC_5x5x5, 455 PIPE_FORMAT_ASTC_6x5x5, 456 PIPE_FORMAT_ASTC_6x6x5, 457 PIPE_FORMAT_ASTC_6x6x6, 458 459 PIPE_FORMAT_ASTC_3x3x3_SRGB, 460 PIPE_FORMAT_ASTC_4x3x3_SRGB, 461 PIPE_FORMAT_ASTC_4x4x3_SRGB, 462 PIPE_FORMAT_ASTC_4x4x4_SRGB, 463 PIPE_FORMAT_ASTC_5x4x4_SRGB, 464 PIPE_FORMAT_ASTC_5x5x4_SRGB, 465 PIPE_FORMAT_ASTC_5x5x5_SRGB, 466 PIPE_FORMAT_ASTC_6x5x5_SRGB, 467 PIPE_FORMAT_ASTC_6x6x5_SRGB, 468 PIPE_FORMAT_ASTC_6x6x6_SRGB, 469 470 PIPE_FORMAT_FXT1_RGB, 471 PIPE_FORMAT_FXT1_RGBA, 472 473 PIPE_FORMAT_P010, 474 PIPE_FORMAT_P012, 475 PIPE_FORMAT_P016, 476 477 PIPE_FORMAT_Y210, 478 PIPE_FORMAT_Y212, 479 PIPE_FORMAT_Y216, 480 481 PIPE_FORMAT_Y410, 482 PIPE_FORMAT_Y412, 483 PIPE_FORMAT_Y416, 484 485 PIPE_FORMAT_R10G10B10X2_UNORM, 486 PIPE_FORMAT_A1R5G5B5_UNORM, 487 PIPE_FORMAT_A1B5G5R5_UNORM, 488 PIPE_FORMAT_X1B5G5R5_UNORM, 489 PIPE_FORMAT_R5G5B5A1_UNORM, 490 PIPE_FORMAT_A4R4G4B4_UNORM, 491 PIPE_FORMAT_A4B4G4R4_UNORM, 492 493 PIPE_FORMAT_G8R8_SINT, 494 PIPE_FORMAT_A8B8G8R8_SINT, 495 PIPE_FORMAT_X8B8G8R8_SINT, 496 497 PIPE_FORMAT_ATC_RGB, 498 PIPE_FORMAT_ATC_RGBA_EXPLICIT, 499 PIPE_FORMAT_ATC_RGBA_INTERPOLATED, 500 501 PIPE_FORMAT_Z24_UNORM_S8_UINT_AS_R8G8B8A8, 502 503 PIPE_FORMAT_AYUV, 504 PIPE_FORMAT_XYUV, 505 506 PIPE_FORMAT_R8_G8B8_420_UNORM, 507 PIPE_FORMAT_R8_G8_B8_420_UNORM, 508 509 PIPE_FORMAT_B8G8R8X8_SNORM, 510 PIPE_FORMAT_B8G8R8X8_UINT, 511 PIPE_FORMAT_B8G8R8X8_SINT, 512 PIPE_FORMAT_A8R8G8B8_SNORM, 513 PIPE_FORMAT_A8R8G8B8_SINT, 514 PIPE_FORMAT_X8R8G8B8_SNORM, 515 PIPE_FORMAT_X8R8G8B8_SINT, 516 PIPE_FORMAT_R5G5B5X1_UNORM, 517 PIPE_FORMAT_X1R5G5B5_UNORM, 518 PIPE_FORMAT_R4G4B4X4_UNORM, 519 PIPE_FORMAT_B10G10R10X2_SNORM, 520 PIPE_FORMAT_R5G6B5_SRGB, 521 522 PIPE_FORMAT_COUNT 523 }; 524 525 #if UTIL_ARCH_LITTLE_ENDIAN 526 #define PIPE_FORMAT_RGBA8888_UNORM PIPE_FORMAT_R8G8B8A8_UNORM 527 #define PIPE_FORMAT_RGBX8888_UNORM PIPE_FORMAT_R8G8B8X8_UNORM 528 #define PIPE_FORMAT_BGRA8888_UNORM PIPE_FORMAT_B8G8R8A8_UNORM 529 #define PIPE_FORMAT_BGRX8888_UNORM PIPE_FORMAT_B8G8R8X8_UNORM 530 #define PIPE_FORMAT_ARGB8888_UNORM PIPE_FORMAT_A8R8G8B8_UNORM 531 #define PIPE_FORMAT_XRGB8888_UNORM PIPE_FORMAT_X8R8G8B8_UNORM 532 #define PIPE_FORMAT_ABGR8888_UNORM PIPE_FORMAT_A8B8G8R8_UNORM 533 #define PIPE_FORMAT_XBGR8888_UNORM PIPE_FORMAT_X8B8G8R8_UNORM 534 #define PIPE_FORMAT_RGBA8888_SNORM PIPE_FORMAT_R8G8B8A8_SNORM 535 #define PIPE_FORMAT_RGBX8888_SNORM PIPE_FORMAT_R8G8B8X8_SNORM 536 #define PIPE_FORMAT_ABGR8888_SNORM PIPE_FORMAT_A8B8G8R8_SNORM 537 #define PIPE_FORMAT_XBGR8888_SNORM PIPE_FORMAT_X8B8G8R8_SNORM 538 #define PIPE_FORMAT_RGBA8888_SRGB PIPE_FORMAT_R8G8B8A8_SRGB 539 #define PIPE_FORMAT_RGBX8888_SRGB PIPE_FORMAT_R8G8B8X8_SRGB 540 #define PIPE_FORMAT_BGRA8888_SRGB PIPE_FORMAT_B8G8R8A8_SRGB 541 #define PIPE_FORMAT_BGRX8888_SRGB PIPE_FORMAT_B8G8R8X8_SRGB 542 #define PIPE_FORMAT_ARGB8888_SRGB PIPE_FORMAT_A8R8G8B8_SRGB 543 #define PIPE_FORMAT_XRGB8888_SRGB PIPE_FORMAT_X8R8G8B8_SRGB 544 #define PIPE_FORMAT_ABGR8888_SRGB PIPE_FORMAT_A8B8G8R8_SRGB 545 #define PIPE_FORMAT_XBGR8888_SRGB PIPE_FORMAT_X8B8G8R8_SRGB 546 #define PIPE_FORMAT_RGBA8888_USCALED PIPE_FORMAT_R8G8B8A8_USCALED 547 #define PIPE_FORMAT_RGBA8888_SSCALED PIPE_FORMAT_R8G8B8A8_SSCALED 548 #define PIPE_FORMAT_RGBA8888_UINT PIPE_FORMAT_R8G8B8A8_UINT 549 #define PIPE_FORMAT_BGRA8888_UINT PIPE_FORMAT_B8G8R8A8_UINT 550 #define PIPE_FORMAT_ARGB8888_UINT PIPE_FORMAT_A8R8G8B8_UINT 551 #define PIPE_FORMAT_ABGR8888_UINT PIPE_FORMAT_A8B8G8R8_UINT 552 #define PIPE_FORMAT_RGBA8888_SINT PIPE_FORMAT_R8G8B8A8_SINT 553 #define PIPE_FORMAT_RG88_UNORM PIPE_FORMAT_R8G8_UNORM 554 #define PIPE_FORMAT_GR88_UNORM PIPE_FORMAT_G8R8_UNORM 555 #define PIPE_FORMAT_RG88_SNORM PIPE_FORMAT_R8G8_SNORM 556 #define PIPE_FORMAT_GR88_SNORM PIPE_FORMAT_G8R8_SNORM 557 #define PIPE_FORMAT_RG1616_UNORM PIPE_FORMAT_R16G16_UNORM 558 #define PIPE_FORMAT_GR1616_UNORM PIPE_FORMAT_G16R16_UNORM 559 #define PIPE_FORMAT_RG1616_SNORM PIPE_FORMAT_R16G16_SNORM 560 #define PIPE_FORMAT_GR1616_SNORM PIPE_FORMAT_G16R16_SNORM 561 #elif UTIL_ARCH_BIG_ENDIAN 562 #define PIPE_FORMAT_ABGR8888_UNORM PIPE_FORMAT_R8G8B8A8_UNORM 563 #define PIPE_FORMAT_XBGR8888_UNORM PIPE_FORMAT_R8G8B8X8_UNORM 564 #define PIPE_FORMAT_ARGB8888_UNORM PIPE_FORMAT_B8G8R8A8_UNORM 565 #define PIPE_FORMAT_XRGB8888_UNORM PIPE_FORMAT_B8G8R8X8_UNORM 566 #define PIPE_FORMAT_BGRA8888_UNORM PIPE_FORMAT_A8R8G8B8_UNORM 567 #define PIPE_FORMAT_BGRX8888_UNORM PIPE_FORMAT_X8R8G8B8_UNORM 568 #define PIPE_FORMAT_RGBA8888_UNORM PIPE_FORMAT_A8B8G8R8_UNORM 569 #define PIPE_FORMAT_RGBX8888_UNORM PIPE_FORMAT_X8B8G8R8_UNORM 570 #define PIPE_FORMAT_ABGR8888_SNORM PIPE_FORMAT_R8G8B8A8_SNORM 571 #define PIPE_FORMAT_XBGR8888_SNORM PIPE_FORMAT_R8G8B8X8_SNORM 572 #define PIPE_FORMAT_RGBA8888_SNORM PIPE_FORMAT_A8B8G8R8_SNORM 573 #define PIPE_FORMAT_RGBX8888_SNORM PIPE_FORMAT_X8B8G8R8_SNORM 574 #define PIPE_FORMAT_ABGR8888_SRGB PIPE_FORMAT_R8G8B8A8_SRGB 575 #define PIPE_FORMAT_XBGR8888_SRGB PIPE_FORMAT_R8G8B8X8_SRGB 576 #define PIPE_FORMAT_ARGB8888_SRGB PIPE_FORMAT_B8G8R8A8_SRGB 577 #define PIPE_FORMAT_XRGB8888_SRGB PIPE_FORMAT_B8G8R8X8_SRGB 578 #define PIPE_FORMAT_BGRA8888_SRGB PIPE_FORMAT_A8R8G8B8_SRGB 579 #define PIPE_FORMAT_BGRX8888_SRGB PIPE_FORMAT_X8R8G8B8_SRGB 580 #define PIPE_FORMAT_RGBA8888_SRGB PIPE_FORMAT_A8B8G8R8_SRGB 581 #define PIPE_FORMAT_RGBX8888_SRGB PIPE_FORMAT_X8B8G8R8_SRGB 582 #define PIPE_FORMAT_RGBA8888_USCALED PIPE_FORMAT_A8B8G8R8_USCALED 583 #define PIPE_FORMAT_RGBA8888_SSCALED PIPE_FORMAT_A8B8G8R8_SSCALED 584 #define PIPE_FORMAT_RGBA8888_UINT PIPE_FORMAT_A8B8G8R8_UINT 585 #define PIPE_FORMAT_BGRA8888_UINT PIPE_FORMAT_A8R8G8B8_UINT 586 #define PIPE_FORMAT_ARGB8888_UINT PIPE_FORMAT_B8G8R8A8_UINT 587 #define PIPE_FORMAT_ABGR8888_UINT PIPE_FORMAT_R8G8B8A8_UINT 588 #define PIPE_FORMAT_RGBA8888_SINT PIPE_FORMAT_A8B8G8R8_SINT 589 #define PIPE_FORMAT_RG88_UNORM PIPE_FORMAT_G8R8_UNORM 590 #define PIPE_FORMAT_GR88_UNORM PIPE_FORMAT_R8G8_UNORM 591 #define PIPE_FORMAT_RG88_SNORM PIPE_FORMAT_G8R8_SNORM 592 #define PIPE_FORMAT_GR88_SNORM PIPE_FORMAT_R8G8_SNORM 593 #define PIPE_FORMAT_RG1616_UNORM PIPE_FORMAT_G16R16_UNORM 594 #define PIPE_FORMAT_GR1616_UNORM PIPE_FORMAT_R16G16_UNORM 595 #define PIPE_FORMAT_RG1616_SNORM PIPE_FORMAT_G16R16_SNORM 596 #define PIPE_FORMAT_GR1616_SNORM PIPE_FORMAT_R16G16_SNORM 597 #endif 598 599 enum pipe_video_chroma_format 600 { 601 PIPE_VIDEO_CHROMA_FORMAT_400, 602 PIPE_VIDEO_CHROMA_FORMAT_420, 603 PIPE_VIDEO_CHROMA_FORMAT_422, 604 PIPE_VIDEO_CHROMA_FORMAT_444, 605 PIPE_VIDEO_CHROMA_FORMAT_NONE 606 }; 607 608 static inline enum pipe_video_chroma_format 609 pipe_format_to_chroma_format(enum pipe_format format) 610 { 611 switch (format) { 612 case PIPE_FORMAT_NV12: 613 case PIPE_FORMAT_NV21: 614 case PIPE_FORMAT_YV12: 615 case PIPE_FORMAT_IYUV: 616 case PIPE_FORMAT_P010: 617 case PIPE_FORMAT_P012: 618 case PIPE_FORMAT_P016: 619 case PIPE_FORMAT_Y16_U16_V16_420_UNORM: 620 return PIPE_VIDEO_CHROMA_FORMAT_420; 621 case PIPE_FORMAT_UYVY: 622 case PIPE_FORMAT_YUYV: 623 case PIPE_FORMAT_YV16: 624 case PIPE_FORMAT_Y8_U8_V8_422_UNORM: 625 case PIPE_FORMAT_Y8_U8V8_422_UNORM: 626 case PIPE_FORMAT_Y16_U16_V16_422_UNORM: 627 case PIPE_FORMAT_Y16_U16V16_422_UNORM: 628 return PIPE_VIDEO_CHROMA_FORMAT_422; 629 case PIPE_FORMAT_Y8_U8_V8_444_UNORM: 630 case PIPE_FORMAT_Y16_U16_V16_444_UNORM: 631 return PIPE_VIDEO_CHROMA_FORMAT_444; 632 default: 633 return PIPE_VIDEO_CHROMA_FORMAT_NONE; 634 } 635 } 636 637 #ifdef __cplusplus 638 } 639 #endif 640 641 #endif 642