#include <vulkan/vulkan.h>
+enum VmaMemoryUsage;
typedef enum VmaMemoryUsage VmaMemoryUsage;
-//#include "vk_mem_alloc.h"
-
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
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);
* THE SOFTWARE.
*/
#include "vkh_device.h"
+#include "vkh_phyinfo.h"
+#include "vkh_app.h"
#include "string.h"
#define KNRM "\x1B[0m\x1B[40m"
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;
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;
+}
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];
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;
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;