util/format: Add more multi-planar formats.
[mesa.git] / src / gallium / include / pipe / p_format.h
index f1524352d9ee289d398a27f3147145fb30727e5b..f1a4652c36eca96916f31af4f159f2658adbca5b 100644 (file)
@@ -58,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,
@@ -108,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,
@@ -133,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,
@@ -227,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,
@@ -299,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,
 
@@ -332,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,
 
@@ -414,6 +463,7 @@ enum pipe_format {
    PIPE_FORMAT_FXT1_RGB,
    PIPE_FORMAT_FXT1_RGBA,
 
+   PIPE_FORMAT_P010,
    PIPE_FORMAT_P016,
 
    PIPE_FORMAT_R10G10B10X2_UNORM,
@@ -424,8 +474,6 @@ enum pipe_format {
    PIPE_FORMAT_A4R4G4B4_UNORM,
    PIPE_FORMAT_A4B4G4R4_UNORM,
 
-   PIPE_FORMAT_R8_SRGB,
-
    PIPE_FORMAT_G8R8_SINT,
    PIPE_FORMAT_A8B8G8R8_SINT,
    PIPE_FORMAT_X8B8G8R8_SINT,
@@ -463,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
@@ -492,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
@@ -511,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