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