Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

thomasparra

macrumors regular
Original poster
Feb 22, 2022
100
12
I have a MacBook Air 2020 M1 and a MacBook Pro 2019 and I am having issues with my Gigabyte M27Q monitor

First of all, my MBP 2019 is unable to fill the full screen of the monitor if I use a USB-C to USB-C or a USB-C to Displayport cable (as seen in the below image) but there are no issues when I plug them to my MacBook Air (picture 2)!

1645185241-2.jpg

1645185230-1.jpg


However, there is absolutely no issues on either monitor using a USB-C to HDMI 2.0 cable.

Secondly, it seems that HDMI offers better resolution and somewhat better colors than Thunderbolt (USB-C to USB C or Displayport), see below pictures and how the 4K logo on the left (HDMI) is much crispier and accurate than the one of the right (Thunderbolt).


IMG_0301.jpeg
IMG_0304.jpeg




What could the issues to both problems be? The only benefit of Thunderbolt over HDMI 2.0 seems to be the higher frequency (170 vs 144 Hz) but quality is definitely lower compared to HDMI?
 
Last edited:
DisplayPort, whether directly from the Mac or from Thunderbolt, is usually always better.

Is there an Underscan option you can disable?
I would compare the output from AGDCDiagnose and AllRez in each case to see what modes are available and what mode is in use.
AGDCDiagnose doesn't work on M1 Macs though. AllRez can get some info from M1 Macs but not all info. I need to do some more work on that for M1 Macs. It would help to get a sample output.
 
  • Like
Reactions: Amethyst1
DisplayPort, whether directly from the Mac or from Thunderbolt, is usually always better.

Is there an Underscan option you can disable?
I would compare the output from AGDCDiagnose and AllRez in each case to see what modes are available and what mode is in use.
AGDCDiagnose doesn't work on M1 Macs though. AllRez can get some info from M1 Macs but not all info. I need to do some more work on that for M1 Macs. It would help to get a sample output.
I have two UPDATES:

I was able to make the MBP fits the entire M27Q screen after a EDID override, which means that the issue is definitely Software/MacOS related. Unfortunately, I think I am stuck in 60 hertz (not sure how to edit the file further, also the font quality seems a bit off)

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>DisplayProductName</key>
  <string>Display with forced RGB mode (EDID override)</string>
  <key>IODisplayEDID</key>
  <data>AP///////wAcVA0nAQEBAQgfAQS1Rid448uFp1M1tiUNUFQvzwDRwAEBAQEB
AYGAlQCzAAEBVl4AoKCgKVAwIDUAVE8hAAAeAAAA/QAwpfPzPAEKICAgICAg
AAAA/ABNMjdRCiAgICAgICAgAAAA/wAyMTA4MEIwMDAzOTkKAA8=
</data>
  <key>DisplayVendorID</key>
  <integer>7252</integer>
  <key>DisplayProductID</key>
  <integer>9997</integer>
</dict>
</plist>


Here is the Apple Diagnostics after adding the EDID Override.

Code:
Display with forced RGB mode (EDID override):
  Resolution:    2560 x 1440 (QHD/WQHD - Wide Quad High Definition)
  UI Looks like:    2560 x 1440 @ 60.00Hz
  Framebuffer Depth:    30-Bit Color (ARGB2101010)
  Display Serial Number:    21080B000399
  Main Display:    Yes
  Mirror:    On
  Mirror Status:    Master Mirror
  Online:    Yes
  Rotation:    Supported
  Automatically Adjust Brightness:    Yes
  Connection Type:    Thunderbolt/DisplayPort

Secondly, it seems that the 4K LOGO / overall quality IMPROVES through my Macbook Air over Thunderbolt when I decrease the frequency from 144 or 160 Hz to 120 Hz; and come closer/identical to the quality of HDMI @ 144 Hz
 
Last edited:
The info from System Information.app is almost useless. The resolution and depth are unrelated to what is being output (since the GPU could be scaling them to something else). That's why I suggested AGDCDiagnose and/or AllRez.

Your forced RGB mode EDID override has removed all the extension blocks which would have contained the higher refresh rates.
 
The info from System Information.app is almost useless. The resolution and depth are unrelated to what is being output (since the GPU could be scaling them to something else). That's why I suggested AGDCDiagnose and/or AllRez.

Your forced RGB mode EDID override has removed all the extension blocks which would have contained the higher refresh rates.
Got it, I am not sure how I can edit the refresh rate, Also the M27Q is a BGR panel, not RGB but for some reason the colors are still accurate.

I did a AGCDiagnose, not sure the information is accurate / complete...

Code:
AGDCDiagnose Version: 6.4.12 (AGDC node count: 3)
### Start: GPUWrangler #######################################################
Stats: GPUCAdded:0 GpuAdded:1 Eject:0/f0/fd0/c0 Remove:0/t0 Un:0

gpu 0x56ff flags 0xb2000010 (IG,published,quiet,pubSched,pubArmed) vid.did=8086.3ea5 b:d:f=0:2:0
gpu 0x56ff        pci 0x100000227 IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2
gpu 0x56ff       agdc 0x10000052d     /AppleIntelFramebufferController/IntelFBClientControl
gpu 0x56ff       gpuc 0x000000000
gpu 0x56ff agdpclient 0x100000535     /AppleIntelFramebufferController/IntelFBClientControl/AppleGraphicsDevicePolicy/AGDPClientControl
gpu 0x56ff      accel 0x100000511     /IntelAccelerator
gpu 0x56ff      fb0:0 0x100000513     /AppleIntelFramebuffer@0
gpu 0x56ff      fb1:1 0x100000514     /AppleIntelFramebuffer@1
gpu 0x56ff      fb2:2 0x100000515     /AppleIntelFramebuffer@2

### End: GPUWrangler (took 0.005 sec) ########################################

### Start: EFIDisplayInfo ####################################################
Dumping EFI data for GPU Path IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2
GraphicsDisplaySetup:
Version 65536
ConnectorNumber 0
AvailableLanes 4
AvailableBitRate 3240
DisplayRestoredFromNVRAM 1
HibernateWake 0

DP Configuration
Version: 65537
Mode: 0
BitRate: 4294901760
Lanes: 4
CommonVoltage: 0
CommonPreEmphasis: 0
CommonPostCursor2: 0
EnhancedFraming: 1
Scrambling: 1
AlternateScramblerSeedReset: 0
OtherBitRateInMegaBitsPerSecond: 3240

Framebuffer Timing
TimingIndex: 0
Encoding: 1
BitDepth: 3
PixelClock: 260730000
HActive: 2560
VActive: 1600
HBlank: 80
HBorderLeft: 0
HBorderRight: 0
VBlank: 46
VBorderTop: 0
VBorderBottom: 0
HSyncStart: 8
HSyncWidth: 32
HSyncPositive: 1
VSyncStart: 32
VSyncWidth: 8
VSyncPositive: 0
Interlace: 0

Framebuffer resolution
Version: 65536
Width: 2880
Height: 1800
Stride: 11520
Format: 1
Rotation: 0
Reverse: 0
### End: EFIDisplayInfo (took 0.005 sec) #####################################

### Start: Mux ###############################################################
### End: Mux (took 0.000 sec) ################################################

### Start: Ports #############################################################
### Start: AGDC[1] 0x1000004ee ###############################################
IOService:/IOResources/AppleGPUWrangler
Vendor: Apple [0000106b]: AppleGPUWrangler [8 10000] (0)
### End: AGDC[1] 0x1000004ee (took 0.000 sec) ################################

### Start: AGDC[2] 0x10000052d ###############################################
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebufferController/IntelFBClientControl
See 0x100000535
### End: AGDC[2] 0x10000052d (took 0.000 sec) ################################

### Start: AGDC[3] 0x100000535 ###############################################
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebufferController/IntelFBClientControl/AppleGraphicsDevicePolicy/AGDPClientControl
Vendor: AppleIntelFramebufferController [0000106b]: IntegratedGPU [1 10000] (0)
FBs: 3, Ports: 0xe mst:0xc ddc:0xc aux:0xe, Streams: dp:0 dvi:0 mst:2 max:3
Framebuffers:
* 0: Address:  1.0 Stream: Not Associated Group: 0   Online                     Fixed  
* 1: Address:  2.0 Stream: Enabled  Group: 0   Online   Assoc'd                  
  2: Address:  0.0 Stream: Not Associated Group: 0                                      
Port Capabilities:
* 1: AUX
* 2: AUX, DDC, MST
  3: AUX, DDC, MST
Connections:
* 1:
* 2: [DP 1.2 4 x HBR2]      Status: [4 x HBR2 7777]      caps [features 0x1000a, p_encoding 0x9]             Sink   OUI:000-000-000 ?????? [000-000-000-000-000-000] HW Version: 0    FW Version: 0.0
  3:
