Vulkan APIs implementation details

Hi All,

I am trying to emulate the Vulkan API for a project. Vulkan has a lot of memory APIs like vkAllocateMemory, vkMapMemory, vkUnmapMemory etc.
Consider for example, vkAllocateMemory. One of the parameters of this API is pMemory which is a pointer to a VkDeviceMemory handle. But, VkDeviceMemory is an opaque handle to a device memory object. Where can I find information about these opaque handles and their structures?

I wanted to know the implementation details of these APIs. Also, are there any open source Vulkan drivers that can help me in this?

Thanks!

Where can I find information about these opaque handles and their structures?

If you could see through them, they wouldn’t be opaque, now would they :wink:

If you’re writing a Vulkan “emulator”, then you’re effectively writing a Vulkan implementation. This means that you define what those structures look like.

Equally importantly, Vulkan layers can add their own stuff to a handle’s data.

Also, are there any open source Vulkan drivers that can help me in this?

There are many open source Vulkan drivers. But they will only tell you what their particular structures look like.