Module Name:    xsrc
Committed By:   mrg
Date:           Sun Mar  9 08:51:34 UTC 2025

Modified Files:
        xsrc/external/mit/libdrm/dist: xf86drm.c
Removed Files:
        xsrc/external/mit/libdrm/dist: Android.common.mk Android.mk
            Makefile.sources
        xsrc/external/mit/libdrm/dist/amdgpu: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/data: Android.mk
        xsrc/external/mit/libdrm/dist/etnaviv: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/freedreno: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/intel: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/nouveau: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/omap: Android.mk
        xsrc/external/mit/libdrm/dist/radeon: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/tests: Android.mk
        xsrc/external/mit/libdrm/dist/tests/modetest: Android.mk
            Makefile.sources
        xsrc/external/mit/libdrm/dist/tests/proptest: Android.mk
            Makefile.sources
        xsrc/external/mit/libdrm/dist/tests/util: Android.mk Makefile.sources
        xsrc/external/mit/libdrm/dist/vc4: Makefile.sources

Log Message:
merge libdrm 2.4.124.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/Android.common.mk
cvs rdiff -u -r1.3 -r0 xsrc/external/mit/libdrm/dist/Android.mk
cvs rdiff -u -r1.1.1.7 -r0 xsrc/external/mit/libdrm/dist/Makefile.sources
cvs rdiff -u -r1.33 -r1.34 xsrc/external/mit/libdrm/dist/xf86drm.c
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/amdgpu/Android.mk
cvs rdiff -u -r1.1.1.5 -r0 \
    xsrc/external/mit/libdrm/dist/amdgpu/Makefile.sources
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/data/Android.mk
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/etnaviv/Android.mk
cvs rdiff -u -r1.1.1.2 -r0 \
    xsrc/external/mit/libdrm/dist/etnaviv/Makefile.sources
cvs rdiff -u -r1.3 -r0 xsrc/external/mit/libdrm/dist/freedreno/Android.mk
cvs rdiff -u -r1.1.1.4 -r0 \
    xsrc/external/mit/libdrm/dist/freedreno/Makefile.sources
cvs rdiff -u -r1.3 -r0 xsrc/external/mit/libdrm/dist/intel/Android.mk
cvs rdiff -u -r1.1.1.4 -r0 \
    xsrc/external/mit/libdrm/dist/intel/Makefile.sources
cvs rdiff -u -r1.3 -r0 xsrc/external/mit/libdrm/dist/nouveau/Android.mk
cvs rdiff -u -r1.1.1.1 -r0 \
    xsrc/external/mit/libdrm/dist/nouveau/Makefile.sources
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/omap/Android.mk
cvs rdiff -u -r1.3 -r0 xsrc/external/mit/libdrm/dist/radeon/Android.mk
cvs rdiff -u -r1.1.1.2 -r0 \
    xsrc/external/mit/libdrm/dist/radeon/Makefile.sources
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/tests/Android.mk
cvs rdiff -u -r1.3 -r0 \
    xsrc/external/mit/libdrm/dist/tests/modetest/Android.mk
cvs rdiff -u -r1.1.1.1 -r0 \
    xsrc/external/mit/libdrm/dist/tests/modetest/Makefile.sources
cvs rdiff -u -r1.1.1.1 -r0 \
    xsrc/external/mit/libdrm/dist/tests/proptest/Android.mk \
    xsrc/external/mit/libdrm/dist/tests/proptest/Makefile.sources
cvs rdiff -u -r1.1.1.1 -r0 \
    xsrc/external/mit/libdrm/dist/tests/util/Android.mk \
    xsrc/external/mit/libdrm/dist/tests/util/Makefile.sources
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/vc4/Makefile.sources

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/libdrm/dist/xf86drm.c
diff -u xsrc/external/mit/libdrm/dist/xf86drm.c:1.33 xsrc/external/mit/libdrm/dist/xf86drm.c:1.34
--- xsrc/external/mit/libdrm/dist/xf86drm.c:1.33	Thu Jul  4 09:22:57 2024
+++ xsrc/external/mit/libdrm/dist/xf86drm.c	Sun Mar  9 08:51:31 2025
@@ -205,18 +205,6 @@ static const struct drmFormatVendorModif
     { AFBC_FORMAT_MOD_USM,          "USM" },
 };
 
