nil/format: Use A for alpha blend
authorFaith Ekstrand <faith.ekstrand@collabora.com>
Tue, 10 Oct 2023 16:09:12 +0000 (11:09 -0500)
committerFaith Ekstrand <faith.ekstrand@collabora.com>
Wed, 11 Oct 2023 07:56:21 +0000 (02:56 -0500)
This lets us reserve B for buffer.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25653>

src/nouveau/nil/nil_format.c

index 31f44c3ebe5d3e92c8f30e7dffcbdfd2e56a2d60..83de3b6c6a8dfdee5c73571408fd8df43a0e81ad 100644 (file)
@@ -16,7 +16,7 @@ enum nil_format_support_flags {
    NIL_FORMAT_SUPPORTS_BUFFER_BIT         = BITFIELD_BIT(1),
    NIL_FORMAT_SUPPORTS_STORAGE_BIT        = BITFIELD_BIT(2),
    NIL_FORMAT_SUPPORTS_RENDER_BIT         = BITFIELD_BIT(3),
-   NIL_FORMAT_SUPPORTS_BLEND_BIT          = BITFIELD_BIT(4),
+   NIL_FORMAT_SUPPORTS_ALPHA_BLEND_BIT    = BITFIELD_BIT(4),
    NIL_FORMAT_SUPPORTS_DEPTH_STENCIL_BIT  = BITFIELD_BIT(5),
    NIL_FORMAT_SUPPORTS_SCANOUT_BIT        = BITFIELD_BIT(6),
 };
