D3D10DDI_QUERY列舉 (d3d10umddi.h)

D3D10DDI_QUERY列舉類型包含可識別查詢類型的值。

Syntax

typedef enum D3D10DDI_QUERY {
  D3D10DDI_QUERY_EVENT,
  D3D10DDI_QUERY_OCCLUSION,
  D3D10DDI_QUERY_TIMESTAMP,
  D3D10DDI_QUERY_TIMESTAMPDISJOINT,
  D3D10DDI_QUERY_PIPELINESTATS,
  D3D10DDI_QUERY_OCCLUSIONPREDICATE,
  D3D10DDI_QUERY_STREAMOUTPUTSTATS,
  D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE,
  D3D11DDI_QUERY_PIPELINESTATS,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3,
  D3D10DDI_COUNTER_GPU_IDLE,
  D3D10DDI_COUNTER_VERTEX_PROCESSING,
  D3D10DDI_COUNTER_GEOMETRY_PROCESSING,
  D3D10DDI_COUNTER_PIXEL_PROCESSING,
  D3D10DDI_COUNTER_OTHER_GPU_PROCESSING,
  D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION,
  D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION,
  D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE,
  D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE,
  D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
} ;

常數

 
D3D10DDI_QUERY_EVENT
此查詢類型提供同步處理基本類型,其中許多下列查詢類型會模擬,以處理圖形處理單位的異步本質, (GPU) 。 發出D3D10DDI_QUERY_EVENT在 GPU 完成所有先前發出的命令之後收到訊號,通常是來自圖形管線的後端。 驅動程式與此查詢類型相關聯的數據是 BOOL。 不過,BOOL 值是多餘的,因為每當發出D3D10DDI_QUERY_EVENT查詢訊號時,BOOL 的值一律為 TRUE。 當發出D3D10DDI_QUERY_EVENT 訊號時 ,驅動程式應該一律傳回TRUE的BOOL數據值。
D3D10DDI_QUERY_OCCLUSION
驅動程式與此查詢類型相關聯的統計數據數據是 UINT64。 此統計數據數據包含自建立裝置內容以來,所有基本類型通過深度和樣板測試的多取樣數目,也稱為「可見」多重取樣。 如果轉譯目標不是多重取樣,計數器會以可見的整個像素數目遞增。 計數器在溢位時應該四處換行。

注意

Direct3D 執行時間可以隨時呼叫驅動程式的 QueryGetData 函式,以要求此統計數據數據。 因此,必須持續正確計算。

只有兩個獨立統計數據要求之間的差異會提供有意義的資訊。 驅動程式應該計算當呼叫 其 QueryBegin 函式時所收到的統計數據數據,以及呼叫其 QueryEnd 函式時所收到的統計數據數據之間的差異。

為了計算可見的多取樣,停用的深度測試或樣板測試的行為應該就像多重取樣「通過」停用的測試一樣。 這會產生對等的結果,當測試單元啟用時,測試函式會設定為 「always」。。 此外,即使沒有系結轉譯目標,這些值也應該以一般方式表化。 因為深度和樣板測試邏輯發生在管線的輸出合併階段,所以在圖元著色器執行期間捨棄的圖元不會遞增遮蔽計數器。 在邏輯上捨棄的圖元甚至不會到達輸出合併。 有管線組態,其中從管線產生的唯一有效結果是遮蔽計數器的製表。

D3D10DDI_QUERY_TIMESTAMP
驅動程式與此查詢類型相關聯的數據是UINT64。 TIMESTAMP 查詢類型類似於D3D10DDI_QUERY_EVENT查詢類型,因為 TIMESTAMP 查詢類型也提供同步處理基本類型。 如同D3D10DDI_QUERY_EVENT,當 GPU 完成所有先前發出的命令時,時間戳應該會發出訊號。 不過,TIMESTAMP 與D3D10DDI_QUERY_EVENT不同,方法是傳回 64 位時間戳值。 這個 64 位時間戳值應該從 GPU 計數器取樣,以一致的頻率遞增。 時間戳值應該在 GPU 完成所有先前發出的命令時進行取樣。 不需要 GPU,以確保所有快取都會排清到記憶體,以判斷工作已完成。 如此一來,滿足多個高頻率 TIMESTAMP 查詢類型並不會嚴重干擾管線。 不過,CPU 應該監視本身與 GPU 之間定義完善的記憶體寫入順序,特別是在支援D3D10DDI_QUERY_EVENT時。 如果 CPU 決定 GPU 寫入特定值 (特別) 柵欄值,則 CPU 會判斷在柵欄寫入之前發出的所有先前記憶體寫入都應該排清到記憶體,而且 CPU 可以立即看到。 可能需要從 GPU 快取中取得資料並進入 CPU 可存取記憶體的排清類型,不需要完成每個 TIMESTAMP,但可能在每個命令緩衝區結束時會更多。

