Guest User

Untitled

a guest
Jul 20th, 2023
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 2.92 KB | None | 0 0
  1. void simple_init_test()
  2. {
  3.     import erupted;
  4.     import bindbc.sdl : SDL_Window, SDL_Vulkan_GetInstanceExtensions, SDL_Vulkan_CreateSurface;
  5.  
  6.     enforce ( loadSDL() == sdlSupport, "Failed to Load sdlStatus");
  7.     enforce ( SDL_Init(SDL_INIT_VIDEO) >= 0,  "SDL init failed" );
  8.  
  9.     import erupted.vulkan_lib_loader;
  10.     loadGlobalLevelFunctions();
  11.  
  12.     uint layercount;
  13.     SDL_Vulkan_LoadLibrary(null);
  14.     auto window = SDL_CreateWindow("subterrainian", SDL_WINDOWPOS_UNDEFINED,
  15.         SDL_WINDOWPOS_UNDEFINED, 400, 300, SDL_WINDOW_VULKAN | SDL_WINDOW_SHOWN);
  16.    
  17.     VkInstance instance = VK_NULL_HANDLE;
  18.     VkApplicationInfo app_info = {};
  19.     app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
  20.     app_info.apiVersion = VK_API_VERSION_1_3;
  21.     app_info.pApplicationName = "test-app";
  22.     app_info.applicationVersion = VK_MAKE_API_VERSION(1,0,0,0);
  23.     app_info.pEngineName = "test-engine";
  24.     app_info.engineVersion = VK_MAKE_API_VERSION(1,0,0,0);
  25.  
  26.     VkInstanceCreateInfo instance_info = {};
  27.     instance_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
  28.     instance_info.pApplicationInfo = &app_info;
  29.     instance_info.enabledLayerCount = 0;
  30.     instance_info.ppEnabledLayerNames = null;  
  31.  
  32.     uint count = 0;
  33.  
  34.     SDL_Vulkan_GetInstanceExtensions(window,&count, null);
  35.     import core.stdc.stdlib : malloc, free;
  36.     const(char) ** extensions = cast(const(char)**) malloc((char*).sizeof * count);
  37.     SDL_Vulkan_GetInstanceExtensions(window,&count, extensions);
  38.     instance_info.enabledExtensionCount = count;
  39.     instance_info.ppEnabledExtensionNames = extensions;
  40.     VkResult result = vkCreateInstance(&instance_info,null,&instance);
  41.     enforce(result == VK_SUCCESS, "failed to create instance");
  42.     loadInstanceLevelFunctions(instance);
  43.  
  44.     VkSurfaceKHR surface = VK_NULL_HANDLE;
  45.     SDL_Vulkan_CreateSurface (window, instance, &surface);
  46.     enforce(surface != null, "failed to create surface");
  47.     uint n;
  48.     vkEnumeratePhysicalDevices(instance,&n,null);
  49.     VkPhysicalDevice * devices = cast(VkPhysicalDevice*) malloc((VkPhysicalDevice*).sizeof*n);
  50.     vkEnumeratePhysicalDevices(instance,&n, devices);
  51.  
  52.     VkPhysicalDevice physicalDevice = devices[0];
  53.     float[1] priorities  = [0];
  54.    
  55.     VkDeviceQueueCreateInfo queueCreateInfo = {};
  56.     queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
  57.     queueCreateInfo.queueFamilyIndex = 0;
  58.     queueCreateInfo.queueCount = 1;
  59.     queueCreateInfo.pQueuePriorities = priorities.ptr;
  60.     queueCreateInfo.pNext = null;
  61.  
  62.     VkPhysicalDeviceFeatures deviceFeatures;
  63.  
  64.     VkDeviceCreateInfo createInfo = {};
  65.     createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
  66.     createInfo.pNext = null;
  67.     createInfo.pQueueCreateInfos = &queueCreateInfo;
  68.     createInfo.queueCreateInfoCount = 1;
  69.     createInfo.pEnabledFeatures = &deviceFeatures;
  70.     VkDevice device;
  71.     vkCreateDevice(physicalDevice,&createInfo,null,&device);
  72.     VkQueue graphicsQueue;
  73.     vkGetDeviceQueue(device,0,0,&graphicsQueue);
  74.  
  75.     while (!SDL_QuitRequested())
  76.     {
  77.  
  78.     }
  79.  
  80.     SDL_DestroyWindow(window);
  81.     SDL_Quit();
  82.  
  83.     return;
  84.  
  85. }
Advertisement
Add Comment
Please, Sign In to add comment