Vulkan Bootstrapping Iibrary
Go to file
Charles Giessen 3e7e283e3f Revised error handling to be sensible and consistent.
While more error values need to be fleshed out (one for every possible vulkan error)
it has all of the major issues handled.
2020-02-10 11:29:09 -07:00
example Revised error handling to be sensible and consistent. 2020-02-10 11:29:09 -07:00
ext Added glfw as git submodule + Catch2 2020-01-30 01:47:41 -07:00
src Revised error handling to be sensible and consistent. 2020-02-10 11:29:09 -07:00
tests Revised error handling to be sensible and consistent. 2020-02-10 11:29:09 -07:00
.clang-format modified clang format again 2020-02-06 17:42:10 -07:00
.gitignore First commit of Vk-Bootstrap 2020-01-30 01:20:18 -07:00
.gitmodules Added glfw as git submodule + Catch2 2020-01-30 01:47:41 -07:00
CMakeLists.txt moved triangle.cpp to its own folder, updated readme & license 2020-02-03 20:34:46 -07:00
LICENSE.txt moved triangle.cpp to its own folder, updated readme & license 2020-02-03 20:34:46 -07:00
README.md Wording for readme 2020-02-03 20:54:03 -07:00

Vk-Bootstrap

A Vulkan utility library meant to jump start a Vulkan Application

This library simplifies the tedious process of:

  • Instance Creation
  • Physical Device Selection
  • Device Creation
  • Getting Queues
  • Swapchain Creation

It also adds several conveniences for:

  • enabling validation layers
  • setting up a debug callback
  • selecting a gpu based on a small set of common criteria

Example


#include "VkBootstrap.h"

void device_init()
{
    vkb::InstanceBuilder builder;
    builder.setup_validation_layers()
           .set_app_name ("example")
           .set_default_debug_messenger ();
    auto inst_ret = builder.build();
    if (!inst_ret.has_value()) {
        // error
    }
    vkb::Instance inst = inst_ret.value();

    vkb::PhysicalDeviceSelector selector{ inst };
    selector.set_surface (/* from user created window*/)
            .set_minimum_version (1, 0)
            .require_dedicated_transfer_queue();
    auto phys_ret = selector.select ();
    if (!phys_ret.has_value()) {
        // error
    }
    vkb::PhysicalDevice physical_device = phys_ret.value();

    vkb::DeviceBuilder device_builder{ physical_device };
    auto dev_ret = device_builder.build ();
    if (!dev_ret.has_value()){
        // error
    }
    vkb::Device device = dev_ret.value();

    VkQueue graphics_queue = get_queue_graphics(device).value();
    VkQueue compute_queue = get_queue_compute(device).value();
    VkQueue transfer_queue = get_queue_transfer(device).value();
}

Using this library

Simple

Copy the src/VkBootstrap.h and src/VkBootstrap.cpp into your project

With git-submodule + CMake

add this project as a git-submodule

git submodule add https://github.com/charles-lunarg/vk-bootstrap

Then add the project with cmake

add_subdirectory(vk-bootstrap)

Manually Building

git clone https://github.com/charles-lunarg/vk-bootstrap
cd vk-bootstrap
mkdir build
cd build
cmake ..

To test, glfw and Catch2 are needed and automatically included using git submodules.

In the project directory, run

git submodule update --init

to get the required dependencies for testing setup.

Then return to the build directory and enable tests with VK_BOOTSTRAP_TEST

cmake ../path/to/vk-bootstrap/ -DVK_BOOTSTRAP_TEST=ON

Todo's

  • Package library to be usable
  • More examples
  • Testing
  • Documenting API
  • Fleshing out device configuration