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 获取此值。 当 pDataNULL 时,必须为 0。

[in] GetDataFlags

类型: UINT

可选标志。 可以是 0,也可以是 D3D10_ASYNC_GETDATA_FLAG枚举的标志的任意组合。

返回值

类型: HRESULT

如果此函数成功,则返回S_OK。 否则,可能的返回值如下:

  • S_FALSE
  • DXGI_ERROR_DEVICE_REMOVED
  • DXGI_ERROR_INVALID_CALL

注解

GetData 检索在调用 ID3D10Asynchronous::BeginID3D10Asynchronous::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 fraction
D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE FLOAT32 fraction
 

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
Library D3D10.lib

另请参阅

ID3D10异步接口