## EDID Dump Port 1 - Start ##
// EDID Dump: device, 256 bytes, OK
uint8_t EDID_APP_610_a03e[] = {
  /* 000: */  0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
  /* 008: */  0x06, 0x10, 0x3e, 0xa0, 0x00, 0x00, 0x00, 0x00,
  /* 010: */  0x10, 0x1b, 0x01, 0x04, 0xb5, 0x1d, 0x12, 0x78,
  /* 018: */  0x02, 0x0f, 0xa1, 0xae, 0x52, 0x43, 0xb0, 0x26,
  /* 020: */  0x0d, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01,
  /* 028: */  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
  /* 030: */  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xd9, 0x65,
  /* 038: */  0x00, 0x50, 0xa0, 0x40, 0x2e, 0x60, 0x08, 0x20,
  /* 040: */  0x08, 0x08, 0x1e, 0xb3, 0x10, 0x00, 0x00, 0x1a,
  /* 048: */  0x00, 0x00, 0x00, 0xfc, 0x00, 0x43, 0x6f, 0x6c,
  /* 050: */  0x6f, 0x72, 0x20, 0x4c, 0x43, 0x44, 0x0a, 0x20,
  /* 058: */  0x20, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
  /* 060: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 068: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
  /* 070: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 078: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x52,
  /* 080: */  0x70, 0x12, 0x79, 0x03, 0x00, 0x7f, 0x81, 0x3f,
  /* 088: */  0xfa, 0x10, 0x00, 0x03, 0x01, 0x18, 0x0f, 0x28,
  /* 090: */  0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 098: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 0a0: */  0x4c, 0x50, 0x31, 0x33, 0x33, 0x57, 0x51, 0x35,
  /* 0a8: */  0x2d, 0x53, 0x4a, 0x41, 0x34, 0x0a, 0x20, 0x00,
  /* 0b0: */  0x46, 0x30, 0x59, 0x39, 0x33, 0x34, 0x35, 0x30,
  /* 0b8: */  0x32, 0x32, 0x4c, 0x4d, 0x4a, 0x46, 0x58, 0x41,
  /* 0c0: */  0x58, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7f,
  /* 0c8: */  0x81, 0x29, 0xfa, 0x10, 0x00, 0x02, 0x01, 0x00,
  /* 0d0: */  0x11, 0x00, 0x00, 0x02, 0x90, 0x03, 0x4c, 0x04,
  /* 0d8: */  0x51, 0x05, 0xb6, 0x07, 0x9f, 0x0a, 0x3e, 0x0d,
  /* 0e0: */  0xda, 0x12, 0xd3, 0x19, 0xb4, 0x23, 0x3e, 0x30,
  /* 0e8: */  0x81, 0x42, 0xfe, 0x5c, 0xd2, 0x80, 0xff, 0xb3,
  /* 0f0: */  0xc7, 0xfa, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 0f8: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90
};
## EDID Dump Port 1 - End ##
## Display Connection Stats Dump Port 1 - End ##
  Display mfgName: B]M, productID: 0xf00d
  Time to EDID read: 270
  Time to link train: 0
  Link training duration: 0
  Link training status: 0
  Link training count: 0
  HDCP status: 0
  HDCP retry count: 0
  EFI w/a data: 0x0
## Display Connection Stats Dump Port 1 - End ##
## Register Dump Port 2 - Start ##
000000: 0x12 0x14 0xc4 0x00 0x01 0x00 0x01 0x00 0x02 0x00 0x06 0x00 0x00 0x00 0x84 0x00
  Reg: 000000: 12 : DPCD_REV: 1.2
  Reg: 000001: 14 : MAX_LINK_RATE: HBR2
  Reg: 000002: c4 : MAX_LANE_COUNT: 4, TPS3_SUPPORTED: 1, ENHANCED_FRAME_CAP: 1
  Reg: 000003: 00 : MAX_DOWNSPREAD: None, NO_AUX_HANDSHAKE_LINK_TRAINING: 0
  Reg: 000004: 01 : NORP: 1
  Reg: 000005: 00 : DOWNSTREAMPORT_PRESENT: DWN_STRM_PORT_PRESENT: 0, DWN_STRM_PORT_TYPE: [0] DisplayPort, FORMAT_CONVERSION: 0, DETAILED_CAP_INFO_AVAILABLE: 0
  Reg: 000006: 01 : MAIN_LINK_CHANNEL_CODING: ANSI 8B/10B
  Reg: 000007: 00 : DOWN_STREAM_PORT_COUNT: DWN_STRM_PORT_COUNT: 0, MSA_TIMING_PAR_IGNORED: 0, OUI: 0
  Reg: 000008: 02 : RECEIVE_PORT0_CAP_0: LOCAL_EDID_PRESENT: 1, ASSOCIATED_TO_PRECEDING_PORT: 0
  Reg: 000009: 00 : RECEIVE_PORT0_CAP_1: BUFFER_SIZE: 32
  Reg: 00000a: 06 : RECEIVE_PORT1_CAP_0:
  Reg: 00000b: 00 : RECEIVE_PORT1_CAP_1:
  Reg: 00000c: 00 : I2C Speed:
  Reg: 00000d: 00 : eDP_CONFIGURATION_CAP: ALTERNATE_SCRAMBLER_RESET_CAPABLE: 0, FRAMING_CHANGE_CAPABLE: 0
  Reg: 00000e: 84 : TRAINING_AUX_RD_INTERVAL: 0 RESERVED, EXTENDED_RECEIVER_CAPABILITY_FIELD_PRESENT: YES
  Reg: 00000f: 00 : ADAPTER_CAP: FORCE_LOAD_SENSE_CAP: 0, ALTERNATE_I2C_PATTERN_CAP: 0
000020: 0x00 0x00 0x00
  Reg: 000020: 00 : FAUX_CAP: FAUX_CAP: 0
  Reg: 000021: 00 : MSTM_CAP: MST_CAP: 0
  Reg: 000022: 00 : NUMBER_OF_AUDIO_ENDPOINTS: 0
000060: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  Reg: 000060: 00 : DSC Support: 0
  Reg: 000061: 00 : DSC Algorithm revision: 0
  Reg: 000062: 00 : DSC RC Buffer Block size: 0
  Reg: 000063: 00 : DSC RC Buffer size: 0
  Reg: 000064: 00 : DSC slice Capabilities 1 : 0
  Reg: 000065: 00 : DSC Line buffer bit depth: 0
  Reg: 000066: 00 : DSC Block prediction support: 0
  Reg: 000067: 00 : DSC Maximum bit per pixel: 0
  Reg: 000068: 00 : DSC Maximum bit per pixel: 0
  Reg: 000069: 00 : DSC Decoder color format capabilities: 0
  Reg: 00006a: 00 : DSC decoder color depth capabilities: 0
  Reg: 00006b: 00 : DSC Peak Throughput: 0
  Reg: 00006c: 00 : DSC Maximum Slice width: 0
  Reg: 00006d: 00 : DSC Slice capabilities 2: 0
  Reg: 00006e: 00 : Reserved: 0
  Reg: 00006f: 00 : DSC Bits per pixel increment: 0
000090: 0x00
  Reg: 000090: 00 : FEC Capability: 0x0
000080: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  Reg: 000080: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000081: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000082: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000083: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000084: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000085: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000086: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000087: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000088: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 000089: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 00008a: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 00008b: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 00008c: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 00008d: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 00008e: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
  Reg: 00008f: 00 : DETAILED_CAP_INFO_AVAILABLE: DWN_STRM_PORTX_CAP: [0] DisplayPort, DWN_STRM_PORTX_HPD: 0, NON_EDID_DWN_STRM_PORTX_ATTRIBUTE: 0
000100: 0x14 0x84
  Reg: 000100: 14 : LINK_BW_SET: HBR2
  Reg: 000101: 84 : LANE_COUNT_SET: LANE_COUNT_SET 4, ENHANCED_FRAME_EN: 1
000107: 0x00
  Reg: 000107: 00 : DOWNSPREAD_CTRL: SPREAD_AMP: 0, MSA_TIMING_PAR_IGNORE_EN: 0
00010a: 0x00
  Reg: 00010a: 00 : eDP_CONFIGURATION_CAP_SET: ALTERNATE_SCRAMBLER_RESET_CAPABLE: 0, FRAMING_CHANGE_CAPABLE: 0
000111: 0x00
  Reg: 000111: 00 : MSTM_CTRL: UPSTREAM_IS_SRC:0 UP_REQ_EN:0 MST_EN:0
000120: 0x00
  Reg: 000120: 00 : FEC Configuration: 0x0
000160: 0x00
  Reg: 000160: 00 : DSC Enable: 0x0
000200: 0x41 0x00 0x77 0x77 0x01 0x03 0x22 0x22
  Reg: 000200: 41 : SINK_COUNT: SINK_COUNT 1, CP_READY: 1
  Reg: 000202: 77 : LANE0: CR_DONE: 1, CHANNEL_EQ_DONE: 1, SYMBOL_LOCKED: 1
  Reg: 000202: 77 : LANE1: CR_DONE: 1, CHANNEL_EQ_DONE: 1, SYMBOL_LOCKED: 1
  Reg: 000203: 77 : LANE2: CR_DONE: 1, CHANNEL_EQ_DONE: 1, SYMBOL_LOCKED: 1
  Reg: 000203: 77 : LANE3: CR_DONE: 1, CHANNEL_EQ_DONE: 1, SYMBOL_LOCKED: 1
  Reg: 000205: 03 : SINK_STATUS: RECEIVE_PORT_0_STATUS: 1, RECEIVE_PORT_1_STATUS: 1
  Reg: 000206: 22 : LANE0: VOLTAGE_SWING: 2, PRE-EMPHASIS: 0
  Reg: 000206: 22 : LANE1: VOLTAGE_SWING: 2, PRE-EMPHASIS: 0
  Reg: 000207: 22 : LANE2: VOLTAGE_SWING: 2, PRE-EMPHASIS: 0
  Reg: 000207: 22 : LANE3: VOLTAGE_SWING: 2, PRE-EMPHASIS: 0
00020f: 0x00
  Reg: 00020f: 00 : DSC Status: 0
000280: 0x00
  Reg: 000280: 00 : FEC Status: 0
00042f: 0x00
  Reg: 00042f: 00 : DISPLAY_ROTATION: 0x0
002200: 0x14 0x14 0xc4 0x00 0x01 0x00 0x01 0x00 0x02 0x00 0x06 0x00 0x00 0x00 0x84 0x00
  Reg: 002200: 14 : DPCD_REV: 1.4
  Reg: 002201: 14 : MAX_LINK_RATE: HBR2
  Reg: 002202: c4 : MAX_LANE_COUNT: 4, TPS3_SUPPORTED: 1, ENHANCED_FRAME_CAP: 1
  Reg: 002203: 00 : MAX_DOWNSPREAD: None, NO_AUX_HANDSHAKE_LINK_TRAINING: 0
  Reg: 002204: 01 : NORP: 1
  Reg: 002205: 00 : DOWNSTREAMPORT_PRESENT: DWN_STRM_PORT_PRESENT: 0, DWN_STRM_PORT_TYPE: [0] DisplayPort, FORMAT_CONVERSION: 0, DETAILED_CAP_INFO_AVAILABLE: 0
  Reg: 002206: 01 : MAIN_LINK_CHANNEL_CODING_SET: ANSI 8B/10B
  Reg: 002207: 00 : DOWN_STREAM_PORT_COUNT: DWN_STRM_PORT_COUNT: 0, MSA_TIMING_PAR_IGNORED: 0, OUI: 0
  Reg: 002208: 02 : RECEIVE_PORT0_CAP_0: LOCAL_EDID_PRESENT: 1, ASSOCIATED_TO_PRECEDING_PORT: 0
  Reg: 002209: 00 : RECEIVE_PORT0_CAP_1: BUFFER_SIZE: 32
  Reg: 00220a: 06 : RECEIVE_PORT1_CAP_0:
  Reg: 00220b: 00 : RECEIVE_PORT1_CAP_1:
  Reg: 00220c: 00 : I2C Speed:
  Reg: 00220d: 00 : eDP_CONFIGURATION_CAP_SET: ALTERNATE_SCRAMBLER_RESET_CAPABLE: 0, FRAMING_CHANGE_CAPABLE: 0
  Reg: 00220e: 84 : TRAINING_AUX_RD_INTERVAL: 0 RESERVED, EXTENDED_RECEIVER_CAPABILITY_FIELD_PRESENT: YES
  Reg: 00220f: 00 : ADAPTER_CAP: FORCE_LOAD_SENSE_CAP: 0, ALTERNATE_I2C_PATTERN_CAP: 0
