Ir para o conteúdo
PS5PCEM
ParcialGráficos

HTILE, DCC, CMASK e FMASK

HTILE, DCC, CMASK e FMASK são os metadados comprimidos de profundidade e de cor do console. O PS5PCEM rastreia os ponteiros, limpa o HTILE nos casos que entende e recusa um layout que, de outro modo, faria detile de forma incorreta.

Notas do repositório até 10 de outubro de 2026

O que são os quatro nomes

HTILE é metadado de profundidade. No padrão GFX10 que o PS5PCEM implementa, um dword cobre uma região de 8×8 pixels, e esses dwords são empacotados num bloco de 32 KiB que cobre 1024 por 512 pixels. DCC é a compressão delta de cor para alvos de cor. CMASK é uma máscara de limpeza rápida e de expansão. FMASK diz a um resolve de múltiplas amostras qual amostra pertence a qual pixel.

O instantâneo do recurso guarda os ponteiros de metadados e os seletores de layout, inclusive o bit de CMASK linear do GFX10. Esse bit importa porque aplicar uma equação de endereço em tiles a um CMASK linear embaralharia a máscara em silêncio. O backend rejeita o layout sem suporte, em vez disso.

Limpezas e profundidade

Limpezas corretas de HTILE e de DCC estão implementadas para os layouts que o renderizador entende. Limpezas repetidas de metadados são cobertas pela sonda htile-clears do vulkan-smoke. Uma extensão de profundidade reiniciada só é recuperada para uma superfície ativa apoiada em HTILE, o que mantém intacto o G-buffer de Ghost of Yōtei e ainda faz uma ligação antiga de profundidade de interface 1×1 falhar na verificação de tamanho do attachment.

Profundidade e stencil do convidado, de uma amostra, podem ser importados e escritos de volta quando PS5_GPU_DEPTH_TRANSFER=1. Planos de stencil vinculados viram attachments empacotados de profundidade mais stencil, com as operações de comparação e de atualização do convidado. A profundidade de múltiplas amostras usa o caminho de MSAA. A faixa de Z comprimida e o Z hierárquico dentro do HTILE não são interpretados por completo.

O que ainda é explícito

O trabalho que resta, declarado nas notas de GPU, é o restante das visões de camada, os estados comprimidos que restam de DCC e de FMASK, a faixa de Z e o Hi-Z do HTILE, e os estados de CMASK acoplados a FMASK. Uma importação MSAA sem suporte mantém uma limpeza de primeiro uso. Amostrar a superfície comprimida como se fossem texels simples é a falha que esta recusa existe para evitar.

O suporte a metadados é, portanto, parcial de propósito. Os ponteiros são decodificados. Os layouts que foram validados são respeitados. Os layouts que não foram validados são rejeitados ou limpos.

O que está implementado

  • Endereçamento pattern-21 do HTILE, um dword por 8×8, em blocos de 32 KiB.
  • Limpezas de HTILE e de DCC para os layouts que o renderizador entende.
  • Detecção de CMASK linear que recusa uma equação em tiles sobre uma máscara linear.
  • Importação e escrita de volta, sob adesão explícita, de profundidade e stencil de uma amostra.

O que ainda falta

  • A interpretação completa da faixa de Z do HTILE e do Z hierárquico está incompleta.
  • Estados comprimidos de DCC e de FMASK, e o CMASK acoplado a FMASK, permanecem fora do caminho rápido.
  • Uma importação comprimida sem suporte é limpa, em vez de ser amostrada como texels brutos.

Mecanismos relacionados

O que estas páginas descrevem

O texto segue as notas de arquitetura e os relatórios de outubro de 2026 no repositório do PS5PCEM. Um teste pontual que passa não é uma nova taxa de quadros nem uma nova conclusão de jogo.

Todas as tecnologias