|
所以,我们终于可以谈谈DX12的性能了。能不能干掉AMD Mantle?能解决DX11上存在的CPU瓶颈问题吗?对比DX11进步能有多大?A/N卡表现有何差异? 【DX12的现状:working...】 Windows 10本身都还“残缺不全”,作为其一部分的DX12自然还很初级,我们所能了解到的技术细节也不多,因此今天做的只是一个初步预览,和最终表现肯定会相去甚远,这一点要时刻牢记。 下个月我们将迎来GDC 2015,到时候必然能看到微软及合作伙伴公布更多关于DX12的细节和进展。 历史上伴随DirectX的每一次升级,微软都会给出新的WDDM(Windows显示驱动模型),DX12就带来了全新的WDDM 2.0,这也是该技术自Windows Vista诞生以来最大的改变,将会重写整个Windows GPU生态系统。 预计WDDM 2.0会在内存管理、动态资源索引、更底层CPU效率优化等方面给我们带来惊喜。 现在使用较新显卡运行Windows 10 9926预览版,DirectX诊断程序里都会显示DirectX 12、WDDM 2.0。 
R9 290X
GTX 980WDDM 2.0的变化之大,显卡厂商正面临着严峻挑战,驱动程序一定要跟上。AMD、NVIDIA目前都在进行这项工作,结果就是不同型号显卡对DX12的支持情况会有很大差异(不管是技术上还是市场上)。 简单地说,AMD、NVIDIA的最近几代显卡都可以支持DX12,但进展各有不同。 AMD HD7000/R200系列用的是第一代GCN架构,同样没有被忘记,但目前也是问题最多的,尤其在纹理方面。 GCN 1.1 R290/260系列和GCN 1.2 R9 285的情况还好一些,基本能用。 NVIDIA 开普勒/麦克斯韦两大家族都可以支持DX12,也就是GeForce 600系列起步,进展还算顺利。 更老的费米GeForce 400/500系列也得到了NVIDIA的承诺,但暂时还未启动相关工作。 但是记住,现在说是支持DX12,并不代表在API、特性级别(Feature Level)上都是百分之百支持的,尤其是微软引入的特性级别这个概念,很容易让人眼花缭乱。 只有那些完整支持FL 12_0的,才能算是真正支持DX12,其他都是部分支持,比如FL 11_2什么的。 据说,现有显卡都只是部分支持DX12,完整支持的得等待全新产品。 关于它的具体情况,以及显卡支持问题,GDC 2015上相信会给出一些说法。 这其实并不完全是出于市场方面的考虑,技术上让DX12区支持Windows 7/8/8.1也是相当困难的,因为WDDM 2.0是系统内核组件,支持老系统需要大幅度重新改写系统内核,这工作量根本不值得。 再说了,Windows 7/8.1都可以免费升级Windows 10,还要求啥呢? 另外,这也给AMD Mantle、OpenGL留下了更多发展空间,它们都可以继续吸引那些想留在Windows 7/8.1系统上的玩家。 【第一个DX12程序:《星群》】 《星群》其实是个演示DEMO,2014年初就有了,当时用来展示Oxide Nitrous游戏引擎,以及AMD Mantle,因为产生的渲染调用(draw call)规模庞大(可超过10万)而成为压榨GPU性能的利器,也非常适合测试底层API。 因为是个理想化的基准测试工具,《星群》能将DX12的性能发挥到极致,因此未来在实际游戏里看到的情况肯定会有所不同,但这至少能反映出DX12的实力。 《星群》的场景是两队AI太空舰队厮杀,随机性非常大,不过它有个RTS模式,可以基本确保每次测试的结果有可比性。 本次测试中,所用显卡驱动NVIDIA提供了349.56版本,AMD则提供了15.200版本。微软表示,现阶段的DX12环境还存在一些内存泄露、性能优化不足的问题,建议显卡显存不要少于3GB,不过实际测试中2GB也挺好的。 另外,N卡在DX11模式下还有些问题,偶尔会崩溃,所以禁用了D3D11延迟上下文功能。 参测显卡涵盖了当前具有代表性的几款: - R9 290X (GCN 1.1) - R9 285 (GCN 1.2) - R9 260X (GCN 1.1) - GTX 980 (Maxwell 2) - GTX 750 Ti (Maxwell 1) - GTX 680 (Kepler) CPU选择了一颗Core i7-4960X,但除了六核心十二线程4.2GHz的原始状态,还屏蔽部分核心与频率,模拟了四核心四线程Core i5-4670K 3.8GHz,双核心四线程Core i6-7370 3.8GHz(三级缓存没法控制但影响不大),看看不同核心数量的差异。 测试平台还用了芝奇RipjawZ DDR3-1866 8GB×4内存、三星SSD 840 EVO 750GB固态硬盘等。 好了,接下来就看看DX12是否如宣传得那样神奇!(A卡顺便测了Mantle) 【CPU测试:不同核心数量影响多大?】 DX11的一大局限就是在多核心上效率不足,存在很大瓶颈,换言之就是多线程支持不到位,这也是DX12的重点改进方向之一。 《星群》的批量提交(batch submission)在DX11上就基本是单线程的。 DX11到DX12的性能堪称飞跃,是数倍的提升,也消除了核心数量限制,双核、四核都有着不错的提升,但是超过四核之后CPU不再是瓶颈,也就看不到什么再提升了。 但是GTX 980、R9 290X的差异有点大,DX12之下前者快了一半多,DX11之下更是三倍的差异。虽说两款卡本身就有差别,但这也有点离奇。 Mantle倒是亮了,足以媲美甚至超过DX12。 在不同显卡上考察双核、四核的差异,可以充分反应DX12的效率之高,只有GTX 980这样的顶级显卡才让双核心有点跟不上。换言之,除非你用的是超高端显卡,未来的DX12游戏里双核就足够了! 四核心上的批量提交时间,DX12同样表现非凡,只需要几个毫秒。 A/N差异同样值得玩味,DX11 A卡都超过了110毫秒,N卡则只有30毫秒左右,不过AMD Mantle再次亮了,开启后能基本接近DX12的水平了! 再来看看CPU占用率: 
R9 290X DX11
R9 290X DX12
R9 290X Mantle
GTX 980 DX11
GTX 980 DX12不出所料,DX11下的CPU负载很不均衡,只有一两个核心在努力工作,DX12下就基本可以用到全部四个核心了,Mantle也不错。 【GPU测试:不同显卡有何差别?】 这个对游戏玩家来说影响就更大了,毕竟玩游戏,大家首先看的还是显卡。 搭配四核心时,NVIDIA强势领先,GTX 980超过了R9 290X 50%之多,GTX 680也能领先R9 285 25%。 虽然说系统、驱动、API、应用都在开发之中,出现这种情况也不意外,得看能不能保持到最后,但是再看看DX11下,就知道A卡确实惨了点。 由于DX11性能落后,A卡切换到DX12时进步倒是惊人的,R9 290X就提升了……416%! 另外,它们还有Mantle,开启之后每一款卡都可以干掉DX12!(稍后再谈这个话题) 换成双核心,情况也差不多,除了GTX 980 DX12下略微紧张一些之外,其他发挥都很正常。 不过注意看GTX 750 Ti,它在DX12下的提升并不大,26%的幅度元远没法和两款高端型号相比,因此如果你的N卡不怎么高端,处理器就不能太弱。 【DX12大战Mantle:AMD |