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 | 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 |