顯示卡開 Reflex/Anti-Lag 點解有時快咗、有時冇分別?渲染隊列、CPU/GPU 同步、低延遲模式對照同開關測試指南

| HK GPU Fix

重點摘要

低延遲模式收窄渲染隊列,令畫面反映較新的輸入,但改善不了網絡延遲與處理器樽頸。本篇講解原理與開關對照方法。

低延遲講的到底是什麼

玩家講手感好或者反應快,很多時講的並不是幀率,而是系統延遲:由輸入裝置發出一個動作,到畫面上的像素因此改變,中間經過的時間。這個時間不是由單一零件決定,而是一條鏈:輸入裝置回報動作,遊戲邏輯與處理器準備下一幀的內容,顯示卡把這一幀畫出來,顯示器再把成品顯示出來。鏈上任何一環慢了,整體感覺都會慢,而去修另一環並不會令慢的那一環變快。

低延遲模式的作用範圍必須先講清楚:它處理的是處理器與顯示卡之間交接畫面的協調方式。它不會令網絡連線變快,不會令處理器運算變快,也不會改變顯示器本身的顯示特性。一個玩家開了低延遲模式卻感覺不到分別,未必是開錯了,更可能的原因是他感覺到的延遲根本不在這個模式能夠處理的一環。先分清楚延遲來自哪裡,比急著開關設定重要得多。

另外要分開延遲與幀率這兩個概念。幀率計算的是每秒出現多少幀,延遲量度的是某一幀所包含的資訊有多舊。一隻遊戲可以幀率高但感覺拖沓,因為每一幀反映的都是較早之前的輸入;反過來,幀率中等的遊戲如果每一幀都夠新鮮,操作起來也可以很跟手。低延遲模式針對的是資訊的新鮮程度,而不是幀的數量。開了之後幀率大致不變,屬於正常現象,並不是模式失效的證據。

渲染隊列:理解一切的起點

要理解低延遲技術,先要理解渲染隊列。在傳統的渲染流程裡,處理器可以跑在顯示卡前面:顯示卡忙著畫一幀的時候,處理器已經在準備下一幀,甚至再下一幀,把完成的工作排進隊列,等顯示卡逐一取用。隊列的好處很實在:顯示卡畫完一幀之後立即有新工作,不會因為等處理器而閒置,整體使用率保持得較高,細微的時間差也被隊列撫平了。

隊列的代價同樣實在:排在隊列裡的一幀,是根據處理器準備它那一刻的輸入來建構的。等到顯示卡真正畫它時,玩家可能已經把滑鼠再移了一段距離,遊戲世界也已經向前走了。隊列越深,正在畫的那一幀所反映的輸入就越舊。在節奏快的遊戲裡,這種陳舊感會表現為準星好像總是跟不上手的感覺,明明手已經停了,畫面上的準星還要多走一小段才停下來。

隊列最容易積起來的情況,是顯示卡成為較慢的一方,也就是所謂顯示卡受限的狀態:處理器完成畫面的速度快過顯示卡畫畫的速度,完成的幀於是越排越多。相反,如果處理器才是較慢的一方,顯示卡多數時間是在等工作而不是在排隊,隊列就不是延遲的主要來源。這就解釋了為什麼同一個開關在不同系統上效果差別可以很大:它只在隊列確實構成問題時才有明顯作用。

隊列還有一個較隱蔽的作用,就是掩蓋偶然的卡頓。如果處理器偶爾需要較長時間準備一幀,隊列裡預先準備好的工作可以讓顯示卡繼續畫下去,不至於立刻斷流。把隊列收窄,等於放棄了一部分這種緩衝,換取更為新鮮的畫面。對大多數遊戲而言,這個交換是值得的,但它始終是一個取捨,而不是免費的改善,這也是為什麼開關對照比盲目相信設定更重要。

NVIDIA Reflex:由遊戲內部協調的路線

