MCPLive > 杂志文章 > 回归底层开发 DirectX 12技术预览

回归底层开发 DirectX 12技术预览

2014-06-10李实《微型计算机》2014年5月上

较好的兼容性 哪些硬件将支持DirectX 12

目前三大GPU厂商的产品都已经宣布即将支持DirectX 12,包括NVIDIA、AMD和英特尔。英特尔方面只有Haswell内置的核芯显卡可以支持DirectX 12,AMD方面采用GCN 1.0和GCN 1.1架构的GPU都能够提供对DirectX 12的支持。NVIDI A的产品就更多了,包括采用Fermi、开普勒和MaxwellGPU的显卡均能够提供对DirectX12的支持。

实际上,从目前发展的情况来看,GCN、Fermi、英特尔的7.5代GPU即Haswell中的核芯显卡存在着非常多的相似点。虽然从整体来看,这些GPU本身有着大量的架构间的差异,比如它们的warp/wavefront尺寸、SIMD阵列的组织方式以及计算能力。但随着GPU的发展以及更高效率计算的需求,GPU变得越来越相似了,至少比早期的可编程GPU之间的差异性要少得多。

因此,不同型号GPU间趋于同质化的现象,使得它们共享DirectX 12这样的底层API成为现实。不过这种相似性还不足以像众多X86处理器那样,可以几乎使用类似的抽象层,微软还得和GPU厂商充分沟通,为不同GPU加入不同类型的抽象层来协同底层API进行工作。

游戏主机上早已开始底层优化,对主机编程人员来说,使用DirectX 12不会增加太大的难度
游戏主机上早已开始底层优化,对主机编程人员来说,使用DirectX 12不会增加太大的难度

目前支持DirectX 12的显卡产品

AMD GCN (Radeon 7000/8000/200系列)

Intel Gen 7.5 (Haswell中整合的核芯显卡)

NVIDIA Fermi (GeForce 400/500)

Kepler (GeForce 600/700/800)

Maxwell (GeForce 700/800)

编程难度不会太大 对游戏开发人员的影响

采用底层开发,这就意味着程序员要面对很多底层暴露的细节问题,需要编程人员具备更高的水平。底层程序开发不一定需要一个编程高手,但是它要比之前直接使用DirectX 11要更为困难一些。一般来说,适合使用DirectX 12的是那些AAA级大型游戏开发工作室,尤其是那些在多个平台开发游戏的厂商。假如你已经在给XBOX One或者Play Station 4编写相关的程序,那么使用DirectX 12只是一小步而已,只要学习一下新的API语法即可。但是对于那些小的游戏开发商来说,对高级编程模型的需求是依然存在的。迄今为止,微软并没有说明关高级程序模型在DirectX 12中的情况,但我们估计友好的高级编程模型还会存在,不会消失。

同时,中间件(游戏引擎)在DirectX 12中也将发挥重要的作用。比如在Unreal Engine 4上,这个著名的游戏引擎目前完全免费使用,只是开发人员要将终收入的5%支付给Unreal Engine 4的开发商EPIC而已—强大的中间件厂商将使得DirectX 12的使用越来越容易。

全方位推广 对主机和移动平台的影响

DirectX 12的引入不仅仅改变了Windows的图形发展,也对微软的其他平台产生了影响。从手机到游戏机,微软正在试图扩大DirectX12的影响范围。具体的说,微软已经承诺新的XBOX One游戏主机将升级至DirectX 12,毕竟由AMD提供的这颗SOC芯片的图形部分基于GCN 1.1架构设计。

除了主机外,微软还将把DirectX 12带到移动设备上来,比如Windows Phone和Windows RT系统。移动设备很可能也将获得非常明显的性能增长,因为相比笔记本电脑和台式机,移动设备存在更严重的CPU瓶颈,因此DirectX 12的底层优化在这些设备上大放异彩也是理所当然的。

效果显著 早期DirectX 12 DEMO展示

从发展进度来看,DirectX 12将在2015年发布,目前已经有了一个可以运行在NVIDIA显卡上的DirectX 12早期版本。基于这个早期版本,微软展示了一些运行在DirectX 12上的程序。其中一个就是大名鼎鼎的3DMARK 11,这是一个重负载的3D程序,由于其专门为测试而生,因此很容易分析并监控整个测试过程。

作为演示的一部分,微软展示了DirectX 12下CPU占用率的情况,并比较了DirectX 11和DirectX 12的差异性。通过这个测试可以看出,DirectX 12能够显著地降低CPU单线程的负载,并且将更多的工作负载分配到不同的CPU核心上去。与此同时,作为系统内核的一部分,内核模式驱动和CPU耗用时间都被降低了。

这个基准测试可能展示了使用DirectX 12好的那一面,以证明DirectX 12确实拥有底层API的优势。一些CPU负载被分配给其余的线程,CPU负载的其他时间耗费也都被完全消除了。尽管终依旧存在一个主线程,但底层优化使得API能够将工作负载分担给其余的CPU核心,CPU主线程的工作时间得到有效降低。唯一遗憾的是,我们还无法得知这种优化能为3DMark 11的终测试结果带来多大的提升。

此外,微软还展示了第一款采用DirectX 12设计的游戏DEMO——《极限竞速5》。该游戏原本采用为游戏主机服务的DirectX 11.XA PI设计,但没费太大的功夫,开发商就将它移植到了DirectX 12上,因此游戏也可以运行在PC上。微软使用了GTX Titan来进行演示,并告诉人们,该游戏的运行速度可以轻松地达到60fps。

还需要一定发展时间

对于DirectX 12来说,目前仅仅是一个开始。微软也只是公开展示了部分内容。因此,现在我们只能了解到DirectX 12的部分细节,但这已经足以引起人们的兴趣,毕竟目前的发展方向正确一DirectX 12将大幅度改善CPU的性能,而不是那技术规格已经获得大幅膨胀的GPU,这显然将非常令人期待。不过DirectX的发展不仅仅只是技术,还在于汇集所有公司的利益要求并且将其组合在一起。微软目前是PC业界图形技术的引领者,DirectX表现得即开放又私有,这和OpenGL的绝对开放完全不同。所以微软需要证明新的DirectX 12是一个对各方都有利的方案,同时也需要加强、维系自己在图形业界的影响力,这都需要长期的工作才能完成。因此DirectX 12终将具有怎样的技术表现,还需要一定的发展时间,还需要更多的案例来证明。《微型计算机》也将持续关注DirectX 12的技术进展,及时为大家带来新报道。

NVIDIA Tegra K1是目前唯一在图形架构上和桌面PC类似的嵌入式GPU,将能够支持DirectX 12。
NVIDIA Tegra K1是目前唯一在图形架构上和桌面PC类似的嵌入式GPU,将能够支持DirectX 12。

得益于对多核心处理器的有效利用,在3DMark 11使用DirectX 12时(下)处理器主线程的工作负载、工作时间较使用DirectX 11时(上)有大幅度的降低。
得益于对多核心处理器的有效利用,在3DMark 11使用DirectX 12时(下)处理器主线程的工作负载、工作时间较使用DirectX 11时(上)有大幅度的降低。

从《极限竞速5》的开发速度来看, DirectX 11游戏向DirectX 12移植、迁移的难度并不是太大。
从《极限竞速5》的开发速度来看, DirectX 11游戏向DirectX 12移植、迁移的难度并不是太大。

分享到:

用户评论

用户名:

密码: