aboutsummaryrefslogtreecommitdiff
path: root/src/platform/vulkan/vulkan_device.h
blob: 31f58426dbe40774be231f3e6dbf67d7a0c77512 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once

#include "rendering/rhi.h"

namespace Donut::RHI
{
    // Vulkan implementation of the RHI Device (MoltenVK on macOS). owns the
    // instance/device/swapchain and translates the RHI's baked pipelines +
    // recorded command lists into native Vulkan; the geometry it draws is the
    // shared SceneRenderer / BlackHoleRenderer, identical to every other backend.
    auto create_vulkan_device() -> Scope<Device>;

    // must run BEFORE glfwInit() when Vulkan is the selected API: points GLFW at
    // the loader the app links against (its own dlopen fails on macOS/Homebrew)
    // and configures the MoltenVK ICD / layer paths.
    auto vulkan_prepare_glfw() -> void;

    // whether a Vulkan loader exists on this machine at all. on windows vulkan-1.dll
    // is delay-loaded, so this has to say yes before any vk* call; true elsewhere.
    auto vulkan_runtime_available() -> bool;
}