在 Win32 API 的 Direct3D 12 中,D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE 结构用于查询硬件支持的视频处理器的大小。以下是该结构的定义:
typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
{
    UINT NodeMask;
    D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC OutputStreamDesc;
    SIZE_T MemoryPoolL0Size;
    SIZE_T MemoryPoolL1Size;
} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;

结构的各个成员含义如下:

  •  NodeMask: 一个位掩码,表示用于查询的硬件节点。

  •  OutputStreamDesc: D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC 结构,描述视频处理的输出流。

  •  MemoryPoolL0Size: 表示第一级内存池的大小。

  •  MemoryPoolL1Size: 表示第二级内存池的大小。


要使用该结构,首先填充相应的成员,然后使用 ID3D12Device::CheckFeatureSupport 函数来查询硬件是否支持特定的视频处理器大小。例如:
D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE videoProcessorSize = {};
videoProcessorSize.NodeMask = 0;  // 可以根据需要设置节点掩码
videoProcessorSize.OutputStreamDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;  // 设置输出流格式

HRESULT hr = pDevice->CheckFeatureSupport(
    D3D12_FEATURE_VIDEO_PROCESSOR_SIZE,
    &videoProcessorSize,
    sizeof(D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE)
);

if (SUCCEEDED(hr))
{
    // 查询成功,可以访问 videoProcessorSize.MemoryPoolL0Size 和 videoProcessorSize.MemoryPoolL1Size
}
else
{
    // 查询失败,可能硬件不支持该功能或者发生其他错误
}

请注意,具体的使用方式和支持的功能取决于你的硬件和驱动程序的实现。最好参考 Microsoft 的文档和相关示例代码以获取详细的信息。


转载请注明出处:http://www.zyzy.cn/article/detail/26187/Win32 API/D3d12video.h/D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE