Cemu emulator version 1.22.10 publicly released, makes Vulkan the default render API | GBAtemp.net

An API in a literal sense is a Application Programming Interface, and in terms of graphics, its a layer in between the Driver level(level in which software commands directly communicate with the hardware) and the game engine (which usually extends graphics APIs with extra functions). What the API does is provide the developer a list of commands that they can call on in their game/application instead of program directly to the hardware (by doing commands directly involving the hardware’s registers)

With API libraries, less work is done by the developer, and allows the hardware manufacturer to program the logicflow of the calls on the hardware/driver side without developer input.

With API’s though, the connection between developer and hardware is further split, so in some instances an API might not be the most efficient way to handle a task, especially if the API itself lacks a function to do said task. To put in lay mans terms, say I had a calculator that did addition, subtraction, multiplication and division as an API. If I wanted to do square root, then this theoretical API might not be ideal for that function, and would have to write it themselves, which may not be optimal.

Vulkan in particular, is a Graphics API owned by the Khronos Group(group of companies who have a foot in graphics libraries and tech in general, who decide on open standards). It is built off of AMD’s deprecated Mantle API (used in a few games shortly after the launch of AMD’s Graphics Core Next architecture in 2011) whose goal is to create a graphics library more similar to consoles, where developers have to do a bit more work but they have much finer control of the hardware and can extract more performance. To take a modern example as a point:

Say I have a model in game, and I want to have it Raytraced
An API can be written to allow the developer to say something like ObjectRayTrace(objects)
the developer can fine tune some settings, but they do not have to mess with how the code interacts with the hardware, as that is AMD/Nvidia/Intel/Arm chip gpu designers problem. How each company handles it performance wise can differ based on implementation.

The reason why Vulkan isn’t the “standard” is simply because it takes more work to implement. If you have a project and just wanted something to run, doing it in OpenGL (platform agnostic), or Direct X 9/11 (Windows Only) was easier to program for, but you come into limits in hardware. This wasn’t a problem in the early 2010’s because most people were still on dual cores/quad cores, but after 2013 and the rise of 8 core consoles (PS4/Xbox One), developers who actually care about performance had to do more optimizations for slow hardware(because the CPU’s weren’t really fast) so they learned to program for 7 cores (1 core reserved for OS) which over time increased the amount of Vulkan/DX12 games, especially later down the consoles lifetime where performance was necessary.

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*