util/format: Add more multi-planar formats.
[mesa.git] / src / gallium / include / pipe / p_format.h
index 273abf85941b7facd1675137917e9b56924169d1..f1a4652c36eca96916f31af4f159f2658adbca5b 100644 (file)
@@ -45,7 +45,9 @@ enum pipe_format {
    PIPE_FORMAT_A8R8G8B8_UNORM,
    PIPE_FORMAT_X8R8G8B8_UNORM,
    PIPE_FORMAT_B5G5R5A1_UNORM,
+   PIPE_FORMAT_R4G4B4A4_UNORM,
    PIPE_FORMAT_B4G4R4A4_UNORM,
+   PIPE_FORMAT_R5G6B5_UNORM,
    PIPE_FORMAT_B5G6R5_UNORM,
    PIPE_FORMAT_R10G10B10A2_UNORM,
    PIPE_FORMAT_L8_UNORM,    /**< ubyte luminance */
@@ -56,6 +58,7 @@ enum pipe_format {
    PIPE_FORMAT_UYVY,
    PIPE_FORMAT_YUYV,
    PIPE_FORMAT_Z16_UNORM,
+   PIPE_FORMAT_Z16_UNORM_S8_UINT,
    PIPE_FORMAT_Z32_UNORM,
    PIPE_FORMAT_Z32_FLOAT,
    PIPE_FORMAT_Z24_UNORM_S8_UINT,
@@ -106,20 +109,29 @@ enum pipe_format {
    PIPE_FORMAT_R8_UNORM,
    PIPE_FORMAT_R8G8_UNORM,
    PIPE_FORMAT_R8G8B8_UNORM,
+   PIPE_FORMAT_B8G8R8_UNORM,
    PIPE_FORMAT_R8G8B8A8_UNORM,
    PIPE_FORMAT_X8B8G8R8_UNORM,
    PIPE_FORMAT_R8_USCALED,
    PIPE_FORMAT_R8G8_USCALED,
    PIPE_FORMAT_R8G8B8_USCALED,
+   PIPE_FORMAT_B8G8R8_USCALED,
    PIPE_FORMAT_R8G8B8A8_USCALED,
+   PIPE_FORMAT_B8G8R8A8_USCALED,
+   PIPE_FORMAT_A8B8G8R8_USCALED,
    PIPE_FORMAT_R8_SNORM,
    PIPE_FORMAT_R8G8_SNORM,
    PIPE_FORMAT_R8G8B8_SNORM,
+   PIPE_FORMAT_B8G8R8_SNORM,
    PIPE_FORMAT_R8G8B8A8_SNORM,
+   PIPE_FORMAT_B8G8R8A8_SNORM,
    PIPE_FORMAT_R8_SSCALED,
    PIPE_FORMAT_R8G8_SSCALED,
    PIPE_FORMAT_R8G8B8_SSCALED,
+   PIPE_FORMAT_B8G8R8_SSCALED,
    PIPE_FORMAT_R8G8B8A8_SSCALED,
+   PIPE_FORMAT_B8G8R8A8_SSCALED,
+   PIPE_FORMAT_A8B8G8R8_SSCALED,
    PIPE_FORMAT_R32_FIXED,
    PIPE_FORMAT_R32G32_FIXED,
    PIPE_FORMAT_R32G32B32_FIXED,
@@ -131,8 +143,11 @@ enum pipe_format {
 
    /* sRGB formats */
    PIPE_FORMAT_L8_SRGB,
+   PIPE_FORMAT_R8_SRGB,
    PIPE_FORMAT_L8A8_SRGB,
+   PIPE_FORMAT_R8G8_SRGB,
    PIPE_FORMAT_R8G8B8_SRGB,
+   PIPE_FORMAT_B8G8R8_SRGB,
    PIPE_FORMAT_A8B8G8R8_SRGB,
    PIPE_FORMAT_X8B8G8R8_SRGB,
    PIPE_FORMAT_B8G8R8A8_SRGB,
@@ -177,6 +192,8 @@ enum pipe_format {
    PIPE_FORMAT_R10G10B10X2_USCALED,
    PIPE_FORMAT_R10G10B10X2_SNORM,
    PIPE_FORMAT_L4A4_UNORM,
+   PIPE_FORMAT_A2R10G10B10_UNORM,
+   PIPE_FORMAT_A2B10G10R10_UNORM,
    PIPE_FORMAT_B10G10R10A2_UNORM,
    PIPE_FORMAT_R10SG10SB10SA2U_NORM,
    PIPE_FORMAT_R8G8Bx_SNORM,
@@ -188,6 +205,7 @@ enum pipe_format {
    PIPE_FORMAT_S8X24_UINT,
    PIPE_FORMAT_X32_S8X24_UINT,
 
+   PIPE_FORMAT_R3G3B2_UNORM,
    PIPE_FORMAT_B2G3R3_UNORM,
    PIPE_FORMAT_L16A16_UNORM,
    PIPE_FORMAT_A16_UNORM,
@@ -222,6 +240,18 @@ enum pipe_format {
    PIPE_FORMAT_NV12,
    PIPE_FORMAT_NV21,
 
+   /* PIPE_FORMAT_Y8_U8_V8_420_UNORM = IYUV */
+   /* PIPE_FORMAT_Y8_U8V8_420_UNORM = NV12 */
+   PIPE_FORMAT_Y8_U8_V8_422_UNORM,
+   PIPE_FORMAT_Y8_U8V8_422_UNORM,
+   PIPE_FORMAT_Y8_U8_V8_444_UNORM,
+
+   PIPE_FORMAT_Y16_U16_V16_420_UNORM,
+    /* PIPE_FORMAT_Y16_U16V16_420_UNORM */
+   PIPE_FORMAT_Y16_U16_V16_422_UNORM,
+   PIPE_FORMAT_Y16_U16V16_422_UNORM,
+   PIPE_FORMAT_Y16_U16_V16_444_UNORM,
+
    PIPE_FORMAT_A4R4_UNORM,
    PIPE_FORMAT_R4A4_UNORM,
    PIPE_FORMAT_R8A8_UNORM,
@@ -294,7 +324,30 @@ enum pipe_format {
    PIPE_FORMAT_L32_SINT,
    PIPE_FORMAT_L32A32_SINT,
 
+   PIPE_FORMAT_B8G8R8_UINT,
+   PIPE_FORMAT_B8G8R8A8_UINT,
+
+   PIPE_FORMAT_B8G8R8_SINT,
+   PIPE_FORMAT_B8G8R8A8_SINT,
+
+   PIPE_FORMAT_A8R8G8B8_UINT,
+   PIPE_FORMAT_A8B8G8R8_UINT,
+   PIPE_FORMAT_A2R10G10B10_UINT,
+   PIPE_FORMAT_A2B10G10R10_UINT,
    PIPE_FORMAT_B10G10R10A2_UINT,
+   PIPE_FORMAT_B10G10R10A2_SINT,
+   PIPE_FORMAT_R5G6B5_UINT,
+   PIPE_FORMAT_B5G6R5_UINT,
+   PIPE_FORMAT_R5G5B5A1_UINT,
+   PIPE_FORMAT_B5G5R5A1_UINT,
+   PIPE_FORMAT_A1R5G5B5_UINT,
+   PIPE_FORMAT_A1B5G5R5_UINT,
+   PIPE_FORMAT_R4G4B4A4_UINT,
+   PIPE_FORMAT_B4G4R4A4_UINT,
+   PIPE_FORMAT_A4R4G4B4_UINT,
+   PIPE_FORMAT_A4B4G4R4_UINT,
+   PIPE_FORMAT_R3G3B2_UINT,
+   PIPE_FORMAT_B2G3R3_UINT,
 
    PIPE_FORMAT_ETC1_RGB8,
 
@@ -327,6 +380,7 @@ enum pipe_format {
    PIPE_FORMAT_R32A32_UINT,
    PIPE_FORMAT_R32A32_SINT,
    PIPE_FORMAT_R10G10B10A2_UINT,
+   PIPE_FORMAT_R10G10B10A2_SINT,
 
    PIPE_FORMAT_B5G6R5_SRGB,
 
@@ -406,15 +460,20 @@ enum pipe_format {
    PIPE_FORMAT_ASTC_6x6x5_SRGB,
    PIPE_FORMAT_ASTC_6x6x6_SRGB,
 
+   PIPE_FORMAT_FXT1_RGB,
+   PIPE_FORMAT_FXT1_RGBA,
+
+   PIPE_FORMAT_P010,
    PIPE_FORMAT_P016,
 
    PIPE_FORMAT_R10G10B10X2_UNORM,
+   PIPE_FORMAT_A1R5G5B5_UNORM,
    PIPE_FORMAT_A1B5G5R5_UNORM,
    PIPE_FORMAT_X1B5G5R5_UNORM,
+   PIPE_FORMAT_R5G5B5A1_UNORM,
+   PIPE_FORMAT_A4R4G4B4_UNORM,
    PIPE_FORMAT_A4B4G4R4_UNORM,
 
-   PIPE_FORMAT_R8_SRGB,
-
    PIPE_FORMAT_G8R8_SINT,
    PIPE_FORMAT_A8B8G8R8_SINT,
    PIPE_FORMAT_X8B8G8R8_SINT,
@@ -431,7 +490,7 @@ enum pipe_format {
    PIPE_FORMAT_COUNT
 };
 
-#if PIPE_ARCH_LITTLE_ENDIAN
+#if UTIL_ARCH_LITTLE_ENDIAN
 #define PIPE_FORMAT_RGBA8888_UNORM PIPE_FORMAT_R8G8B8A8_UNORM
 #define PIPE_FORMAT_RGBX8888_UNORM PIPE_FORMAT_R8G8B8X8_UNORM
 #define PIPE_FORMAT_BGRA8888_UNORM PIPE_FORMAT_B8G8R8A8_UNORM
@@ -452,6 +511,13 @@ enum pipe_format {
 #define PIPE_FORMAT_XRGB8888_SRGB PIPE_FORMAT_X8R8G8B8_SRGB
 #define PIPE_FORMAT_ABGR8888_SRGB PIPE_FORMAT_A8B8G8R8_SRGB
 #define PIPE_FORMAT_XBGR8888_SRGB PIPE_FORMAT_X8B8G8R8_SRGB
+#define PIPE_FORMAT_RGBA8888_USCALED PIPE_FORMAT_R8G8B8A8_USCALED
+#define PIPE_FORMAT_RGBA8888_SSCALED PIPE_FORMAT_R8G8B8A8_SSCALED
+#define PIPE_FORMAT_RGBA8888_UINT PIPE_FORMAT_R8G8B8A8_UINT
+#define PIPE_FORMAT_BGRA8888_UINT PIPE_FORMAT_B8G8R8A8_UINT
+#define PIPE_FORMAT_ARGB8888_UINT PIPE_FORMAT_A8R8G8B8_UINT
+#define PIPE_FORMAT_ABGR8888_UINT PIPE_FORMAT_A8B8G8R8_UINT
+#define PIPE_FORMAT_RGBA8888_SINT PIPE_FORMAT_R8G8B8A8_SINT
 #define PIPE_FORMAT_RG88_UNORM PIPE_FORMAT_R8G8_UNORM
 #define PIPE_FORMAT_GR88_UNORM PIPE_FORMAT_G8R8_UNORM
 #define PIPE_FORMAT_RG88_SNORM PIPE_FORMAT_R8G8_SNORM
@@ -460,7 +526,7 @@ enum pipe_format {
 #define PIPE_FORMAT_GR1616_UNORM PIPE_FORMAT_G16R16_UNORM
 #define PIPE_FORMAT_RG1616_SNORM PIPE_FORMAT_R16G16_SNORM
 #define PIPE_FORMAT_GR1616_SNORM PIPE_FORMAT_G16R16_SNORM
-#elif PIPE_ARCH_BIG_ENDIAN
+#elif UTIL_ARCH_BIG_ENDIAN
 #define PIPE_FORMAT_ABGR8888_UNORM PIPE_FORMAT_R8G8B8A8_UNORM
 #define PIPE_FORMAT_XBGR8888_UNORM PIPE_FORMAT_R8G8B8X8_UNORM
 #define PIPE_FORMAT_ARGB8888_UNORM PIPE_FORMAT_B8G8R8A8_UNORM
@@ -481,6 +547,13 @@ enum pipe_format {
 #define PIPE_FORMAT_BGRX8888_SRGB PIPE_FORMAT_X8R8G8B8_SRGB
 #define PIPE_FORMAT_RGBA8888_SRGB PIPE_FORMAT_A8B8G8R8_SRGB
 #define PIPE_FORMAT_RGBX8888_SRGB PIPE_FORMAT_X8B8G8R8_SRGB
+#define PIPE_FORMAT_RGBA8888_USCALED PIPE_FORMAT_A8B8G8R8_USCALED
+#define PIPE_FORMAT_RGBA8888_SSCALED PIPE_FORMAT_A8B8G8R8_SSCALED
+#define PIPE_FORMAT_RGBA8888_UINT PIPE_FORMAT_A8B8G8R8_UINT
+#define PIPE_FORMAT_BGRA8888_UINT PIPE_FORMAT_A8R8G8B8_UINT
+#define PIPE_FORMAT_ARGB8888_UINT PIPE_FORMAT_B8G8R8A8_UINT
+#define PIPE_FORMAT_ABGR8888_UINT PIPE_FORMAT_R8G8B8A8_UINT
+#define PIPE_FORMAT_RGBA8888_SINT PIPE_FORMAT_A8B8G8R8_SINT
 #define PIPE_FORMAT_RG88_UNORM PIPE_FORMAT_G8R8_UNORM
 #define PIPE_FORMAT_GR88_UNORM PIPE_FORMAT_R8G8_UNORM
 #define PIPE_FORMAT_RG88_SNORM PIPE_FORMAT_G8R8_SNORM
@@ -500,6 +573,34 @@ enum pipe_video_chroma_format
    PIPE_VIDEO_CHROMA_FORMAT_NONE
 };
 
+static inline enum pipe_video_chroma_format
+pipe_format_to_chroma_format(enum pipe_format format)
+{
+   switch (format) {
+      case PIPE_FORMAT_NV12:
+      case PIPE_FORMAT_NV21:
+      case PIPE_FORMAT_YV12:
+      case PIPE_FORMAT_IYUV:
+      case PIPE_FORMAT_P010:
+      case PIPE_FORMAT_P016:
+      case PIPE_FORMAT_Y16_U16_V16_420_UNORM:
+         return PIPE_VIDEO_CHROMA_FORMAT_420;
+      case PIPE_FORMAT_UYVY:
+      case PIPE_FORMAT_YUYV:
+      case PIPE_FORMAT_YV16:
+      case PIPE_FORMAT_Y8_U8_V8_422_UNORM:
+      case PIPE_FORMAT_Y8_U8V8_422_UNORM:
+      case PIPE_FORMAT_Y16_U16_V16_422_UNORM:
+      case PIPE_FORMAT_Y16_U16V16_422_UNORM:
+         return PIPE_VIDEO_CHROMA_FORMAT_422;
+      case PIPE_FORMAT_Y8_U8_V8_444_UNORM:
+      case PIPE_FORMAT_Y16_U16_V16_444_UNORM:
+         return PIPE_VIDEO_CHROMA_FORMAT_444;
+      default:
+         return PIPE_VIDEO_CHROMA_FORMAT_NONE;
+   }
+}
+
 #ifdef __cplusplus
 }
 #endif