HTILE, DCC, CMASK и FMASK
HTILE, DCC, CMASK и FMASK — сжатые метаданные глубины и цвета консоли. PS5PCEM отслеживает указатели, очищает HTILE в понятных ему случаях и отказывается от раскладки, которую иначе развернул бы из тайлов неверно.
Заметки репозитория по 10 октября 2026 г.
Что означают четыре имени
HTILE — метаданные глубины. В шаблоне GFX10, который реализует PS5PCEM, одно dword покрывает область 8×8 пикселей, и эти dword упакованы в блок 32 KiB, который покрывает 1024 на 512 пикселей. DCC — дельта-сжатие цвета для цветовых целей. CMASK — маска быстрой очистки и расширения. FMASK говорит сведению мультисемплинга, какой семпл принадлежит какому пикселю.
Снимок ресурса хранит указатели метаданных и селекторы раскладки, включая бит линейного CMASK у GFX10. Этот бит важен, потому что применение уравнения тайлового адреса к линейному CMASK молча перемешало бы маску. Бэкенд отвергает неподдерживаемую раскладку вместо этого.
Очистки и глубина
Верные очистки HTILE и DCC реализованы для раскладок, которые понимает рендерер. Повторные очистки метаданных покрыты пробой vulkan-smoke htile-clears. Сброшенный экстент глубины восстанавливается только для активной поверхности на HTILE, что сохраняет G-buffer Ghost of Yōtei целым и всё же позволяет устаревшей привязке глубины интерфейса 1×1 провалить проверку размера вложения.
Односемпловые гостевые глубина и трафарет можно импортировать и записать обратно, когда PS5_GPU_DEPTH_TRANSFER=1. Привязанные плоскости трафарета становятся упакованными вложениями глубина-плюс-трафарет с гостевыми операциями сравнения и обновления. Мультисемпловая глубина использует путь MSAA. Сжатый диапазон Z и иерархический Z внутри HTILE интерпретируются не полностью.
Что всё ещё сказано явно
Оставшаяся работа, как сказано в заметках GPU, — это остальные виды слоёв, оставшиеся сжатые состояния DCC и FMASK, диапазон Z и Hi-Z у HTILE и состояния CMASK, связанные с FMASK. Неподдерживаемый импорт MSAA сохраняет очистку первого использования. Семплирование сжатой поверхности так, будто это обычные тексели, — как раз тот сбой, которого этот отказ существует, чтобы избежать.
Поддержка метаданных поэтому намеренно частичная. Указатели декодируются. Раскладки, которые проверены, соблюдаются. Раскладки, которые не проверены, отвергаются или очищаются.
Что реализовано
- Адресация HTILE pattern-21: одно dword на 8×8, в блоках 32 KiB.
- Очистки HTILE и DCC для раскладок, которые понимает рендерер.
- Обнаружение линейного CMASK, которое отказывается применять тайловое уравнение к линейной маске.
- Явно включаемые импорт и обратная запись односемпловых глубины и трафарета.
Чего ещё нет
- Полная интерпретация диапазона Z и иерархического Z у HTILE неполна.
- Сжатые состояния DCC и FMASK, а также CMASK, связанный с FMASK, остаются вне быстрого пути.
- Неподдерживаемый сжатый импорт очищается, а не семплируется как сырые тексели.
Связанные механизмы
Чему посвящены эти страницы