Module Name: xsrc
Committed By: mrg
Date: Sun Jul 11 00:31:55 UTC 2021
Modified Files:
xsrc/external/mit/libdrm/dist: xf86drm.c xf86drm.h xf86drmMode.c
xsrc/external/mit/libdrm/dist/amdgpu: amdgpu_vamgr.c
xsrc/external/mit/libdrm/dist/tests/modetest: modetest.c
xsrc/external/mit/xterm/dist: fontutils.c misc.c ptyx.h xterm.h
xterm.man
Removed Files:
xsrc/external/mit/libdrm/dist/intel: .gitignore
xsrc/external/mit/libdrm/dist/intel/tests: .gitignore
xsrc/external/mit/libdrm/dist/tegra: .gitignore
xsrc/external/mit/libdrm/dist/tests/nouveau: .gitignore
xsrc/external/mit/libdrm/dist/tests/tegra: .gitignore
Log Message:
merge xterm 368 and libdrm 2.4.107.
To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 xsrc/external/mit/libdrm/dist/xf86drm.c
cvs rdiff -u -r1.13 -r1.14 xsrc/external/mit/libdrm/dist/xf86drm.h
cvs rdiff -u -r1.17 -r1.18 xsrc/external/mit/libdrm/dist/xf86drmMode.c
cvs rdiff -u -r1.2 -r1.3 xsrc/external/mit/libdrm/dist/amdgpu/amdgpu_vamgr.c
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/intel/.gitignore
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/libdrm/dist/intel/tests/.gitignore
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/libdrm/dist/tegra/.gitignore
cvs rdiff -u -r1.15 -r1.16 \
xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/libdrm/dist/tests/nouveau/.gitignore
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/libdrm/dist/tests/tegra/.gitignore
cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/xterm/dist/fontutils.c
cvs rdiff -u -r1.21 -r1.22 xsrc/external/mit/xterm/dist/misc.c
cvs rdiff -u -r1.16 -r1.17 xsrc/external/mit/xterm/dist/ptyx.h
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/xterm/dist/xterm.h
cvs rdiff -u -r1.18 -r1.19 xsrc/external/mit/xterm/dist/xterm.man
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.28 xsrc/external/mit/libdrm/dist/xf86drm.c:1.29
--- xsrc/external/mit/libdrm/dist/xf86drm.c:1.28 Tue Apr 27 03:02:37 2021
+++ xsrc/external/mit/libdrm/dist/xf86drm.c Sun Jul 11 00:31:53 2021
@@ -61,6 +61,7 @@
#include <sys/sysctl.h>
#endif
#include <math.h>
+#include <inttypes.h>
#if defined(__FreeBSD__)
#include <sys/param.h>
@@ -76,6 +77,7 @@
#include "xf86drm.h"
#include "libdrm_macros.h"
+#include "drm_fourcc.h"
#include "util_math.h"
@@ -128,6 +130,362 @@ static drmServerInfoPtr drm_server_info;
static bool drmNodeIsDRM(int maj, int min);
static char *drmGetMinorNameForFD(int fd, int type);
+#define DRM_MODIFIER(v, f, f_name) \
+ .modifier = DRM_FORMAT_MOD_##v ## _ ##f, \
+ .modifier_name = #f_name
+
+#define DRM_MODIFIER_INVALID(v, f_name) \
+ .modifier = DRM_FORMAT_MOD_INVALID, .modifier_name = #f_name
+
+#define DRM_MODIFIER_LINEAR(v, f_name) \
+ .modifier = DRM_FORMAT_MOD_LINEAR, .modifier_name = #f_name
+
+/* Intel is abit special as the format doesn't follow other vendors naming
+ * scheme */
+#define DRM_MODIFIER_INTEL(f, f_name) \
+ .modifier = I915_FORMAT_MOD_##f, .modifier_name = #f_name
+
+struct drmFormatModifierInfo {
+ uint64_t modifier;
+ const char *modifier_name;
+};
+
+struct drmFormatModifierVendorInfo {
+ uint8_t vendor;
+ const char *vendor_name;
+};
+
+#include "generated_static_table_fourcc.h"
+
+struct drmVendorInfo {
+ uint8_t vendor;
+ char *(*vendor_cb)(uint64_t modifier);
+};
+
+struct drmFormatVendorModifierInfo {
+ uint64_t modifier;
+ const char *modifier_name;
+};
+
+static char *
+drmGetFormatModifierNameFromArm(uint64_t modifier);
+
+static char *
+drmGetFormatModifierNameFromNvidia(uint64_t modifier);
+
+static char *
+drmGetFormatModifierNameFromAmd(uint64_t modifier);
+
+static char *
+drmGetFormatModifierNameFromAmlogic(uint64_t modifier);
+
+static const struct drmVendorInfo modifier_format_vendor_table[] = {
+ { DRM_FORMAT_MOD_VENDOR_ARM, drmGetFormatModifierNameFromArm },
+ { DRM_FORMAT_MOD_VENDOR_NVIDIA, drmGetFormatModifierNameFromNvidia },
+ { DRM_FORMAT_MOD_VENDOR_AMD, drmGetFormatModifierNameFromAmd },
+ { DRM_FORMAT_MOD_VENDOR_AMLOGIC, drmGetFormatModifierNameFromAmlogic },
+};
+
+#ifndef AFBC_FORMAT_MOD_MODE_VALUE_MASK
+#define AFBC_FORMAT_MOD_MODE_VALUE_MASK 0x000fffffffffffffULL
+#endif
+
+static const struct drmFormatVendorModifierInfo arm_mode_value_table[] = {
+ { AFBC_FORMAT_MOD_YTR, "YTR" },
+ { AFBC_FORMAT_MOD_SPLIT, "SPLIT" },
+ { AFBC_FORMAT_MOD_SPARSE, "SPARSE" },
+ { AFBC_FORMAT_MOD_CBR, "CBR" },
+ { AFBC_FORMAT_MOD_TILED, "TILED" },
+ { AFBC_FORMAT_MOD_SC, "SC" },
+ { AFBC_FORMAT_MOD_DB, "DB" },
+ { AFBC_FORMAT_MOD_BCH, "BCH" },
+ { 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 char *
+drmGetFormatModifierNameFromArm(uint64_t modifier)
+{
+ uint64_t type = (modifier >> 52) & 0xf;
+ uint64_t mode_value = modifier & AFBC_FORMAT_MOD_MODE_VALUE_MASK;
+ uint64_t block_size = mode_value & AFBC_FORMAT_MOD_BLOCK_SIZE_MASK;
+
+ FILE *fp;
+ char *modifier_name = NULL;
+ size_t size = 0;
+ unsigned int i;
+
+ const char *block = NULL;
+ const char *mode = NULL;
+ bool did_print_mode = false;
+
+ /* misc type is already handled by the static table */
+ if (type != DRM_FORMAT_MOD_ARM_TYPE_AFBC)
+ return NULL;
+
+ fp = open_memstream(&modifier_name, &size);
+ if (!fp)
+ return NULL;
+
+ /* add block, can only have a (single) block */
+ switch (block_size) {
+ case AFBC_FORMAT_MOD_BLOCK_SIZE_16x16:
+ block = "16x16";
+ break;
+ case AFBC_FORMAT_MOD_BLOCK_SIZE_32x8:
+ block = "32x8";
+ break;
+ case AFBC_FORMAT_MOD_BLOCK_SIZE_64x4:
+ block = "64x4";
+ break;
+ case AFBC_FORMAT_MOD_BLOCK_SIZE_32x8_64x4:
+ block = "32x8_64x4";
+ break;
+ }
+
+ if (!block) {
+ fclose(fp);
+ free(modifier_name);
+ return NULL;
+ }
+
+ fprintf(fp, "BLOCK_SIZE=%s,", block);
+
+ /* add mode */
+ for (i = 0; i < ARRAY_SIZE(arm_mode_value_table); i++) {
+ if (arm_mode_value_table[i].modifier & mode_value) {
+ mode = arm_mode_value_table[i].modifier_name;
+ if (!did_print_mode) {
+ fprintf(fp, "MODE=%s", mode);
+ did_print_mode = true;
+ } else {
+ fprintf(fp, "|%s", mode);
+ }
+ }
+ }
+
+ fclose(fp);
+ return modifier_name;
+}
+
+static char *
+drmGetFormatModifierNameFromNvidia(uint64_t modifier)
+{
+ uint64_t height, kind, gen, sector, compression;
+
+ height = modifier & 0xf;
+ kind = (modifier >> 12) & 0xff;
+
+ gen = (modifier >> 20) & 0x3;
+ sector = (modifier >> 22) & 0x1;
+ compression = (modifier >> 23) & 0x7;
+
+ /* just in case there could other simpler modifiers, not yet added, avoid
+ * testing against TEGRA_TILE */
+ if ((modifier & 0x10) == 0x10) {
+ char *mod_nvidia;
+ asprintf(&mod_nvidia, "BLOCK_LINEAR_2D,HEIGHT=%"PRIu64",KIND=%"PRIu64","
+ "GEN=%"PRIu64",SECTOR=%"PRIu64",COMPRESSION=%"PRIu64"", height,
+ kind, gen, sector, compression);
+ return mod_nvidia;
+ }
+
+ 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;
+ 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";
+ break;
+ case AMD_FMT_MOD_TILE_VER_GFX10:
+ str_tile_version = "GFX10";
+ break;
+ case AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS:
+ str_tile_version = "GFX10_RBPLUS";
+ break;
+ }
+
+ if (str_tile_version) {
+ fprintf(fp, "%s", str_tile_version);
+ } else {
+ 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;
+ }
+
+ if (str_tile)
+ fprintf(fp, ",%s", str_tile);
+
+ if (dcc)
+ drmGetFormatModifierNameFromAmdDcc(modifier, fp);
+
+ if (tile_version >= AMD_FMT_MOD_TILE_VER_GFX9 && is_x_t_amd_gfx9_tile(tile))
+ drmGetFormatModifierNameFromAmdTile(modifier, fp);
+
+ fclose(fp);
+ return mod_amd;
+}
+
+static char *
+drmGetFormatModifierNameFromAmlogic(uint64_t modifier)
+{
+ uint64_t layout = modifier & 0xff;
+ uint64_t options = (modifier >> 8) & 0xff;
+ char *mod_amlogic = NULL;
+
+ const char *layout_str;
+ const char *opts_str;
+
+ switch (layout) {
+ case AMLOGIC_FBC_LAYOUT_BASIC:
+ layout_str = "BASIC";
+ break;
+ case AMLOGIC_FBC_LAYOUT_SCATTER:
+ layout_str = "SCATTER";
+ break;
+ default:
+ layout_str = "INVALID_LAYOUT";
+ break;
+ }
+
+ if (options & AMLOGIC_FBC_OPTION_MEM_SAVING)
+ opts_str = "MEM_SAVING";
+ else
+ opts_str = "0";
+
+ asprintf(&mod_amlogic, "FBC,LAYOUT=%s,OPTIONS=%s", layout_str, opts_str);
+ return mod_amlogic;
+}
+
static unsigned log2_int(unsigned x)
{
unsigned l;
@@ -4756,3 +5114,66 @@ drm_public int drmSyncobjTransfer(int fd
return ret;
}
+
+static char *
+drmGetFormatModifierFromSimpleTokens(uint64_t modifier)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(drm_format_modifier_table); i++) {
+ if (drm_format_modifier_table[i].modifier == modifier)
+ return strdup(drm_format_modifier_table[i].modifier_name);
+ }
+
+ return NULL;
+}
+
+/** Retrieves a human-readable representation of a vendor (as a string) from
+ * the format token modifier
+ *
+ * \param modifier the format modifier token
+ * \return a char pointer to the human-readable form of the vendor. Caller is
+ * responsible for freeing it.
+ */
+drm_public char *
+drmGetFormatModifierVendor(uint64_t modifier)
+{
+ unsigned int i;
+ uint8_t vendor = fourcc_mod_get_vendor(modifier);
+
+ for (i = 0; i < ARRAY_SIZE(drm_format_modifier_vendor_table); i++) {
+ if (drm_format_modifier_vendor_table[i].vendor == vendor)
+ return strdup(drm_format_modifier_vendor_table[i].vendor_name);
+ }
+
+ return NULL;
+}
+
+/** Retrieves a human-readable representation string from a format token
+ * modifier
+ *
+ * If the dedicated function was not able to extract a valid name or searching
+ * the format modifier was not in the table, this function would return NULL.
+ *
+ * \param modifier the token format
+ * \return a malloc'ed string representation of the modifier. Caller is
+ * responsible for freeing the string returned.
+ *
+ */
+drm_public char *
+drmGetFormatModifierName(uint64_t modifier)
+{
+ uint8_t vendorid = fourcc_mod_get_vendor(modifier);
+ char *modifier_found = NULL;
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(modifier_format_vendor_table); i++) {
+ if (modifier_format_vendor_table[i].vendor == vendorid)
+ modifier_found = modifier_format_vendor_table[i].vendor_cb(modifier);
+ }
+
+ if (!modifier_found)
+ return drmGetFormatModifierFromSimpleTokens(modifier);
+
+ return modifier_found;
+}
Index: xsrc/external/mit/libdrm/dist/xf86drm.h
diff -u xsrc/external/mit/libdrm/dist/xf86drm.h:1.13 xsrc/external/mit/libdrm/dist/xf86drm.h:1.14
--- xsrc/external/mit/libdrm/dist/xf86drm.h:1.13 Tue Apr 27 03:02:37 2021
+++ xsrc/external/mit/libdrm/dist/xf86drm.h Sun Jul 11 00:31:53 2021
@@ -953,6 +953,17 @@ extern int drmSyncobjTransfer(int fd,
uint32_t src_handle, uint64_t src_point,
uint32_t flags);
+extern char *
+drmGetFormatModifierVendor(uint64_t modifier);
+
+extern char *
+drmGetFormatModifierName(uint64_t modifier);
+
+#ifndef fourcc_mod_get_vendor
+#define fourcc_mod_get_vendor(modifier) \
+ (((modifier) >> 56) & 0xff)
+#endif
+
#if defined(__cplusplus)
}
#endif
Index: xsrc/external/mit/libdrm/dist/xf86drmMode.c
diff -u xsrc/external/mit/libdrm/dist/xf86drmMode.c:1.17 xsrc/external/mit/libdrm/dist/xf86drmMode.c:1.18
--- xsrc/external/mit/libdrm/dist/xf86drmMode.c:1.17 Tue Apr 27 03:02:37 2021
+++ xsrc/external/mit/libdrm/dist/xf86drmMode.c Sun Jul 11 00:31:53 2021
@@ -38,6 +38,9 @@
#include <stdlib.h>
#include <sys/ioctl.h>
#if HAVE_SYS_SYSCTL_H
+#ifdef __FreeBSD__
+#include <sys/types.h>
+#endif
#include <sys/sysctl.h>
#endif
#include <stdio.h>
@@ -289,10 +292,8 @@ drm_public int drmModeAddFB2WithModifier
memcpy(f.handles, bo_handles, 4 * sizeof(bo_handles[0]));
memcpy(f.pitches, pitches, 4 * sizeof(pitches[0]));
memcpy(f.offsets, offsets, 4 * sizeof(offsets[0]));
- if (modifier) {
- f.flags |= DRM_MODE_FB_MODIFIERS;
+ if (modifier)
memcpy(f.modifier, modifier, 4 * sizeof(modifier[0]));
- }
if ((ret = DRM_IOCTL(fd, DRM_IOCTL_MODE_ADDFB2, &f)))
return ret;
Index: xsrc/external/mit/libdrm/dist/amdgpu/amdgpu_vamgr.c
diff -u xsrc/external/mit/libdrm/dist/amdgpu/amdgpu_vamgr.c:1.2 xsrc/external/mit/libdrm/dist/amdgpu/amdgpu_vamgr.c:1.3
--- xsrc/external/mit/libdrm/dist/amdgpu/amdgpu_vamgr.c:1.2 Thu Jan 10 09:13:52 2019
+++ xsrc/external/mit/libdrm/dist/amdgpu/amdgpu_vamgr.c Sun Jul 11 00:31:54 2021
@@ -69,65 +69,99 @@ drm_private void amdgpu_vamgr_deinit(str
pthread_mutex_destroy(&mgr->bo_va_mutex);
}
-static uint64_t
+static drm_private int
+amdgpu_vamgr_subtract_hole(struct amdgpu_bo_va_hole *hole, uint64_t start_va,
+ uint64_t end_va)
+{
+ if (start_va > hole->offset && end_va - hole->offset < hole->size) {
+ struct amdgpu_bo_va_hole *n = calloc(1, sizeof(struct amdgpu_bo_va_hole));
+ if (!n)
+ return -ENOMEM;
+
+ n->size = start_va - hole->offset;
+ n->offset = hole->offset;
+ list_add(&n->list, &hole->list);
+
+ hole->size -= (end_va - hole->offset);
+ hole->offset = end_va;
+ } else if (start_va > hole->offset) {
+ hole->size = start_va - hole->offset;
+ } else if (end_va - hole->offset < hole->size) {
+ hole->size -= (end_va - hole->offset);
+ hole->offset = end_va;
+ } else {
+ list_del(&hole->list);
+ free(hole);
+ }
+
+ return 0;
+}
+
+static drm_private int
amdgpu_vamgr_find_va(struct amdgpu_bo_va_mgr *mgr, uint64_t size,
- uint64_t alignment, uint64_t base_required)
+ uint64_t alignment, uint64_t base_required,
+ bool search_from_top, uint64_t *va_out)
{
struct amdgpu_bo_va_hole *hole, *n;
- uint64_t offset = 0, waste = 0;
+ uint64_t offset = 0;
+ int ret;
alignment = MAX2(alignment, mgr->va_alignment);
size = ALIGN(size, mgr->va_alignment);
if (base_required % alignment)
- return AMDGPU_INVALID_VA_ADDRESS;
+ return -EINVAL;
pthread_mutex_lock(&mgr->bo_va_mutex);
- LIST_FOR_EACH_ENTRY_SAFE_REV(hole, n, &mgr->va_holes, list) {
- if (base_required) {
- if (hole->offset > base_required ||
- (hole->offset + hole->size) < (base_required + size))
- continue;
- waste = base_required - hole->offset;
- offset = base_required;
- } else {
- offset = hole->offset;
- waste = offset % alignment;
- waste = waste ? alignment - waste : 0;
- offset += waste;
- if (offset >= (hole->offset + hole->size)) {
- continue;
+ if (!search_from_top) {
+ LIST_FOR_EACH_ENTRY_SAFE_REV(hole, n, &mgr->va_holes, list) {
+ if (base_required) {
+ if (hole->offset > base_required ||
+ (hole->offset + hole->size) < (base_required + size))
+ continue;
+ offset = base_required;
+ } else {
+ uint64_t waste = hole->offset % alignment;
+ waste = waste ? alignment - waste : 0;
+ offset = hole->offset + waste;
+ if (offset >= (hole->offset + hole->size) ||
+ size > (hole->offset + hole->size) - offset) {
+ continue;
+ }
}
- }
- if (!waste && hole->size == size) {
- offset = hole->offset;
- list_del(&hole->list);
- free(hole);
+ ret = amdgpu_vamgr_subtract_hole(hole, offset, offset + size);
pthread_mutex_unlock(&mgr->bo_va_mutex);
- return offset;
+ *va_out = offset;
+ return ret;
}
- if ((hole->size - waste) > size) {
- if (waste) {
- n = calloc(1, sizeof(struct amdgpu_bo_va_hole));
- n->size = waste;
- n->offset = hole->offset;
- list_add(&n->list, &hole->list);
+ } else {
+ LIST_FOR_EACH_ENTRY_SAFE(hole, n, &mgr->va_holes, list) {
+ if (base_required) {
+ if (hole->offset > base_required ||
+ (hole->offset + hole->size) < (base_required + size))
+ continue;
+ offset = base_required;
+ } else {
+ if (size > hole->size)
+ continue;
+
+ offset = hole->offset + hole->size - size;
+ offset -= offset % alignment;
+ if (offset < hole->offset) {
+ continue;
+ }
}
- hole->size -= (size + waste);
- hole->offset += size + waste;
- pthread_mutex_unlock(&mgr->bo_va_mutex);
- return offset;
- }
- if ((hole->size - waste) == size) {
- hole->size = waste;
+
+ ret = amdgpu_vamgr_subtract_hole(hole, offset, offset + size);
pthread_mutex_unlock(&mgr->bo_va_mutex);
- return offset;
+ *va_out = offset;
+ return ret;
}
}
pthread_mutex_unlock(&mgr->bo_va_mutex);
- return AMDGPU_INVALID_VA_ADDRESS;
+ return -ENOMEM;
}
static void
@@ -196,6 +230,8 @@ drm_public int amdgpu_va_range_alloc(amd
uint64_t flags)
{
struct amdgpu_bo_va_mgr *vamgr;
+ bool search_from_top = !!(flags & AMDGPU_VA_RANGE_REPLAYABLE);
+ int ret;
/* Clear the flag when the high VA manager is not initialized */
if (flags & AMDGPU_VA_RANGE_HIGH && !dev->vamgr_high_32.va_max)
@@ -216,21 +252,22 @@ drm_public int amdgpu_va_range_alloc(amd
va_base_alignment = MAX2(va_base_alignment, vamgr->va_alignment);
size = ALIGN(size, vamgr->va_alignment);
- *va_base_allocated = amdgpu_vamgr_find_va(vamgr, size,
- va_base_alignment, va_base_required);
+ ret = amdgpu_vamgr_find_va(vamgr, size,
+ va_base_alignment, va_base_required,
+ search_from_top, va_base_allocated);
- if (!(flags & AMDGPU_VA_RANGE_32_BIT) &&
- (*va_base_allocated == AMDGPU_INVALID_VA_ADDRESS)) {
+ if (!(flags & AMDGPU_VA_RANGE_32_BIT) && ret) {
/* fallback to 32bit address */
if (flags & AMDGPU_VA_RANGE_HIGH)
vamgr = &dev->vamgr_high_32;
else
vamgr = &dev->vamgr_32;
- *va_base_allocated = amdgpu_vamgr_find_va(vamgr, size,
- va_base_alignment, va_base_required);
+ ret = amdgpu_vamgr_find_va(vamgr, size,
+ va_base_alignment, va_base_required,
+ search_from_top, va_base_allocated);
}
- if (*va_base_allocated != AMDGPU_INVALID_VA_ADDRESS) {
+ if (!ret) {
struct amdgpu_va* va;
va = calloc(1, sizeof(struct amdgpu_va));
if(!va){
@@ -243,11 +280,9 @@ drm_public int amdgpu_va_range_alloc(amd
va->range = va_range_type;
va->vamgr = vamgr;
*va_range_handle = va;
- } else {
- return -EINVAL;
}
- return 0;
+ return ret;
}
drm_public int amdgpu_va_range_free(amdgpu_va_handle va_range_handle)
Index: xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c
diff -u xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c:1.15 xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c:1.16
--- xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c:1.15 Tue Apr 27 03:02:37 2021
+++ xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c Sun Jul 11 00:31:54 2021
@@ -265,52 +265,37 @@ static void dump_blob(struct device *dev
static const char *modifier_to_string(uint64_t modifier)
{
- switch (modifier) {
- case DRM_FORMAT_MOD_INVALID:
- return "INVALID";
- case DRM_FORMAT_MOD_LINEAR:
- return "LINEAR";
- case I915_FORMAT_MOD_X_TILED:
- return "X_TILED";
- case I915_FORMAT_MOD_Y_TILED:
- return "Y_TILED";
- case I915_FORMAT_MOD_Yf_TILED:
- return "Yf_TILED";
- case I915_FORMAT_MOD_Y_TILED_CCS:
- return "Y_TILED_CCS";
- case I915_FORMAT_MOD_Yf_TILED_CCS:
- return "Yf_TILED_CCS";
- case DRM_FORMAT_MOD_SAMSUNG_64_32_TILE:
- return "SAMSUNG_64_32_TILE";
- case DRM_FORMAT_MOD_VIVANTE_TILED:
- return "VIVANTE_TILED";
- case DRM_FORMAT_MOD_VIVANTE_SUPER_TILED:
- return "VIVANTE_SUPER_TILED";
- case DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED:
- return "VIVANTE_SPLIT_TILED";
- case DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED:
- return "VIVANTE_SPLIT_SUPER_TILED";
- case DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED:
- return "NVIDIA_TEGRA_TILED";
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(0):
- return "NVIDIA_16BX2_BLOCK(0)";
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(1):
- return "NVIDIA_16BX2_BLOCK(1)";
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(2):
- return "NVIDIA_16BX2_BLOCK(2)";
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(3):
- return "NVIDIA_16BX2_BLOCK(3)";
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(4):
- return "NVIDIA_16BX2_BLOCK(4)";
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(5):
- return "NVIDIA_16BX2_BLOCK(5)";
- case DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED:
- return "MOD_BROADCOM_VC4_T_TILED";
- case DRM_FORMAT_MOD_QCOM_COMPRESSED:
- return "QCOM_COMPRESSED";
- default:
- return "(UNKNOWN MODIFIER)";
- }
+ static char mod_string[4096];
+
+ char *modifier_name = drmGetFormatModifierName(modifier);
+ char *vendor_name = drmGetFormatModifierVendor(modifier);
+ memset(mod_string, 0x00, sizeof(mod_string));
+
+ if (!modifier_name) {
+ if (vendor_name)
+ snprintf(mod_string, sizeof(mod_string), "%s_%s",
+ vendor_name, "UNKNOWN_MODIFIER");
+ else
+ snprintf(mod_string, sizeof(mod_string), "%s_%s",
+ "UNKNOWN_VENDOR", "UNKNOWN_MODIFIER");
+ /* safe, as free is no-op for NULL */
+ free(vendor_name);
+ return mod_string;
+ }
+
+ if (modifier == DRM_FORMAT_MOD_LINEAR) {
+ snprintf(mod_string, sizeof(mod_string), "%s", modifier_name);
+ free(modifier_name);
+ free(vendor_name);
+ return mod_string;
+ }
+
+ snprintf(mod_string, sizeof(mod_string), "%s_%s",
+ vendor_name, modifier_name);
+
+ free(modifier_name);
+ free(vendor_name);
+ return mod_string;
}
static void dump_in_formats(struct device *dev, uint32_t blob_id)
Index: xsrc/external/mit/xterm/dist/fontutils.c
diff -u xsrc/external/mit/xterm/dist/fontutils.c:1.9 xsrc/external/mit/xterm/dist/fontutils.c:1.10
--- xsrc/external/mit/xterm/dist/fontutils.c:1.9 Tue Apr 27 01:58:18 2021
+++ xsrc/external/mit/xterm/dist/fontutils.c Sun Jul 11 00:31:54 2021
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.c,v 1.703 2021/03/02 00:25:24 tom Exp $ */
+/* $XTermId: fontutils.c,v 1.705 2021/06/02 23:49:10 tom Exp $ */
/*
* Copyright 1998-2020,2021 by Thomas E. Dickey
Index: xsrc/external/mit/xterm/dist/misc.c
diff -u xsrc/external/mit/xterm/dist/misc.c:1.21 xsrc/external/mit/xterm/dist/misc.c:1.22
--- xsrc/external/mit/xterm/dist/misc.c:1.21 Sat May 15 19:30:15 2021
+++ xsrc/external/mit/xterm/dist/misc.c Sun Jul 11 00:31:54 2021
@@ -1,4 +1,4 @@
-/* $XTermId: misc.c,v 1.979 2021/03/24 00:27:48 tom Exp $ */
+/* $XTermId: misc.c,v 1.988 2021/06/07 23:19:42 tom Exp $ */
/*
* Copyright 1999-2020,2021 by Thomas E. Dickey
@@ -6991,11 +6991,73 @@ getXtermWidget(Widget w)
}
#if OPT_SESSION_MGT
+
+#if OPT_TRACE
+static void
+trace_1_SM(const char *tag, String name)
+{
+ Arg args[1];
+ char *buf = 0;
+
+ XtSetArg(args[0], name, &buf);
+ XtGetValues(toplevel, args, 1);
+
+ if (strstr(name, "Path") || strstr(name, "Directory")) {
+ TRACE(("%s %s: %s\n", tag, name, NonNull(buf)));
+ } else if (strstr(name, "Command")) {
+ if (buf != NULL) {
+ char **vec = (char **) (void *) buf;
+ int n;
+ TRACE(("%s %s:\n", tag, name));
+ for (n = 0; vec[n] != NULL; ++n) {
+ TRACE((" arg[%d] = %s\n", n, vec[n]));
+ }
+ } else {
+ TRACE(("%s %s: %p\n", tag, name, buf));
+ }
+ } else {
+ TRACE(("%s %s: %p\n", tag, name, buf));
+ }
+}
+
+static void
+trace_SM_props(void)
+{
+ /* *INDENT-OFF* */
+ static struct { String app, cls; } table[] = {
+ { XtNcurrentDirectory, XtCCurrentDirectory },
+ { XtNdieCallback, XtNdiscardCommand },
+ { XtCDiscardCommand, XtNenvironment },
+ { XtCEnvironment, XtNinteractCallback },
+ { XtNjoinSession, XtCJoinSession },
+ { XtNprogramPath, XtCProgramPath },
+ { XtNresignCommand, XtCResignCommand },
+ { XtNrestartCommand, XtCRestartCommand },
+ { XtNrestartStyle, XtCRestartStyle },
+ { XtNsaveCallback, XtNsaveCompleteCallback },
+ { XtNsessionID, XtCSessionID },
+ { XtNshutdownCommand, XtCShutdownCommand },
+ };
+ /* *INDENT-ON* */
+ Cardinal n;
+ TRACE(("Session properties:\n"));
+ for (n = 0; n < XtNumber(table); ++n) {
+ trace_1_SM("app", table[n].app);
+ trace_1_SM("cls", table[n].cls);
+ }
+}
+#define TRACE_SM_PROPS() trace_SM_props()
+#else
+#define TRACE_SM_PROPS() /* nothing */
+#endif
+
static void
die_callback(Widget w GCC_UNUSED,
XtPointer client_data GCC_UNUSED,
XtPointer call_data GCC_UNUSED)
{
+ TRACE(("die_callback %p\n", die_callback));
+ TRACE_SM_PROPS();
NormalExit();
}
@@ -7005,7 +7067,19 @@ save_callback(Widget w GCC_UNUSED,
XtPointer call_data)
{
XtCheckpointToken token = (XtCheckpointToken) call_data;
- /* we have nothing to save */
+ TRACE(("save_callback:\n"));
+ TRACE(("... save_type <-%d\n", token->save_type));
+ TRACE(("... interact_style <-%d\n", token->interact_style));
+ TRACE(("... shutdown <-%s\n", BtoS(token->shutdown)));
+ TRACE(("... fast <-%s\n", BtoS(token->fast)));
+ TRACE(("... cancel_shutdown <-%s\n", BtoS(token->cancel_shutdown)));
+ TRACE(("... phase <-%d\n", token->phase));
+ TRACE(("... interact_dialog_type ->%d\n", token->interact_dialog_type));
+ TRACE(("... request_cancel ->%s\n", BtoS(token->request_cancel)));
+ TRACE(("... request_next_phase ->%s\n", BtoS(token->request_next_phase)));
+ TRACE(("... save_success ->%s\n", BtoS(token->save_success)));
+ xtermUpdateRestartCommand(term);
+ /* we have nothing more to save */
token->save_success = True;
}
@@ -7031,6 +7105,8 @@ xtermOpenSession(void)
TRACE(("Enabling session-management callbacks\n"));
XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL);
XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL);
+
+ TRACE_SM_PROPS();
}
}
@@ -7039,6 +7115,267 @@ xtermCloseSession(void)
{
IceRemoveConnectionWatch(icewatch, NULL);
}
+
+typedef enum {
+ B_ARG = 0,
+ I_ARG,
+ D_ARG,
+ S_ARG
+} ParamType;
+
+#define Barg(name, field) { name, B_ARG, XtOffsetOf(XtermWidgetRec, field) }
+#define Iarg(name, field) { name, I_ARG, XtOffsetOf(XtermWidgetRec, field) }
+#define Darg(name, field) { name, D_ARG, XtOffsetOf(XtermWidgetRec, field) }
+#define Sarg(name, field) { name, S_ARG, XtOffsetOf(XtermWidgetRec, field) }
+
+typedef struct {
+ const char name[30];
+ ParamType type;
+ Cardinal offset;
+} FontParams;
+
+/* *INDENT-OFF* */
+static const FontParams fontParams[] = {
+ Iarg(XtNinitialFont, screen.menu_font_number), /* "-fc" */
+ Barg(XtNallowBoldFonts, screen.allowBoldFonts), /* menu */
+#if OPT_BOX_CHARS
+ Barg(XtNforceBoxChars, screen.force_box_chars), /* "-fbx" */
+ Barg(XtNforcePackedFont, screen.force_packed), /* menu */
+#endif
+#if OPT_DEC_CHRSET
+ Barg(XtNfontDoublesize, screen.font_doublesize), /* menu */
+#endif
+#if OPT_WIDE_CHARS
+ Barg(XtNutf8Fonts, screen.utf8_fonts), /* menu */
+#endif
+#if OPT_RENDERFONT
+ Darg(XtNfaceSize, misc.face_size[0]), /* "-fs" */
+ Sarg(XtNfaceName, misc.default_xft.f_n), /* "-fa" */
+ Sarg(XtNrenderFont, misc.render_font_s), /* (resource) */
+#endif
+};
+/* *INDENT-ON* */
+
+#define RESTART_PARAMS (int)(XtNumber(fontParams) * 2)
+#define TypedPtr(type) *(type *)(void *)((char *) xw + parameter->offset)
+
+/*
+ * If no widget is given, no value is used.
+ */
+static char *
+formatFontParam(char *result, XtermWidget xw, const FontParams * parameter)
+{
+ sprintf(result, "%s*%s:", ProgramName, parameter->name);
+ if (xw != None) {
+ char *next = result + strlen(result);
+ switch (parameter->type) {
+ case B_ARG:
+ sprintf(next, "%s", *(Boolean *) ((char *) xw + parameter->offset)
+ ? "true"
+ : "false");
+ break;
+ case I_ARG:
+ sprintf(next, "%d", TypedPtr(int));
+ break;
+ case D_ARG:
+ sprintf(next, "%.1f", TypedPtr(float));
+ break;
+ case S_ARG:
+ strcpy(next, TypedPtr(char *));
+#if OPT_RENDERFONT
+ if (!strcmp(parameter->name, XtNfaceName)) {
+ if (IsEmpty(next)
+ && xw->work.render_font) {
+ strcpy(next, DEFFACENAME_AUTO);
+ }
+ } else if (!strcmp(parameter->name, XtNrenderFont)) {
+ if (xw->work.render_font == erDefault
+ && IsEmpty(xw->misc.default_xft.f_n)) {
+ strcpy(next, "DefaultOff");
+ }
+ }
+#endif
+ break;
+ }
+ }
+ return result;
+}
+
+#if OPT_TRACE
+static void
+dumpFontParams(XtermWidget xw)
+{
+ char buffer[1024];
+ Cardinal n;
+
+ TRACE(("FontParams:\n"));
+ for (n = 0; n < XtNumber(fontParams); ++n) {
+ TRACE(("%3d:%s\n", n, formatFontParam(buffer, xw, fontParams + n)));
+ }
+}
+#else
+#define dumpFontParams(xw) /* nothing */
+#endif
+
+static Boolean
+findFontParams(int argc, char **argv)
+{
+ Boolean result = False;
+
+ if (argc > RESTART_PARAMS && (argc - restart_params) > RESTART_PARAMS) {
+ int n;
+
+ for (n = 0; n < RESTART_PARAMS; ++n) {
+ int my_index = argc - restart_params - n - 1;
+ int my_param = (RESTART_PARAMS - n - 1) / 2;
+ char *actual = argv[my_index];
+ char expect[1024];
+ Boolean value = (Boolean) ((n % 2) == 0);
+
+ result = False;
+ TRACE(("...index: %d\n", my_index));
+ TRACE(("...param: %d\n", my_param));
+ TRACE(("...actual %s\n", actual));
+ if (IsEmpty(actual))
+ break;
+
+ if (value) {
+ formatFontParam(expect, None, fontParams + my_param);
+ } else {
+ strcpy(expect, "-xrm");
+ }
+
+ TRACE(("...expect %s\n", expect));
+
+ if (value) {
+ if (strlen(expect) >= strlen(actual))
+ break;
+ if (strncmp(expect, actual, strlen(expect)))
+ break;
+ } else {
+ if (strcmp(actual, expect))
+ break;
+ }
+ TRACE(("fixme/ok:%d\n", n));
+ result = True;
+ }
+ TRACE(("findFontParams: %s (tested %d of %d parameters)\n",
+ BtoS(result), n + 1, RESTART_PARAMS));
+ }
+ return result;
+}
+
+static int
+insertFontParams(XtermWidget xw, int *targetp, Boolean first)
+{
+ int changed = 0;
+ int n;
+ int target = *targetp;
+ char buffer[1024];
+ const char *option = "-xrm";
+
+ for (n = 0; n < (int) XtNumber(fontParams); ++n) {
+ formatFontParam(buffer, xw, fontParams + n);
+ TRACE(("formatted %3d ->%3d:%s\n", n, target, buffer));
+ if (restart_command[target] == NULL)
+ restart_command[target] = x_strdup(option);
+ ++target;
+ if (first) {
+ restart_command[target] = x_strdup(buffer);
+ ++changed;
+ } else if (restart_command[target] == NULL
+ || strcmp(restart_command[target], buffer)) {
+ free(restart_command[target]);
+ restart_command[target] = x_strdup(buffer);
+ ++changed;
+ }
+ ++target;
+ }
+ *targetp = target;
+ return changed;
+}
+
+void
+xtermUpdateRestartCommand(XtermWidget xw)
+{
+ if (resource.sessionMgt) {
+ Arg args[1];
+ char **argv = 0;
+
+ XtSetArg(args[0], XtNrestartCommand, &argv);
+ XtGetValues(toplevel, args, 1);
+ if (argv != NULL) {
+ static int my_params = 0;
+
+ int changes = 0;
+ Boolean first = False;
+ int argc;
+ int want;
+ int source, target;
+
+ TRACE(("xtermUpdateRestartCommand\n"));
+ dumpFontParams(xw);
+ for (argc = 0; argv[argc] != NULL; ++argc) {
+ TRACE((" arg[%d] = %s\n", argc, argv[argc]));
+ ;
+ }
+ want = argc - (restart_params + RESTART_PARAMS);
+
+ TRACE((" argc: %d\n", argc));
+ TRACE((" restart_params: %d\n", restart_params));
+ TRACE((" want to insert: %d\n", want));
+
+ /*
+ * If we already have the font-choice option, do not add it again.
+ */
+ if (findFontParams(argc, argv)) {
+ my_params = (want);
+ } else {
+ first = True;
+ my_params = (argc - restart_params);
+ }
+ TRACE((" my_params: %d\n", my_params));
+
+ if (my_params > argc) {
+ TRACE((" re-allocate restartCommand\n"));
+ FreeAndNull(restart_command);
+ }
+
+ if (restart_command == NULL) {
+ int need = argc + RESTART_PARAMS + 1;
+
+ restart_command = TypeCallocN(char *, need);
+
+ TRACE(("..inserting font-parameters\n"));
+ for (source = target = 0; source < argc; ++source) {
+ if (source == my_params) {
+ changes += insertFontParams(xw, &target, first);
+ if (!first) {
+ source += (RESTART_PARAMS - 1);
+ continue;
+ }
+ }
+ if (argv[source] == NULL)
+ break;
+ restart_command[target++] = x_strdup(argv[source]);
+ }
+ restart_command[target] = NULL;
+ } else {
+ TRACE(("..replacing font-parameters\n"));
+ target = my_params;
+ changes += insertFontParams(xw, &target, first);
+ }
+ if (changes) {
+ TRACE(("..%d parameters changed\n", changes));
+ XtSetArg(args[0], XtNrestartCommand, restart_command);
+ XtSetValues(toplevel, args, 1);
+ } else {
+ TRACE(("..NO parameters changed\n"));
+ }
+ }
+ TRACE_SM_PROPS();
+ }
+}
#endif /* OPT_SESSION_MGT */
Widget
@@ -7207,12 +7544,23 @@ update_winsize(int fd, int rows, int col
#ifdef TTYSIZE_STRUCT
static int last_rows = -1;
static int last_cols = -1;
+ static int last_high = -1;
+ static int last_wide = -1;
- if (rows != last_rows || cols != last_cols) {
+ TRACE(("update_winsize %dx%d (%dx%d) -> %dx%d (%dx%d)\n",
+ last_rows, last_cols, last_high, last_wide,
+ rows, cols, height, width));
+
+ if (rows != last_rows
+ || cols != last_cols
+ || last_high != height
+ || last_wide != width) {
TTYSIZE_STRUCT ts;
last_rows = rows;
last_cols = cols;
+ last_high = height;
+ last_wide = width;
setup_winsize(ts, rows, cols, height, width);
TRACE_RC(code, SET_TTYSIZE(fd, ts));
trace_winsize(ts, "from SET_TTYSIZE");
Index: xsrc/external/mit/xterm/dist/ptyx.h
diff -u xsrc/external/mit/xterm/dist/ptyx.h:1.16 xsrc/external/mit/xterm/dist/ptyx.h:1.17
--- xsrc/external/mit/xterm/dist/ptyx.h:1.16 Tue Apr 27 01:58:18 2021
+++ xsrc/external/mit/xterm/dist/ptyx.h Sun Jul 11 00:31:54 2021
@@ -1,4 +1,4 @@
-/* $XTermId: ptyx.h,v 1.1030 2021/03/21 22:11:10 tom Exp $ */
+/* $XTermId: ptyx.h,v 1.1032 2021/06/07 19:29:11 tom Exp $ */
/*
* Copyright 1999-2020,2021 by Thomas E. Dickey
@@ -1946,6 +1946,7 @@ typedef enum {
erFalse = 0
, erTrue
, erDefault
+ , erDefaultOff
, erLast
} RenderFont;
@@ -2731,6 +2732,7 @@ typedef struct {
#if OPT_SCROLL_LOCK
Boolean allowScrollLock;/* ScrollLock mode */
Boolean allowScrollLock0;/* initial ScrollLock mode */
+ Boolean autoScrollLock; /* Auto ScrollLock mode */
Boolean scroll_lock; /* true to keep buffer in view */
Boolean scroll_dirty; /* scrolling makes screen dirty */
#endif
Index: xsrc/external/mit/xterm/dist/xterm.h
diff -u xsrc/external/mit/xterm/dist/xterm.h:1.4 xsrc/external/mit/xterm/dist/xterm.h:1.5
--- xsrc/external/mit/xterm/dist/xterm.h:1.4 Tue Apr 27 01:58:18 2021
+++ xsrc/external/mit/xterm/dist/xterm.h Sun Jul 11 00:31:54 2021
@@ -1,4 +1,4 @@
-/* $XTermId: xterm.h,v 1.890 2021/03/21 22:44:36 tom Exp $ */
+/* $XTermId: xterm.h,v 1.893 2021/06/06 23:14:40 Stelios.Bounanos Exp $ */
/*
* Copyright 1999-2020,2021 by Thomas E. Dickey
@@ -454,6 +454,7 @@ extern char **environ;
#define XtNappkeypadDefault "appkeypadDefault"
#define XtNassumeAllChars "assumeAllChars"
#define XtNautoWrap "autoWrap"
+#define XtNautoScrollLock "autoScrollLock"
#define XtNawaitInput "awaitInput"
#define XtNbackarrowKey "backarrowKey"
#define XtNbellIsUrgent "bellIsUrgent"
@@ -668,6 +669,7 @@ extern char **environ;
#define XtCAppkeypadDefault "AppkeypadDefault"
#define XtCAssumeAllChars "AssumeAllChars"
#define XtCAutoWrap "AutoWrap"
+#define XtCAutoScrollLock "AutoScrollLock"
#define XtCAwaitInput "AwaitInput"
#define XtCBackarrowKey "BackarrowKey"
#define XtCBellIsUrgent "BellIsUrgent"
@@ -1300,9 +1302,11 @@ extern void HandleInsertSelectable P
#if OPT_SESSION_MGT
extern void xtermCloseSession (void);
extern void xtermOpenSession (void);
+extern void xtermUpdateRestartCommand(XtermWidget /* xw */);
#else
#define xtermCloseSession() /* nothing */
#define xtermOpenSession() /* nothing */
+#define xtermUpdateRestartCommand(xw) /* nothing */
#endif
#if OPT_WIDE_CHARS
Index: xsrc/external/mit/xterm/dist/xterm.man
diff -u xsrc/external/mit/xterm/dist/xterm.man:1.18 xsrc/external/mit/xterm/dist/xterm.man:1.19
--- xsrc/external/mit/xterm/dist/xterm.man:1.18 Tue Apr 27 01:58:18 2021
+++ xsrc/external/mit/xterm/dist/xterm.man Sun Jul 11 00:31:54 2021
@@ -1,5 +1,5 @@
'\" t
-.\" $XTermId: xterm.man,v 1.844 2021/03/26 23:11:13 tom Exp $
+.\" $XTermId: xterm.man,v 1.848 2021/06/07 21:00:31 tom Exp $
.\"
.\" Copyright 1996-2020,2021 by Thomas E. Dickey
.\"
@@ -1628,7 +1628,8 @@ The default is
and is limited to the range 1 through 100.
.TP 8
.B "cursorTheme\fP (class\fB CursorTheme\fP)"
-The Xcursor(__miscmansuffix__) library provides a way to
+The Xcursor(__miscmansuffix__) library
+provides a way to change the pointer shape and size.
The X11 library uses this library to extend the font- and glyph-cursor
calls used by applications such as \fI\*n\fP to substitute external
files for the built-in \*(``core\*('' cursors provided by X.
@@ -2286,6 +2287,8 @@ user surprise.
This key is generally unused in keyboard configurations,
and has not acquired a standard meaning even when it is used in that manner.
Consequently, users have assigned it for ad hoc purposes.
+.IP
+See also the \fBautoScrollLock\fP resource.
.TP 8
.B "allowSendEvents\fP (class\fB AllowSendEvents\fP)"
Specifies whether or not synthetic key and button events (generated using
@@ -2455,6 +2458,14 @@ certain quasi-automatically generated fo
(such as the ISO-10646-1 encoding of Terminus)
which have incorrect font-metrics.
.TP 8
+.B "autoScrollLock\fP (class\fB AutoScrollLock\fP)"
+If \*(``true\*('', \fI\*n\fR will maintain its viewport of displayed lines
+whenever displaying scrollback, as if \fBallowScrollLock\fP were enabled
+and the Scroll Lock key had been pressed.
+The default is \*(``false\*(''.
+This feature is only useful if the \fBscrollTtyOutput\fP resource is set to
+\*(``false\*(''.
+.TP 8
.B "autoWrap\fP (class\fB AutoWrap\fP)"
Specifies whether or not auto-wraparound should be enabled.
This is the same as the VT102 DECAWM.
@@ -4811,6 +4822,12 @@ That is normally \*(``mono\*(''.
If the \fBfaceName\fP resource is set,
then start by using the TrueType font rather than the bitmap font.
.RE
+.TP 5
+defaultOff
+.br
+Enable the \*(``TrueType Fonts\*(''
+menu entry to allow runtime switching to/from TrueType fonts,
+but allow it to be initially unselected if no \fBfaceName\fP resource was given.
.RE
.TP 8
.B "resizeByPixel\fP (class\fB ResizeByPixel\fP)"