跳到正文
PS5PCEM
部分可用图形

HTILE、DCC、CMASK 与 FMASK

HTILE、DCC、CMASK 和 FMASK 是游戏机的压缩深度与颜色元数据。PS5PCEM 跟踪这些指针,在它理解的情形下清除 HTILE,并拒绝一种否则会被错误解块的布局。

仓库笔记截至 2026年10月10日

这四个名字是什么

HTILE 是深度元数据。在 PS5PCEM 所实现的 GFX10 模式上,一个 dword 覆盖 8×8 像素区域,这些 dword 被装进一块 32 KiB 的块,覆盖 1024 乘 512 像素。DCC 是颜色目标的增量颜色压缩。CMASK 是快速清除和展开掩码。FMASK 告诉多重采样解析哪个采样属于哪个像素。

资源快照保存元数据指针和布局选择器,包括 GFX10 的线性 CMASK 位。这个位重要,是因为把瓦片地址方程用到线性 CMASK 上会静默打乱掩码。后端改为拒绝不受支持的布局。

清除与深度

渲染器所理解的布局已经实现正确的 HTILE 和 DCC 清除。重复的元数据清除由 vulkan-smoke htile-clears 探测覆盖。重置后的深度范围只对活动的、由 HTILE 支撑的表面恢复,这既保持 Ghost of Yōtei 的 G-buffer 完好,也仍然让过期的 1×1 界面深度绑定通不过附件尺寸检查。

当 PS5_GPU_DEPTH_TRANSFER=1 时,单采样的客户机深度和模板可以导入并回写。绑定的模板平面变成打包的深度加模板附件,并带上客户机的比较和更新操作。多重采样深度使用 MSAA 路径。HTILE 内部的压缩 Z 范围和分层 Z 没有被完整解释。

仍然写明的部分

GPU 笔记中写明的剩余工作,是其余的层视图、剩余的压缩 DCC 和 FMASK 状态、HTILE 的 Z 范围和 Hi-Z,以及与 FMASK 耦合的 CMASK 状态。不受支持的 MSAA 导入保持首次使用清除。把压缩表面当成普通纹素来采样,正是这次拒绝要避免的失败。

因此元数据支持是有意做成部分的。指针会被解码。已经验证的布局会被遵守。尚未验证的布局会被拒绝或清除。

已经实现的部分

  • HTILE pattern-21 寻址,每 8×8 一个 dword,装在 32 KiB 的块里。
  • 渲染器所理解的布局上的 HTILE 和 DCC 清除。
  • 线性 CMASK 检测,拒绝把瓦片方程用到线性掩码上。
  • 需要显式启用的单采样深度与模板导入和回写。

尚未实现的部分

  • 完整的 HTILE Z 范围和分层 Z 解释并不完整。
  • 压缩的 DCC 和 FMASK 状态,以及与 FMASK 耦合的 CMASK,仍在快速路径之外。
  • 不受支持的压缩导入会被清除,而不是当作原始纹素来采样。

相关机制

这些页面说明什么

文字依据 PS5PCEM 仓库中的架构说明和 2026 年 10 月的报告。单项测试通过并不等于新的帧率,也不等于新的通关。

全部技术