Nova limitação HiDPI Apple Silicon M4 e M5 em monitores externos 4K

PUBLICIDADE

Nova limitação HiDPI Apple Silicon M4 e M5 em monitores externos 4K

Começando com o M4 e incluindo as novas gerações M5 do Apple Silicon, o macOS não oferece mais ou permite modos HiDPI 4k de resolução total para monitores externos.

O modo HiDPI máximo disponível em um painel de 3840×2160 agora é apenas 3360×1890 (com 6720×3780, em vez de armazenamento de suporte de 7680×4320) – máquinas M2/M3 não tinham essa limitação.

Com esta regressão, a Apple está deixando os usuários escolherem entre:

  • Espaço em tela cheia em 4k (3840×2160) com texto desfocado devido à desativação do HiDPI.

ou

  • Espaço de tela reduzido em 3,3k (3360×1890) com texto nítido (HiDPI), mas espaço de trabalho significativamente menos utilizável, e a interface do macOS parece ridiculamente superdimensionada.

Isto não parece ser uma limitação de hardware

Os recursos relatados pelo DCP são idênticos byte por byte entre M2 Max e M5 Max. A limitação está no driver da GPU (AppleDisplayCrossbar), política de geração de modo, que fica entre o DCP e o WindowServer. No M4/M5, esse driver limita o armazenamento de suporte HiDPI em aproximadamente 1,75x a resolução nativa, em vez dos 2,0x necessários para HiDPI completo de 3840×2160. O hardware M5 Max suporta 8K (7680×4320) a 60Hz nativamente – o driver da GPU simplesmente não aloca o framebuffer.

Configuração de ambiente e teste#

PropriedadeM5 Máx. (afetado)M2 Máx. (funcionando)
ChipApple M5 Máx.Apple M2 Máx.
ID do modeloMac17,6Mac14.6
Núcleos de GPU4038
macOS26,4 (25E246)26,4 (25E246)
MostrarLG HDR 4K 32UN880LG HDR 4K 32UN880
Resolução nativa3840×21603840×2160
ConexãoUSB-C/Thunderbolt, HBR3 (8,1 Gbps), 4 pistasUSB-C/Thunderbolt, HBR3 (8,1 Gbps), 4 pistas
Modo HiDPI máximo3360×18903840×2160

Ambas as máquinas relatam idêntico Parâmetros DCP (Display Coprocessor) para o display LG:

MaxActivePixelRate  = 497,664,000
MaxTotalPixelRate   = 537,600,000
MaxW                = 3840
MaxH                = 2160
MaxBpc              = 10

O M5 Max suporta oficialmente “um monitor externo de até 8K (7680×4320) a 60 Hz” de acordo com as especificações da Apple. O hardware é inquestionavelmente capaz.

Diagnóstico e solução de problemas#

Exibir lista de substituição (resoluções de escala)#

O que: Escreveu um plist de substituição de exibição para /Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-7750 contendo entradas de resolução de escala para 7680×4320 HiDPI.

Resultado: Sem efeito no M5 Máx. O plist idêntico produz 3840×2160 HiDPI no M2 Max. WindowServer no M5 Max se recusa a enumerar o modo, independentemente do conteúdo do plist.

A lista de substituição que funciona no M2 Max:


    default-resolution
    AA8AAIhwAAAAPA==  
    DisplayProductID
    30544
    DisplayVendorID
    7789
    scale-resolutions
    
        AAAeAAAAEOAAAAAJACAAAA==  
        AAAeAAAAEOA=               
        AAAPAAAACHA=               
    

Patch EDID (substituição de software)#

O que: Escreveu um EDID corrigido no plist de substituição IODisplayEDID chave com:

  • O tempo preferencial dobrou para 4095×4095 (máximo de campo EDID de 12 bits)
  • Relógio de pixel definido para máximo (655,35 MHz)
  • Limites de faixa aumentados para clock máximo de pixel de 2550 MHz, frequência H máxima de 255 kHz, frequência V máxima de 255 Hz