時間戳計數器的頻率是在D3D10DDI_QUERY_TIMESTAMPDISJOINT查詢類型的內容中提供。 此計數器的頻率應大於 10 MHz,且可抵禦 GPU 的高頻率動態節流。 時間戳計數器應該是全域的。 因此,不需要時間戳計數器,即可將 GPU 時間分割納入內容。

未指定時間戳計數器的初始值。 因此,時間戳計數器的絕對值本身通常沒有意義。 不過,從兩個絕對值的差異所產生的相對值會量化經過的時間量。 只有當兩個 TIMESTAMP 查詢在D3D10DDI_QUERY_TIMESTAMPDISJOINT範圍內加上括弧,而且當查詢D3D10DDI_QUERY_TIMESTAMPDISJOINT查詢的查詢脫離值傳回 FALSE 時,兩個時間戳值的差異才會正確。
D3D10DDI_QUERY_TIMESTAMPDISJOINT
驅動程式與此查詢類型相關聯的數據是 D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT 結構。 TIMESTAMPDISJOINT 可讓應用程式定義方括弧,不僅要求 TIMESTAMP 時鐘的頻率,還可以偵測整個方括號範圍的圖形命令是否一致。 D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT的 Disjoint 成員包含 BOOL 值,指出何時導致時間戳計數器變成不連續或脫離。 一些應該觸發 TIMESTAMPDISJOINT 的事件範例是電源關閉、因膝上型電腦省電事件、未叢集的 AC 纜線和調節而節流。 在穩定圖形應用程式執行狀態期間,這類事件發生次數應該很少見,以透過控制系統執行環境來避免。 請注意,如果這類事件發生,它們可有效地減少 TIMESTAMP 功能的實用性。 在觸發 TIMESTAMPDISJOINT 查詢的事件之後的 TIMESTAMP 查詢,相較於這類事件前面的 TIMESTAMP 查詢,不一定有意義。 如果 TIMESTAMP 查詢中的值無法保證在 TIMESTAMPDISJOINT 查詢期間持續, 則 Disjoint 成員中的 BOOL 值為 TRUE 。 否則, [脫離 ] 應該是 FALSE。 D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT Frequency 成員的值應該等於 TIMESTAMP 時鐘的頻率。

此外,這類節流事件的通知對於效能監視、回歸和調查工具很有用,假設通知會導致應用程式執行效能差異。
D3D10DDI_QUERY_PIPELINESTATS
如需詳細資訊,請參閱。
D3D10DDI_QUERY_OCCLUSIONPREDICATE
驅動程式與此查詢類型相關聯的數據是 BOOL。 此述詞會鏡像 OCCLUSION 查詢的規格。 如果相同方括號範圍的 OCCLUSION 查詢傳回 0,OCCLUSION 述詞會傳回 FALSE。 否則,OCCLUSION 述詞會傳回 TRUE,表示至少有一個多重取樣是可見的。 如果述詞指出為提示與保證,則不會將任何結果傳播回應用程式。 此查詢類型是述詞,可用來述詞轉譯命令。
D3D10DDI_QUERY_STREAMOUTPUTSTATS
驅動程式與此查詢類型相關聯的數據是 D3D10_DDI_QUERY_DATA_SO_STATISTICS 結構。 此結構包含用來監視在管線數據流輸出階段串流出之數據的統計數據。 這些統計數據只會計算 (的完整基本類型,例如串流出) 點、線條和三角形。例如,如果基本類型 (變更為三角形) ,則不會以任何方式調整計數。 也就是說,不論類型為何,計數一律是總基本類型。

注意

Direct3D 執行時間可以隨時呼叫驅動程式的 QueryGetData 函式來要求這些統計數據。 因此,必須持續正確計算。

只有兩個獨立統計數據要求之間的差異會提供有意義的資訊。 驅動程式應該計算當呼叫 其 QueryBegin 函式時所收到的統計數據數據,以及呼叫其 QueryEnd 函式時所收到的統計數據數據之間的差異。

