From: Jean-Philippe Bruyère Date: Tue, 30 Nov 2021 15:40:59 +0000 (+0100) Subject: store VkhApp in VkhDevice X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=b15e2e52f6eb74e72f31391dbcf007a9e5ce3815;p=jp%2Fvkhelpers.git store VkhApp in VkhDevice --- diff --git a/include/vkh.h b/include/vkh.h index b559dbe..4b97df9 100644 --- a/include/vkh.h +++ b/include/vkh.h @@ -108,6 +108,12 @@ void vkh_device_destroy (VkhDevice dev); void vkh_device_init_debug_utils (VkhDevice dev); VkDevice vkh_device_get_vkdev(VkhDevice dev); VkPhysicalDevice vkh_device_get_phy (VkhDevice dev); +/** + * @brief Retrieve @ref VkhApp instance used to create this VkhDevice. + * @param dev + * @return the VkhApp instace used to create the VkhDevice. + */ +VkhApp vkh_device_get_app (VkhDevice dev); void vkh_device_set_object_name (VkhDevice dev, VkObjectType objectType, uint64_t handle, const char *name); diff --git a/src/vkh_device.c b/src/vkh_device.c index 606f312..c01ecda 100644 --- a/src/vkh_device.c +++ b/src/vkh_device.c @@ -35,10 +35,12 @@ static PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT; VkhDevice vkh_device_create (VkhApp app, VkhPhyInfo phyInfo, VkDeviceCreateInfo* pDevice_info){ VkDevice dev; VK_CHECK_RESULT(vkCreateDevice (phyInfo->phy, pDevice_info, NULL, &dev)); - return vkh_device_import(app->inst, phyInfo->phy, dev); + VkhDevice vkhd = vkh_device_import(app->inst, phyInfo->phy, dev); + vkhd->vkhApplication = app; + return vkhd; } VkhDevice vkh_device_import (VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev) { - VkhDevice dev = (vkh_device_t*)malloc(sizeof(vkh_device_t)); + VkhDevice dev = (vkh_device_t*)calloc(1,sizeof(vkh_device_t)); dev->dev = vkDev; dev->phy = phy; dev->instance = inst; @@ -59,17 +61,20 @@ VkDevice vkh_device_get_vkdev (VkhDevice dev) { VkPhysicalDevice vkh_device_get_phy (VkhDevice dev) { return dev->phy; } +VkhApp vkh_device_get_app (VkhDevice dev) { + return dev->vkhApplication; +} /** * @brief get instance proc addresses for debug utils (name, label,...) * @param vkh device */ void vkh_device_init_debug_utils (VkhDevice dev) { - SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vkGetInstanceProcAddr(dev->instance, "vkSetDebugUtilsObjectNameEXT"); - QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkQueueBeginDebugUtilsLabelEXT"); - QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkQueueEndDebugUtilsLabelEXT"); - CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdBeginDebugUtilsLabelEXT"); - CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdEndDebugUtilsLabelEXT"); - CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdInsertDebugUtilsLabelEXT"); + SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr(dev->instance, "vkSetDebugUtilsObjectNameEXT"); + QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT) vkGetInstanceProcAddr(dev->instance, "vkQueueBeginDebugUtilsLabelEXT"); + QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT) vkGetInstanceProcAddr(dev->instance, "vkQueueEndDebugUtilsLabelEXT"); + CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT) vkGetInstanceProcAddr(dev->instance, "vkCmdBeginDebugUtilsLabelEXT"); + CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT) vkGetInstanceProcAddr(dev->instance, "vkCmdEndDebugUtilsLabelEXT"); + CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT) vkGetInstanceProcAddr(dev->instance, "vkCmdInsertDebugUtilsLabelEXT"); } VkSampler vkh_device_create_sampler (VkhDevice dev, VkFilter magFilter, VkFilter minFilter, VkSamplerMipmapMode mipmapMode, VkSamplerAddressMode addressMode){ diff --git a/src/vkh_device.h b/src/vkh_device.h index 5054c40..41de6aa 100644 --- a/src/vkh_device.h +++ b/src/vkh_device.h @@ -35,6 +35,7 @@ typedef struct _vkh_device_t{ VkPhysicalDevice phy; VmaAllocator allocator; VkInstance instance; + VkhApp vkhApplication; }vkh_device_t; #ifdef __cplusplus