Hello. Well i’m not sure if it is not there yet, but more often i see the “hardware” FX-+++ or i7+++ for game and it’s not something i have. But inside of this is a CPU instruction set, that is used by game engine, while the developers didn’t use that much of everything to get on top of Zen + RTX. So i had same request for steam Source 2 and i want to propose here also to Profile different CPU for their supported instructions and create different compilers to produce execs for few types of CPUs and GPUs also prob. It’s like different versions of android - they got their system requirements and the OS supports those hardware and all the stuff works.
But in fact as a gamer i don’t need all those special shaders and many more, i need enough FPS actually.
So Profiler should collect all the used ingame functions to provide stats on how much used different CPU and GPU instructions to produce a minimal instuction set for a baking the game.
And actually the second part is a profile for different systems like AMD+AMD, Intel+AMD, Intel+Nvidia and also those minimal instruction sets based on exact production, meaning AMD has thier MMX+3dNow that is never used by Intel, but it means there is more instructions there that can be used and the basic profile can be lowered down for such systems and as a dev you ask the support of intel instructions only as lower set for AMD and never get to AMD instructions. So when you produce - you will have few optimized execs for minimal CPU for better GPU and such, but it’s very different now and this can be done easy on the devs side. i mean when you got a most a CPU+GPU why would you use the same exec, knowing you got much more functions inside ? but you cannot play alone, so other people also needs to play that somehow and that’s the way -devs get paid - that’s the lower profile issue.
when you will have this working i think it should be possible to cutoff some of rare functions to lower the minimals for systems, but enable it back for a better set and next build, so this can be also included in some sort of setup section on the user side, for they can get it depending on their supported instructions or this can be disabled for one big exec. i mean this can be solved different.
For GPU maybe it’s also more like the same, but there are those basic APIs support, so it’s DX11, 12 Vulkan, SM4,5 - maybe it is already profiled for GPUs and you just check the list, but maybe this can be also better optimized in same terms of supported GPU instructions, available memory etc.
The selecting of exec can be part of UE loader and hw user-profile
or this can be also the marketplace platform part, so devs will need to distribute the major-public exec first (basic) to fit most of platform users and additional execs will be downloaded depending on platform profile, like they do for google.play - it is known that it is supported or not for the exact device.
If having a UE loader - also can change the user-profile and ask devs for exact exec, in the manner of support case and vote for hardware, for they was able to know - all the needs, this can be the devs place @ unrealengine , so the engine team will know those profiles too or not if user is not sharing his info. What you need to know - is just the instruction sets and some system id for it, so it wasn’t same user many times from single CPU. And it will appear in case - it is not supported yet and the set differs really hard +5-15 new overall sets.
My thought again is - in some cases they got similar instructions sets, but those similar instructions needs to have some interoperability use-case, for it was like symlinked between to exchange those sets inside of engine or may have some additional optimized compiler and few execs. There is also an option to disable/enable some instructions in-game, automatically depending on current instruction-set, so some functions will be disabled, but the game will work anyway - this needs more engine setup and structured options - and this can screw up many things, starting from lags to hardcoded errors, but in terms of engine structure - this can be done.
Well, today, they’ve closed one of my old bugs of linux kernel and it is about KVM - Kernel Virtual Machine and also i’ve shared this topic for Unity few hours ago.
and the idea here is - maybe the CPU Virtual Machine can do more tricks for games as well.
First - it is about some supported instructions or emulation (as i like some EMU games and i got E-MU card) of those instructions or maybe whole CPU set.
2. those KVM patches already made and instructions are known, so you can just point to those for to use with compiler or start compiler inside of the KVM emulation.
3. Possible to start a game itself inside of sstrict emulation - basically can be done for some mac paltforms, but not only, there can be too much of exceptions.
4. i think it is possible to create “OWN VIRTUAL CPU” that is not existent, but this one can be used by all gaming platforms as a basic set of instructions and those will be emulated through CPU VM. - maybe the best solution for long. basically it needs some sort of a game-kernel instructions suite. well, it’s better to not make it very own, better work together UE + Unity + Steam + Id