D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE
驅動程式與此查詢類型相關聯的數據是 BOOL。 如果有任何數據流輸出溢位,則此 BOOL 為 TRUE 。 如果使用兩個D3D10DDI_QUERY_STREAMOUTPUTSTATS查詢來同時監視與 STREAMOVERFLOWPREDICATE 述詞類型相同的括號範圍,則 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 成員中的值差異會導致與 NumPrimitivesWritten 成員中值的差異更大。 STREAMOVERFLOWPREDICATE 不支援做為提示使用的能力。 因此,必須保證述詞類型。 此查詢是述詞,可用來述詞轉譯命令,以防止不想要的畫面向應用程式顯示。

如果同時串流至多個緩衝區,只要其中任一緩衝區溢位,數據流輸出就會停止所有緩衝區,而 STREAMOVERFLOWPREDICATE 的數據會變成 TRUE
D3D11DDI_QUERY_PIPELINESTATS
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS結構。 此結構包含圖形管線每個階段的統計數據。 此查詢類型與D3D11DDI_QUERY_PIPELINESTATS查詢類型相同,但D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS新增 HSInvocationsDSInvocations 成員作為殼層和網域著色器。
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 D3D10_DDI_QUERY_DATA_SO_STATISTICS 結構。
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 D3D10_DDI_QUERY_DATA_SO_STATISTICS 結構。
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 D3D10_DDI_QUERY_DATA_SO_STATISTICS 結構。
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 D3D10_DDI_QUERY_DATA_SO_STATISTICS 結構。
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 BOOL。 如果數據流 0 輸出溢位,則此 BOOL 為 TRUE 。 如果使用兩個D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM0查詢來同時監視與STREAMOVERFLOWPREDICATE_STREAM0述詞類型相同的方括號範圍,則 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeededed 成員中的值差異會產生比 NumPrimitivesWritten 成員中值的差異更大的差異。
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 BOOL。 如果數據流 1 輸出溢位,則此 BOOL 為 TRUE 。 如果使用兩個D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1查詢來同時監視與STREAMOVERFLOWPREDICATE_STREAM1述詞類型相同的括號範圍,則 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 成員中的值差異會導致差異大於 NumPrimitivesWritten 成員中的值差異。
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 BOOL。 如果數據流 2 輸出溢位,則此 BOOL 為 TRUE 。 如果使用兩個D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1查詢來同時監視與STREAMOVERFLOWPREDICATE_STREAM2述詞類型相同的括號範圍,則 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 成員中的值差異會導致差異大於 NumPrimitivesWritten 成員中的值差異。
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3
Windows 7 和更新版本支援。

驅動程式與此查詢類型相關聯的數據是 BOOL。 如果數據流 3 輸出溢位,則此 BOOL 為 TRUE 。 如果使用兩個D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1查詢來同時監視與STREAMOVERFLOWPREDICATE_STREAM3述詞類型相同的括號範圍,則 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 成員中的值差異會導致差異大於 NumPrimitivesWritten 成員中值的差異。
D3D10DDI_COUNTER_GPU_IDLE
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回 GPU 閑置時間的百分比。
D3D10DDI_COUNTER_VERTEX_PROCESSING
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回頂點著色器忙碌處理數據的時間百分比。
D3D10DDI_COUNTER_GEOMETRY_PROCESSING
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回幾何著色器忙碌處理數據的時間百分比。
D3D10DDI_COUNTER_PIXEL_PROCESSING
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回像素著色器忙碌處理數據的時間百分比。
D3D10DDI_COUNTER_OTHER_GPU_PROCESSING
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回 GPU 作業除了頂點、幾何和像素著色器作業之外,正在忙碌處理數據的時間百分比。
D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回適配卡頻寬使用率理論上上限的百分比。
D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回理論上視訊記憶體頻寬使用率上限的百分比。
D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回頂點輸送量使用率理論上限的百分比。
D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回三角形設定輸送量使用率理論上限的百分比。
D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回理論上填滿速率輸送量使用率上限的百分比。
D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回頂點著色器等候記憶體執行 (數據讀取或寫入的時間百分比,以及頂點著色器計算數學) 的時間百分比。
D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回頂點著色器計算數學 (的百分比,以及頂點著色器等候記憶體執行讀取或寫入數據) 的時間百分比。
D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回幾何著色器等候記憶體執行 (數據讀取或寫入的時間百分比,以及幾何著色器計算數學) 的時間百分比。
D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回幾何著色器計算數學 (的百分比,以及幾何著色器等候記憶體執行讀取或寫入數據) 的時間百分比。
D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回像素著色器等候記憶體執行數據讀取或寫入 (的時間百分比,以及像素著色器計算數學) 的時間百分比。
D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回像素著色器計算數學 (與像素著色器等候記憶體執行讀取或寫入數據) 的時間百分比。
D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回幾何著色器或圖元著色器從頂點快取中擷取的頂點百分比,這些頂點已經由頂點著色器轉換。