068028: 0x01
  Reg: 068028: 01 : HDCP_CAPABLE: 1, REPEATER: 0
06921d: 0x02 0x00 0x02
  Reg: 06921d: 02 : VERSION: 2
  Reg: 06921f: 02 : HDCP_CAPABLE: 1, REPEATER: 0
069330: 0x00 0x00
  Reg: 069330: 00 : HDCP_Depth: 0
  Reg: 069331: 00 : HDCP_count: 0  HDCP2_0 Downstream: 0 HDCP1 Downstream: 0
069493: 0x04
  Reg: 069493: 04 : Ready: 0 , H' Available: 0, Pairing_available: 1 , Reauth_req: 0, Link Integrity: 0
## Register Dump Port 2 - End ##
## EDID Dump Port 2 - Start ##
// EDID Dump: device, 384 bytes, OK
uint8_t EDID_GBT_1c54_270d[] = {
  /* 000: */  0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
  /* 008: */  0x1c, 0x54, 0x0d, 0x27, 0x01, 0x01, 0x01, 0x01,
  /* 010: */  0x08, 0x1f, 0x01, 0x04, 0xb5, 0x46, 0x27, 0x78,
  /* 018: */  0xfb, 0xcb, 0x85, 0xa7, 0x53, 0x35, 0xb6, 0x25,
  /* 020: */  0x0d, 0x50, 0x54, 0x2f, 0xcf, 0x00, 0xd1, 0xc0,
  /* 028: */  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x80,
  /* 030: */  0x95, 0x00, 0xb3, 0x00, 0x01, 0x01, 0x56, 0x5e,
  /* 038: */  0x00, 0xa0, 0xa0, 0xa0, 0x29, 0x50, 0x30, 0x20,
  /* 040: */  0x35, 0x00, 0x54, 0x4f, 0x21, 0x00, 0x00, 0x1e,
  /* 048: */  0x00, 0x00, 0x00, 0xfd, 0x00, 0x30, 0xa5, 0xf3,
  /* 050: */  0xf3, 0x3c, 0x01, 0x0a, 0x20, 0x20, 0x20, 0x20,
  /* 058: */  0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x4d,
  /* 060: */  0x32, 0x37, 0x51, 0x0a, 0x20, 0x20, 0x20, 0x20,
  /* 068: */  0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff,
  /* 070: */  0x00, 0x32, 0x31, 0x30, 0x38, 0x30, 0x42, 0x30,
  /* 078: */  0x30, 0x30, 0x33, 0x39, 0x39, 0x0a, 0x02, 0xf5,
  /* 080: */  0x02, 0x03, 0x3f, 0x71, 0x49, 0x02, 0x03, 0x11,
  /* 088: */  0x12, 0x04, 0x2f, 0x90, 0x3f, 0x05, 0x23, 0x09,
  /* 090: */  0x17, 0x07, 0x83, 0x01, 0x00, 0x00, 0x67, 0x03,
  /* 098: */  0x0c, 0x00, 0x10, 0x00, 0x38, 0x3c, 0x67, 0xd8,
  /* 0a0: */  0x5d, 0xc4, 0x01, 0x78, 0x80, 0x03, 0x6d, 0x1a,
  /* 0a8: */  0x00, 0x00, 0x02, 0x01, 0x30, 0xaa, 0x00, 0x00,
  /* 0b0: */  0x00, 0x00, 0x00, 0x00, 0xe3, 0x05, 0xe3, 0x01,
  /* 0b8: */  0xe6, 0x06, 0x05, 0x01, 0x64, 0x64, 0x1e, 0x00,
  /* 0c0: */  0xfa, 0x00, 0x50, 0xa0, 0xa0, 0x1f, 0x50, 0x0a,
  /* 0c8: */  0x3c, 0x35, 0x00, 0x54, 0x4f, 0x21, 0x00, 0x00,
  /* 0d0: */  0x1e, 0xf5, 0xbd, 0x00, 0x64, 0xa0, 0xa0, 0x55,
  /* 0d8: */  0x50, 0x12, 0x20, 0xf8, 0x0c, 0x54, 0x4f, 0x21,
  /* 0e0: */  0x00, 0x00, 0x1e, 0xd5, 0x89, 0x80, 0xc8, 0x70,
  /* 0e8: */  0x38, 0x4d, 0x40, 0x44, 0x20, 0xf8, 0x0c, 0x54,
  /* 0f0: */  0x4f, 0x21, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
  /* 0f8: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19,
  /* 100: */  0x70, 0x12, 0x2e, 0x00, 0x00, 0x03, 0x01, 0x14,
  /* 108: */  0x0e, 0x0b, 0x01, 0x00, 0xff, 0x09, 0x9f, 0x00,
  /* 110: */  0x2f, 0x80, 0x1f, 0x00, 0x9f, 0x05, 0x27, 0x00,
  /* 118: */  0x19, 0x00, 0x07, 0x00, 0x03, 0x01, 0x14, 0x5f,
  /* 120: */  0xe8, 0x00, 0x00, 0xff, 0x09, 0x77, 0x00, 0x1b,
  /* 128: */  0x00, 0x1f, 0x00, 0x9f, 0x05, 0x66, 0x00, 0x08,
  /* 130: */  0x00, 0x07, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00,
  /* 138: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 140: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 148: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 150: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 158: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 160: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 168: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 170: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  /* 178: */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x93
};
## EDID Dump Port 2 - End ##
## Display Connection Stats Dump Port 2 - End ##
  Display mfgName: GBT, productID: 0x270d
  Time to EDID read: 167080
  Time to link train: 672057
  Link training duration: 47311
  Link training status: 1
  Link training count: 2
  HDCP status: 0
  HDCP retry count: 1
  EFI w/a data: 0x0
## Display Connection Stats Dump Port 2 - End ##
### End: AGDC[3] 0x100000535 (took 0.228 sec) ################################

### End: Ports (took 0.228 sec) ##############################################

### Start: Metrics ###########################################################
Display Metric Tool Version: 1.2
Display Metric Plugin Version: 1.2 AGDC Version: 6.4.12
Dumping Metric Logs: currentlog(20) logsize(32768) numberlogs(819)
Total lines: 21
2022-02-22 21:32:17.985307+0100:               kAGDCPluginMetricsPowerOff(411e) GPU:0x56ff Port: 0 Will
2022-02-22 21:32:19.467777+0100:                kAGDCPluginMetricsPowerOn(411f) GPU:0x56ff Port: 0 Did
2022-02-22 21:32:20.437093+0100:            kAGDCPluginMetricsDisplayInfo(4108) GPU:0x56ff Port: 1 dpcd_rev:0x11 max_link_rate:0xa max_lane_count:0x84 max_downspread:0x41 downstreamport_present:0 mstm_cap:0 number_of_audio_endpoints:0
2022-02-22 21:32:20.437364+0100:            kAGDCPluginMetricsMonitorInfo(4109) GPU:0x56ff Port: 1 mfgName:B]M mfgID:0xbad productID:0xf00d
2022-02-22 21:32:20.439908+0100:            kAGDCPluginMetricsDisplayInfo(4108) GPU:0x56ff Port: 1 dpcd_rev:0x11 max_link_rate:0xa max_lane_count:0x84 max_downspread:0x41 downstreamport_present:0 mstm_cap:0 number_of_audio_endpoints:0
2022-02-22 21:32:20.440155+0100:            kAGDCPluginMetricsMonitorInfo(4109) GPU:0x56ff Port: 1 mfgName:B]M mfgID:0xbad productID:0xf00d
2022-02-22 21:32:59.729440+0100:                   kAGDCPluginMetricsPlug(4100) GPU:0x56ff Port: 2
2022-02-22 21:32:59.893724+0100:            kAGDCPluginMetricsDisplayInfo(4108) GPU:0x56ff Port: 2 dpcd_rev:0x14 max_link_rate:0x14 max_lane_count:0xc4 max_downspread:0 downstreamport_present:0 mstm_cap:0 number_of_audio_endpoints:0
2022-02-22 21:32:59.896520+0100:            kAGDCPluginMetricsMonitorInfo(4109) GPU:0x56ff Port: 2 mfgName:GBT mfgID:0x1c54 productID:0x270d
2022-02-22 21:33:00.172255+0100:                 kAGDCPluginMetricsSyncLT(4104) GPU:0x56ff Port: 2
2022-02-22 21:33:00.226276+0100:              kAGDCPluginMetricsSyncLTEnd(4105) GPU:0x56ff Port: 2 link_rate:0x14 lane_count:0x4 LT Status:0x1 (OK)
2022-02-22 21:33:00.401497+0100:                kAGDCPluginMetricsLTBegin(4106) GPU:0x56ff Port: 2
2022-02-22 21:33:00.448808+0100:                  kAGDCPluginMetricsLTEnd(4107) GPU:0x56ff Port: 2 link_rate:0x14 lane_count:0x84 LT Status:0x1 (OK)
2022-02-22 21:33:02.476040+0100:              kAGDCPluginMetricsLightUpDp(410a) GPU:0x56ff Port: 2
2022-02-22 21:33:10.465949+0100:              kAGDCPluginMetricsHDCPStart(410b) GPU:0x56ff Port: 2 HDCP version:0x2.0x2 Authenticated Version:0x2 Bcaps:0
2022-02-22 21:33:11.028366+0100:     kAGDCPluginMetricsFirstPhaseComplete(410c) GPU:0x56ff Port: 2 Status:0 (OK) Stored Km:0
2022-02-22 21:34:03.889444+0100:                kAGDCPluginMetricsLTBegin(4106) GPU:0x56ff Port: 2
2022-02-22 21:34:03.938114+0100:                  kAGDCPluginMetricsLTEnd(4107) GPU:0x56ff Port: 2 link_rate:0x14 lane_count:0x84 LT Status:0x1 (OK)
2022-02-22 21:34:13.950780+0100:              kAGDCPluginMetricsHDCPStart(410b) GPU:0x56ff Port: 2 HDCP version:0x2.0x2 Authenticated Version:0x2 Bcaps:0
2022-02-22 21:34:14.454731+0100:     kAGDCPluginMetricsFirstPhaseComplete(410c) GPU:0x56ff Port: 2 Status:0 (OK) Stored Km:0
### End: Metrics (took 0.001 sec) ############################################