NVIDIA Reflex 走的是引擎整合路線。要讓 Reflex 生效,遊戲本身必須內置對 Reflex 的支援。驅動程式與遊戲引擎會互相配合:處理器不再自由地跑在前面,而是配合顯示卡的進度,在顯示卡差不多完成上一幀時才開始下一幀的工作。隊列因此保持得很淺,而輸入可以在建構一幀之前的最後一刻才取樣,畫面反映的輸入自然更新鮮。

由於協調發生在遊戲內部,Reflex 可以掌握一般驅動層做不到的時機資訊:遊戲知道何時取樣輸入最有價值、何時開始渲染、每個階段大概需要多久。這種由內而外的精準,正是引擎整合路線的優勢,同時也是它的限制:一隻沒有整合 Reflex 的遊戲,根本不會出現 Reflex 選項,驅動層的任何開關都變不出一個遊戲內沒有的功能。

支援 Reflex 的遊戲一般提供三個檔位:關閉、開啟,以及開啟加 Boost。關閉即維持傳統的隊列行為。開啟即啟用上述的淺隊列協調。開啟加 Boost 則多做一件事:在處理器成為限制因素、顯示卡本來會因為等工作而降低時脈的場合,Boost 會令顯示卡保持較高的時脈,讓工作一到就能立即處理。代價是功耗會稍高,因為顯示卡被保持在隨時待命的狀態,而不是任由它閒置降速。必須講清楚的是,Boost 並不會令處理器變快,它只是消除顯示卡閒置所帶來的額外等待。

一個常見的誤解是把 Reflex 當成提升幀率的功能。它不是。Reflex 不會令顯示卡畫出更多幀,也不會令畫畫的速度變快。如果開關前後幀率大致相同,那正是預期之中的結果。應該留意的變化是手感:準星是否更貼近手的移動,點擊與畫面上出現反應之間的間隔是否縮短了。只看幀率計來判斷 Reflex 有沒有生效,是用錯了量度標準。

AMD Anti-Lag:三代技術,切勿混為一談

AMD 的低延遲故事比較難跟,因為 Anti-Lag 這個名字在不同年份指涉過三種相當不同的做法。把三者當成同一個功能,是玩家困惑的主要來源,所以必須逐代分開講。

原版 Anti-Lag 由 2019 年起出現,走的是驅動層路線。驅動程式會節制處理器,不讓它跑得比顯示卡太遠,從而令隊列保持淺窄,而不需要遊戲本身配合。由於不需要遊戲整合,理論上任何遊戲都可以開。代價是精準度:驅動程式看不見遊戲引擎內部的時機,只能從外部節制,所以效果會因遊戲與圖形介面而異。特別是在新一代圖形介面之下,遊戲本身對提交時機的控制權較大,驅動層可以介入的空間較小,效果也就較為有限。

Anti-Lag+ 在 2023 年出現,走了相反的路線:它由遊戲程序內部對齊畫面,效果較強,但做法是向遊戲程序注入程式碼。競技遊戲的反作弊系統無法分辨這種注入與作弊修改,結果有玩家帳號被標記。事件之後,AMD 在驅動程式中全面停用了 Anti-Lag+。今日的驅動程式裡不應再期望找到這個選項,任何仍然教人開啟它的指南都已經過時。

Anti-Lag 2 由 2024 年起出現,回到引擎整合路線,原理上與 Reflex 同屬一個家族。遊戲開發者需要在遊戲裡整合相應的開發工具,遊戲與驅動程式再由引擎內部協調畫面時機。由於不再使用注入做法,反作弊方面的問題不再適用。限制在於覆蓋範圍:一隻遊戲有沒有 Anti-Lag 2,取決於開發者有沒有整合,驅動層開了什麼都不會令一隻沒有整合的遊戲突然獲得這個功能。判斷的準則應該是遊戲內的選單,而不是驅動面板上的開關。

實際的後果很簡單,卻很容易弄錯:驅動面板上的 Anti-Lag 字樣,與遊戲內的 Anti-Lag 2 字樣,指涉的是不同層次的機制、不同的精準度與不同的遊戲覆蓋範圍。拿驅動層的結果去跟引擎整合的結果比較,並不是在比較兩個對等的東西,由此得出的優劣結論也會誤導。

三種做法對照表