@@ -31,7 +31,7 @@ struct nil_format_info {
 /* Abbreviated usage masks:
  * T: texturing
  * R: render target
- * B: render target, blendable
+ * A: render target, alpha-blendable
  * C: render target (color), blendable only on nvc0
  * D: scanout/display target, blendable
  * Z: depth/stencil
@@ -42,13 +42,13 @@ struct nil_format_info {
 #define U_I   U_B | NIL_FORMAT_SUPPORTS_STORAGE_BIT
 #define U_TR  NIL_FORMAT_SUPPORTS_RENDER_BIT | U_T
 #define U_IR  NIL_FORMAT_SUPPORTS_RENDER_BIT | U_I
-#define U_TB  NIL_FORMAT_SUPPORTS_BLEND_BIT | U_TR
-#define U_IB  NIL_FORMAT_SUPPORTS_BLEND_BIT | U_IR
-#define U_TD  NIL_FORMAT_SUPPORTS_SCANOUT_BIT | U_TB
+#define U_TA  NIL_FORMAT_SUPPORTS_ALPHA_BLEND_BIT | U_TR
+#define U_IA  NIL_FORMAT_SUPPORTS_ALPHA_BLEND_BIT | U_IR
+#define U_TD  NIL_FORMAT_SUPPORTS_SCANOUT_BIT | U_TA
 #define U_TZ  NIL_FORMAT_SUPPORTS_DEPTH_STENCIL_BIT | U_T
 #define U_ID  U_TD | U_I
-#define U_TC  U_TB
-#define U_IC  U_IB
+#define U_TC  U_TA
+#define U_IC  U_IA
 #define U_t   U_T
 
 #define SF_A(sz) NV9097_TEXHEAD0_COMPONENT_SIZES_##sz
@@ -114,10 +114,10 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
    F3(A, B8G8R8X8_UNORM,   X8R8G8B8,      B, G, R, x, UNORM, A8B8G8R8, TD),
    C4(A, B8G8R8A8_SRGB,    A8RL8GL8BL8,   B, G, R, A, UNORM, A8B8G8R8, TD),
    F3(A, B8G8R8X8_SRGB,    X8RL8GL8BL8,   B, G, R, x, UNORM, A8B8G8R8, TD),
-   C4(A, R8G8B8A8_UNORM,   A8B8G8R8,      R, G, B, A, UNORM, A8B8G8R8, IB),
-   F3(A, R8G8B8X8_UNORM,   X8B8G8R8,      R, G, B, x, UNORM, A8B8G8R8, TB),
-   C4(A, R8G8B8A8_SRGB,    A8BL8GL8RL8,   R, G, B, A, UNORM, A8B8G8R8, TB),
-   F3(A, R8G8B8X8_SRGB,    X8BL8GL8RL8,   R, G, B, x, UNORM, A8B8G8R8, TB),
+   C4(A, R8G8B8A8_UNORM,   A8B8G8R8,      R, G, B, A, UNORM, A8B8G8R8, IA),
+   F3(A, R8G8B8X8_UNORM,   X8B8G8R8,      R, G, B, x, UNORM, A8B8G8R8, TA),
+   C4(A, R8G8B8A8_SRGB,    A8BL8GL8RL8,   R, G, B, A, UNORM, A8B8G8R8, TA),
+   F3(A, R8G8B8X8_SRGB,    X8BL8GL8RL8,   R, G, B, x, UNORM, A8B8G8R8, TA),
 
    ZX(B, Z16_UNORM,              Z16,        R, UNORM,   Z16,        TZ),
    ZX(A, Z32_FLOAT,              ZF32,       R, FLOAT,   ZF32,       TZ),
@@ -146,26 +146,26 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
 
    C4(A, R10G10B10A2_UNORM,   A2B10G10R10,      R, G, B, A, UNORM,   A2B10G10R10, ID),
    F3(A, R10G10B10X2_UNORM,   A2B10G10R10,      R, G, B, x, UNORM,   A2B10G10R10, T),
-   C4(A, B10G10R10A2_UNORM,   A2R10G10B10,      B, G, R, A, UNORM,   A2B10G10R10, TB),
+   C4(A, B10G10R10A2_UNORM,   A2R10G10B10,      B, G, R, A, UNORM,   A2B10G10R10, TA),
    F3(A, B10G10R10X2_UNORM,   A2R10G10B10,      B, G, R, x, UNORM,   A2B10G10R10, T),
    C4(A, R10G10B10A2_SNORM,   NONE,             R, G, B, A, SNORM,   A2B10G10R10, T),
    C4(A, B10G10R10A2_SNORM,   NONE,             B, G, R, A, SNORM,   A2B10G10R10, T),
    C4(A, R10G10B10A2_UINT,    AU2BU10GU10RU10,  R, G, B, A, UINT,    A2B10G10R10, TR),
    C4(A, B10G10R10A2_UINT,    NONE,             B, G, R, A, UINT,    A2B10G10R10, T),
 
-   F3(A, R11G11B10_FLOAT, BF10GF11RF11, R, G, B, x, FLOAT, BF10GF11RF11, IB),
+   F3(A, R11G11B10_FLOAT, BF10GF11RF11, R, G, B, x, FLOAT, BF10GF11RF11, IA),
 
-   F3(A, L8_UNORM,   R8,   R, R, R, x, UNORM,   R8,   TB),
+   F3(A, L8_UNORM,   R8,   R, R, R, x, UNORM,   R8,   TA),
    F3(A, L8_SRGB,    NONE, R, R, R, x, UNORM,   R8,   T),
    F3(A, L8_SNORM,   RN8,  R, R, R, x, SNORM,   R8,   TC),
    I3(A, L8_SINT,    RS8,  R, R, R, x, SINT,    R8,   TR),
    I3(A, L8_UINT,    RU8,  R, R, R, x, UINT,    R8,   TR),
    F3(A, L16_UNORM,  R16,  R, R, R, x, UNORM,   R16,  TC),
    F3(A, L16_SNORM,  RN16, R, R, R, x, SNORM,   R16,  TC),
-   F3(A, L16_FLOAT,  RF16, R, R, R, x, FLOAT,   R16,  TB),
+   F3(A, L16_FLOAT,  RF16, R, R, R, x, FLOAT,   R16,  TA),
    I3(A, L16_SINT,   RS16, R, R, R, x, SINT,    R16,  TR),
    I3(A, L16_UINT,   RU16, R, R, R, x, UINT,    R16,  TR),
-   F3(A, L32_FLOAT,  RF32, R, R, R, x, FLOAT,   R32,  TB),
+   F3(A, L32_FLOAT,  RF32, R, R, R, x, FLOAT,   R32,  TA),
    I3(A, L32_SINT,   RS32, R, R, R, x, SINT,    R32,  TR),
    I3(A, L32_UINT,   RU32, R, R, R, x, UINT,    R32,  TR),
 
@@ -182,7 +182,7 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
    C4(A, I32_SINT,   RS32, R, R, R, R, SINT,    R32,  TR),
    C4(A, I32_UINT,   RU32, R, R, R, R, UINT,    R32,  TR),
 
-   A1(A, A8_UNORM,   A8,   x, x, x, R, UNORM,   R8,   TB),
+   A1(A, A8_UNORM,   A8,   x, x, x, R, UNORM,   R8,   TA),
    A1(A, A8_SNORM,   RN8,  x, x, x, R, SNORM,   R8,   T),
    A1(A, A8_SINT,    RS8,  x, x, x, R, SINT,    R8,   T),
    A1(A, A8_UINT,    RU8,  x, x, x, R, UINT,    R8,   T),
@@ -275,12 +275,12 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
    C4(D, ASTC_12x10_SRGB, NONE, R, G, B, A, UNORM, ASTC_2D_12X10, t),
    C4(D, ASTC_12x12_SRGB, NONE, R, G, B, A, UNORM, ASTC_2D_12X12, t),
 
-   C4(A, R32G32B32A32_FLOAT,  RF32_GF32_BF32_AF32, R, G, B, A, FLOAT,   R32_G32_B32_A32, IB),
+   C4(A, R32G32B32A32_FLOAT,  RF32_GF32_BF32_AF32, R, G, B, A, FLOAT,   R32_G32_B32_A32, IA),
    C4(A, R32G32B32A32_UNORM,  NONE,                R, G, B, A, UNORM,   R32_G32_B32_A32, T),
    C4(A, R32G32B32A32_SNORM,  NONE,                R, G, B, A, SNORM,   R32_G32_B32_A32, T),
    C4(A, R32G32B32A32_SINT,   RS32_GS32_BS32_AS32, R, G, B, A, SINT,    R32_G32_B32_A32, IR),
    C4(A, R32G32B32A32_UINT,   RU32_GU32_BU32_AU32, R, G, B, A, UINT,    R32_G32_B32_A32, IR),
-   F3(A, R32G32B32X32_FLOAT,  RF32_GF32_BF32_X32,  R, G, B, x, FLOAT,   R32_G32_B32_A32, TB),
+   F3(A, R32G32B32X32_FLOAT,  RF32_GF32_BF32_X32,  R, G, B, x, FLOAT,   R32_G32_B32_A32, TA),
    I3(A, R32G32B32X32_SINT,   RS32_GS32_BS32_X32,  R, G, B, x, SINT,    R32_G32_B32_A32, TR),
    I3(A, R32G32B32X32_UINT,   RU32_GU32_BU32_X32,  R, G, B, x, UINT,    R32_G32_B32_A32, TR),
 
@@ -288,36 +288,36 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
    I3(C, R32G32B32_SINT, NONE, R, G, B, xx, SINT, R32_G32_B32, B),
    I3(C, R32G32B32_UINT, NONE, R, G, B, xx, UINT, R32_G32_B32, B),
 
-   F2(A, R32G32_FLOAT,  RF32_GF32,  R, G, x, x,    FLOAT,   R32_G32, IB),
+   F2(A, R32G32_FLOAT,  RF32_GF32,  R, G, x, x,    FLOAT,   R32_G32, IA),
    F2(A, R32G32_UNORM,  NONE,       R, G, x, x,    UNORM,   R32_G32, T),
    F2(A, R32G32_SNORM,  NONE,       R, G, x, x,    SNORM,   R32_G32, T),
    I2(A, R32G32_SINT,   RS32_GS32,  R, G, x, x,    SINT,    R32_G32, IR),
    I2(A, R32G32_UINT,   RU32_GU32,  R, G, x, x,    UINT,    R32_G32, IR),
 
-   F1(A, R32_FLOAT,  RF32, R, x, x, x, FLOAT,   R32, IB),
+   F1(A, R32_FLOAT,  RF32, R, x, x, x, FLOAT,   R32, IA),
    F1(A, R32_UNORM,  NONE, R, x, x, x, UNORM,   R32, T),
    F1(A, R32_SNORM,  NONE, R, x, x, x, SNORM,   R32, T),
    I1(A, R32_SINT,   RS32, R, x, x, x, SINT,    R32, IR),
    I1(A, R32_UINT,   RU32, R, x, x, x, UINT,    R32, IR),
 
-   C4(A, R16G16B16A16_FLOAT,  RF16_GF16_BF16_AF16, R, G, B, A,    FLOAT,   R16_G16_B16_A16, IB),
+   C4(A, R16G16B16A16_FLOAT,  RF16_GF16_BF16_AF16, R, G, B, A,    FLOAT,   R16_G16_B16_A16, IA),
    C4(A, R16G16B16A16_UNORM,  R16_G16_B16_A16,     R, G, B, A,    UNORM,   R16_G16_B16_A16, IC),
    C4(A, R16G16B16A16_SNORM,  RN16_GN16_BN16_AN16, R, G, B, A,    SNORM,   R16_G16_B16_A16, IC),
    C4(A, R16G16B16A16_SINT,   RS16_GS16_BS16_AS16, R, G, B, A,    SINT,    R16_G16_B16_A16, IR),
    C4(A, R16G16B16A16_UINT,   RU16_GU16_BU16_AU16, R, G, B, A,    UINT,    R16_G16_B16_A16, IR),
-   F3(A, R16G16B16X16_FLOAT,  RF16_GF16_BF16_X16,  R, G, B, x,    FLOAT,   R16_G16_B16_A16, TB),
+   F3(A, R16G16B16X16_FLOAT,  RF16_GF16_BF16_X16,  R, G, B, x,    FLOAT,   R16_G16_B16_A16, TA),
    F3(A, R16G16B16X16_UNORM,  R16_G16_B16_A16,     R, G, B, x,    UNORM,   R16_G16_B16_A16, T),
    F3(A, R16G16B16X16_SNORM,  RN16_GN16_BN16_AN16, R, G, B, x,    SNORM,   R16_G16_B16_A16, T),
    I3(A, R16G16B16X16_SINT,   RS16_GS16_BS16_AS16, R, G, B, x,    SINT,    R16_G16_B16_A16, TR),
    I3(A, R16G16B16X16_UINT,   RU16_GU16_BU16_AU16, R, G, B, x,    UINT,    R16_G16_B16_A16, TR),
 
-   F2(A, R16G16_FLOAT,  RF16_GF16,  R, G, x, x, FLOAT,   R16_G16, IB),
+   F2(A, R16G16_FLOAT,  RF16_GF16,  R, G, x, x, FLOAT,   R16_G16, IA),
    F2(A, R16G16_UNORM,  R16_G16,    R, G, x, x, UNORM,   R16_G16, IC),
    F2(A, R16G16_SNORM,  RN16_GN16,  R, G, x, x, SNORM,   R16_G16, IC),
    I2(A, R16G16_SINT,   RS16_GS16,  R, G, x, x, SINT,    R16_G16, IR),
    I2(A, R16G16_UINT,   RU16_GU16,  R, G, x, x, UINT,    R16_G16, IR),
 
-   F1(A, R16_FLOAT,  RF16, R, x, x, x, FLOAT,   R16, IB),
+   F1(A, R16_FLOAT,  RF16, R, x, x, x, FLOAT,   R16, IA),
    F1(A, R16_UNORM,  R16,  R, x, x, x, UNORM,   R16, IC),
    F1(A, R16_SNORM,  RN16, R, x, x, x, SNORM,   R16, IC),
    I1(A, R16_SINT,   RS16, R, x, x, x, SINT,    R16, IR),
@@ -330,7 +330,7 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
    I3(A, R8G8B8X8_SINT,    AS8BS8GS8RS8,  R, G, B, x, SINT,    A8B8G8R8, TR),
    I3(A, R8G8B8X8_UINT,    AU8BU8GU8RU8,  R, G, B, x, UINT,    A8B8G8R8, TR),
 
-   F2(A, R8G8_UNORM, G8R8,    R, G, x, x, UNORM,   G8R8, IB),
+   F2(A, R8G8_UNORM, G8R8,    R, G, x, x, UNORM,   G8R8, IA),
    F2(A, R8G8_SNORM, GN8RN8,  R, G, x, x, SNORM,   G8R8, IC),
    I2(A, R8G8_SINT,  GS8RS8,  R, G, x, x, SINT,    G8R8, IR),
    I2(A, R8G8_UINT,  GU8RU8,  R, G, x, x, UINT,    G8R8, IR),
@@ -339,7 +339,7 @@ static const struct nil_format_info nil_format_infos[PIPE_FORMAT_COUNT] =
    F2(A, R8G8_SRGB,  NONE,    R, G, x, x, UNORM,   G8R8, T),
 #endif
 
-   F1(A, R8_UNORM,   R8,   R, x, x, x, UNORM,   R8, IB),
+   F1(A, R8_UNORM,   R8,   R, x, x, x, UNORM,   R8, IA),
    F1(A, R8_SNORM,   RN8,  R, x, x, x, SNORM,   R8, IC),
    I1(A, R8_SINT,    RS8,  R, x, x, x, SINT,    R8, IR),
    I1(A, R8_UINT,    RU8,  R, x, x, x, UINT,    R8, IR),
@@ -431,7 +431,7 @@ nil_format_supports_blending(struct nv_device_info *dev,
 {
    assert(format < PIPE_FORMAT_COUNT);
    const struct nil_format_info *fmt = &nil_format_infos[format];
-   return fmt->support & NIL_FORMAT_SUPPORTS_BLEND_BIT;
+   return fmt->support & NIL_FORMAT_SUPPORTS_ALPHA_BLEND_BIT;
 }
 
 bool