### Start: displaypolicyd ####################################################
running 668 sec (started Tue Feb 22 21:32:16 2022, now Tue Feb 22 21:43:24 2022)
boardID: Mac-827FB448E656EC26
featureMask: 0
platformFlags: 0
extraSupportFlags: 0
wranglerFlags: 0x44
launcher[0]: name '0:2:0', state 1, managerState 1, vendor class/id/version 0x5 0x106b 0x10000
gpu[0]: index=0 state=0x5 (Published) events=() dispPolicyState=0x1 (Managed) dispPolicyLaunchIndex=0
gpu 0x56ff flags 0xb2000010 (IG,published,quiet,pubSched,pubArmed)
gpu 0x56ff        pci 0x100000227 IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2
gpu 0x56ff       agdc 0x10000052d     /AppleIntelFramebufferController/IntelFBClientControl
gpu 0x56ff       gpuc 0x000000000
gpu 0x56ff agdpclient 0x100000535     /AppleIntelFramebufferController/IntelFBClientControl/AppleGraphicsDevicePolicy/AGDPClientControl
gpu 0x56ff      accel 0x100000511     /IntelAccelerator
gpu 0x56ff      fb0:0 0x100000513     /AppleIntelFramebuffer@0
gpu 0x56ff      fb1:1 0x100000514     /AppleIntelFramebuffer@1
gpu 0x56ff      fb2:2 0x100000515     /AppleIntelFramebuffer@2
Version: 6.4.12, Max: 512, counter: 197, calendar sync: 0x5d8a13ea79675/0x3910d7
GTRACEDATASTREAM traceData = {
    { 0x67547261, 0x63654461, 0x74614475, 0x6d700000, 0x102, 512, 197, 6, 4, 12, 0, 56, 1645561936057973, 3739863 },
    {
        { 3139780940, 0x0, 392, 38, 0, 0, 0x0, 0x0, 0x0 },
        { 5651421074, 0x0, 743, 88, 56, 0, 0x0, 0x4, 0x0 },
        { 5652996307, 0x0, 521, 72, 73, 0, 0x1, 0x56ff, 0x0 },
        { 5653212424, 0x0, 70, 71, 73, 0, 0x20001, 0x56ff, 0x0 },
        { 5848888661, 0x0, 521, 72, 73, 0, 0x1, 0x56ff, 0x0 },
        { 5848943081, 0x0, 70, 71, 73, 0, 0x50002, 0x56ff, 0x0 },
        { 5848953147, 0x0, 81, 77, 73, 0, 0x60000, 0x56ff, 0x0 },
        { 5848959854, 0x0, 81, 77, 73, 0, 0x70006, 0x56ff, 0x0 },
        { 5849090696, 0x0, 273, 78, 79, 0, 0x100000535, 0x1, 0x0 },
        { 5849141431, 0x0, 293, 78, 62, 0, 0x100000535, 0x0, 0x0 },
        { 5849254216, 0x0, 316, 78, 79, 0, 0x100000535, 0x3, 0x0 },
        { 5849254284, 0x0, 151, 80, 61, 0, 0x100000535, 0x1, 0x0 },
        { 5849254378, 0x0, 81, 77, 73, 0, 0x10007, 0x56ff, 0x0 },
        { 5849730546, 0x100000535, 763, 31, 0, 0, 0x0, 0x0, 0x0 },
        { 7451891037, 0x100000535, 989, 26, 0, 0, 0x0, 0x0, 0x0 },
        { 7451894614, 0x100000535, 998, 33, 0, 0, 0x0, 0x0, 0x0 },
        { 7951738783, 0x100000535, 1004, 34, 0, 0, 0x0, 0x0, 0x0 },
        { 8103866963, 0x100000535, 6322, 13, 52, 46, 0x0, 0x5, 0x100000000 },
        { 8103884035, 0x100000535, 6322, 13, 52, 46, 0x1, 0x0, 0x0 },
        { 8103892924, 0x100000535, 6322, 13, 52, 46, 0x2, 0x0, 0x0 },
        { 8103894283, 0x100000535, 6426, 13, 49, 0, 0x1, 0x1, 0x0 },
        { 8106026535, 0x100000535, 500, 40, 60, 49, 0x1, 0x1, 0x0 },
        { 8106065258, 0x100000535, 481, 37, 60, 49, 0x1, 0x1, 0x0 },
        { 8106104421, 0x100000535, 1988, 35, 50, 69, 0x1, 0x200000002, 0x0 },
        { 8106160426, 0x100000535, 1988, 35, 50, 69, 0x1, 0x200000002, 0x0 },
        { 8106401390, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x600000000, 0x0 },
        { 8106666834, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x10000000e, 0x0 },
        { 8106916100, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x400000020, 0x0 },
        { 8107283094, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x1000000060, 0x0 },
        { 8107534508, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x100000090, 0x0 },
        { 8107890361, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x1000002200, 0x0 },
        { 8108165245, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0xc00000400, 0x0 },
        { 8108913129, 0x100000535, 613, 36, 59, 70, 0x1, 0x0, 0x0 },
        { 8108973706, 0x100000535, 6490, 13, 46, 0, 0x0, 0x100000000, 0x0 },
        { 8109215565, 0x100000535, 1988, 35, 50, 69, 0x1, 0x200000002, 0x0 },
        { 8109260446, 0x100000535, 1988, 35, 50, 69, 0x1, 0x200000002, 0x0 },
        { 8109501837, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x600000000, 0x0 },
        { 8109746506, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x10000000e, 0x0 },
        { 8109987326, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x400000020, 0x0 },
        { 8110344373, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x1000000060, 0x0 },
        { 8110609835, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x100000090, 0x0 },
        { 8110971073, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x1000002200, 0x0 },
        { 8111216291, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0xc00000400, 0x0 },
        { 8111695953, 0x100000535, 358, 81, 83, 0, 0x1, 0x0, 0x0 },
        { 8112643528, 0x100000535, 481, 37, 60, 49, 0x1, 0x1, 0x100000000 },
        { 8112974101, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x200000100, 0x0 },
        { 8113257511, 0x100000535, 2028, 2, 44, 62, 0x100000000, 0x200000202, 0x0 },
        { 8113260041, 0x100000535, 2258, 12, 46, 56, 0x0, 0x100000000, 0xc000400007777 },
        { 8113515312, 0x100000535, 429, 11, 48, 65, 0x0, 0x100000001, 0x20102000000040c },
        { 8113518976, 0x100000535, 429, 11, 48, 65, 0x1, 0x200000000, 0x0 },
        { 8113519631, 0x100000535, 429, 11, 48, 65, 0x2, 0x300000000, 0x0 },
        { 8113520283, 0x100000535, 401, 9, 47, 64, 0x1, 0x6, 0x0 },
        { 8113520790, 0x100000535, 410, 10, 0, 0, 0x1000200000001, 0x0, 0x0 },
        { 8113522560, 0x100000535, 307, 8, 46, 63, 0x0, 0x100000000, 0x0 },
        { 8113525766, 0x100000535, 410, 10, 0, 0, 0x100000000000000, 0x0, 0x0 },
        { 8113526925, 0x100000535, 410, 10, 0, 0, 0x200000000000000, 0x0, 0x0 },
        { 8113583865, 0x100000535, 155, 42, 53, 0, 0x1, 0x5, 0x0 },
        { 8113584150, 0x100000535, 190, 41, 61, 61, 0x1, 0x1, 0x0 },
        { 8113584205, 0x100000535, 1655, 25, 58, 0, 0x1, 0x0, 0x0 },
        { 8113633457, 0x100000535, 155, 42, 53, 0, 0x0, 0x5, 0x0 },
        { 8113633529, 0x100000535, 190, 41, 61, 61, 0x0, 0x0, 0x1 },
        { 8113633587, 0x100000535, 1655, 25, 58, 0, 0x0, 0x1, 0x0 },
        { 8113662219, 0x0, 228, 1, 43, 0, 0x2, 0xa, 0x0 },
        { 8113738731, 0x0, 228, 1, 43, 0, 0x1, 0xfa, 0x0 },
        { 8116738226, 0x100000535, 5260, 76, 46, 0, 0x1000000, 0x200000000, 0x0 },
        { 8116738978, 0x100000535, 613, 36, 59, 70, 0x2, 0x0, 0x0 },
        { 8119750182, 0x100000535, 5260, 76, 46, 0, 0x1000000, 0x300000000, 0x0 },
        { 8119751313, 0x100000535, 613, 36, 59, 70, 0x3, 0x0, 0x0 },
        { 8119817672, 0x100000535, 1325, 32, 0, 0, 0x0, 0x0, 0x0 },
        { 8119830022, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 8123627978, 0x0, 46, 39, 0, 0, 0x1, 0x0, 0x0 },
        { 8123628431, 0x100000535, 155, 42, 53, 0, 0x0, 0x6, 0x0 },
        { 8126670497, 0x100000535, 5260, 76, 46, 0, 0x1000000, 0x200000000, 0x0 },
        { 8126671389, 0x100000535, 613, 36, 59, 70, 0x2, 0x0, 0x0 },
        { 8129995609, 0x100000535, 5260, 76, 46, 0, 0x1000000, 0x300000000, 0x0 },
        { 8129996294, 0x100000535, 613, 36, 59, 70, 0x3, 0x0, 0x0 },
        { 8130072867, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 8363487800, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 8363488306, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 8363509553, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 8432905260, 0x100000535, 1338, 28, 0, 0, 0x0, 0x0, 0x0 },
        { 8432967806, 0x0, 228, 1, 43, 0, 0x1, 0xfa, 0x0 },
        { 8432969421, 0x0, 270, 17, 55, 0, 0x0, 0x100000535, 0x0 },
        { 8432969691, 0x0, 282, 17, 55, 67, 0x0, 0x100000535, 0x1 },
        { 8432969866, 0x0, 328, 16, 0, 0, 0x1, 0x0, 0x0 },
        { 8682430391, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 8682430950, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 8682448189, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 8932884436, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 8932884972, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 8932909025, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 9182169441, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 9182169905, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 9182198178, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 9432890838, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 9432891256, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 9432903519, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 9683113772, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 9683114181, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 9683125373, 0x100000535, 155, 42, 53, 0, 0x0, 0x8, 0x0 },
        { 9683143038, 0x100000535, 504, 40, 60, 49, 0x1, 0x0, 0x10001 },
        { 9683143195, 0x100000535, 504, 40, 60, 49, 0x2, 0x0, 0x0 },
        { 9683143315, 0x100000535, 504, 40, 60, 49, 0x3, 0x0, 0x0 },
        { 9683143618, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 26242188372, 0x0, 662, 84, 84, 0, 0x21, 0x1, 0x0 },
        { 27397369177, 0x0, 662, 84, 84, 0, 0x1, 0x1, 0x0 },
        { 30915247820, 0x0, 662, 84, 84, 0, 0x11, 0x1, 0x0 },
        { 35915348248, 0x0, 662, 84, 84, 0, 0x1, 0x1, 0x0 },
        { 47457811228, 0x100000535, 1623, 14, 53, 0, 0x0, 0x2, 0x0 },
        { 47457819971, 0x100000535, 155, 42, 53, 0, 0x0, 0x1, 0x0 },
        { 47457947649, 0x100000535, 500, 40, 60, 49, 0x2, 0x1, 0x0 },
        { 47459041891, 0x100000535, 481, 37, 60, 49, 0x2, 0x1, 0x0 },
        { 47461904296, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x100000000, 0x0 },
        { 47461906423, 0x100000535, 1988, 35, 50, 69, 0x2, 0x200000002, 0x1 },
        { 47464608058, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x100000000, 0x0 },
        { 47464608957, 0x100000535, 1988, 35, 50, 69, 0x2, 0x200000002, 0x1 },
        { 47468745164, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x600000000, 0x0 },
        { 47471530480, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x10000000e, 0x0 },
        { 47474314014, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x400000020, 0x0 },
        { 47477218283, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x1000000060, 0x0 },
        { 47479904834, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x100000090, 0x0 },
        { 47484170301, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x1000002200, 0x0 },
        { 47486955674, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0xc00000400, 0x0 },
        { 47568074478, 0x100000535, 613, 36, 59, 70, 0x2, 0x0, 0x0 },
        { 47568083863, 0x0, 228, 1, 43, 0, 0x1, 0xfa, 0x0 },
        { 47568199100, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 47818323323, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 47818324166, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 47818349219, 0x100000535, 500, 40, 60, 49, 0x2, 0x1, 0x100000000 },
        { 47832301168, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x100000600, 0x0 },
        { 47835221758, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0xc000e0000, 0x0 },
        { 47890138940, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x100000102, 0x0 },
        { 47897744953, 0x100000535, 2028, 2, 44, 62, 0x200000000, 0x1000e000c, 0x0 },
        { 47907056522, 0x100000535, 3646, 81, 83, 0, 0x1, 0x1, 0x0 },
        { 47954281467, 0x100000535, 3670, 82, 83, 0, 0x0, 0x1, 0x0 },
        { 47971103298, 0x100000535, 429, 11, 48, 65, 0x0, 0x100000001, 0x20102000000040c },
        { 47971106752, 0x100000535, 429, 11, 48, 65, 0x1, 0x200000001, 0x201020000000414 },
        { 47971109141, 0x100000535, 429, 11, 48, 65, 0x2, 0x300000000, 0x0 },
        { 47971109910, 0x100000535, 401, 9, 47, 64, 0x1, 0x6, 0x0 },
        { 47971110512, 0x100000535, 410, 10, 0, 0, 0x1000200000001, 0x0, 0x0 },
        { 47971112424, 0x100000535, 307, 8, 46, 63, 0x0, 0x100000000, 0x0 },
        { 47971115623, 0x100000535, 410, 10, 0, 0, 0x103000100000001, 0x0, 0x0 },
        { 47971118788, 0x100000535, 307, 8, 46, 63, 0x0, 0x200000000, 0x0 },
        { 47971121456, 0x100000535, 410, 10, 0, 0, 0x200000000000000, 0x0, 0x0 },
        { 47971124568, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 48069457481, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 48069458082, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 48069492009, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 48233252877, 0x100000535, 1623, 14, 53, 0, 0x0, 0x2, 0x0 },
        { 48233261008, 0x100000535, 155, 42, 53, 0, 0x0, 0x2, 0x0 },
        { 48233322610, 0x100000535, 429, 11, 48, 65, 0x0, 0x100000001, 0x20102000000040c },
        { 48233325294, 0x100000535, 429, 11, 48, 65, 0x1, 0x200000001, 0x201020000000414 },
        { 48233327021, 0x100000535, 429, 11, 48, 65, 0x2, 0x300000000, 0x0 },
        { 48233327642, 0x100000535, 401, 9, 47, 64, 0x3, 0x4, 0x0 },
        { 48233328142, 0x100000535, 410, 10, 0, 0, 0x1000200000001, 0x0, 0x0 },
        { 48233329869, 0x100000535, 307, 8, 46, 63, 0x0, 0x100000000, 0x0 },
        { 48233332366, 0x100000535, 410, 10, 0, 0, 0x103000200000001, 0x0, 0x0 },
        { 48233334891, 0x100000535, 307, 8, 46, 63, 0x0, 0x200000000, 0x0 },
        { 48233337133, 0x100000535, 410, 10, 0, 0, 0x200000000000000, 0x0, 0x0 },
        { 48233344462, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 48319050042, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 48319050426, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 48319090981, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 48569516009, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 48569516596, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 48569529970, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 48819594965, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 48819595413, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 48819612774, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 49069174045, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 49069174450, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 49069187877, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 49321063466, 0x0, 46, 39, 0, 0, 0x0, 0x0, 0x0 },
        { 49321063968, 0x100000535, 155, 42, 53, 0, 0x0, 0x7, 0x0 },
        { 49321071767, 0x100000535, 155, 42, 53, 0, 0x0, 0x8, 0x0 },
        { 49321092703, 0x100000535, 504, 40, 60, 49, 0x1, 0x0, 0x10001 },
        { 49321092916, 0x100000535, 504, 40, 60, 49, 0x2, 0x0, 0x10001 },
        { 49321093056, 0x100000535, 504, 40, 60, 49, 0x3, 0x0, 0x0 },
        { 49321093768, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
        { 74777175469, 0x0, 662, 84, 84, 0, 0x11, 0x1, 0x0 },
        { 79780667596, 0x0, 662, 84, 84, 0, 0x1, 0x1, 0x0 },
        { 89872319134, 0x0, 662, 84, 84, 0, 0x11, 0x1, 0x0 },
        { 94695028468, 0x0, 662, 84, 84, 0, 0x1, 0x1, 0x0 },
        { 155857348885, 0x0, 662, 84, 84, 0, 0x11, 0x1, 0x0 },
        { 160859161990, 0x0, 662, 84, 84, 0, 0x1, 0x1, 0x0 },
        { 306627235606, 0x100000535, 1623, 14, 53, 0, 0x0, 0x2, 0x0 },
        { 306627361999, 0x100000535, 155, 42, 53, 0, 0x0, 0x2, 0x0 },
        { 306628485256, 0x100000535, 429, 11, 48, 65, 0x0, 0x100000001, 0x20102000000040c },
        { 306628502163, 0x100000535, 429, 11, 48, 65, 0x1, 0x200000001, 0x201020000000414 },
        { 306628505204, 0x100000535, 429, 11, 48, 65, 0x2, 0x300000000, 0x0 },
        { 306628505831, 0x100000535, 401, 9, 47, 64, 0x2, 0x5, 0x0 },
        { 306628506310, 0x100000535, 410, 10, 0, 0, 0x1000200000001, 0x0, 0x0 },
        { 306628508018, 0x100000535, 307, 8, 46, 63, 0x0, 0x100000000, 0x0 },
        { 306628512192, 0x100000535, 410, 10, 0, 0, 0x103000200000001, 0x0, 0x0 },
        { 306628515225, 0x100000535, 307, 8, 46, 63, 0x0, 0x200000000, 0x0 },
        { 306628517332, 0x100000535, 410, 10, 0, 0, 0x200000000000000, 0x0, 0x0 },
        { 306628528723, 0x100000535, 337, 15, 54, 0, 0x0, 0x0, 0x0 },
    }
};
### End: displaypolicyd (took 0.001 sec) #####################################

### Start: Devices ###########################################################
### Start: AGDC[1] 0x1000004ee ###############################################
IOService:/IOResources/AppleGPUWrangler
Vendor: Apple [0000106b]: AppleGPUWrangler [8 10000] (0)
### End: AGDC[1] 0x1000004ee (took 0.000 sec) ################################

### Start: AGDC[2] 0x10000052d ###############################################
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebufferController/IntelFBClientControl
See 0x100000535
### End: AGDC[2] 0x10000052d (took 0.000 sec) ################################

### Start: AGDC[3] 0x100000535 ###############################################
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebufferController/IntelFBClientControl/AppleGraphicsDevicePolicy/AGDPClientControl
Vendor: AppleIntelFramebufferController [0000106b]: IntegratedGPU [1 10000] (0)
### End: AGDC[3] 0x100000535 (took 0.002 sec) ################################

### End: Devices (took 0.003 sec) ############################################

### Start: mpxdiagnose #######################################################
### End: mpxdiagnose (took 0.006 sec) ########################################

AGDCDiagnose completed in 0.228685 seconds
 
I have managed to make it work in 120 Hertz after using a bash script (which generated an Info.plist file which is now in my Library/Display folder). I am not keen on going higher than this because as seen in above screenshot the resolution /quality seems to drop with the 4K logo looking blurry and not accurate hence I think I will stick with 120 Hertz (I read somewhere in the past that Mac does not render well post 120 Hertz but either way this is plenty enough for my needs).

I have another issue now after this bash script is that as soon as I open the lid of the Mac the issue reappears (the black bars). I am not sure how I can fix this..
 
You have a MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports). That model is limited to DisplayPort 1.2 but it should be good enough for the 2560x1440 144/165/170Hz 8bpc or 60/120Hz 10bpc modes which are listed in the display's EDID.
HDR require 10bpc.