Resultado: Sem efeito. O DCP lê EDID do display físico através de DDC/AUX, não do plist de substituição. O EDID corrigido afeta apenas a camada de software macOS, que não é onde a limitação é aplicada no M5 Max.

Flash EDID para monitorar EEPROM#

O que: Criou um binário EDID corrigido com limites de alcance aumentados (mantendo o tempo preferencial em 3840×2160 nativo para evitar quebra de saída de exibição), tentou atualizar para a EEPROM do monitor LG por meio do recurso “Upload EDID” do BetterDisplay.

Resultado: O flash não teve efeito. O monitor continuou servindo o EDID original. A EEPROM do LG 32UN880 pode ser somente leitura ou a gravação DDC do BetterDisplay falhou silenciosamente. Mesmo se for bem-sucedida, esta abordagem apenas alteraria os limites de alcance, e não o tempo preferido do qual o DCP deriva MaxW/MaxH.

Substituição do registro IOKit (DisplayHints)#

O que: Tentativa de modificar o DCP DisplayHints dicionário e ConnectionMapping array diretamente no registro do IOKit usando IORegistryEntrySetCFPropertyvisando valores mais altos de MaxW, MaxH e MaxActivePixelRate.

Resultado: O driver DCP rejeita explicitamente gravações de propriedades do espaço do usuário com kIOReturnUnsupported (kern_return=-536870201). Essas propriedades pertencem ao nível do kernel AppleDisplayCrossbar driver e não pode ser modificado no espaço do usuário.

Exibir nova sondagem#

O que: Usado IOServiceRequestProbe para acionar o DCP para reler as informações do display após escrever listas de substituição.

Resultado: Nenhum efeito na enumeração do modo. O DCP relê o display físico, não as substituições de software.

Limpeza de cache do WindowServer#

O que: Excluído ~/Library/Preferences/ByHost/com.apple.windowserver.displays.*.plist e tentei reiniciar o WindowServer. Também realizou uma reinicialização completa.

Resultado: killall WindowServer no macOS 26, na verdade, não reinicia o WindowServer (sem oscilação na tela, sem interrupção da sessão). A reinicialização completa com o plist de substituição instalado ainda não produziu o modo HiDPI 3840×2160. O cache não era o problema.

Reduzindo a contagem de monitores conectados#

O que: Desconectou o terceiro monitor (U13ZA) para testar se o orçamento de largura de banda do DCP nos canais de exibição era a restrição.

Resultado: Sem efeito. Com apenas 2 monitores (LG + integrados), a lista de modos permaneceu idêntica. A limitação não está relacionada ao número de monitores conectados.

HDMI vs USB-C/Thunderbolt#

O que: Considerada a mudança de USB-C/DisplayPort para HDMI.

Resultado: Não tentado; HDMI 2.0 tem menos largura de banda (14,4 Gbps vs 25,92 Gbps em DP 1.4 HBR3), então seria o mesmo ou pior.

API privada SkyLight (SLConfigureDisplayWithDisplayMode)#

O que: Usado SLConfigureDisplayWithDisplayMode da estrutura SkyLight privada para tentar aplicar diretamente um modo HiDPI de 3840×2160 (suporte de 7680×4320 pixels, escala = 2,0) à tela LG. O modo foi obtido da lista de modos CG e de outros monitores.

Resultado: Retorna o código de erro 1000 quando o modo não está na própria lista de modos do display. A API de configuração de exibição do SkyLight valida os modos na mesma lista de modos derivados do DCP que o WindowServer. Não há caminho de API privado para ignorar a validação da lista de modos.

Hipótese: onde o limite é aplicado#

O que o DCP relata (o mesmo em ambas as máquinas)#

