CPU can be quite real bottleneck on XB1/PS4. ![]() Obviously on such powerful CPUs we will be easily GPU-bound, especially as graphics gets special treatment on the PC from us (read: we try to load more powerful GPUs with better graphics), but that is not the case for consoles. As we mostly optimize CPU performance on the current-gen consoles (as they are slower), for you to see our real engine scalability you will have to underclock CPUs to approximately consoles’ performance. Given the predominantly graphics-bound nature of many games, what makes a threaded engine so important?ĭmitry: Regarding the graphs. Tom’s Hardware: In the two images attached (we shared some of our graphs with Dmitry), it’s easy to see some scaling up to ~six cores at 1920x1080, though even on a GeForce GTX 1080, graphics becomes the bottleneck at 2560x1440 (this is one reason Tom’s benchmarks with Metro). Realistically, a quad-threaded CPU is the minimum for us, with eight-thread CPUs vastly preferred. We can run on a dual-thread CPU, but in this case there is already internal oversubscription, which causes lower framerate and stutter. ![]() Tom’s Hardware: Is there an upper bound to the number of host processing cores the engine can schedule to?ĭmitry: No, there is no upper bound. PC is slightly more complicated because of oversubscription risks (which result in visible stutter for us), as we do not control what already is running on user's PC. PC (for Redux games): One dedicated D3D API submission thread, two or three control (depends on hardware thread count), all other available cores/threads become workers + some aux + some GPU driver threads + a lot of random threads from other processes Xbox One/PlayStation 4 = Three control, three workers + one latency-tolerant worker + auxes ![]() PlayStation 3 = Two control, 12 workers (actually they were "fibers" or user-mode threads, and 12 of them were required to hide offloading latency to SPUs for our code) + SPUs + auxes Xbox 360 = Two control threads, four workers + auxes There are some auxiliary threads as well, but they are mostly I/O threads with little to no compute on them.Īs for variations we've used in the past:
0 Comments
Leave a Reply. |