본문으로 건너뛰기
PS5PCEM
부분그래픽

HTILE, DCC, CMASK, FMASK

HTILE, DCC, CMASK, FMASK는 콘솔의 압축 깊이·컬러 메타데이터입니다. PS5PCEM은 포인터를 추적하고, 이해하는 경우에 HTILE을 지우며, 잘못 디타일하게 될 레이아웃은 거부합니다.

2026년 10월 10일까지의 저장소 노트

네 이름의 의미

HTILE은 깊이 메타데이터입니다. PS5PCEM이 구현한 GFX10 패턴에서는 dword 하나가 8×8 픽셀 영역을 다루고, 이 dword들이 1024×512 픽셀을 다루는 32 KiB 블록에 패킹됩니다. DCC는 컬러 타깃의 델타 컬러 압축입니다. CMASK는 빠른 지우기·확장 마스크입니다. FMASK는 멀티샘플 리졸브에 어떤 샘플이 어떤 픽셀에 속하는지 알려 줍니다.

리소스 스냅샷은 GFX10 선형 CMASK 비트를 포함해 메타데이터 포인터와 레이아웃 선택자를 유지합니다. 선형 CMASK에 타일 주소 방정식을 적용하면 마스크가 조용히 뒤섞이기 때문에 이 비트가 중요합니다. 백엔드는 그 대신 지원되지 않는 레이아웃을 거부합니다.

지우기와 깊이

렌더러가 이해하는 레이아웃에 대해서는 올바른 HTILE·DCC 지우기가 구현되어 있습니다. 반복되는 메타데이터 지우기는 vulkan-smoke htile-clears 프로브가 다룹니다. 초기화된 깊이 범위는 활성 HTILE 기반 표면에서만 복구하므로, Ghost of Yōtei의 G-버퍼는 온전히 유지되고 오래된 1×1 UI 깊이 바인딩은 여전히 어태치먼트 크기 검사에서 실패합니다.

PS5_GPU_DEPTH_TRANSFER=1이면 단일 샘플 게스트 깊이와 스텐실을 가져오고 다시 쓸 수 있습니다. 바인딩된 스텐실 평면은 게스트 비교·업데이트 연산을 갖춘 패킹 깊이+스텐실 어태치먼트가 됩니다. 멀티샘플 깊이는 MSAA 경로를 사용합니다. HTILE 안의 압축 Z 범위와 계층적 Z는 완전히 해석하지 않습니다.

아직 명시적으로 남은 것

GPU 노트에 적힌 남은 작업은 나머지 레이어 뷰, 남은 압축 DCC·FMASK 상태, HTILE Z 범위와 Hi-Z, 그리고 FMASK와 결합된 CMASK 상태입니다. 지원되지 않는 MSAA 가져오기는 첫 사용 지우기를 유지합니다. 압축 표면을 일반 텍셀처럼 샘플링하는 것이 이 거부가 막으려는 실패입니다.

따라서 메타데이터 지원은 의도적으로 부분적입니다. 포인터는 디코딩합니다. 검증된 레이아웃은 존중합니다. 검증되지 않은 레이아웃은 거부하거나 지웁니다.

구현된 것

  • 32 KiB 블록 안에서 8×8마다 dword 하나인 HTILE 패턴 21 주소 지정.
  • 렌더러가 이해하는 레이아웃에 대한 HTILE·DCC 지우기.
  • 선형 마스크에 타일 방정식을 쓰지 않도록 하는 선형 CMASK 감지.
  • 선택형 단일 샘플 깊이·스텐실 가져오기와 다시 쓰기.

아직 빠진 것

  • HTILE Z 범위와 계층적 Z의 완전한 해석은 불완전합니다.
  • 압축 DCC·FMASK 상태와 FMASK와 결합된 CMASK는 빠른 경로 밖에 있습니다.
  • 지원되지 않는 압축 가져오기는 원시 텍셀로 샘플링하지 않고 지웁니다.

관련 메커니즘

이 페이지들에 대하여

본문은 PS5PCEM 저장소의 아키텍처 노트와 2026년 10월 보고서를 따릅니다. 특정 테스트를 통과했다고 해서 새로운 프레임 속도나 새로운 완주를 뜻하지는 않습니다.

모든 기술