No, it wouldn’t. First, Vulkan does exactly zero validity checks. When you do something wrong in OpenGL, you get an error telling you that the command failed. Vulkan doesn’t do that; if you do something wrong, without validation layers telling you otherwise, you could get all kinds of problems, up to and including GPU resets.
Second, the costs associated with submitting command buffers are intended to be as minimal as possible. Not trivial, but nothing like OpenGL’s overhead. In the best case, all the submit call has to do is to write a few tokens into the GPU’s command queue, pointing to where to look for command data. That data having already been assembled into the form the GPU can read from directly.
In less perfect cases, any fix-up to the command buffer data would just be resolving a few GPU pointers or somesuch. If CB data needs to be copied into command queue memory or something, then the copy can happen with a fast copy or DMA. And so forth.
There are many more optimal ways to submit commands when you are the driver than when you’re living outside of the driver. That’s why the driver is responsible for translating your vkCmd*
functions into GPU-readable tokens, and then shoving those GPU-readable tokens into the GPU’s command queue.