O coprocessador de display relata parâmetros de capacidade idênticos para o display LG no M2 Max e no M5 Max. O MaxActivePixelRate, MaxW, MaxHe MaxTotalPixelRate os valores são derivados do tempo preferido do EDID físico do display e são idênticos entre gerações.

O que o WindowServer faz de diferente#

A lista do modo CG (CGSGetNumberOfDisplayModes / CGSGetDisplayModeDescriptionOfLength) no M5 Max simplesmente não inclui 3840×2160 na escala = 2,0. No M2 Max, com parâmetros DCP idênticos e listas de substituição idênticas, o modo existe.

A teoria de alocação dinâmica de framebuffer#

De acordo com o desenvolvedor Waydabber da BetterDisplay (discussão nº 4215):

“Geralmente, 3840×2160 HiDPI não está disponível em nenhum Mac da geração M4 em monitores que não sejam 8K devido à nova natureza dinâmica de como o sistema aloca recursos. Pode haver exceções, talvez – quando o sistema conclui que nenhum outro monitor pode ser conectado e ainda há recursos restantes para um framebuffer de resolução mais alta. Mas normalmente o sistema aloca o menor tamanho de framebuffer possível, antecipando a conexão de outros monitores e economizando espaço para eles.”

Isso está de acordo com nossas descobertas. O firmware M4/M5 DCP implementa um estratégia conservadora de pré-alocação de framebuffer que:

  1. Lê a resolução nativa do monitor do EDID (3840×2160)
  2. Calcula o framebuffer máximo que será alocado com base em um orçamento por canal de exibição
  3. Reserva espaço para possíveis monitores adicionais que possam ser conectados posteriormente
  4. Limita o armazenamento de suporte HiDPI a aproximadamente 1,75x a resolução nativa (6720×3780 para 3840×2160 nativo), em vez dos 2,0x necessários para HiDPI completo (7680×4320)

Onde exatamente na pilha#

A limitação reside no Geração do modo de exibição do driver GPU camada, entre a interface de hardware DCP e a enumeração de modo do WindowServer:

Physical Display (EDID/DPCD)
        |
    DCP Firmware (reads EDID, sets DisplayHints)  <-- Same on M2 and M5
        |
    GPU Driver (AppleDisplayCrossbar)             <-- DIFFERENT on M5
    [Dynamic framebuffer allocation policy]
    [Caps backing store to ~1.75x native]
        |
    WindowServer (CGS mode enumeration)           <-- Receives capped mode list
        |
    CoreGraphics (CGDisplayCopyAllDisplayModes)
        |
    Applications / System Settings

O DCP em si não é o gargalo (valores idênticos). A restrição está na política de geração de modo do driver da GPU, que é executada no espaço do kernel e não pode ser modificada no espaço do usuário. Esta política é nova no silício da geração M4/M5 e não existe no M1/M2/M3.


O que poderia resolver isso#

A Apple precisa consertar isso#

  1. Alocação de framebuffer mais inteligente: O DCP deve levar em conta as exibições conectadas reais, em vez de reservar conexões futuras hipotéticas. Se apenas um monitor externo estiver conectado, todo o orçamento do framebuffer deverá estar disponível.
  2. Substituição do usuário: forneça uma preferência de sistema ou nvram variável que permite aos usuários optar por uma alocação de framebuffer mais alta ao custo de espaço reduzido para monitores adicionais.
  3. Orçamentos por canal de exibição: permite que o usuário ou o sistema realoque o orçamento do framebuffer de pipes de exibição não utilizados para ativos.

Ações do usuário#

  1. Comentários sobre arquivos com a Apple: Consulte esta análise e a discussão nº 4215 da BetterDisplay. Quanto mais relatórios a Apple receber sobre essa regressão M4/M5, maior será a probabilidade de ela resolver o problema.
  2. Telas nativas de 5K/8K: Um painel de 5120×2880 ou 7680×4320 não atingiria essa limitação, pois o DCP alocaria um framebuffer maior nativamente.

