aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2019-09-08 16:02:37 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2019-09-08 16:02:37 +0200
commitcf8ae0174718d13e75a1f28b00bf54c09a43a150 (patch)
treef5e7ee1872e592c467774612411fff7f40aea43c
parentdd13cd6f6dcf94420f0919a2ca2837739cb46ea1 (diff)
create and import device ctor
-rw-r--r--include/vkh.h23
-rw-r--r--src/vkh_device.c10
-rw-r--r--src/vkh_phyinfo.c9
-rw-r--r--src/vkh_presenter.c6
4 files changed, 35 insertions, 13 deletions
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 <vulkan/vulkan.h>
+enum VmaMemoryUsage;
typedef enum VmaMemoryUsage VmaMemoryUsage;
-//#include "vk_mem_alloc.h"
-
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
@@ -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; i<count; i++){
+ for (uint i=0; i<count; i++){
if (formats[i].format == preferedFormat) {
r->format = 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; i<count; i++){
+ for (uint i=0; i<count; i++){
if (presentModes[i] == presentMode) {
r->presentMode = presentModes[i];
break;