joe91
Also COP2 instructions were not allowed in branch delay slots (presumably for similar reasons), however some games (from memory Tekken3) do actually do this. I always wondered if it was a sneaky anti-emulation thing :) (because many emulators had issues with this, or needed special handling).
So yeah, if you don't trust the remote machine then I agree - you probably shouldn't use it. But I don't really think that's the use-case they had in mind.
auto first(auto... params) { return params...[0]; }
Unless I'm missing something - but the post is showing off the fact that you can index into the list of types of the parameters, as well as the parameters themselves (in which case you need full template syntax).3D sound and other processing got baked into middleware for games because it became trivial to do all of the processing in software - and the processing became more advanced than anything that the sound card vendors were offering (and they didn't move quickly enough anyway).
Pro audio vastly progressed past anything that is possible to provide in fixed silicon. For input, dedicated USB (and ethernet) audio interfaces progressed to the point where it would be ridiculous to provide such functionality on a general "sound card".
It's just evolution - there just isn't a compelling enough niche for a dedicated sound card any more.
Pipeline state -> struct of the 3 or 4 state objects + a few values (this actually makes redundancy checking easier and can actually be a win :)
Root signature -> fixed pre allocation of binding slots (this can even be done statically with templates if your root signature is known statically)
Tables of descriptors -> arrays of handles
(edit: you obviously cannot do the kinds of bindless things with D3D11 that you can do with D3D12 and Vulkan. But its common to have both bindless and non-bindless code paths with D3D12 and Vulkan anyway)
Resource transitions -> nothing
Memory operations in modern GPUs basically evolved from fetching textures (which intrinsically have bounds checking built in, they have a width and height). All modern desktop GPUs (and probably mobile GPUs these days) use "descriptors" for textures and buffers which specify both address and size. Out of range fetches from a buffer return 0 and out of range writes are no operations.
There have been some GPUs in the past that could literally write to any address in main memory (famously the GPU in the XBox360 could do this), but its not true of any modern GPU as far as I know.
On a different note, 900 GFlops from a GPU is not really that impressive. Desktop GPUs reached this kind of performance nearly 10 years ago, but I guess its not bad for a first generation new design.
8k 120fps HDR is just the specification of the hardware. The hardware supports an 8k framebuffer and can output it to the display at 120fps. Whether or not you will choose to do that depends on what you are trying to achieve with the available GPU cycles. It's exactly the same on current consoles (and PC really). Maybe Forza 19 will choose to render simpler graphics at 8k 120fps, but Witcher 5 will decide to run at 4k but use raytracing and dynamic global illumination (these games may or may not exist :).
There are games that run at 4k/60 with HDR on XBox One X (I worked on one), and there are games that choose not to in order to do something a bit more advanced.
No one is saying that all games will run at 8k/120, just as no one is saying that all games will run at 8k/60 on the RTX 2080 Ti even though its possible to do.