Advertisement
Guest User

Untitled

a guest
Jul 19th, 2023
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.85 KB | None | 0 0
  1. #include "SDL.h"
  2. #include "SDL_vulkan.h"
  3. #include <vulkan/vulkan.h>
  4.  
  5. #define WINDOW_WIDTH 800
  6. #define WINDOW_HEIGHT 600
  7.  
  8. const char * validationLayers[1] = {"VK_LAYER_KHRONOS_validiation"};
  9. #ifdef NDEBUG
  10.     const int enableValidationLayers = 0;
  11. #else
  12.     const int enableValidationLayers = 1;
  13. #endif
  14.  
  15. int checkValidationLayerSupport()
  16. {
  17.   uint32_t layerCount;
  18.   vkEnumerateInstanceLayerProperties(&layerCount, 0);
  19.   VkLayerProperties* availableLayers = malloc(sizeof(VkLayerProperties *) * layerCount);
  20.   vkEnumerateInstanceLayerProperties(&layerCount,availableLayers);
  21.   int layerFound = 0;
  22.   for (int i=0; i < layerCount; i++ )
  23.   {
  24.     VkLayerProperties  props = availableLayers[i];
  25.     if (strcmp(validationLayers[0],props.layerName) == 0)
  26.     {
  27.       layerFound = 1;
  28.       break;
  29.     }
  30.   }
  31.   if (!layerFound) return 0;
  32.   return 1;
  33. }
  34.  
  35. void createInstance()
  36. {
  37.   if (enableValidationLayers && !checkValidationLayerSupport())
  38.   {
  39.      return;
  40.   }
  41.  
  42. }
  43.  
  44. int main(int argc, char ** argv) {
  45.   /* Declare window and renderer */
  46.   SDL_Window * window;
  47.   // SDL_Renderer * renderer;
  48.  
  49.   /* Initialize SDL */
  50.   SDL_Init(SDL_INIT_EVERYTHING);
  51.   window = SDL_CreateWindow("sdlvulkan",
  52.                             SDL_WINDOWPOS_CENTERED,
  53.                             SDL_WINDOWPOS_CENTERED,
  54.                             WINDOW_WIDTH, WINDOW_HEIGHT,
  55.                             SDL_WINDOW_VULKAN | SDL_WINDOW_SHOWN);
  56.  
  57.   VkInstance instance  = VK_NULL_HANDLE;
  58.  
  59.   VkApplicationInfo app_info = { 0 };
  60.   app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
  61.   app_info.apiVersion = VK_API_VERSION_1_3;
  62.   app_info.pApplicationName = "test-app";
  63.   app_info.applicationVersion = VK_MAKE_API_VERSION(1, 0, 0, 0);
  64.   app_info.pEngineName = "test-engine";
  65.   app_info.engineVersion = VK_MAKE_API_VERSION(1, 0, 0, 0);
  66.  
  67.   VkInstanceCreateInfo instance_info = { 0 };
  68.   instance_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
  69.   instance_info.pApplicationInfo = &app_info;
  70.   instance_info.enabledLayerCount = 0;
  71.   instance_info.ppEnabledLayerNames = NULL;
  72.  
  73.   unsigned int count = 0;
  74.   SDL_Vulkan_GetInstanceExtensions(window, &count, NULL);
  75.   const char** extensions = malloc(sizeof(char*) * count);
  76.   SDL_Vulkan_GetInstanceExtensions(window, &count, extensions);
  77.   instance_info.enabledExtensionCount = count;
  78.   instance_info.ppEnabledExtensionNames = extensions;
  79.   VkResult result = vkCreateInstance(&instance_info, NULL, &instance) ;
  80.  
  81.  
  82.  
  83.   VkSurfaceKHR surface = VK_NULL_HANDLE;
  84.   SDL_Vulkan_CreateSurface(window, instance, &surface);
  85.   uint32_t n;
  86.   vkEnumeratePhysicalDevices(instance, &n, 0);
  87.   VkPhysicalDevice * devices = malloc(sizeof(VkPhysicalDevice)*n);
  88.   vkEnumeratePhysicalDevices(instance, &n, devices);
  89.  
  90.   VkPhysicalDevice physicalDevice = devices[0];
  91.   float priorities[1] = {0.0};
  92.  
  93.   VkDeviceQueueCreateInfo queueCreateInfo = {};
  94.   queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
  95.   queueCreateInfo.queueFamilyIndex = 0;
  96.   queueCreateInfo.queueCount = 1;
  97.   queueCreateInfo.pQueuePriorities = priorities;
  98.   queueCreateInfo.pNext = NULL;
  99.  
  100.   VkPhysicalDeviceFeatures deviceFeatures;
  101.  
  102.   VkDeviceCreateInfo createInfo = {};
  103.   createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
  104.   createInfo.pNext = NULL;
  105.   createInfo.pQueueCreateInfos = &queueCreateInfo;
  106.   createInfo.queueCreateInfoCount = 1;
  107.   createInfo.pEnabledFeatures = &deviceFeatures;
  108.   VkDevice device;
  109.   vkCreateDevice(physicalDevice,&createInfo,0,&device);
  110.   VkQueue graphicsQueue;
  111.   vkGetDeviceQueue(device,0,0,&graphicsQueue);
  112.  
  113.  
  114.  
  115.   while (    !SDL_QuitRequested()) {
  116.     // SD    L_RenderClear(renderer);
  117.     // /*     Place your simulation code and rendering code here */
  118.     // SDL_RenderPresent(renderer);
  119.   }
  120.  
  121.   // /* Deinitialize everything */
  122.   // SDL_DestroyRenderer(renderer);
  123.   SDL_DestroyWindow(window);
  124.    SDL_Quit();
  125.  
  126.   return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement