Hacker News new | ask | show | jobs
What DirectX 12 means for gamers and developers (pcgamer.com)
30 points by JSnake 3979 days ago
4 comments

As a software dev who has used and benefited from AVX2, I think the last data point in the chart is quite a bit off. Perhaps their benchmarking software didn't support AVX2 yet (Haswell/Broadwell) yet?

> Blue depicts parallel performance, while purely sequential performance is shown in orange.

Sequential trend seems to totally disregard up to doubled integer vector performance in AVX2, first introduced in Haswell. Original AVX didn't support 256-bit wide integer vectors. Also Haswell up to "doubled" [1] FLOP/cycle.

[1]: If your workload is FMA. That said, it is a pretty common FPU workload. See for example http://stackoverflow.com/questions/15655835/flops-per-cycle-... for reference.

The amount of float point arithmetic done on the CPU in modern games is less than you'd think. For graphics you are looking at no more than 1000s of matmuls on the CPU, 10 000s at worst. Games that do their physics on the CPU still struggle to saturate it even with SSE. In games a good amount of CPU time is spent moving bytes around, which is precisely why we have data oriented programming.

The reason the CPU bottlenecked pre-DX12/pre-Vulkan games is because a hefty amount of it was used for the abstraction: likely little of which was FLOPs. Basically: you forgot to profile first ;). For a purely graphics workload the CPU will be doing relatively small amounts of work.

In addition I can say with fair certainty that a smaller portion of the gamer market upgrades their CPU on a regular basis (so-called enthusiasts). Taking myself as an example: I haven't upgraded my CPU since 2010 and I've only started feeling that pinch this year. That's a lot of CPUs without AVX2 support.

TLDR; AVX2 is currently in the "solutions looking for a problem" bucket.

The chart seems to indicate about 25 GFLOPS for sequential performance, while real value is up to 100 GFLOPS theoretical at 3.1 GHz on Haswell/Broadwell on a single core.

While realistic single core performance won't of course be approaching 100 GFLOPS, 25 is a pretty lowball value.

Is it possible that they're using "sequential" strictly, to mean that the arithmetic isn't vectorized? What's the scalar throughput like?
Scalar output would be way less than that number, 25 GFLOPS. At most 2x clock frequency. It's likely their benchmark just doesn't support AVX2 (and FMA [1]).

You get about 25 GFLOPS if you use SSE only.

[1]: https://en.wikipedia.org/wiki/FMA_instruction_set

*What DirectX 12 means to Windows gamers and Windows developers.

The complete lack of mention of Vulkan in this article is suspect.

Not really. DirectX 12 has incredible mindshare among consumers and, I sadly suspect, game developers simply due to the name.
That article talks like Mantle was the first version of this kind of API. Sony Playstation has been doing this for nearly ten years.
Not much. Almost all high-budget games are still developed for consoles first. The hardware inside Xbox One doesn't support DX 12.
The hardware inside the Xbox One most certainly does support DX 12.
Citation?
I love how you don't cite your first statement but then request a citation for the rebuttal.

I'm going to cite me. I work on graphics engines for all the major consoles and PC. Have been looking at DX12 on xbone for over a month already.

10 second google search yields:

http://www.vrworld.com/2015/04/29/directx-12-on-xbox-one-com...

---

Xbox One uses "Graphics Core Next", which certainly does support DX12.

http://wccftech.com/microsofts-directx-12-api-supports-amd-g...

The Xbox One is (essentially) using an AMD HD 7790, which AMD [1] have confirmed to support DX 12, and Microsoft have confirmed that DX 12 is coming to the Xbox One with the Windows 10 update [2].

[1] https://community.amd.com/thread/180474

[2] http://news.xbox.com/2015/01/xbox-one-phil-spencer-unveils-n...

"Any" console supports the important features of DX12. The functional additions to DX12 are few and those would likely be exclusive to PC until the next console iteration. The significantly more important low-level API has been in consoles since day 1.

The lack of a low-level API on PC is why bad console ports have happened in the past - so there's your citation: every bad console port ever.

Xbox One literally runs Windows
It certainly doesn't literally run Windows for games. The Xbox One is a hypervisor based system where a Windows 8 based OS is used for utility applications and user interface, but a custom OS is used for the games[1]. The believe the latter has as much in common with Windows as the Xbox 360 OS (not a huge amount).

[1]https://en.wikipedia.org/wiki/Xbox_One_system_software

No no no lol.

If it literally ran Windows, it would mean that GPU work is actually scheduled between applications and we'd have TDRs and all sorts of things.