Add a helper macro for obtaining renderdoc's handle from VkInstance

* Since other layers could wrap renderdoc has to use the dispatch table
  pointer as the unique identifier for API calls, not the VkInstance
  directly.
This commit is contained in:
baldurk
2017-10-23 13:43:38 +01:00
parent fe35c4e033
commit 9a3ece6a01
2 changed files with 10 additions and 1 deletions
+9
View File
@@ -422,6 +422,15 @@ typedef void *RENDERDOC_DevicePointer;
// This would be an HWND, GLXDrawable, etc
typedef void *RENDERDOC_WindowHandle;
// A helper macro for Vulkan, where the device handle cannot be used directly.
//
// Passing the VkInstance to this macro will return the RENDERDOC_DevicePointer to use.
//
// Specifically, the value needed is the dispatch table pointer, which sits as the first
// pointer-sized object in the memory pointed to by the VkInstance. Thus we cast to a void** and
// indirect once.
#define RENDERDOC_DEVICEPOINTER_FROM_VKINSTANCE(inst) (*((void **)(inst)))
// This sets the RenderDoc in-app overlay in the API/window pair as 'active' and it will
// respond to keypresses. Neither parameter can be NULL
typedef void(RENDERDOC_CC *pRENDERDOC_SetActiveWindow)(RENDERDOC_DevicePointer device,