From: Jean-Philippe Bruyère Date: Sun, 8 Sep 2019 14:02:37 +0000 (+0200) Subject: create and import device ctor X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=cf8ae0174718d13e75a1f28b00bf54c09a43a150;p=jp%2Fvkhelpers.git create and import device ctor --- diff --git a/include/vkh.h b/include/vkh.h index a171c01..73f811f 100644 --- a/include/vkh.h +++ b/include/vkh.h @@ -28,10 +28,9 @@ extern "C" { #include +enum VmaMemoryUsage; typedef enum VmaMemoryUsage VmaMemoryUsage; -//#include "vk_mem_alloc.h" - #include #include #include @@ -71,16 +70,24 @@ VkPhysicalDevice vkh_app_select_phy (VkhApp app, VkPhysicalDeviceType prefer VkhPhyInfo* vkh_app_get_phyinfos (VkhApp app, uint32_t* count, VkSurfaceKHR surface); void vkh_app_free_phyinfos (uint32_t count, VkhPhyInfo* infos); -VkPhysicalDeviceProperties vkh_app_get_phy_properties (VkhApp app, uint32_t phyIndex); -// VkhPhy -VkhPhyInfo vkh_phyinfo_create (VkPhysicalDevice phy, VkSurfaceKHR surface); -void vkh_phyinfo_destroy (VkhPhyInfo phy); +VkPhysicalDeviceProperties vkh_app_get_phy_properties (VkhApp app, uint32_t phyIndex); + +/************* + * VkhPhy * + *************/ +VkhPhyInfo vkh_phyinfo_create (VkPhysicalDevice phy, VkSurfaceKHR surface); +void vkh_phyinfo_destroy (VkhPhyInfo phy); + +VkPhysicalDeviceProperties vkh_phyinfo_get_properties (VkhPhyInfo phy); +VkPhysicalDeviceMemoryProperties vkh_phyinfo_get_memory_properties (VkhPhyInfo phy); +uint32_t vkh_phy_info_get_graphic_queue_index(VkhPhyInfo phy); /************* * VkhDevice * *************/ -VkhDevice vkh_device_create (VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev); -void vkh_device_destroy (VkhDevice dev); +VkhDevice vkh_device_create (VkhApp app, VkhPhyInfo phyInfo, VkDeviceCreateInfo* pDevice_info); +VkhDevice vkh_device_import (VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev); +void vkh_device_destroy (VkhDevice dev); VkDebugReportCallbackEXT vkh_device_create_debug_report (VkhDevice dev, VkDebugReportFlagsEXT flags); void vkh_device_destroy_debug_report (VkhDevice dev, VkDebugReportCallbackEXT dbgReport); diff --git a/src/vkh_device.c b/src/vkh_device.c index 453532f..88c471e 100644 --- a/src/vkh_device.c +++ b/src/vkh_device.c @@ -20,6 +20,8 @@ * THE SOFTWARE. */ #include "vkh_device.h" +#include "vkh_phyinfo.h" +#include "vkh_app.h" #include "string.h" #define KNRM "\x1B[0m\x1B[40m" @@ -71,8 +73,12 @@ VKAPI_ATTR VkBool32 VKAPI_CALL messageCallback( fflush(stdout); return VK_FALSE; } - -VkhDevice vkh_device_create (VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev) { +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 vkh_device_import (VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev) { VkhDevice dev = (vkh_device_t*)malloc(sizeof(vkh_device_t)); dev->dev = vkDev; dev->phy = phy; diff --git a/src/vkh_phyinfo.c b/src/vkh_phyinfo.c index 299364a..d97a126 100644 --- a/src/vkh_phyinfo.c +++ b/src/vkh_phyinfo.c @@ -97,3 +97,12 @@ void vkh_phyinfo_destroy (VkhPhyInfo phy) { void vkh_phyinfo_select_queue (VkhPhyInfo phy, uint32_t qIndex, float* priorities) { } +VkPhysicalDeviceProperties vkh_phyinfo_get_properties (VkhPhyInfo phy) { + return phy->properties; +} +VkPhysicalDeviceMemoryProperties vkh_phyinfo_get_memory_properties (VkhPhyInfo phy) { + return phy->memProps; +} +uint32_t vkh_phy_info_get_graphic_queue_index (VkhPhyInfo phy) { + return (uint32_t)phy->gQueue; +} diff --git a/src/vkh_presenter.c b/src/vkh_presenter.c index b305c42..83cdc74 100644 --- a/src/vkh_presenter.c +++ b/src/vkh_presenter.c @@ -111,7 +111,7 @@ void vkh_presenter_build_blit_cmd (VkhPresenter r, VkImage blitSource, uint32_t uint32_t w = MIN(width, r->width), h = MIN(height, r->height); - for (int32_t i = 0; i < r->imgCount; ++i) + for (uint32_t i = 0; i < r->imgCount; ++i) { VkImage bltDstImage = r->ScBuffers[i]->image; VkCommandBuffer cb = r->cmdBuffs[i]; @@ -153,7 +153,7 @@ void _init_phy_surface(VkhPresenter r, VkFormat preferedFormat, VkPresentModeKHR VkSurfaceFormatKHR formats[count]; VK_CHECK_RESULT(vkGetPhysicalDeviceSurfaceFormatsKHR (r->dev->phy, r->surface, &count, formats)); - for (int i=0; iformat = formats[i].format; r->colorSpace = formats[i].colorSpace; @@ -167,7 +167,7 @@ void _init_phy_surface(VkhPresenter r, VkFormat preferedFormat, VkPresentModeKHR VkPresentModeKHR presentModes[count]; VK_CHECK_RESULT(vkGetPhysicalDeviceSurfacePresentModesKHR(r->dev->phy, r->surface, &count, presentModes)); r->presentMode = -1; - for (int i=0; ipresentMode = presentModes[i]; break;