The AGDCDiagnose output says you have a properly working DisplayPort 1.2 connection (full bandwidth: Status: [4 x HBR2 7777]).

AGDCDiagnose doesn't show output timing info for Intel GPUs. I think the AllRez command should have that info and it lists all the modes that were accepted by macOS.
https://forums.macrumors.com/thread...-on-mac-pro-yes-you-can.2309750/post-30760662
Use the Finder to zip the resulting output and attach the zip file to your reply.

Maybe setting the "Underscans IT Video Formats by default" flag in the EDID override would help?
 
You have a MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports). That model is limited to DisplayPort 1.2 but it should be good enough for the 2560x1440 144/165/170Hz 8bpc or 60/120Hz 10bpc modes which are listed in the display's EDID.
HDR require 10bpc.

The AGDCDiagnose output says you have a properly working DisplayPort 1.2 connection (full bandwidth: Status: [4 x HBR2 7777]).

AGDCDiagnose doesn't show output timing info for Intel GPUs. I think the AllRez command should have that info and it lists all the modes that were accepted by macOS.
https://forums.macrumors.com/thread...-on-mac-pro-yes-you-can.2309750/post-30760662
Use the Finder to zip the resulting output and attach the zip file to your reply.

Maybe setting the "Underscans IT Video Formats by default" flag in the EDID override would help?

