如何确定图形卡是否为WPF提供硬件渲染?

5
我需要在所有配置相同的戴尔电脑(搭载Intel GMA 3000显卡芯片,集成于Q963/Q965主板)上运行一个WPF应用程序。该应用程序只能使用软件渲染(由RenderCapability.Tier属性和性能工具包Perforator显示)。
在所有这些电脑上,已安装DirectX 9c,而且在其中许多电脑上,DXDiag显示Direct3D和DirectDraw加速已启用,但并非所有电脑都是如此。我还检查了注册表,以确定这些电脑的设置是否禁用了WPF硬件渲染,但情况并非如此。在一台电脑上,我还更新了视频驱动程序和DX,但没有成功。
如果我正确理解资源,那么在安装了DirectX 9c(并且启用了D3D加速)的PC上,也会进行wpf硬件渲染。 但是在上述机器上安装了DX9c,但没有硬件渲染。根据Daniel Bern的帖子提供的规格说明,我认为至少渲染层1必须是可能和活动的。 我唯一不确定的是内存,因为图形系统动态分配系统内存并没有自己的内存。 如何找出特定的图形芯片是否必须支持wpf的硬件渲染。如果激活了DirectX 9c,是否也支持硬件渲染,或者是否还有任何其他要求必须满足,超出了dx9c的要求? 第二个问题是,如果wpf通过dx进行渲染,是通过直接3d还是使用直接绘制。这个主题有没有好的文档资料?

结论是在客户的个人电脑上,直接3d加速已经激活(在DXDiag中),但无法正常运行。测试Direct 3d的测试程序总是以错误结束。这使问题成为支持问题,我将在涉及公司的支持部门开具工单。

关于WPF渲染硬件使用DX的哪个组件的问题可以如下回答:渲染是通过媒体集成层(MIL)完成的。如果DirectX(适当版本)可用且可操作,MIL将所有渲染命令直接写入D3D。另外,DirectShow(或其后继者)用于处理视频。媒体集成层是非托管代码,似乎有很少文档。

以上事实让我认为,激活DirectX9c清楚地表明了hw渲染可以并将发生。因此,哪个芯片支持hw渲染的问题可以通过检查芯片是否支持dx9c(用于二级渲染)来回答。要查找要求规范,请单击此处(感谢Daniel Bern)。

更新

在上述情况下,d3d和硬件渲染无法正常工作的原因是应用程序注册了一个镜像视频驱动程序,提供远程终端服务,例如net meeting(它是支持部门使用的软件,用于远程管理客户端PC)。 禁用此镜像驱动程序导致直接3d功能正常工作,从而进行WPF硬件渲染。然而,由于视频内存限制,渲染级别仅为1级。希望这篇文章能帮助其他遇到类似问题的人。
以下是进入该主题的一些链接:

WPF架构概述, WPF中的硬件加速, 介绍Direct2D, 高级WPF应用程序性能调整和分析, RenderCapability.Tier返回的不是渲染模式

1个回答

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接