WPF Rendering 1(硬體加速、軟體加速)

來源:互聯網
上載者:User
文章目錄
  •  Plan:
 Plan:

Area: Graphics      Title: Rendering

Scenario:

1. Use software rendering
2. Use hardware rendering
3. Iterate

Stress Attack Point:Memory leak – Graphics rendering leaking          Failure:  Out of memory

Estimated Time: 2010/11/15-2010/11/19

First day(2010/11/15)

step 1: Material search

1. About DirectX http://baike.baidu.com/view/15762.htm

2. WPF Graphics Rendering Overview http://msdn.microsoft.com/zh-cn/library/ms748373.aspx

3. Optimizing Performance: Taking Advantage of Hardware http://msdn.microsoft.com/zh-cn/library/bb613578.aspx

4. WPF 效能分析工具 http://msdn.microsoft.com/zh-cn/library/aa969767(VS.90).aspx

5. Graphics Rendering Registry Settings

http://msdn.microsoft.com/zh-cn/library/aa970912.aspx

Main point:

禁用硬體加速選項

登錄機碼

      實值型別

      HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

          DWORD

使用禁用硬體加速選項,可以出於調試和測試的目的而關閉硬體加速。在應用程式中看到呈現項目時,嘗試關閉硬體加速。如果項目消失,則視頻驅動程式可能有問題。

“禁用硬體加速選項”是一個等於 0 或 1 的 DWORD 值。如果值為 1,則禁用硬體加速。假如系統滿足硬體加速要求,則值 0 將啟用硬體加速;有關更多資訊,請參見圖形呈現層。

6. How do you determine if WPF is using Hardware or Software Rendering?

http://stackoverflow.com/questions/149763/how-do-you-determine-if-wpf-is-using-hardware-or-software-rendering

Main point:

  logger.InfoFormat("WPF Tier = {0}",RenderCapability.Tier / 0x10000); 
        RenderCapability.TierChanged += 
            (sender, args) => logger.InfoFormat("WPF Tier Changed to {0}", 
                                                RenderCapability.Tier / 0x10000); 

7. What’s New for Performance in WPF in .NET 4

http://blogs.msdn.com/b/jgoldb/archive/2010/04/12/what-s-new-for-performance-in-wpf-in-net-4.aspx

Main point: New API to allow WPF apps to force SW rendering per process
In NET 3.5 SP1 we added new API to allow developers to force software rendering per application window instead of using the GPU (see my Performance improvements in WPF in .Net 3.5 / 3.0 SP1 blog), in NET 4 you can now do so for the entire process.

As reported (see here), depending on the machine configuration and the application, software-based rendering is sometimes faster than hardware.
This could improve rendering performance for certain scenarios and machines configuration, in most cases Hardware rendering should perform better. Please use carefully and verify with your app and machine configuration.
In certain cases apps may want to use Software rendering for reliability reasons, for example on machines (typically older) that do not have reliable drivers.
This APIs should provide developers a much better alternative than setting the global ‘Disable HW Acceleration’ registry key (see here)

VS 2010 for example is using this feature to force VS 2010 into Software rendering on VMs thus improving reliability. VS 2010 is doing so since some VMs graphic emulation drivers found VS 2010 is doing so since some VMs graphic emulation drivers found not to be reliable. Here is an example for how to use this API:

public partial class App : Application 
{
protected override void OnStartup(StartupEventArgs e)
{
if (WeThinkWeShouldRenderInSoftware())
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
}
}

Notes:
I) The precedence order for software rendering is:

  1. DisableHWAcceleration reg key
  2. RenderOptions.ProcessRenderMode (per process)
  3. HwndTarget.RenderMode (per-target / window)

II) The app force Software rendering at any time, however there is no way to force Hardware rendering back on once it was set to SoftwareOnly.

8. System.Windows.Media.RenderCapability.Tier returns not the render mode

http://stackoverflow.com/questions/3060329/system-windows-media-rendercapability-tier-returns-not-the-render-mode

Main point:

HwndSource hwndSource = PresentationSource.FromVisual(visual) as System.Windows.Interop.HwndSource; 
HwndTarget hwndTarget = hwndSource.CompositionTarget; 
hwndTarget.RenderMode = renderMode; 
9.
RegistryKey Class

http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.