Thank you!

If I understand correctly it seems that the 4K logo blur/inaccuracy in the above picture is caused by the monitor which can only push 8 bits instead of 10 above 120 hertz.

I was able to remove the black bars through your bash script, but unfortunately as soon as I lift the lid up the issue reappears and I need to reboot and close the lid to retrieve a full monitor screen. I wonder if there is a way to have both the monitor fully filled and the lid open but I cannot really understand how though; surely I have to do something in the Overrides folder for the Retina screen, or maybe it lies in the Info.plist file. I am using the Library to paste these files instead of System/Library hence I believe the Macbook reverts to System/Library completely whenever it detects a new output source activated?

Here is the log for the AllRez
 

Attachments

  • Allrez.pdf
    164.9 KB · Views: 218
Last edited:
If I understand correctly it seems that the 4K logo blur/inaccuracy in the above picture is caused by the monitor which can only push 8 bits instead of 10 above 120 hertz.
No, you shouldn't see a difference between 8bpc and 10bpc. Something else is going on. Need AllRez output for each case to be able to compare to find the real difference.

I was able to remove the black bars through your bash script
you mean EDIDUtil.sh ?

but unfortunately as soon as I lift the lid up the issue reappears and I need to reboot and close the lid to retrieve a full monitor screen.
When the issue is gone, put the computer to sleep (without closing the lid), then wake. Does the issue reappear?

When the issue is gone, set a corner of the display (I use bottom right) to "Put the Display to Sleep" (System Preferences -> Desktop & Screen Saver -> Screen Saver -> Hot Corners). Then move the mouse to that corner to put the display to sleep, then wake. Does the issue reappear?

I wonder if there is a way to have both the monitor fully filled and the lid open but I cannot really understand how though; surely I have to do something in the Overrides folder for the Retina screen, or maybe it lies in the Info.plist file. I am using the Library to paste these files instead of System/Library hence I believe the Macbook reverts to System/Library completely whenever it detects a new output source activated?
I don't think the old file in /System/Library gets used if you have your own overrides file in /Library/
 
Last edited:
Here is the log for the AllRez
pdf is difficult to read. I suggest using the Finder to compress the text output files (one for each test, use a descriptive name for each) into a single zip file and then attach the zip file by clicking the Attach files button.
Example commands to be used in Terminal.app.
~/Downloads/AllRez > allrez_mbp2019_goodtext.txt for the first test
~/Downloads/AllRez > allrez_mbp2019_badtext.txt for the second test
maybe another test for when the screen switches from good to bad, etc.
open . to open in the Finder the folder where the txt files were created.

From the pdf, Monitor[0] is the M27Q which is set to display mode #1.
Code:
            { 1: id:0x80003000 2560x1440@59.875Hz 59Hz (dens=1.0) pixels:2560x1440 resolution:109x109 32bpp 10bpc 3cpp rowbytes:10240 IOFlags:(Valid,Safe,Default,Television,) flags: (Valid,Safe,Default,Television,) depthFormat:8 encoding:-- RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB refreshRate.unk0.unk1:003be002.0000.00000001 },

Display mode #1 uses this timing info:
Code:
{ DetailedTimingInformation = { V2 id:0x80003000 2560x1440@59.951Hz 88.787kHz 241.500MHz (errMHz 0,0)  h(48 32 80 +) v(3 5 33 +)  border(h0:0 v0:0)  active:2560x1440 (not scaled) inset:0x0 flags(0°,) signal() levels:0714_0286 links:1 vbext:0 vbstretch:0 vbshrink:0 encodings(RGB,) bpc(10,) colorimetry(NativeRGB,) dynamicrange(TraditionalGammaSDR,) dsc(0x0 0bpp) }; DisplayModeInformation = { 2560x1440@59.951Hz maxdepth:1 flags:Valid,Safe,Default,Television, imagesize:596x335mm }; ID = 0x80003000; },
 
  • Like
Reactions: Amethyst1
No, you shouldn't see a difference between 8bpc and 10bpc. Something else is going on. Need AllRez output for each case to be able to compare to find the real difference.


you mean EDIDUtil.sh ?


When the issue is gone, put the computer to sleep (without closing the lid), then wake. Does the issue reappear?

When the issue is gone, set a corner of the display (I use bottom right) to "Put the Display to Sleep" (System Preferences -> Desktop & Screen Saver -> Screen Saver -> Hot Corners). Then move the mouse to that corner to put the display to sleep, then wake. Does the issue reappear?


I don't think the old file in /System/Library gets used if you have your own overrides file in /Library/


Thank you joevt, apologies for the long response I had some urgent parents situation to deal with..

I was referring to this script of yours below.

Code:
#=========================================================================================
# Initialize

workingfile="newovveride.plist"

#=======================================================
# 1) Do one of the following to create a working file:
#=======================================================
# 1a): Make a new file

[ -f "$workingfile" ] && rm "$workingfile"
/usr/libexec/PlistBuddy -c 'Add :DisplayProductID integer 0' -c 'Add :DisplayVendorID integer 0' -c 'Add :IODisplayEDID data ""' "$workingfile" > /dev/null

#=======================================================
# 1b): Make an editable copy of an existing file

#open "smb://Joe’s Mac mini._smb._tcp.local/Macintosh HD/System/Library/Displays/Contents/Resources/Overrides/"
srcfile=/Volumes/Overrides/DisplayVendorID-10ac/DisplayYearManufacture-2016-DisplayWeekManufacture-35
sudo cp $srcfile "$workingfile"
sudo chmod 664 "$workingfile"

#=======================================================
# 2) Do one of the following to get an EDID:
#=======================================================
# 2a): Use a string of hex bytes (lower case, no spaces)

theedid="00ffffffffffff0010acc5a0424c4c30231a010380351e78eae245a8554da3260b5054a54b00714f8180a9c0a940d1c0e1000101010108e80030f2705a80b0588a000f282100001a000000ff00473344374636384f304c4c420a000000fc0044454c4c205032343135510a20000000fd001d4c1e8c3c000a20202020202002ac020340f15810050402071601141f121327202122030611155d5e5f616023091f07830100006d030c002000007820006003020167d85dc40178c007e40f0000c0011d8018711c1620582c25000f282100009e04740030f2705a80b0588a000f282100001e565e00a0a0a02950302035000f282100001a00000000000000000082701160030003005087000000dd000180feff0f006e0004000000020015040000bb014f80feff290041010b000000020007e80000ff0e2f02af8057006f0859000700090076920100ff1d9f002f801f00df103c00020004000b000a537769746368526573585c0000000000000000000000000000000000000000000000000090"

#=======================================================
# 2b): Read the EDID from the override file

theedid=$(/usr/libexec/PlistBuddy -c 'Print :IODisplayEDID' "${workingfile}" 2> /dev/null | xxd -p -c 99999)
theedid=${theedid%0a} # remove extra linefeed that was added by PlistBuddy

#=======================================================
# 2c): Read the EDID from a binary file

theedid=$(xxd -p -c 99999 /tmp/EDID.bin)

#=======================================================
# 2d): Read the EDID from ioreg or AGDCDiagnose or where ever you like


edids=()
paths=()

