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;