multi-thread driver for Direct 3d

多核还有64位确实已经开始普及了,我却还沉浸在win32下,也该朝“新技术”看看了。之所以加引号,是因为这些提法也确实不新了,都好几年前的事了。自己跟踪技术的反应怎么就那么慢呢?不过看看有些人还沉浸在vc6的开发环境中,真是无限感慨,忠贞之士啊。

看到ATI的一个PPT:Direct3D Multithreading。概述多线程的Direct3d driver的。也不知ATI实现了没有,至少这个PPT是一年前的(March 20, 2006)。

最后一页的内容有些用,讲述在写D3d程序时,为了与多线程Driver有效率的工作,应该注意的一些地方。我也不翻译了,实在不会翻。

How to play nice with MT drivers
• Minimize use of System Memory Vertex Buffers
       • Never use DrawPrimitiveUP or DrawIndexedPrimitiveUP
       • Avoid placing Vertex Buffers in D3DPOOL_SYSTEMMEM
       • Minimize use of D3DUSAGE_DYNAMIC
       • Create D3DUSAGE_DYNAMIC VBs with D3DUSAGE_WRITEONLY
       • Lock with D3DLOCK_DISCARD or D3DLOCK_NOOVERWRITE
• Group all resource updates (Texture and Vertex) together once per frame
       • Beginning or end is fine, just don’t scatter them among drawing calls
• Avoid sparse usage of System Memory Vertex Buffers
       • Causes wasteful copies
• Do not use d3d state blocks
       • Never a good idea anyway ☺
• Avoid query deletions during drawing
• Eliminate all spin loops
       • Sometimes we see these in “frame ahead” limiters or waiting on queries

现在成熟的windows应用软件对多核的响应还是使用多线程,让framework线程安全。我没听说有人在产品中使用OpenMP来提高多核下的性能。反而听说,超线程技术(Hyper-Threading)会导致数据操作的一些隐患,最好在软件中被禁用。原因嘛,自然就是对共用数据同步的问题了。

不知道以后的多核编程会是什么样子,以使用类库为主,扩展编译器,扩展语言,或者会有新的语言?
Herb Sutter对并发(Concurrency)很热心,但愿他能领导vc组做出点有利于Cpp人民的事情来。别在捣腾什么C++/CLI了,能让C++和.net绑一块就足够了,现在已经做到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值