-static bool is_x_t_amd_gfx9_tile(uint64_t tile)
-{
-    switch (tile) {
-    case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
-    case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
-    case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
-           return true;
-    }
-
-    return false;
-}
-
 static bool
 drmGetAfbcFormatModifierNameFromArm(uint64_t modifier, FILE *fp)
 {
@@ -372,158 +360,159 @@ drmGetFormatModifierNameFromNvidia(uint6
     return  NULL;
 }
 
-static void
-drmGetFormatModifierNameFromAmdDcc(uint64_t modifier, FILE *fp)
-{
-    uint64_t dcc_max_compressed_block =
-                AMD_FMT_MOD_GET(DCC_MAX_COMPRESSED_BLOCK, modifier);
-    uint64_t dcc_retile = AMD_FMT_MOD_GET(DCC_RETILE, modifier);
-
-    const char *dcc_max_compressed_block_str = NULL;
-
-    fprintf(fp, ",DCC");
-
-    if (dcc_retile)
-        fprintf(fp, ",DCC_RETILE");
-
-    if (!dcc_retile && AMD_FMT_MOD_GET(DCC_PIPE_ALIGN, modifier))
-        fprintf(fp, ",DCC_PIPE_ALIGN");
-
-    if (AMD_FMT_MOD_GET(DCC_INDEPENDENT_64B, modifier))
-        fprintf(fp, ",DCC_INDEPENDENT_64B");
-
-    if (AMD_FMT_MOD_GET(DCC_INDEPENDENT_128B, modifier))
-        fprintf(fp, ",DCC_INDEPENDENT_128B");
-
-    switch (dcc_max_compressed_block) {
-    case AMD_FMT_MOD_DCC_BLOCK_64B:
-        dcc_max_compressed_block_str = "64B";
-        break;
-    case AMD_FMT_MOD_DCC_BLOCK_128B:
-        dcc_max_compressed_block_str = "128B";
-        break;
-    case AMD_FMT_MOD_DCC_BLOCK_256B:
-        dcc_max_compressed_block_str = "256B";
-        break;
-    }
-
-    if (dcc_max_compressed_block_str)
-        fprintf(fp, ",DCC_MAX_COMPRESSED_BLOCK=%s",
-                dcc_max_compressed_block_str);
-
-    if (AMD_FMT_MOD_GET(DCC_CONSTANT_ENCODE, modifier))
-        fprintf(fp, ",DCC_CONSTANT_ENCODE");
-}
-
-static void
-drmGetFormatModifierNameFromAmdTile(uint64_t modifier, FILE *fp)
-{
-    uint64_t pipe_xor_bits, bank_xor_bits, packers, rb;
-    uint64_t pipe, pipe_align, dcc, dcc_retile, tile_version;
-
-    pipe_align = AMD_FMT_MOD_GET(DCC_PIPE_ALIGN, modifier);
-    pipe_xor_bits = AMD_FMT_MOD_GET(PIPE_XOR_BITS, modifier);
-    dcc = AMD_FMT_MOD_GET(DCC, modifier);
-    dcc_retile = AMD_FMT_MOD_GET(DCC_RETILE, modifier);
-    tile_version = AMD_FMT_MOD_GET(TILE_VERSION, modifier);
-
-    fprintf(fp, ",PIPE_XOR_BITS=%"PRIu64, pipe_xor_bits);
-
-    if (tile_version == AMD_FMT_MOD_TILE_VER_GFX9) {
-        bank_xor_bits = AMD_FMT_MOD_GET(BANK_XOR_BITS, modifier);
-        fprintf(fp, ",BANK_XOR_BITS=%"PRIu64, bank_xor_bits);
-    }
-
-    if (tile_version == AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS) {
-        packers = AMD_FMT_MOD_GET(PACKERS, modifier);
-        fprintf(fp, ",PACKERS=%"PRIu64, packers);
-    }
-
-    if (dcc && tile_version == AMD_FMT_MOD_TILE_VER_GFX9) {
-        rb = AMD_FMT_MOD_GET(RB, modifier);
-        fprintf(fp, ",RB=%"PRIu64, rb);
-    }
-
-    if (dcc && tile_version == AMD_FMT_MOD_TILE_VER_GFX9 &&
-        (dcc_retile || pipe_align)) {
-        pipe = AMD_FMT_MOD_GET(PIPE, modifier);
-        fprintf(fp, ",PIPE_%"PRIu64, pipe);
-    }
-}
-
 static char *
 drmGetFormatModifierNameFromAmd(uint64_t modifier)
 {
-    uint64_t tile, tile_version, dcc;
+    static const char *gfx9_gfx11_tile_strings[32] = {
+        "LINEAR",
+        "256B_S",
+        "256B_D",
+        "256B_R",
+        "4KB_Z",
+        "4KB_S",
+        "4KB_D",
+        "4KB_R",
+        "64KB_Z",
+        "64KB_S",
+        "64KB_D",
+        "64KB_R",
+        "INVALID12",
+        "INVALID13",
+        "INVALID14",
+        "INVALID15",
+        "64KB_Z_T",
+        "64KB_S_T",
+        "64KB_D_T",
+        "64KB_R_T",
+        "4KB_Z_X",
+        "4KB_S_X",
+        "4KB_D_X",
+        "4KB_R_X",
+        "64KB_Z_X",
+        "64KB_S_X",
+        "64KB_D_X",
+        "64KB_R_X",
+        "256KB_Z_X",
+        "256KB_S_X",
+        "256KB_D_X",
+        "256KB_R_X",
+    };
+    static const char *gfx12_tile_strings[32] = {
+        "LINEAR",
+        "256B_2D",
+        "4KB_2D",
+        "64KB_2D",
+        "256KB_2D",
+        "4KB_3D",
+        "64KB_3D",
+        "256KB_3D",
+        /* other values are unused */
+    };
+    uint64_t tile_version = AMD_FMT_MOD_GET(TILE_VERSION, modifier);
     FILE *fp;
     char *mod_amd = NULL;
     size_t size = 0;
 
-    const char *str_tile = NULL;
-    const char *str_tile_version = NULL;
-
-    tile = AMD_FMT_MOD_GET(TILE, modifier);
-    tile_version = AMD_FMT_MOD_GET(TILE_VERSION, modifier);
-    dcc = AMD_FMT_MOD_GET(DCC, modifier);
-
     fp = open_memstream(&mod_amd, &size);
     if (!fp)
         return NULL;
 
-    /* add tile  */
     switch (tile_version) {
     case AMD_FMT_MOD_TILE_VER_GFX9:
-        str_tile_version = "GFX9";
+        fprintf(fp, "GFX9");
         break;
     case AMD_FMT_MOD_TILE_VER_GFX10:
-        str_tile_version = "GFX10";
+        fprintf(fp, "GFX10");
         break;
     case AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS:
-        str_tile_version = "GFX10_RBPLUS";
+        fprintf(fp, "GFX10_RBPLUS");
         break;
     case AMD_FMT_MOD_TILE_VER_GFX11:
-        str_tile_version = "GFX11";
+        fprintf(fp, "GFX11");
         break;
-    }
-
-    if (str_tile_version) {
-        fprintf(fp, "%s", str_tile_version);
-    } else {
+    case AMD_FMT_MOD_TILE_VER_GFX12:
+        fprintf(fp, "GFX12");
+        break;
+    default:
         fclose(fp);
         free(mod_amd);
         return NULL;
     }
 
-    /* add tile str */
-    switch (tile) {
-    case AMD_FMT_MOD_TILE_GFX9_64K_S:
-        str_tile = "GFX9_64K_S";
-        break;
-    case AMD_FMT_MOD_TILE_GFX9_64K_D:
-        str_tile = "GFX9_64K_D";
-        break;
-    case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
-        str_tile = "GFX9_64K_S_X";
-        break;
-    case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
-        str_tile = "GFX9_64K_D_X";
-        break;
-    case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
-        str_tile = "GFX9_64K_R_X";
-        break;
-    case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
-        str_tile = "GFX11_256K_R_X";
-        break;
-    }
+    if (tile_version >= AMD_FMT_MOD_TILE_VER_GFX12) {
+        unsigned tile = AMD_FMT_MOD_GET(TILE, modifier);
+
+        fprintf(fp, ",%s", gfx12_tile_strings[tile]);
+
+        if (AMD_FMT_MOD_GET(DCC, modifier)) {
+            fprintf(fp, ",DCC,DCC_MAX_COMPRESSED_BLOCK=%uB",
+                    64 << AMD_FMT_MOD_GET(DCC_MAX_COMPRESSED_BLOCK, modifier));
 
-    if (str_tile)
-        fprintf(fp, ",%s", str_tile);
+            /* Other DCC fields are unused by GFX12. */
+        }
+    } else {
+        unsigned tile = AMD_FMT_MOD_GET(TILE, modifier);
 
-    if (dcc)
-        drmGetFormatModifierNameFromAmdDcc(modifier, fp);
+        fprintf(fp, ",%s", gfx9_gfx11_tile_strings[tile]);
 
-    if (tile_version >= AMD_FMT_MOD_TILE_VER_GFX9 && is_x_t_amd_gfx9_tile(tile))
-        drmGetFormatModifierNameFromAmdTile(modifier, fp);
+        /* All *_T and *_X modes are affected by chip-specific fields. */
+        if (tile >= 16) {
+            fprintf(fp, ",PIPE_XOR_BITS=%u",
+                    (unsigned)AMD_FMT_MOD_GET(PIPE_XOR_BITS, modifier));
+
+            switch (tile_version) {
+            case AMD_FMT_MOD_TILE_VER_GFX9:
+                fprintf(fp, ",BANK_XOR_BITS=%u",
+                        (unsigned)AMD_FMT_MOD_GET(BANK_XOR_BITS, modifier));
+                break;
+
+            case AMD_FMT_MOD_TILE_VER_GFX10:
+                /* Nothing else for GFX10. */
+                break;
+
+            case AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS:
+            case AMD_FMT_MOD_TILE_VER_GFX11:
+                /* This also determines the DCC layout, but DCC is only legal
+                 * with tile=27 and tile=31 (*_R_X modes).
+                 */
+                fprintf(fp, ",PACKERS=%u",
+                        (unsigned)AMD_FMT_MOD_GET(PACKERS, modifier));
+                break;
+            }
+        }
+
+        if (AMD_FMT_MOD_GET(DCC, modifier)) {
+            if (tile_version == AMD_FMT_MOD_TILE_VER_GFX9 &&
+                (AMD_FMT_MOD_GET(DCC_PIPE_ALIGN, modifier) ||
+                 AMD_FMT_MOD_GET(DCC_RETILE, modifier))) {
+                /* These two only determine the layout of
+                 * the non-displayable DCC plane.
+                 */
+                fprintf(fp, ",RB=%u",
+                        (unsigned)AMD_FMT_MOD_GET(RB, modifier));
+                fprintf(fp, ",PIPE=%u",
+                        (unsigned)AMD_FMT_MOD_GET(PIPE, modifier));
+            }
+
+            fprintf(fp, ",DCC,DCC_MAX_COMPRESSED_BLOCK=%uB",
+                    64 << AMD_FMT_MOD_GET(DCC_MAX_COMPRESSED_BLOCK, modifier));
+
+            if (AMD_FMT_MOD_GET(DCC_INDEPENDENT_64B, modifier))
+                fprintf(fp, ",DCC_INDEPENDENT_64B");
+
+            if (AMD_FMT_MOD_GET(DCC_INDEPENDENT_128B, modifier))
+                fprintf(fp, ",DCC_INDEPENDENT_128B");
+
+            if (AMD_FMT_MOD_GET(DCC_CONSTANT_ENCODE, modifier))
+                fprintf(fp, ",DCC_CONSTANT_ENCODE");
+
+            if (AMD_FMT_MOD_GET(DCC_PIPE_ALIGN, modifier))
+                fprintf(fp, ",DCC_PIPE_ALIGN");
+
+            if (AMD_FMT_MOD_GET(DCC_RETILE, modifier))
+                fprintf(fp, ",DCC_RETILE");
+        }
+    }
 
     fclose(fp);
     return mod_amd;

Reply via email to