下表只整理機制上的分別,不作排名。玩家能夠用哪一種技術,取決於自己的顯示卡與所玩的遊戲支援什麼,而不是由一張通用優勝榜決定。

技術整合層次是否需要遊戲支援縮短延遲的方式主要限制
NVIDIA Reflex 開啟引擎整合需要,遊戲必須內置支援處理器配合顯示卡完成進度來準備畫面,隊列保持淺窄沒有整合的遊戲無法使用
NVIDIA Reflex 開啟加 Boost引擎整合加時脈管理需要,遊戲必須內置支援同上,另在處理器受限時保持顯示卡時脈功耗稍高,不會令處理器本身變快
AMD 原版 Anti-Lag驅動層不需要,多數遊戲都可開驅動節制處理器,避免跑得太前效果因遊戲與介面而異,新介面下較有限
AMD Anti-Lag+程序內注入曾按遊戲而定,現已停用由遊戲程序內部對齊畫面因反作弊衝突而全面停用,不應再尋找或使用
AMD Anti-Lag 2引擎整合需要,開發者必須整合遊戲與驅動由引擎內部協調時機覆蓋按遊戲而定,驅動開關本身不會啟用它

延遲來源對照表

下表協助判斷感覺到的延遲是否屬於低延遲模式能夠處理的範圍。很多時候,開關無感的原因不是設定有問題,而是延遲的來源根本不在隊列。

延遲來源低延遲模式有沒有幫助真正對應的處理方向
顯示卡受限時隊列過深有,這正是主要目標按遊戲支援情況使用引擎整合或驅動層模式
處理器受限,隊列本身已經很淺很少或沒有處理處理器樽頸本身,Boost 只消除顯示卡閒置等待
網絡延遲沒有網絡路徑、伺服器選擇與連線質素,本地設定無法縮短網絡來回時間
顯示器本身的輸入延遲或更新率上限沒有顯示器選擇與設定,低延遲模式無法令顯示器超越自身特性顯示畫面
垂直同步等待不直接垂直同步設定與幀率上限的取捨,須同時考慮撕裂問題
幀生成帶來的延遲只有一部分幀生成是另一個獨立功能,有自己的延遲代價,詳見第 175 篇

低延遲模式與其他設定的互動

低延遲模式並不是孤立存在的。旁邊幾個設定同樣會改變同一條時間鏈,疊加使用而不理解互動關係,是令結果比原來更差的常見原因。

垂直同步是第一個互動對象。垂直同步要求顯示卡等到顯示器的更新時刻才顯示已完成的畫面,消除撕裂的同時增加了一層等待。低延遲模式並不會抵消這層等待:它收窄的是渲染之前的隊列,而垂直同步增加的是渲染之後的等待,兩者疊加而不是互相抵消。兩者同時開啟時,感覺應該會比單開垂直同步好,但不會比單開低延遲模式而不開垂直同步來得直接。關於撕裂與卡頓的完整討論,請見第 155 篇,本篇不重寫該部分。

可變更新率則是另一回事。具備可變更新率的顯示器會配合畫面送達的時刻調整更新時刻,在不使用固定等待的情況下消除撕裂。低延遲模式一般可以與可變更新率並存,因為兩者作用於鏈的不同環節:一個處理隊列深度,一個處理顯示時機。但兩者並不是同一回事,開了一個並不等於同時獲得另一個的好處。想要低延遲又想要無撕裂的玩家,通常需要兩者並用,並且親自對照組合的效果,而不是假設其中一個已經涵蓋了另一個。

幀率上限是第三個互動對象,也是最常被處理錯的一個。上限如果設得非常貼近顯示器上限,或者高於顯示卡能夠穩定維持的水平,隊列與等待的行為都會隨之改變,足以掩蓋或誇大低延遲模式本身的效果。對照期間,上限必須固定不變。如果想測試的正是上限本身,那就應該單獨測試上限,不要與低延遲開關混在一起。

