How the binary from the Pipeline Cache is generated?


I was trying to get the binary of a shader, which runs on my GPU. I managed to get it from the pipeline cache (using VkPipelineCache and vkGetPipelineCacheData) and I exported it to a file. Now, I want to find more information on how this binary is generated.

My questions are:

  • What kind of binary is it?
  • What is the format of the binary? (size of headers etc…)
  • Does the Vulkan driver generate the binary itself, or maybe does it use the Nvidia’s compiler/drivers?
  • Does it follow the Nvidia ISA? At some point It should, because at the end of the day it will execute on the GPU, however the question is whether at that level (pipeline cache) a translation to the target device ISA has been performed.

Let me mention that I am running Vulkan 1.1.97 on a GeForce GT 740M (418.56 drivers).

Thanks in advance!

It’s all implementation-dependent. It’s just a binary blob which the driver can spit out and you can later reconstitute into something useful.