轉換頂點的快取 (也就是頂點著色器在頂點著色器之後立即存在) 所執行的頂點。 這些頂點可由幾何著色器或像素著色器使用。 D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE查詢結果 (的 100% 點擊率) 表示幾何著色器或像素著色器所需的每個頂點都已經轉換。 而 0% 的命中率表示頂點著色器在可以使用之前,每個頂點都需要處理。

驅動程式可以重新建構演算法和數據,以提高快取命中率。
D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE
驅動程式與此查詢計數器類型相關聯的數據是FLOAT32。 驅動程式會傳回著色器從已從視訊記憶體中擷取的紋素快取所擷取的材質或紋理記憶體百分比。

紋理記憶體快取可能存在於著色器資源檢視之間,或可能是常數緩衝區和著色器。 100% 點擊率表示快取中已經有著色器所需的每個材質。 而 0% 的點擊率表示每個材質都需要從視訊記憶體擷取數據。

驅動程式可以重新建構演算法和數據,以提高快取命中率。
D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
第一個可用的裝置相依查詢計數器。 硬體廠商可以使用此值和高於 0x40000000的任何 32 位值來取得其裝置的查詢計數器。

備註

D3D10DDI_COUNTER_VERTEX_PROCESSING、D3D10DDI_COUNTER_GEOMETRY_PROCESSING、D3D10DDI_COUNTER_PIXEL_PROCESSING和D3D10DDI_COUNTER_OTHER_GPU_PROCESSING的值最多可加到驅動程式定義的值,也就是可偵測的平行單位數目。 此號碼是由驅動程式發佈為圖形適配卡功能的一部分。 可偵測的平行單位數目可以是 1、2、3 或 4,視硬體架構詳細數據而定、性能計數器能夠辨識實際花費的時間,或硬體廠商的完整判斷。 針對報告 NumDetectableParallelUnits 成員中 NumDetectableParallelUnits 成員中可偵測的平行單位數目等於) 1 (== 1 的架構,以回應對 CheckCounterInfo 函式 D3D10DDI_COUNTER_INFO的呼叫,適用下列方程式:

(D3D10DDI_COUNTER_VERTEX_PROCESSING + D3D10DDI_COUNTER_GEOMETRY_PROCESSING + D3D10DDI_COUNTER_PIXEL_PROCESSING + D3D10DDI_COUNTER_OTHER_GPU_PROCESSING) / NumDetectableParallelUnits = 1.0 - D3D10DDI_COUNTER_GPU_IDLE

這些計數器標識碼的監視 (以及D3D10DDI_COUNTER_GPU_IDLE) 仍然必须遵守同时作用中计数器的规则。

對於報告可偵測的平行單位數目不等於 1 (!= 1) 的架構,每個忙碌計量之間的互動比較複雜。 例如,當可偵測的平行單位數目等於 4 (== 4) 時,D3D10DDI_COUNTER_VERTEX_PROCESSING和D3D10DDI_COUNTER_PIXEL_PROCESSING等於 .25 (== .25) ,而忙碌計量的其餘部分則等於 0 (== 0) 。 D3D10DDI_COUNTER_GPU_IDLE可能會根據達到這些平行單位的實際重疊量,在 .5 和 .75 之間產生。

D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION、D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION、D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION、D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION和D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION所有報告可使用的瓶頸百分比。 應用程式接著可以判斷何時需要壓力特定的理論最大值,以便判斷如何解決瓶頸。

D3D10DDI_QUERY_PIPELINESTATS值的詳細數據

驅動程式與此查詢類型建立關聯的數據是 D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS 結構,其中包含圖形管線每個階段的統計數據。 針對每個階段,叫用數目的值必須落在無限快取和無快取之間。 裁剪器會顯示為幾何著色器, (GS) 。 裁剪器會針對每個三角形執行。 針對每個叫用,如果原始三角形已完全裁剪,則會產生零個基本類型,如果原始三角形完全未裁剪 (,或裁剪結果只有一個三角形) ,則會產生兩個基本類型,如果原始三角形已裁剪並導致兩個三角形,則會產生兩個基本類型,依此類之。 在管線的一般設定中,D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICSGSPrimitives 成員中的值會等於 CInvocations 成員中的值。 如果點陣化已停用,且管線設定為只將基本類型傳送至數據流輸出, GSPrimitives 中的值會從 CInvocations 中的值減去,因為 CInvocations 不會遞增。 裁剪統計數據對於防護訊號實作而言是有彈性的。 因此,當轉譯延伸超過檢視區的三角形時,測試可確保裁剪落在一系列的值之間 (數位,該數位假設檢視區周圍有無限的防護帶,以及假設檢視區周圍有緊密裁剪矩形的數位) 。 所有值都包含建立裝置內容之後的事件數目。 請注意,您可以隨時要求這些統計數據,因此必須持續精確地計算這些統計數據。

只有兩個獨立統計數據要求之間的差異才會提供有意義的資訊。 驅動程式應該計算當呼叫 其 QueryBegin 函式時所收到的統計數據數據之間的差異,以及當呼叫 其 QueryEnd 函 式時收到的統計數據數據。

以下是 IAVerticesIAPrimitivesVSInvocations 成員之間D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS與頂點著色器 (VS) 快取之間互動的範例。

案例 IAVertices 有效值 IAPrimitives 有效值 VSInvocations 有效值
繪製 4 個基本型別的索引三角形帶狀 (,且所有索引的值都相同) 6 4 1--12
繪製 4 個基本型別的索引三角形清單, (所有索引具有相同值) 12 4 1--12
繪製 4 個基本類型的三角形帶 6 4 6--12
繪製 4 個基本類型的三角形清單 12 4 6--12

部分基本類型會允許落在值範圍內,類似於頂點快取行為的方式。 因此,當部分基本類型可能時,統計數據應該在管線之間 ( (,甚至輸入組合器 (IA) 計算它們) ,或盡可能 (後置剪輯器和像素前置著色器 (PS) ) 。 Stream 輸出和 NULL GS 有彈性,因為它們是否實際造成 GS 調用發生。

相對於D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS PSInvocations 成員中的值,早期深度和樣板優化可能會或可能不會防止從圖元著色器實現工作。 因此,當像素失敗深度測試時, PSInvocations 中的值可能會或可能不會遞增,視深度測試實際發生在管線中的位置而定。 如果圖元著色器輸出深度,即使輸出深度失敗, PSInvocations 中的值也必須如預期遞增。 下列範例示範 如何測試 PSInvocations 中的值。

請考慮透過深度和樣板測試) 和 DSF (數的像素數, (深度或樣板測試) 數量失敗的像素數。 DSP 大致相當於 OCCLUSION 查詢,不同之處在於 OCCLUSION 會測量多樣本 (不是圖元) 。 在所有情況下,DSP <= PSInvocations<= 中的值 ( DSP + DSF ) 。 當圖元著色器輸出深度時, PSInvocations 中的值是 DSP 和 DSF 的總和。 此外,當 NULL 像素著色器系結至管線時, PSInvocations 中的值不會遞增。

相對於 IAVerticesVSInvocations 中的值,如果 GS 未將相鄰頂點宣告為 GS 的輸入,則相鄰頂點處理可能會優化。 因此,當 GS 未將相鄰頂點宣告為輸入時, IAVerticesVSInvocations 中的值可能會或可能不會反映相鄰頂點所隱含的工作。 如果 GS 宣告相鄰頂點, 則 IAVertices 中的值應該包含相鄰頂點 (,而不論任何 VS 快取後 ) ,VSInvocations 中的值應該包含相鄰頂點 (,以及 VS 快取后) 的任何效果。

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
標頭 d3d10umddi.h (include D3d10umddi.h)

另請參閱

CheckCounterInfo

D3D10DDIARG_CREATEQUERY

D3D10DDI_COUNTER_INFO

D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS

D3D10_DDI_QUERY_DATA_SO_STATISTICS

D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT