API 呼叫
如同往常,API 呼叫可以在事件檢視中找到。RSSetShadingRateImage(ID3D12Resource *image);
RSSetShadingRate(D3D12_SHADING_RATE baseShadingRate, _In_reads_opt(2) D3D12_SHADING_RATE_COMBINER* combiners);

GPU 狀態
有數個暫存器可供檢視,以判斷目前的 VRS 設定,如下圖所示。
| 暫存器 | 欄位 | 描述 |
|---|---|---|
| CB_COLOR0_ATTRIB3 CB_COLOR1_ATTRIB3 CB_COLOR2_ATTRIB3 CB_COLOR3_ATTRIB3 CB_COLOR4_ATTRIB3 CB_COLOR5_ATTRIB3 CB_COLOR6_ATTRIB3 CB_COLOR7_ATTRIB3 | VRS_RATE_HINT_ENABLE | 啟用將 VRS 速率提示寫出至對應轉譯目標的 CMask 表面。在 NORMAL 以外的任何 CB 作業模式中都會被忽略。在回溯相容性中會被忽略。實際啟用時,會排除使用 CMask 快速清除。 |
| VGT_DRAW_PAYLOAD_CNTL | EN_VRS_RATE | 從 GE_VRS_RATE 啟用繪製呼叫 VRS 速率。 |
| GE_VRS_RATE | RATE_X RATE_Y | 每次繪製的可變速率著色 x 或 y 速率。 |
| DB_RENDER_OVERRIDE2 | FORCE_VRS_RATE_FINE | 強制將著色速率限制為不比 1x1 更粗略。 |
| DB_HTILE_SURFACE | VRS_HTILE_ENCODING | 指定 HTile 的 VRS 速率編碼。 |
| DB_SPI_VRS_CENTER_LOCATION | CENTER_X_OFFSET_1X1 CENTER_Y_OFFSET_1X1 CENTER_X_OFFSET_2X1 CENTER_Y_OFFSET_2X1 CENTER_X_OFFSET_1X2 CENTER_Y_OFFSET_1X2 CENTER_X_OFFSET_2X2 CENTER_Y_OFFSET_2X2 | X-Offset 1x1:用於 1x1 速率轉譯,在 x 方向上距像素中心的 4 位元帶正負號位移。Y-Offset 1x1:用於 1x1 速率轉譯,在 y 方向上距像素中心的 4 位元帶正負號位移。X-Offset 2x1:用於 2x1 速率轉譯,在 x 方向上距粗略像素中心的 4 位元帶正負號位移。Y-Offset 2x1:用於 2x1 速率轉譯,在 y 方向上距粗略像素中心的 4 位元帶正負號位移。X-Offset 1x2:用於 1x2 速率轉譯,在 x 方向上距粗略像素中心的 4 位元帶正負號位移。Y-Offset 1x2:用於 1x2 速率轉譯,在 y 方向上距粗略像素中心的 4 位元帶正負號位移。X-Offset 2x2:用於 2x2 速率轉譯,在 x 方向上距像素中心的 4 位元帶正負號位移。Y-Offset 2x2:用於 2x2 速率轉譯,在 y 方向上距像素中心的 4 位元帶正負號位移。上述所有帶正負號位移的範圍都是 -8/16 到 7/16。 |
| DB_VRS_OVERRIDE_CNTL | VRS_OVERRIDE_RATE_COMBINER_MODE VRS_OVERRIDE_RATE_X VRS_OVERRIDE_RATE_Y | Override Combiner Mode:控制覆寫速率如何修改轉譯速率。0:不覆寫 1:轉譯速率 = 覆寫速率 2:轉譯速率 = min(轉譯速率, 覆寫速率) 3:轉譯速率 = max(轉譯速率, 覆寫速率) 4:轉譯速率 = saturate(轉譯速率 + 覆寫速率) Override Rate X:覆寫階段的 x 方向 VRS 著色速率。以 2 位元二補數編碼。Override Rate Y:覆寫階段的 y 方向 VRS 著色速率。以 2 位元二補數編碼。 |
| PA_CL_VS_OUT_CNTL | USE_VTX_VRS_RATE | 使用頂點著色器階段輸出的 VRS 速率 (位於 VS_OUT_MISC_VEC 的 z 通道)。 |
| PA_CL_VRS_CNTL | VERTEX_RATE_COMBINER_MODE PRIMITIVE_RATE_COMBINER_MODE HTILE_RATE_COMBINER_MODE SAMPLE_ITER_COMBINER_MODE EXPOSE_VRS_PIXELS_MASK CMASK_RATE_HINT_FORCE_ZERO | Vertex Rate Combiner Mode:控制如何從以狀態為基礎的 VRS 速率與匯出的頂點速率計算頂點 VRS 速率。Primitive Rate Combiner Mode:控制如何從匯出的基本型別 VRS 速率與頂點速率計算基本型別 VRS 速率。HTile Rate Combiner Mode:控制如何從基本型別的 VRS 速率與 HTile 中編碼的 VRS 速率計算每個圖格的 VRS 速率。Sampler Iter Combiner Mode:控制如何將圖格的 VRS 速率與 PS_ITER_SAMPLES 狀態中提供的值合併,以形成用於轉譯的速率。Expose VRS Pixels Mask:控制如何產生粗略像素的著色器輸入遮罩。CMask Rate Hint Force Zero:將轉譯至 CMask 之圖格的 VRS 速率歸零。 |
| GL2C_CM_CTRL2 | VRS_DISABLE | 設為 1 時,停用 DCC 中的 VRS 功能。 |
VRS 資源
若要檢視每個頂點的 VRS 速率,請在資源清單中選取 VS Output,如下圖所示。使用著色速率影像時,可在 OM 階段中檢視。