Apêndice: Comandos de Diagnóstico e Saída#

Os comandos a seguir podem ser usados ​​para reproduzir e verificar esse problema em qualquer Mac. Todos os comandos, exceto o nº 3, funcionam sem permissões especiais.

Comandos de diagnóstico#

# 1. DCP rate limits and native caps per display
ioreg -l -w0 | grep -o '"MaxActivePixelRate"=[0-9]*\|"MaxW"=[0-9]*\|"MaxH"=[0-9]*' \
  | paste - - - | sort -u

# 2. System profiler display summary
system_profiler SPDisplaysDataType

# 3. All HiDPI modes for a display (requires Screen Recording permission)
#    Use BetterDisplay, SwitchResX, or any tool that calls
#    CGSGetNumberOfDisplayModes / CGSGetDisplayModeDescriptionOfLength.
#    Example output format shown below.

# 4. Display connection details and DisplayHints
ioreg -l -w0 | grep -B5 -A2 'MaxActivePixelRate' | grep -v EventLog

# 5. ConnectionMapping (per-pipe allocation)
ioreg -l -w0 | grep "ConnectionMapping"

M2 Max (Mac14,6) – Funcionando#

Tela: LG HDR 4K 32UN880 (3840×2160) via USB-C/Thunderbolt, macOS 26.4.

Obs: Os comandos 2, 4, 5 foram capturados sem o LG conectado. A lista de modos (comando 3) foi capturada com o LG conectado em uma sessão separada.

Comando 1 – Limites de taxa DCP:

"MaxW"=3840     "MaxActivePixelRate"=497664000  "MaxH"=2160
"MaxW"=3840     "MaxActivePixelRate"=552950718  "MaxH"=2400

Comando 2 – System Profiler (LG não conectado no momento da captura):

Graphics/Displays:

    Apple M2 Max:

      Chipset Model: Apple M2 Max
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 38
      Vendor: Apple (0x106b)
      Metal Support: Metal 4
      Displays:
        Color LCD:
          Display Type: Built-in Liquid Retina XDR Display
          Resolution: 3456 x 2234 Retina
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: No
          Connection Type: Internal

Comando 3 – Modos HiDPI (LG conectado, 5 principais):

mode: {resolution=3840x2160, scale = 2.0, freq = 60, bits/pixel = 16}
mode: {resolution=3840x2160, scale = 2.0, freq = 30, bits/pixel = 16}
mode: {resolution=3360x1890, scale = 2.0, freq = 60, bits/pixel = 16}
mode: {resolution=3360x1890, scale = 2.0, freq = 30, bits/pixel = 16}
mode: {resolution=3200x1800, scale = 2.0, freq = 60, bits/pixel = 16}

Observação: 3840×2160 na escala = 2,0 está presente como o modo HiDPI mais alto disponível.

Comando 4 – Exibir detalhes da conexão (LG não conectado no momento da captura):

Quando o LG está conectado, reporta valores idênticos ao M5 Max:

"DisplayHints" = {
    "MaxBpc"=10,
    "EDID UUID"="1E6D5077-0000-0000-0520-0104B5462878",
    "MaxTotalPixelRate"=537600000,
    "MaxW"=3840,
    "MaxActivePixelRate"=497664000,
    "Tiled"=No,
    "ProductName"="LG HDR 4K",
    "MaxH"=2160
}

Comando 5 – ConnectionMapping (LG não conectado no momento da captura):

M5 Max (Mac17,6) – Afetado#

Tela: LG HDR 4K 32UN880 (3840×2160) via USB-C/Thunderbolt, macOS 26.4.

Comando 1 – Limites de taxa DCP:

"MaxW"=3840     "MaxActivePixelRate"=497664000  "MaxH"=2160
"MaxW"=3840     "MaxActivePixelRate"=552950718  "MaxH"=2400

