Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions src/graphics/vulkan/vk_engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,25 @@ constexpr bool bUseValidationLayers = false;
constexpr bool bUseValidationLayers = true;
#endif

void VulkanEngine::Instance::init() {
vkb::InstanceBuilder builder;
auto inst_ret = builder.set_app_name("TODO: PUT APP NAME HERE")
.set_engine_name("rainsystem")
.request_validation_layers(bUseValidationLayers)
.set_debug_callback(debugCallback)
.require_api_version(1, 3, 0)
.build();
if (!inst_ret) {
LOGE("Failed to create Vulkan instance. Error: {}",
inst_ret.error().message());
}
instance = inst_ret.value();
}

VulkanEngine::Instance::~Instance() {
vkb::destroy_instance(instance);
}

VKAPI_ATTR VkBool32 VKAPI_CALL VulkanEngine::debugCallback(
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageType,
Expand Down
28 changes: 28 additions & 0 deletions src/include/graphics/vulkan/vk_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,34 @@

class VulkanEngine {
public:
struct Instance {
vkb::Instance instance;

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'VulkanEngine::Instance::instance': uses 'VulkanEngine::Instance', which is being defined

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'vkb': is not a class or namespace name

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'VulkanEngine::Instance::instance': uses 'VulkanEngine::Instance', which is being defined

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'vkb': is not a class or namespace name

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'

Check failure on line 68 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'
void init();
~Instance();
};
Instance _instance;

struct Device {
vkb::Device device;

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'VulkanEngine::Device::device': uses 'VulkanEngine::Device', which is being defined

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'vkb': is not a class or namespace name

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'VulkanEngine::Device::device': uses 'VulkanEngine::Device', which is being defined

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'vkb': is not a class or namespace name

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'

Check failure on line 75 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'
void init(const vkb::PhysicalDevice& physical_device) {

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

syntax error: missing ',' before '&'

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

missing type specifier - int assumed. Note: C++ does not support default-int

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'vkb': is not a class or namespace name

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

syntax error: missing ',' before '&'

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

missing type specifier - int assumed. Note: C++ does not support default-int

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'vkb': is not a class or namespace name

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 76 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'
const vkb::DeviceBuilder device_builder{physical_device};

Check failure on line 77 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'vkb': is not a class or namespace name

Check failure on line 77 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'vkb': is not a class or namespace name

Check failure on line 77 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 77 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'
auto dev_ret = device_builder.build();
if (!dev_ret) {
LOGE("Failed to create logical device. Error: {}",
dev_ret.error().message());
}
device = dev_ret.value();
}
~Device() {vkb::destroy_device(device);}

Check failure on line 85 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

declaration shadows a field of 'VulkanEngine::Device' [-Werror,-Wshadow]

Check failure on line 85 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

use of undeclared identifier 'vkb'

Check failure on line 85 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

declaration shadows a field of 'VulkanEngine::Device' [-Werror,-Wshadow]

Check failure on line 85 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

use of undeclared identifier 'vkb'
};
Device _device;
VkDevice getRawDevice() const { return _device.device; }
struct Allocator {
VmaAllocator _allocator{nullptr};
void init(VmaAllocatorCreateInfo info) {vmaCreateAllocator(&info, &_allocator);} // move info inside
~Allocator() {vmaDestroyAllocator(_allocator);}
};
Allocator _a; // todo: rename

Pipelines pipelines;

Expand Down Expand Up @@ -117,10 +145,10 @@
// run main loop
void update();

VkInstance _instance; // Vulkan library handle

Check failure on line 148 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'VulkanEngine::_instance': 'VkInstance' differs in levels of indirection from 'VulkanEngine::Instance'

Check failure on line 148 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'VulkanEngine::_instance': 'VkInstance' differs in levels of indirection from 'VulkanEngine::Instance'

Check failure on line 148 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

duplicate member '_instance'

Check failure on line 148 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

duplicate member '_instance'
VkDebugUtilsMessengerEXT _debug_messenger; // Vulkan debug output handle
VkPhysicalDevice _chosenGPU; // GPU chosen as the default device
VkDevice _device; // Vulkan device for commands

Check failure on line 151 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Debug)

'VulkanEngine::_device': 'VkDevice' differs in levels of indirection from 'VulkanEngine::Device'

Check failure on line 151 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on windows-latest (Release)

'VulkanEngine::_device': 'VkDevice' differs in levels of indirection from 'VulkanEngine::Device'

Check failure on line 151 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Debug)

duplicate member '_device'

Check failure on line 151 in src/include/graphics/vulkan/vk_engine.h

View workflow job for this annotation

GitHub Actions / Build on ubuntu-latest (Release)

duplicate member '_device'
VkSurfaceKHR _surface; // Vulkan window surface

VkSwapchainKHR _swapchain;
Expand Down
Loading