首页 文章

如何知道图形卡是否为wpf提供硬件渲染

提问于
浏览
5

我必须在一个环境中运行一个wpf-app,该环境具有与intel gma 3000图形芯片(onbard,Q963 / Q965)相同的dell-pc . 该应用程序仅使用软件渲染呈现(由RenderCapability.Tier -property表示,并且还有Perforator的Performance Toolkit显示 .

在所有这些机器上,安装了DirectX 9c并且DXDiag在许多但不是所有这些机器上都有状态,Direct-3d和Direct-Draw加速被激活 . 我还检查了注册表是否这些机器的设置禁用了wpf-hw渲染,但事实并非如此 . 在一台机器上,我也更新了视频驱动程序和dx但没有成功 .

如果我正确解释资源,那么在安装了DirectX 9c的PC上(并且D3D加速是活动的),也会发生wpf硬件渲染 . 但是在上面的机器上安装了DX9c,但是没有hw渲染 . 根据丹尼尔伯尔尼的帖子提供的规范,我也认为至少在第1层上的渲染必须是可行和活跃的 .

我唯一不知道的是内存,因为图形系统动态分配系统内存并且没有自己的内存 . 如何确定特定的图形芯片是否必须支持wpf的硬件渲染 . 是否支持主动DirectX 9c还支持硬件渲染,还是还有其他任何必须满足的要求,这些要求是dx9c所要求的更高要求吗?第二个问题是,如果wpf通过dx渲染,则通过direct-3d或直接绘制来完成 . 关于这个主题有没有好的文档?


事实证明,在客户PC上,直接3D加速是活跃的(在DXDiag中),但是如果没有功能 . 测试直接3d的测试程序总是以错误结束 . 这使问题成为支持问题,我将在相关的公司支持部门打开一张票 .

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

上述事实让我觉得,一个活跃的DirectX9c是一个明确的指标,即wpf的hw-rendering可以并且将要发生 . 因此,可以通过检查芯片是否支持dx9c(用于第2层渲染)来响应芯片支持hw渲染的问题 . 需求规范可以在here找到(感谢Daniel Bern) .

UPDATE

d3d和硬件渲染在上述情况下不起作用的原因是注册镜像视频驱动程序以提供远程终端服务(例如网络 Session )的应用程序(它是用于远程管理客户端PC的支持部门的软件) ) . 禁用此镜像驱动程序导致功能直接3d,因此WPF硬件渲染发生 . 但是渲染级别只是第1级(我认为是因为视频内存限制) .

我希望这篇文章能够帮助其他有类似问题的人 .

Here some links to enter into the topic:

WPF Architecture OverviewHardware Acceleration in WPFIntroducing Direct2DAdvanced WPF Application Performance Tuning and AnalysisRenderCapability.Tier returns not the render mode

1 回答

相关问题