summaryrefslogtreecommitdiff
path: root/src/graphics.cc
blob: 94a637f69d6f525e6a9baa1db11793e145712979 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "graphics.h"

#include <cstring>

#include "utils.h"

enum graphics_error_e wayc_graphics_init(struct graphics_s* graphics) {
  wayc_notnull(graphics);
  memset(graphics, 0, sizeof(*graphics));

  VkApplicationInfo appinfo = {};
  appinfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
  appinfo.apiVersion = VK_API_VERSION_1_3;

  VkInstanceCreateInfo createinfo = {};
  createinfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
  createinfo.pApplicationInfo = &appinfo;

  VkResult result = vkCreateInstance(&createinfo, nullptr, &graphics->instance);
  if (result != VK_SUCCESS) return GRAPHICS_ERROR_INSTANCE;

  graphics->instance = VK_NULL_HANDLE;
  return GRAPHICS_ERROR_NONE;
}

void wayc_graphics_deinit(struct graphics_s* graphics) {
  wayc_notnull(graphics);

  if (graphics->instance == nullptr) return;
  vkDestroyInstance(graphics->instance, nullptr);
}