Infinisearch
Veteran
I was just wondering in regards to tools at their disposal, do driver writers for the older high level apis have more than what is exposed to DX12/Vulkan? Any examples?
Good post. But you didn't mention the biggest change. Resource management.I'm hesitant to write anything because the amount of bullshit around this new API-s is so high and I hate to make it even a tiny bit higher since I am in no way an expert on writing display drivers (I have written some USB drivers though).
DX12 and Vulkan are not low level APIs. You don't get to assemble command buffer byte by byte and send it off to GPU. You still call methods/functions to set state and issue Draw/Dispatch commands. The same way you did with DX11 or OpenGL.
Hmmm by tools I mean in D3D12 and Vulkan some of the responsibilities of the driver in previous API's become the responsibility of the application. So for example barriers and fences are things that D3D12 exposes to the application programmer to take on said responsibility. I'm asking if drivers for the older api's have more things of that nature? For example a driver for d3d11 will have a interrupt handler, is it used for more than just the equivalent of fences in d3d12? Stuff like that is what I'm talking about. Basically I'm wondering if driver writers for the old api's have more tools or techniques at there disposal to extract performance from the hardware than its modern lower level api replacements?What do you mean with "tools"?
As for the (d3d12) runtime, some validation still occurs, but they are a lot less then the d3d11 runtime.
Understood. I think sebbi write a good response about that. The driver of the old Driver Model had to deal with a different memory management strategy, which most of work was done by the API runtime, the driver itself should do more or less the same things but since it can receive explicitly multiple threads from the application the overhead of the driver itself is a lot lighter. Moreover as MDolenc states, there are less kernel mode calls. Though this picture is old and related to a non final version of the API, it can still give a good summary of how the driver behaves with a proper usage of the low-overhead APIs:Hmmm by tools I mean in D3D12 and Vulkan some of the responsibilities of the driver in previous API's become the responsibility of the application. So for example barriers and fences are things that D3D12 exposes to the application programmer to take on said responsibility. I'm asking if drivers for the older api's have more things of that nature? For example a driver for d3d11 will have a interrupt handler, is it used for more than just the equivalent of fences in d3d12? Stuff like that is what I'm talking about. Basically I'm wondering if driver writers for the old api's have more tools or techniques at there disposal to extract performance from the hardware than its modern lower level api replacements?