Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_context.hpp
Go to the documentation of this file.
1#pragma once
2#include "../foray_vkb.hpp"
3#include "../foray_vma.hpp"
4#include "../foray_vulkan.hpp"
5#include "../osi/foray_osi_declares.hpp"
8
9namespace foray::core {
10
15 struct Context
16 {
20 osi::Window* Window = nullptr;
22 vkb::Instance* VkbInstance = nullptr;
24 vkb::PhysicalDevice* VkbPhysicalDevice = nullptr;
26 vkb::Device* VkbDevice = nullptr;
28 vkb::DispatchTable* VkbDispatchTable = nullptr;
30 vkb::Swapchain* Swapchain = nullptr;
32 std::vector<SwapchainImageInfo> SwapchainImages = {};
34 VmaAllocator Allocator = nullptr;
36 VkQueue Queue = nullptr;
38 uint32_t QueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
40 VkCommandPool CommandPool = nullptr;
42 VkPipelineCache PipelineCache = nullptr;
47
48 inline operator VkInstance() const { return VkbInstance->instance; }
49 inline operator VkPhysicalDevice() const { return VkbPhysicalDevice->physical_device; }
50 inline operator VkDevice() const { return VkbDevice->device; }
51 inline operator VkQueue() const { return Queue; }
52
53 inline VkInstance Instance() const { return VkbInstance->instance; }
54 inline VkPhysicalDevice PhysicalDevice() const { return VkbPhysicalDevice->physical_device; }
55 inline VkDevice Device() const { return VkbDevice->device; }
56
57 inline VkExtent2D GetSwapchainSize() const { return Swapchain->extent; }
58 };
59} // namespace foray::core
Provides sampler objects based on VkSamplerCreateInfo specifications.
Definition foray_samplercollection.hpp:100
Shader manager maintains a structure of shader compilations.
Definition foray_shadermanager.hpp:32
Class of which a single instance needs to be present for interaction with the operating system via SD...
Definition foray_osmanager.hpp:10
Window class. Provides access to common properties of operating system level windows.
Definition foray_window.hpp:15
Definition foray_commandbuffer.hpp:6
Non owning context object.
Definition foray_context.hpp:16
SamplerCollection * SamplerCol
Sampler Collection.
Definition foray_context.hpp:44
VmaAllocator Allocator
Vma Allocator.
Definition foray_context.hpp:34
std::vector< SwapchainImageInfo > SwapchainImages
Swapchain image infos (VkImage, VkImageView, Name, ...)
Definition foray_context.hpp:32
VkPipelineCache PipelineCache
Pipeline Cache.
Definition foray_context.hpp:42
vkb::Device * VkbDevice
A Vkb Device.
Definition foray_context.hpp:26
VkPhysicalDevice PhysicalDevice() const
Definition foray_context.hpp:54
vkb::PhysicalDevice * VkbPhysicalDevice
A Vkb PhysicalDevice.
Definition foray_context.hpp:24
osi::Window * Window
A window.
Definition foray_context.hpp:20
uint32_t QueueFamilyIndex
Queue Family Index.
Definition foray_context.hpp:38
vkb::Swapchain * Swapchain
A Vkb Swapchain.
Definition foray_context.hpp:30
VkQueue Queue
Queue (in default setups used for all commands)
Definition foray_context.hpp:36
vkb::Instance * VkbInstance
A Vkb Instance.
Definition foray_context.hpp:22
vkb::DispatchTable * VkbDispatchTable
A Vkb DispatchTable.
Definition foray_context.hpp:28
VkCommandPool CommandPool
Command Pool.
Definition foray_context.hpp:40
ShaderManager * ShaderMan
Shader Manager.
Definition foray_context.hpp:46
VkExtent2D GetSwapchainSize() const
Definition foray_context.hpp:57
VkInstance Instance() const
Definition foray_context.hpp:53
osi::OsManager * OsManager
The OsManager can be used to access windows, events, input devices.
Definition foray_context.hpp:18
VkDevice Device() const
Definition foray_context.hpp:55