Idêntico ao M2 máx.

Comando 2 – Perfil do sistema:

Graphics/Displays:

    Apple M5 Max:

      Chipset Model: Apple M5 Max
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 40
      Vendor: Apple (0x106b)
      Metal Support: Metal 4
      Displays:
        LG HDR 4K:
          Resolution: 6720 x 3780
          UI Looks like: 3360 x 1890 @ 60.00Hz
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Rotation: Supported
        Color LCD:
          Display Type: Built-in Liquid Retina XDR Display
          Resolution: 3456 x 2234 Retina
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: Yes
          Connection Type: Internal
        U13ZA:
          Resolution: 3840 x 2400 (WQUXGA)
          UI Looks like: 1920 x 1200 @ 60.00Hz
          Mirror: Off
          Online: Yes
          Rotation: Supported

Nota: O armazenamento de suporte do LG é 6720×3780 (3360×1890 HiDPI). Isso é 1,75x a resolução nativa, não os 2,0x (7680×4320) necessários para 3840×2160 HiDPI.

Comando 3 – Modos HiDPI (5 principais):

mode: {resolution=3360x1890, scale = 2.0, freq = 60, bits/pixel = 16}
mode: {resolution=3360x1890, scale = 2.0, freq = 30, bits/pixel = 16}
mode: {resolution=3200x1800, scale = 2.0, freq = 60, bits/pixel = 16}
mode: {resolution=3200x1800, scale = 2.0, freq = 30, bits/pixel = 16}
mode: {resolution=3008x1692, scale = 2.0, freq = 60, bits/pixel = 16}

Observação: 3840×2160 na escala = 2,0 está ausente. O HiDPI máximo é 3360×1890.

Comando 4 – Exibir detalhes da conexão:

"DisplayHints" = {
    "MaxBpc"=10,
    "EDID UUID"="1E6D5077-0000-0000-0520-0104B5462878",
    "MaxTotalPixelRate"=537600000,
    "MaxW"=3840,
    "MaxActivePixelRate"=497664000,
    "Tiled"=No,
    "ProductName"="LG HDR 4K",
    "MaxH"=2160
}

Idêntico ao M2 máx.

Comando 5 – Mapeamento de Conexão:

"ConnectionMapping" = (
    {
        "MaxW"=3840,
        "MaxTotalPixelRate"=537600000,
        "MaxActivePixelRate"=497664000,
        "ProductName"="LG HDR 4K",
        "Address"="0.2.0",
        "PipeIDs"=(0),
        "MaxPipes"=1,
        "MaxH"=2160
    },
    {
        "MaxW"=3840,
        "MaxTotalPixelRate"=594000000,
        "MaxActivePixelRate"=552950718,
        "ProductName"="U13ZA",
        "Address"="0.0.1",
        "PipeIDs"=(1),
        "MaxPipes"=1,
        "MaxH"=2400
    }
)

Observação chave#

Os recursos relatados pelo DCP (MaxActivePixelRate, MaxW, MaxH, MaxTotalPixelRate, DisplayHints) são byte por byte idêntico entre M2 Max e M5 Max para a mesma tela. A diferença está inteiramente na política de geração de modo do driver GPU, que fica acima da camada DCP e abaixo do WindowServer.

Referências#

  • Discussão BetterDisplay nº 4215: Confirmado pelo desenvolvedor BetterDisplay como limitação do Apple Silicon da geração M4
  • Especificações do Apple M5 Max: “Suporta 8K (7680×4320) a 60 Hz sobre Thunderbolt”
  • AppleDisplayCrossbar / AppleDisplayConnectionManager: Drivers IOKit gerenciando a alocação de pipe de exibição DCP
  • Eu registrei isso com o Apple Feedback (FB22365722)

Fonte: theverge

Mais recentes

PUBLICIDADE

WP Twitter Auto Publish Powered By : XYZScripts.com