addedid () {
    local thepath="$1"
    local theedid="$2"
    local found=0
    for ((i = 0 ; i < ${#edids[@]} ; i++)); do
        if [[ $theedid == ${edids[i]} ]]; then
            if [[ ! "$(printf "_\n%s\n_" "${paths[i]}")" =~ $(printf ".*\n%s\n.*" "${thepath}") ]]; then
                paths[i]="$(printf "%s\n%s" "${paths[i]}" "$thepath")"
            fi
            found=1
            break
        fi
    done
    if [[ found -eq 0 ]]; then
        edids+=($theedid)
        paths+=($thepath)

        local theproductid=$((0x${theedid:22:2}${theedid:20:2}))
        local thevendorid=$((0x${theedid:16:4}))
        local theweekofmanufacture=$((0x${theedid:32:2}))
        local theyearofmanufacture=$((0x${theedid:34:2}+1990))
 
        local theproductfile="DisplayVendorID-$(printf "%x" $thevendorid)/DisplayProductID-$(printf "%x" $theproductid)"
        local themanufacturefile="DisplayVendorID-$(printf "%x" $thevendorid)/DisplayYearManufacture-$theyearofmanufacture-DisplayWeekManufacture-$theweekofmanufacture"

        for thefile in "/System/Library/Displays/Contents/Resources/Overrides/$themanufacturefile" "/System/Library/Displays/Contents/Resources/Overrides/$theproductfile"; do
            if [[ -f "$thefile" ]]; then
                local theoverrideedid=$(/usr/libexec/PlistBuddy -c 'Print :IODisplayEDID' "${thefile}" 2> /dev/null | xxd -p -c 99999)
                theoverrideedid=${theoverrideedid%0a} # remove extra linefeed that was added by PlistBuddy
                [[ -n $theoverrideedid ]] && addedid "${thefile}/IODisplayEDID" "$theoverrideedid"
                [[ -n $theoverrideedid ]] && theedid=$theoverrideedid
                if /usr/libexec/PlistBuddy -c 'Print :edid-patches' "${thefile}" > /dev/null 2>&1; then
                    local index=0
                    while [ -n ""$(/usr/libexec/PlistBuddy -c "Print :edid-patches:$index:offset" "${thefile}" 2> /dev/null) ]; do
                        local theoffset=$(/usr/libexec/PlistBuddy -c "Print :edid-patches:$index:offset" "${thefile}")
                        local thedata=$(/usr/libexec/PlistBuddy -c "Print :edid-patches:$index:data" "${thefile}" | xxd -p -c 99999)
                        thedata=${thedata%0a} # remove extra linefeed that was added by PlistBuddy
                        theedid=${theedid::$((theoffset*2))}${thedata}${theedid:$((theoffset*2 + ${#thedata}))}
                        ((index+=1))
                    done
                    if (( ${#theedid} % 256 == 0 )); then
                        addedid "${thefile}/edid-patches" "$theedid"
                    fi
                fi
            fi
        done
    fi
}

IFS=$'\n'
for ediditem in $(
    ioreg -lw0 | perl -e '
    $thepath=""; while (<>) {
        if ( /^([ |]*)\+\-o (.+)  </ ) { $indent = (length $1) / 2; $name = $2; $thepath =~ s|^((/[^/]*){$indent}).*|$1/$name| }
        if ( /^[ |]*"([^"]*edid[^"]*)" = <(00ffffffffffff.*)>/i ) { print ioreg . ":" . $thepath . "/" . $1 . " = <" . $2 . ">\n" }
    }
    '

    #cat ~/AGDCDiagnose_a.txt | perl -e '
    /System/Library/Extensions/AppleGraphicsControl.kext/Contents/MacOS/AGDCDiagnose -a > AGDCDiagnose_a.txt 2>&1 | perl -e '
    $thepath=""; while (<>) {
        if ( m|^\[\d+\] IOService:(/.*)| ) { $thepath = $1 }
        if ( /## EDID Dump (Port \d+) - Start ##/ ) { $theport = $1; $edid = "" }
        if ( m|^  /\* ...: \*/  (.*)| ) { $edid .= $1 }
        if ( /## EDID Dump (Port \d+) - End ##/ and length $edid > 0 ) { $edid =~ s/0x(..)(, )?/$1/g; print "AGDCDiagnose:" . $thepath . "/" . $theport . " = <" . $edid . ">\n" }
    }
    '
); do
    thepath="${ediditem% = <*}"
    theedid="${ediditem##* = <}"
    theedid="${theedid%>}"
    addedid "${thepath}" "${theedid}"
done

for ((i = 0 ; i < ${#edids[@]} ; i++)); do
    theedid=${edids[i]}
    theproductid=$((0x${theedid:22:2}${theedid:20:2}))
    thevendorid=$((0x${theedid:16:4}))
    theweekofmanufacture=$((0x${theedid:32:2}))
    theyearofmanufacture=$((0x${theedid:34:2}+1990))
    theproductfile="DisplayVendorID-$(printf "%x" $thevendorid)/DisplayProductID-$(printf "%x" $theproductid)"
    themanufacturefile="DisplayVendorID-$(printf "%x" $thevendorid)/DisplayYearManufacture-$theyearofmanufacture-DisplayWeekManufacture-$theweekofmanufacture"
    echo "$((i+1)))"
    echo "vendor:$thevendorid ($(printf "%06x" $((((thevendorid&0x7c00)<<6)+((thevendorid&0x3e0)<<3)+(thevendorid&0x1f)+0x404040)) | xxd -p -r)) product:$theproductid"
    echo "$theproductfile"
    echo "$themanufacturefile"
    echo "strings:"$(echo -n "$theedid" | xxd -p -r | strings - )
    echo "theedid=$theedid"
    echo "${paths[i]}"
    echo
done

#=======================================================

replacebytes () {
    local bytepos=$(($1*2))
    local thebytes=$2
    local thelen=${#thebytes}
    [[ -n $3 ]] && thelen=$(($3*2))
    theedid=${theedid:0:$bytepos}${thebytes}${theedid:$((bytepos+thelen))}
}

repairchecksums () {
    local blockoffset=0
    while [[ blockoffset*2 -lt ${#theedid} ]]; do
        replacebytes $(($blockoffset+127)) $(printf "%02x" $(( -($(echo -n ${theedid:$(($blockoffset*2)):254} | sed "s/../+0x&/g")) & 0xff )))
        ((blockoffset+=128))
    done
}

deleteblock () {
    local blockoffset=$1
    if  [[ blockoffset*2 -lt ${#theedid} ]]; then
        replacebytes $blockoffset "" 128
        replacebytes 126 $(printf "%02x" $((0x${theedid:252:2}-1)))
    else
        echo "Block at $blockoffset doesn't exist"
    fi
}

deleteblocktype () {
    local blocktype=$1
    local blockoffset=128
    while [[ blockoffset*2 -lt ${#theedid} ]]; do
        local blocktag=$((0x${theedid:$(($blockoffset*2)):2}))
        if [[ $blocktag == $blocktype ]]; then
            deleteblock $blockoffset
        else
            ((blockoffset+=128))
        fi
    done
}

#echo -n $theedid | xxd -p -r > "/tmp/EDID.bin"
#edid-decode /tmp/EDID.bin > /tmp/EDID_edid-decode.txt
EDIDversion=$((0x${theedid:$((0x12*2)):2})).$((0x${theedid:$((0x13*2)):2})) # 1.3 or 1.4
isdigital=$(( 0x${theedid:$((0x14*2)):1} > 7 )) # 0 or 1
Echo "EDID $EDIDversion"
featuresupportbyte=$((0x${theedid:$((0x18*2)):2}))
featuresupport=$(( (featuresupportbyte >> 3) & 3 ))
if [[ $EDIDversion < "1.4" ]]; then
    case $featuresupport in
        0) echo "    Monochrome or Grayscale" ;;
        1) echo "    RGB color" ;;
        2) echo "    Non-RGB color" ;;
        3) echo "    Undefined" ;;
    esac
else
    case $isdigital$featuresupport in
        00) echo "    Monochrome or Grayscale" ;;
        01) echo "    RGB color" ;;
        02) echo "    Non-RGB color" ;;
        03) echo "    Undefined" ;;
        10) echo "    RGB 4:4:4" ;;
        11) echo "    RGB 4:4:4 + YCrCb 4:4:4" ;;
        12) echo "    RGB 4:4:4 + YCrCb 4:2:2" ;;
        13) echo "    RGB 4:4:4 + YCrCb 4:4:4 + YCrCb 4:2:2" ;;
    esac
    newfeaturesupportbyte=$(((featuresupportbyte & ~0x18) | (0 << 3) ))
    replacebytes 0x18 $(printf "%02x" $newfeaturesupportbyte)
    echo '        changed to "Monochrome or Grayscale"'

    #repairchecksums
    #echo $theedid | xxd -p -r > "/tmp/EDID2.bin"
    #edid-decode /tmp/EDID2.bin > /tmp/EDID2_edid-decode.txt
fi

blockoffset=128
while [[ blockoffset*2 -lt ${#theedid} ]]; do
    theblock=${theedid:$(($blockoffset*2)):254}
    blocktag=$((0x${theblock:0:2}))
    if [[ $blocktag == 2 ]]; then
        CTAversion=${theblock:2:2}
        if [[ $CTAversion -gt 01 ]]; then
            echo "CTA-861 extension block with new version $CTAversion at $blockoffset"
            YCbCrSupportbyte=$((0x${theblock:6:2}))
            YCbCrSupport=$((( YCbCrSupportbyte >> 4) & 3))
            case $YCbCrSupport in
                0) echo "    no YCbCr support" ;;
                1) echo "    YCbCr 4:2:2" ;;
                2) echo "    YCbCr 4:4:4" ;;
                3) echo "    YCbCr 4:4:4, YCbCr 4:2:2" ;;
            esac
            newYCbCrSupportbyte=$(((YCbCrSupportbyte & ~0x30) | (0 << 4) ))
            replacebytes $((blockoffset+0x03)) $(printf "%02x" $newYCbCrSupportbyte)
            echo '        changed to "no YCbCr support"'

            #repairchecksums
            #echo $theedid | xxd -p -r > "/tmp/EDID3.bin"
            #edid-decode /tmp/EDID3.bin > /tmp/EDID3_edid-decode.txt

            if [[ $CTAversion -gt 02 ]]; then
                DetailedTimingDescriptorsOffset=$((0x${theblock:4:2}))
                CTAdatablockoffset=4
                while [[ CTAdatablockoffset -lt $DetailedTimingDescriptorsOffset ]]; do
                    CTAdatablocklength=$(((0x${theblock:$((CTAdatablockoffset*2)):2} & 0x1f) + 1))
                    CTAdatablock=${theblock:$((CTAdatablockoffset*2)):$(($CTAdatablocklength * 2))}
                    CTAtagcode=$(((0x${CTAdatablock:0:2} >> 5) & 0x1f))
                    if  [[ $CTAtagcode == 7 ]]; then
                        CTAtagcode=e$((0x${CTAdatablock:2:2}))
                    fi
                    echo "$CTAdatablockoffset: tag:$CTAtagcode length:$CTAdatablocklength block:$CTAdatablock"

                    case $CTAtagcode in
                        3)
                            IEEEOUI=${CTAdatablock:6:2}${CTAdatablock:4:2}${CTAdatablock:2:2}
                            echo -n "Vendor Specific $IEEEOUI:"
                            case $IEEEOUI in
                                000c03)
                                    echo " HDMI Licensing, LLC -> H14b VSDB"
                                    H14bByte=${CTAdatablock:12:2}
                                    if [[ -n $H14bByte ]]; then
                                        H14bByte=$((0x${H14bByte}))
                                        H14b=$((( H14bByte >> 3) & 1))
                                        case $H14b in
                                            0) echo "    Support YCbCr 4:4:4 - No" ;;
                                            1) echo "    Support YCbCr 4:4:4 - Yes" ;;
                                        esac
                                        newH14bByte=$(((H14bByte & ~0x08) | (0 << 3) )) # 0: No (RGB only), 1: Yes (YCbCr 4:4:4)
                                        replacebytes $((blockoffset+CTAdatablockoffset+6)) $(printf "%02x" $newH14bByte)
                                        echo "        changed to No"
                                    fi
                                    ;;
                                c45dd8)
                                    echo " HDMI Forum -> HF-VSDB"
                                    HFByte=$((0x${CTAdatablock:14:2}))
                                    HF=$((( HFByte >> 0) & 7))
                                    case $HF in
                                        0) echo "    4:2:0 10/12/16 bpc - No" ;;
                                        1) echo "    4:2:0 10 bpc - Yes" ;;
                                        2) echo "    4:2:0 12 bpc - Yes" ;;
                                        3) echo "    4:2:0 10/12 bpc - Yes" ;;
                                        4) echo "    4:2:0 16 bpc - Yes" ;;
                                        5) echo "    4:2:0 10/16 bpc - Yes" ;;
                                        6) echo "    4:2:0 12/16 bpc - Yes" ;;
                                        7) echo "    4:2:0 10/12/16 bpc - Yes" ;;
                                    esac
                                    newHFByte=$(((HFByte & ~0x07) | (0 << 0) ))
                                    replacebytes $((blockoffset+CTAdatablockoffset+7)) $(printf "%02x" $newHFByte)
                                    echo "        changed to No"
                                    ;;
                                *)
                                    echo " Unknown OUI"
                                    ;;
                            esac
                             ;;
                        e14)
                            echo "YCbCr 4:2:0 Video Data Block"
                            ;;
                        e15)
                            echo "YCbCr 4:2:0 Capability Map Data Block at $((blockoffset+$CTAdatablockoffset)) : $CTAdatablock"
                            CTAdatablock=${CTAdatablock:0:4}$(echo -n ${CTAdatablock:4} | sed 's/./0/g')
                            replacebytes $((blockoffset+CTAdatablockoffset)) $CTAdatablock
                            echo "    Changed to $CTAdatablock"
                            ;;
                    esac
                
                    ((CTAdatablockoffset+=CTAdatablocklength))
                done
            fi
        else
            echo "CTA-861 extension block with old version $CTAversion at $blockoffset"
        fi
    else
        echo "Extension block at $blockoffset: type:$blocktag"
    fi
    ((blockoffset+=128))
