Hey there, author of these benchmarks here.
First of all, I would like to point out that these tests are in no way comprehensive over both APIs. These are designed as small benchmarks simulating only part of a scene (some aspect/algorithm used like shadow mapping) and some specific synthetic scenarios like purely CPU-bound work (+ as many draw calls as you can push) with very low GPU workload. These tests doesn't even touch subjects like on-fly dynamic allocations with my custom memory manager or other aspects that must be taken care of by bigger applications.
So results of these shouldn't be taken entirely out of given above context.
Furthermore, I've added a disclaimer at the top of README file in repository that states that these tests were done using only basic features of both APIs, as testing the limits of both was not in the scope of my research. Nothing there comes even close to techniques known as AZDO and I didn't do any special optimization. I wanted to test APIs overhead and some new features (like push constants) and not the fact that with very big effort (and possibly using some vendor-specific extensions) you can achieve similar performance in both APIs.
At last, while it's nice see such comprehensive tests done on Linux, I want to add that my tests on Windows platform shows slightly different picture. While in 1st test the difference is big in favor of Vulkan (which is to be expected (!) as in it's default configuration it's entirely CPU-bound on draw calls), and the second one mainly too (as again, it revolves around many draw calls for small objects), I actually get worse performance in Vulkan and no benefit of multithreaded work there then with OpenGL version. I'd say that it might be either drivers (which means that Linux drivers sucks, as I get a lot worse performance on Linux then on Windows in this test with OpenGL API) or I might have done something wrong (though I've read code 3x now and I don't see possibilities for optimization). Also if I rig first test to use heavier objects then performance gets pretty equal between each version, with GL version being slightly faster).
So in the end - please take it with a grain of salt and please verify code to see how it's made or test it on your HW. You can get noticeable different results.
First of all, I would like to point out that these tests are in no way comprehensive over both APIs. These are designed as small benchmarks simulating only part of a scene (some aspect/algorithm used like shadow mapping) and some specific synthetic scenarios like purely CPU-bound work (+ as many draw calls as you can push) with very low GPU workload. These tests doesn't even touch subjects like on-fly dynamic allocations with my custom memory manager or other aspects that must be taken care of by bigger applications.
So results of these shouldn't be taken entirely out of given above context.
Furthermore, I've added a disclaimer at the top of README file in repository that states that these tests were done using only basic features of both APIs, as testing the limits of both was not in the scope of my research. Nothing there comes even close to techniques known as AZDO and I didn't do any special optimization. I wanted to test APIs overhead and some new features (like push constants) and not the fact that with very big effort (and possibly using some vendor-specific extensions) you can achieve similar performance in both APIs.
At last, while it's nice see such comprehensive tests done on Linux, I want to add that my tests on Windows platform shows slightly different picture. While in 1st test the difference is big in favor of Vulkan (which is to be expected (!) as in it's default configuration it's entirely CPU-bound on draw calls), and the second one mainly too (as again, it revolves around many draw calls for small objects), I actually get worse performance in Vulkan and no benefit of multithreaded work there then with OpenGL version. I'd say that it might be either drivers (which means that Linux drivers sucks, as I get a lot worse performance on Linux then on Windows in this test with OpenGL API) or I might have done something wrong (though I've read code 3x now and I don't see possibilities for optimization). Also if I rig first test to use heavier objects then performance gets pretty equal between each version, with GL version being slightly faster).
So in the end - please take it with a grain of salt and please verify code to see how it's made or test it on your HW. You can get noticeable different results.
Comment