Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
ComputeSystemVKImpl.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2025 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7#ifdef JPH_USE_VK
8
10
12
14class JPH_EXPORT ComputeSystemVKImpl : public ComputeSystemVKWithAllocator
15{
16public:
17 JPH_DECLARE_RTTI_VIRTUAL(JPH_EXPORT, ComputeSystemVKImpl)
18
19
20 virtual ~ComputeSystemVKImpl() override;
21
23 bool Initialize(ComputeSystemResult &outResult);
24
25protected:
27 virtual void OnInstanceCreated() { /* Do nothing */ }
28
30 virtual void GetInstanceExtensions(Array<const char *> &outExtensions) { /* Add nothing */ }
31
33 virtual void GetDeviceExtensions(Array<const char *> &outExtensions) { /* Add nothing */ }
34
36 virtual void GetEnabledFeatures(VkPhysicalDeviceFeatures2 &ioFeatures) { /* Add nothing */ }
37
39 virtual bool HasPresentSupport(VkPhysicalDevice inDevice, uint32 inQueueFamilyIndex) { return true; }
40
42 virtual VkSurfaceFormatKHR SelectFormat(VkPhysicalDevice inDevice) { return { VK_FORMAT_B8G8R8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR }; }
43
44 VkInstance mInstance = VK_NULL_HANDLE;
45#ifdef JPH_DEBUG
46 VkDebugUtilsMessengerEXT mDebugMessenger = VK_NULL_HANDLE;
47 PFN_vkDestroyDebugUtilsMessengerEXT mVkDestroyDebugUtilsMessengerEXT = nullptr;
48#endif
49 uint32 mGraphicsQueueIndex = 0;
50 uint32 mPresentQueueIndex = 0;
51 VkQueue mGraphicsQueue = VK_NULL_HANDLE;
52 VkQueue mPresentQueue = VK_NULL_HANDLE;
53 VkSurfaceFormatKHR mSelectedFormat;
54
55 PFN_vkGetInstanceProcAddr mVkGetInstanceProcAddr = nullptr;
56 PFN_vkGetDeviceProcAddr mVkGetDeviceProcAddr = nullptr;
57
58 // Pre instance functions
59 PFN_vkCreateInstance mVkCreateInstance = nullptr;
60 PFN_vkEnumerateInstanceExtensionProperties mVkEnumerateInstanceExtensionProperties = nullptr;
61 PFN_vkEnumerateInstanceLayerProperties mVkEnumerateInstanceLayerProperties = nullptr;
62
63 // Post instance functions
64 PFN_vkCreateDevice mVkCreateDevice = nullptr;
65 PFN_vkDestroyInstance mVkDestroyInstance = nullptr;
66 PFN_vkEnumerateDeviceExtensionProperties mVkEnumerateDeviceExtensionProperties = nullptr;
67 PFN_vkEnumeratePhysicalDevices mVkEnumeratePhysicalDevices = nullptr;
68 PFN_vkGetPhysicalDeviceProperties mVkGetPhysicalDeviceProperties = nullptr;
69 PFN_vkGetPhysicalDeviceQueueFamilyProperties mVkGetPhysicalDeviceQueueFamilyProperties = nullptr;
70};
71
73
74#endif // JPH_USE_VK
#define JPH_EXPORT
Definition Core.h:278
#define JPH_NAMESPACE_END
Definition Core.h:428
std::uint32_t uint32
Definition Core.h:508
#define JPH_NAMESPACE_BEGIN
Definition Core.h:422
#define JPH_DECLARE_RTTI_VIRTUAL(linkage, class_name)
Definition RTTI.h:245
Definition Array.h:36
Helper class that either contains a valid result or an error.
Definition Result.h:12