幀生成值得單獨警告。生成的畫面插在渲染出來的畫面之間,令動態看起來更順滑,但同時增加了感覺到的延遲,因為顯示出來的序列依賴了需要額外時間才能產生的工作。低延遲模式可以令底層渲染出來的畫面保持新鮮,從而減輕其中一部分延遲,但無法消除生成步驟本身。任何聲稱開了 Reflex 就能完全抵消幀生成延遲的說法,都誇大了這個模式的能力。幀生成的完整討論請見第 175 篇,本篇不重寫該部分。

貫穿所有互動的通用規則只有一句:一次只改一個變量。改低延遲設定就只改它,改上限就只改上限。一次改三樣再把結果歸功於其中一樣,是各種錯誤結論的來源。

診斷:先找出延遲住在哪一環

在動任何低延遲設定之前,值得花幾分鐘定位延遲。以下步驟是診斷方向,不是保證見效的處方,每一步都會收窄可能性。

第一步,分開網絡延遲與本地延遲。如果遊戲有顯示網絡延遲的數字,先記下來。如果遲鈍感只在線上對戰出現,回到離線練習或單人模式就消失,主因很可能在網絡方面,本地低延遲模式幫不上忙。如果離線時同樣感覺遲鈍,原因在本地,後面的診斷才適用。

第二步,判斷在感覺遲鈍的場景裡,系統是顯示卡受限還是處理器受限。實際做法是:在同一個場景裡降低解像度或調低較耗費的畫質選項。如果幀率明顯上升,顯示卡就是限制因素,隊列很可能參與了延遲。如果降低負載後幀率幾乎不動,處理器或其他樽頸才是限制因素,隊列多半不是主因。這個對照必須在可以重複的場景裡做,在混亂的對局中途做,數字不具可比性。

第三步,查看遊戲本身提供什麼。打開遊戲的圖像或玩法設定,找找有沒有以名稱列出的低延遲選項。如果遊戲內有 Reflex 或 Anti-Lag 2,引擎整合路線就是可用的。如果兩者都沒有,只剩下驅動層路線,效果預期應該較為溫和與多變。不要假設驅動開關已經啟用了引擎功能,遊戲內選單才是準則。

第四步,留意顯示器的角色。更新率上限較低或本身輸入延遲較高的顯示器,會為整體延遲定下一個下限,任何顯示卡設定都無法低過這個下限。如果顯示器就是最慢的一環,設定調整帶來的改善本來就有限,期望應該相應調整。這不是顯示卡或模式的故障,而是鏈上最慢一環的特性。

完成這四步之後,才值得做開關對照。否則對照量度到的是所有因素加起來的結果,無法證明任何一個設定有效還是無效。

開關對照:一個做得到的公平方法

公平的對照不需要實驗室設備,需要的是紀律:同一隻遊戲、同一個場景、同一組設定,只有低延遲開關在兩次之間改變。

先選一個可以重複的場景。訓練場、固定路線的計時路段,或者地圖上一段可以每次走相同路線的安靜區域,都比自由對戰適合。自由對戰每場都不一樣,對手的差異很容易蓋過設定的差異,不適合作為對照場景。

再固定所有設定。解像度、畫質、垂直同步狀態、可變更新率狀態、幀率上限,在兩次對照裡必須完全相同。有需要的話可以寫下來。只要有任何其他項目在兩次之間改變,對照就失效,誠實的做法是重做,而不是硬要解讀結果。

每種條件都跑多於一次。人的感覺會受疲勞、注意力與熱身狀態影響,兩三段短對照交替進行,比每種條件各跑一次長對照更可信。每次記錄兩件事:主觀的跟手程度,例如準星是否感覺貼近手的移動;以及幀率是否大致維持不變。記住幀率不變屬於預期之內,幀率出現變化反而提示有其他東西同時改變了。

對無分別的結果要誠實。如果經過認真的對照後,兩種條件感覺不出分別,這本身就是一個結論,而不是失敗。最可能的解釋是,在該場景裡隊列並不是主要的延遲來源,或者場景本身已經在高幀率與淺隊列下運行。正確的反應不是把更多低延遲設定全部開起來,寄望數量最終會產生感覺。作用於同一條鏈的設定疊加起來可能互相干擾,而已經完成的對照才是最有價值的答案:這個設定在這隻遊戲、在這個系統上,感覺不到分別。

