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#
| Propriedade | M5 Máx. (afetado) | M2 Máx. (funcionando) |
|---|---|---|
| Chip | Apple M5 Máx. | Apple M2 Máx. |
| ID do modelo | Mac17,6 | Mac14.6 |
| Núcleos de GPU | 40 | 38 |
| macOS | 26,4 (25E246) | 26,4 (25E246) |
| Mostrar | LG HDR 4K 32UN880 | LG HDR 4K 32UN880 |
| Resolução nativa | 3840×2160 | 3840×2160 |
| Conexão | USB-C/Thunderbolt, HBR3 (8,1 Gbps), 4 pistas | USB-C/Thunderbolt, HBR3 (8,1 Gbps), 4 pistas |
| Modo HiDPI máximo | 3360×1890 | 3840×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:
- Lê a resolução nativa do monitor do EDID (3840×2160)
- Calcula o framebuffer máximo que será alocado com base em um orçamento por canal de exibição
- Reserva espaço para possíveis monitores adicionais que possam ser conectados posteriormente
- 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#
- 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.
- Substituição do usuário: forneça uma preferência de sistema ou
nvramvariável que permite aos usuários optar por uma alocação de framebuffer mais alta ao custo de espaço reduzido para monitores adicionais. - 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#
- 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.
- 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

