HTILE, DCC, CMASK y FMASK
HTILE, DCC, CMASK y FMASK son los metadatos comprimidos de profundidad y de color de la consola. PS5PCEM sigue los punteros, limpia HTILE en los casos que entiende y rechaza un layout que, de otro modo, desentramaría de forma incorrecta.
Notas del repositorio hasta el 10 de octubre de 2026
Qué son los cuatro nombres
HTILE son metadatos de profundidad. En el patrón GFX10 que implementa PS5PCEM, un dword cubre una región de 8×8 píxeles, y esos dwords se empaquetan en un bloque de 32 KiB que cubre 1024 por 512 píxeles. DCC es la compresión delta de color para destinos de color. CMASK es una máscara de limpieza rápida y de expansión. FMASK dice a una resolución multimuestra qué muestra pertenece a qué píxel.
La instantánea del recurso conserva los punteros de metadatos y los selectores de layout, incluido el bit linear-CMASK de GFX10. Ese bit importa porque aplicar una ecuación de dirección entramada a un CMASK lineal revolvería la máscara en silencio. El backend rechaza el layout no admitido en su lugar.
Limpiezas y profundidad
Las limpiezas correctas de HTILE y de DCC están implementadas para los layouts que entiende el renderizador. Las limpiezas repetidas de metadatos las cubre la sonda vulkan-smoke htile-clears. Una extensión de profundidad reiniciada solo se recupera para una superficie activa respaldada por HTILE, lo que mantiene intacto el G-buffer de Ghost of Yōtei y aun así deja que un enlace de profundidad de interfaz 1×1 obsoleto falle la comprobación de tamaño del attachment.
La profundidad y el stencil del invitado de una sola muestra pueden importarse y escribirse de vuelta cuando PS5_GPU_DEPTH_TRANSFER=1. Los planos de stencil enlazados se convierten en attachments empaquetados de profundidad más stencil con las operaciones de comparación y de actualización del invitado. La profundidad multimuestra usa la ruta MSAA. El Z-range comprimido y la Z jerárquica dentro de HTILE no se interpretan por completo.
Qué sigue siendo explícito
El trabajo que queda, dicho en las notas de la GPU, es el resto de las vistas de capa, los estados comprimidos de DCC y de FMASK que faltan, el Z-range y el Hi-Z de HTILE, y los estados de CMASK acoplados a FMASK. Una importación MSAA no admitida conserva una limpieza de primer uso. Muestrear la superficie comprimida como si fueran texels lisos es el fallo que este rechazo existe para evitar.
El soporte de metadatos es, por tanto, parcial a propósito. Los punteros se descodifican. Los layouts que se han validado se respetan. Los layouts que no se han validado se rechazan o se limpian.
Qué está implementado
- Direccionamiento HTILE pattern-21, un dword por 8×8, en bloques de 32 KiB.
- Limpiezas de HTILE y de DCC para los layouts que entiende el renderizador.
- Detección de linear-CMASK que rechaza una ecuación entramada sobre una máscara lineal.
- Importación y escritura de vuelta de profundidad y stencil de una sola muestra, de activación explícita.
Qué falta todavía
- La interpretación completa del Z-range de HTILE y de la Z jerárquica está incompleta.
- Los estados comprimidos de DCC y de FMASK, y el CMASK acoplado a FMASK, siguen fuera de la ruta rápida.
- Una importación comprimida no admitida se limpia en lugar de muestrearse como texels en crudo.
Mecanismos relacionados
Qué describen estas páginas