關於量度工具還有一點提醒。部分遊戲會顯示內置的延遲數字,部分硬件工具可以量度由點擊到像素變化的間隔。這些數字在同一套設備內作為相對指標是有用的,但由不同工具、不同遊戲或不同條件得出的數字不應直接比較。沒有交代方法的數字不是證據,而廠方或第三方在特定遊戲與特定顯示卡、特定條件下報稱的數字,也只應理解為關於那些條件的聲稱,而不是對任何其他系統的承諾。

邊界情況:模式無作用或應該關掉的時候

有幾種情況特別容易得出無分別的結果,或者根本不適合開啟模式,認清它們可以省去大量無謂的嘗試。

如果遊戲不支援引擎整合模式,遊戲內就沒有相關選項。驅動層選項可能仍然存在,但效果就是前面講過的溫和而多變,在某些介面下甚至幾乎感覺不到。這是遊戲整合程度的特性,不是需要繞過的缺陷。特別要提醒的是,任何修改遊戲檔案或注入程式碼來強行加入低延遲功能的做法都不應使用,尤其是在設有反作弊系統的遊戲裡。Anti-Lag+ 的事件就是警示:會改動遊戲程序的做法,在自動化系統眼中可能與作弊無異,後果由玩家帳號承擔。

如果遊戲已經在高幀率與輕負載下運行,隊列本身已經很淺,剩餘的延遲也很小,任何收窄隊列的模式能夠改善的空間本來就有限。在這種情況下感覺不到分別是正常的,不代表設定壞了。

如果系統嚴重地受處理器限制,Boost 檔位可以令顯示卡時脈保持待命,但無法令處理器更快完成遊戲邏輯。受單核遊戲邏輯或處理器負載嚴重限制的場景,開關之後仍然會受限制。樽頸的討論屬於處理器與遊戲效能的範疇,不應假裝低延遲模式可以代為解決,否則只會拖延真正的處理方向。

舊顯示卡、舊驅動程式與舊遊戲帶來最後一個變數:支援與否取決於遊戲選單與驅動介面當下顯示的內容,而不是憑記憶引用的舊文章。驅動與遊戲更新之後,支援情況會隨時間改變。玩家應該相信自己系統今日可見的選項,對於任何沒有註明日期卻列出完整支援清單的指南,都應該抱持懷疑。

常見誤區糾正

坊間關於低延遲模式的說法有幾個反覆出現的錯誤,每一個都會導致具體的錯誤操作。

第一個誤區是開了 Reflex 或 Anti-Lag 就會提升幀率。不會。目標是延遲,不是幀數。盯著幀率計等它上升的玩家,會錯誤地斷定模式壞了,然後為了追求一個本來不存在的上升而亂改其他設定。

第二個誤區是驅動開了 Anti-Lag 就等於 Anti-Lag 2。不是。驅動層的原版與引擎整合的第二代,在整合方式、精準度與遊戲覆蓋上都不同,一個的結果不能搬到另一個身上。

第三個誤區是延遲高就一定是顯示卡問題。未必。網絡、處理器、顯示器與遊戲設定都是常見的成因,前面的診斷步驟正是為了避免怪錯零件。

第四個誤區是開越多低延遲設定就越好。作用於同一條鏈的設定疊加起來可能互相干擾,而且每多改一項,對照就難解讀一分。一個經過妥善對照的模式,勝過三個憑希望開啟的模式。

第五個誤區是只有競技玩家才需要理會延遲。這個說法過於簡化。單機與劇情遊戲的反應速度要求較低,對延遲的容忍度較高,但操作反應遲鈍仍然會影響體驗。分別在於優先次序,而不是有沒有關係:競技玩家應該先處理延遲,劇情玩家可以合理地先顧畫質,但沒有人應該被告知延遲完全不重要。

應該長期開著,還是關掉