done

repairchecksums
#echo $theedid | xxd -p -r > "/tmp/EDID4.bin"
#edid-decode /tmp/EDID4.bin > /tmp/EDID4_edid-decode.txt

#=======================================================
# Save EDID to working file
plutil -replace IODisplayEDID -data "$(echo -n $theedid | xxd -p -r | base64)" "$workingfile"
plutil -replace DisplayProductID -integer $((0x${theedid:22:2}${theedid:20:2})) "$workingfile"
plutil -replace DisplayVendorID -integer $((0x${theedid:16:4})) "$workingfile"

#=======================================================
# Copy contents of working file to an override file in the /System/Library/Displays/Contents/Resources/Overrides folder

For some reason I am not able to replicate your script anymore but I swear your script worked that night (I hadno black bars and I was able to get 144 Hertz). As I cannot replicate, I did a Allrez under 3 scenarios (black bars at 60 and 144 hertz; as well as one without black bars using the patch-edid.rb script but at 60 hz as I cannot produce a no black bars one at 144 hertz).

However, it seems that the original ruby script is able to run the monitor correctly without black bars even when the MacBook lid is open, as opposed to the above script (which I can’t figure how to make it work again )

Regarding the texture / rez issue on 120 vs 144 hertz, I can confirm it occurs on both the professional MacBook Air M1 as well as my personal MBP 2019
 

Attachments

  • Archive.zip
    82.8 KB · Views: 76
Last edited:
Thank you joevt, apologies for the long response I had some urgent parents situation to deal with..

I was referring to this script of yours below.

Code:
#=========================================================================================
...
That script is replaced by https://gist.github.com/joevt/32e5efffe3459958759fb702579b9529 which has a few more features.
Read the first post for example of how to use it. But maybe you'll want to use a better EDID editor such as CRU (Custom Resolution Utility in Windows). AWEDIDEditor.app is nice but it's out of date and doesn't support DisplayID.

For some reason I am not able to replicate your script anymore but I swear your script worked that night (I hadno black bars and I was able to get 144 Hertz). As I cannot replicate, I did a Allrez under 3 scenarios (black bars at 60 and 144 hertz; as well as one without black bars using the patch-edid.rb script but at 60 hz as I cannot produce a no black bars one at 144 hertz).

However, it seems that the original ruby script is able to run the monitor correctly without black bars even when the MacBook lid is open, as opposed to the above script (which I can’t figure how to make it work again )
The no black bars result appears to have MacBook lid closed as it does not include the Mac's built-in display.

There's not much difference between 120Hz and 144Hz except 144Hz is running at 8bpc and therefore doesn't allow HDR while 120Hz is running at 10bpc and can allow HDR.

For the 60Hz version with no black bars:
- HDR is not supported, possibly because the HDR info was removed from the EDID.
- missing the VSDB030C00, VSDB1A0000, VSDBD85DC4 which are the VSDB data blocks from the EDID.
- missing NeedsCEAUnderscan (a flag from the EDID)
- missing IOFBScalerUnderscan
- missing IOFBmHz (for having detailed refresh rates - maybe why you're stuck with 60Hz)
- missing IOFBtv (for TVs)
- missing many display timings (29 timings instead of 165)
- missing the Television flag
- missing many display modes (78 modes instead of 318)

The common theme in the differences is the removal of stuff in the EDID that describes the display as a TV with underscan.
Therefore, you want to remove TV/underscan stuff from the real EDID without removing the display timings.
I believe the patch-edid.rb removes all extension blocks from the EDID which has the side effect of removing many display timings.
The original EDID has two extension blocks to make the total length 384 bytes. How many bytes are in the override EDID created by patch-edid.rb? Probably 128 bytes (no extension blocks).

Regarding the texture / rez issue on 120 vs 144 hertz, I can confirm it occurs on both the professional MacBook Air M1 as well as my personal MBP 2019
Regarding the Rez/texture issue, you don't have an AllRez output for when the problem occurs and does not occur?
 
Last edited:
  • Like
Reactions: thomasparra
That script is replaced by https://gist.github.com/joevt/32e5efffe3459958759fb702579b9529 which has a few more features.
Read the first post for example of how to use it. But maybe you'll want to use a better EDID editor such as CRU (Custom Resolution Utility in Windows). AWEDIDEditor.app is nice but it's out of date and doesn't support DisplayID.


The no black bars result appears to have MacBook lid closed as it does not include the Mac's built-in display.

There's not much difference between 120Hz and 144Hz except 144Hz is running at 8bpc and therefore doesn't allow HDR while 120Hz is running at 10bpc and can allow HDR.

For the 60Hz version with no black vars:
- HDR is not supported, possibly because the HDR info was removed from the EDID.
- missing the VSDB030C00, VSDB1A0000, VSDBD85DC4 which are the VSDB data blocks from the EDID.
- missing NeedsCEAUnderscan (a flag from the EDID)
- missing IOFBScalerUnderscan
- missing IOFBmHz (for having detailed refresh rates - maybe why you're stuck with 60Hz)
- missing IOFBtv (for TVs)
- missing many display timings (29 timings instead of 165)
- missing the Television flag
- missing many display modes (78 modes instead of 318)

The common theme in the differences is the removal of stuff in the EDID that describes the display as a TV with underscan.
Therefore, you want to remove TV/underscan stuff from the real EDID without removing the display timings.
I believe the patch-edid.rb removes all extension blocks from the EDID which has the side effect of removing many display timings.
The original EDID has two extension blocks to make the total length 384 bytes. How many bytes are in the override EDID created by patch-edid.rb? Probably 128 bytes (no extension blocks).


Regarding the Rez/texture issue, you don't have an AllRez output for when the problem occurs and does not occur?
Thank you again.

I think I am able to run the updated script, and this was able to generate the .bin EDID THAT I am trying to edit in the EDID Editor. The M27Q is a 27 inch screen but it seems to consider it as a 32 something inch screen instead.
Screen Shot 2022-03-05 at 11.15.50 AM.png


On a side note, I am not able to run the AllRez on the MacbookAir at 144 Hertz because it is a work computer and I have been running all these tests under my personal MBP with which I have the black bar issues. I think I will just sell the monitor as I am not an expert in this field and while I can replicate straightforward steps / figure out some minor coding adjustments this seems to be way above my capabilities.. It's frustrating because before logging in into my MAC account on the home page there is no black bars and it seems I hit at least 100 hertz.
 
Last edited:
This is the difference in the override file between left (your script from 2019 which is not functional for some reason and the second one from adaugherity which works as it removes the black bars but I think it removes too much data hence I am stuck at 60 hertz}

Screen Shot 2022-03-05 at 4.42.28 PM.png
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.