ID3D10Asynchronous::GetData 方法 (d3d10.h)
以異步方式從 GPU 取得數據。
語法
HRESULT GetData(
[out] void *pData,
[in] UINT DataSize,
[in] UINT GetDataFlags
);
參數
[out] pData
類型: void*
將接收數據的記憶體位址。 如果 為 NULL, 則 GetData 只會用來檢查狀態。 數據輸出的類型取決於異步介面的類型。 請參閱<備註>。
[in] DataSize
類型: UINT
要擷取的數據大小或 0。 您可以使用 ID3D10Asynchronous::GetDataSize 來取得此值。 當 pData 為 NULL 時,必須是 0。
[in] GetDataFlags
類型: UINT
選擇性旗標。 可以是 0 或 由 D3D10_ASYNC_GETDATA_FLAG 列舉的任何旗標組合。
傳回值
類型: HRESULT
如果此函式成功,則會傳回S_OK。 否則,可能的傳回值如下:
- S_FALSE
- DXGI_ERROR_DEVICE_REMOVED
- DXGI_ERROR_INVALID_CALL
備註
GetData 會擷取 ID3D10Asynchronous::Begin 和 ID3D10Asynchronous::End 呼叫之間收集的數據。 某些查詢只需要呼叫 ID3D10Asynchronous::End ,在此情況下 ,GetData 傳回的數據精確到最後一次呼叫 ID3D10Asynchronous::End (請參閱 ID3D10Query 介面) 。
如果 DataSize 為 0,GetData 只會用來檢查S_OK傳回值指出數據可供應用程式使用的狀態,而傳回值 S_FALSE 表示數據尚無法使用。
在以旗標建立的述詞上叫用此函式D3D10_QUERY_MISCFLAG_PREDICATEHINT無效。
如果呼叫此函式的異步介面是 ID3D10Query介面,則會套用下表。
查詢類型 | 輸出數據類型 | 支援Begin方法 |
---|---|---|
D3D10_QUERY_EVENT | BOOL | 否 |
D3D10_QUERY_OCCLUSION | UINT64 | YES |
D3D10_QUERY_TIMESTAMP | UINT64 | 否 |
D3D10_QUERY_TIMESTAMP_DISJOINT | D3D10_QUERY_DATA_TIMESTAMP_DISJOINT | YES |
D3D10_QUERY_PIPELINE_STATISTICS | D3D10_QUERY_DATA_PIPELINE_STATISTICS | YES |
D3D10_QUERY_OCCLUSION_PREDICATE | BOOL | YES |
D3D10_QUERY_SO_STATISTICS | D3D10_QUERY_DATA_SO_STATISTICS | YES |
D3D10_QUERY_SO_OVERFLOW_PREDICATE | BOOL | YES |
如果呼叫此 API 的異步介面是 ID3D10Counter 介面,則會套用下列專案。
計數器類型 | 輸出數據類型 | 單位 |
---|---|---|
D3D10_COUNTER_GPU_IDLE | FLOAT32 | 時間分數 |
D3D10_COUNTER_VERTEX_PROCESSING | FLOAT32 | 時間分數 |
D3D10_COUNTER_GEOMETRY_PROCESSING | FLOAT32 | 時間分數 |
D3D10_COUNTER_PIXEL_PROCESSING | FLOAT32 | 時間分數 |
D3D10_COUNTER_OTHER_GPU_PROCESSING | FLOAT32 | 時間分數 |
D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION | FLOAT32 | 理論最大值的分數 |
D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION | FLOAT32 | 理論最大值的分數 |
D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION | FLOAT32 | 理論最大值的分數 |
D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION | FLOAT32 | 理論最大值的分數 |
D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION | FLOAT32 | 理論最大值的分數 |
D3D10_COUNTER_VS_MEMORY_LIMITED | FLOAT32 | 時間分數 |
D3D10_COUNTER_VS_COMPUTATION_LIMITED | FLOAT32 | 時間分數 |
D3D10_COUNTER_GS_MEMORY_LIMITED | FLOAT32 | 時間分數 |
D3D10_COUNTER_GS_COMPUTATION_LIMITED | FLOAT32 | 時間分數 |
D3D10_COUNTER_PS_MEMORY_LIMITED | FLOAT32 | 時間分數 |
D3D10_COUNTER_PS_COMPUTATION_LIMITED | FLOAT32 | 時間分數 |
D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE | FLOAT32 | 分數 |
D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE | FLOAT32 | 分數 |
D3D10_COUNTER_GPU_IDLE、D3D10_COUNTER_VERTEX_PROCESSING、D3D10_COUNTER_GEOMETRY_PROCESSING、D3D10_COUNTER_PIXEL_PROCESSING或D3D10_COUNTER_OTHER_GPU_PROCESSING計數器所傳回的值可能會不同,視影片卡上存在的平行計數器數目而定,而且可以使用下列方程式解譯這些值:
視訊卡具有的平行計數器數目可從 D3D10_COUNTER_INFO 中的 NumDetectableParallelUnits 取得,而且可以透過呼叫 ID3D10Device::CheckCounterInfo 來擷取。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d10.h |
程式庫 | D3D10.lib |