綜合以上討論,可以得出一個合理的預設方向。如果遊戲提供引擎整合選項,而系統在該遊戲裡屬於顯示卡受限,開啟是合理的;在出現處理器受限的時刻而又能接受稍高功耗時,開啟加 Boost 也是合理的。如果遊戲只提供驅動層選項,開啟來試試並無不妥,但期望應該放得溫和,並且要誠實地做對照。如果經過認真的對照後確認沒有分別,把模式關掉是一個完全合理的結果,而不是錯過了優化。設定是為體驗服務的,一個令玩家感覺不到分別的設定,並沒有在服務任何東西。

更深一層的啟示在於方法,而不是任何一個開關。延遲是一條鏈,鏈獎勵的是先找出最慢一環的人。幾分鐘診斷、一次公平的開關對照,以及接受無分別結果的誠實,對於操作反應的幫助,遠勝於憑信心把一堆開關全部打開。

常見問題

開 NVIDIA Reflex 會提升幀率嗎

不會。Reflex 針對的是每一幀的新鮮程度,而不是每秒的幀數。開關前後幀率大致相同屬於預期之內,如果遊戲感覺更跟手而幀率不變,那就是模式發揮作用時應有的表現。

AMD Anti-Lag 同 Anti-Lag 2 是不是同一回事

不是。原版 Anti-Lag 在驅動層運作,不需要遊戲整合;Anti-Lag 2 由遊戲開發者整合,在引擎內部運作。兩者在機制、精準度與遊戲覆蓋上都不同,驅動開關不會令一隻沒有整合的遊戲獲得 Anti-Lag 2。

點解驅動程式裡搵唔到 Anti-Lag+

Anti-Lag+ 以注入程式碼的方式在遊戲程序內部對齊畫面,反作弊系統可能將這種注入標記為可疑行為。AMD 在相關衝突出現後,已在驅動程式中全面停用這個功能。玩家不應尋找舊方法把它恢復,尤其是在設有反作弊系統的遊戲裡。

低延遲模式可以改善網絡延遲高嗎

不可以。網絡延遲是玩家電腦與遊戲伺服器之間的來回時間,Reflex 與 Anti-Lag 只作用於本地渲染鏈。如果遲鈍感只在線上出現而離線時消失,原因在網絡方面,本地顯示卡設定無法處理。

點解開了 Reflex 卻感覺唔到分別

最可能的原因有三個:該場景裡隊列並不是主要的延遲來源;系統屬於處理器受限而不是顯示卡受限;或者遊戲已經在高幀率與淺隊列下運行。經過認真對照後得出的無分別結果,是一個有效的結論,不代表設定壞了。

低延遲模式可以同垂直同步一齊開嗎

可以一齊開,但垂直同步會在渲染之後另加一層等待,低延遲模式不會抵消這層等待。組合的效果預期是比單開垂直同步好,但不及單開低延遲模式而不開垂直同步直接。應該在相關遊戲裡親自對照組合效果,而不是假設其中一個設定已經涵蓋了另一個的代價。

開啟加 Boost 會令處理器變快嗎

不會。Boost 只是在處理器成為限制因素時,令顯示卡保持較高時脈,讓工作一到就能立即處理。它不會加速遊戲邏輯或處理器運算,真正受處理器限制的場景,開了 Boost 之後仍然受處理器限制。

結語

低延遲技術最好理解為隊列管理,而不是魔法。隊列的存在自有原因,收窄它是用一部分緩衝換取更新鮮的畫面。這個交換在隊列確實帶來延遲的場合值得做,在隊列並非問題的場合則值得跳過。對照方法簡單,診斷只需幾分鐘,而誠實的答案,包括一句在這裡沒有分別,比憑信心打開的任何開關都有用。

如需就個別遊戲或系統的設定作進一步查詢,或者想分辨延遲來自顯示卡、處理器還是顯示器,歡迎聯絡石門達利廣場 1209 室,電話 2186 8010,WhatsApp 6558 6806。

相關文章

相關服務

如果需要晶片級顯示卡維修,可以參考以下服務頁面:

HK GPU Fix 香港顯示卡專業維修,石門安達利廣場 1209 室,沙田,新界,HK。+852 21868010

← 返回 Blog | HK GPU Fix 首頁