]> O.S.I.I.S - jp/vkhelpers.git/commitdiff
store VkhApp in VkhDevice
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 30 Nov 2021 15:40:59 +0000 (16:40 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 30 Nov 2021 15:40:59 +0000 (16:40 +0100)
include/vkh.h
src/vkh_device.c
src/vkh_device.h

index b559dbe68d05be9c55d4a98c389df29148e1ac1f..4b97df950546e8ebeb3224f6ef593e644b3adc36 100644 (file)
@@ -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);
 
index 606f3122bdd41fa26ea4a128978a61ba55090e9b..c01ecda05ac50eab52ee8270108e1ccabb5ae147 100644 (file)
@@ -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){
index 5054c40489fdbcd0d104c9da1fa38746456a9736..41de6aa5adf9d9ba8d5e2f626b9d394689958a82 100644 (file)
@@ -35,6 +35,7 @@ typedef struct _vkh_device_t{
        VkPhysicalDevice                phy;
        VmaAllocator                    allocator;
        VkInstance                              instance;
+       VkhApp                                  vkhApplication;
 }vkh_device_t;
 
 #ifdef __cplusplus