UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanConfiguration.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VulkanConfiguration.h: Control compilation of the runtime RHI.
5=============================================================================*/
6
7// Compiled with 1.2.141.2
8
9#pragma once
10
12#include "VulkanCommon.h"
13#include "VulkanPlatform.h"
14
16
17// API version we want to target.
18#ifndef UE_VK_API_VERSION
19 #define UE_VK_API_VERSION VK_API_VERSION_1_1
20#endif
21
22// by default, we enable debugging in Development builds, unless the platform says not to
23#ifndef VULKAN_SHOULD_DEBUG_IN_DEVELOPMENT
24 #define VULKAN_SHOULD_DEBUG_IN_DEVELOPMENT 1
25#endif
26
27#ifndef VULKAN_HAS_DEBUGGING_ENABLED
28 #define VULKAN_HAS_DEBUGGING_ENABLED (!IS_PROGRAM && (UE_BUILD_DEBUG || (UE_BUILD_DEVELOPMENT && VULKAN_SHOULD_DEBUG_IN_DEVELOPMENT)))
29#endif
30
31// default value of r.Vulkan.EnableValidation
32// 0 - disable validation layers
33// 1 - enable errors
34// 2 - enable errors & warnings
35// 3 - enable errors, warnings & performance warnings
36// 4 - enable errors, warnings, performance & information messages
37// 5 - enable all messages
38#ifndef VULKAN_VALIDATION_DEFAULT_VALUE
39 #define VULKAN_VALIDATION_DEFAULT_VALUE (UE_BUILD_DEBUG ? 2 : 0)
40#endif
41
42#ifndef VULKAN_SHOULD_ENABLE_DRAW_MARKERS
43 #define VULKAN_SHOULD_ENABLE_DRAW_MARKERS 0
44#endif
45
46// Enables logging wrappers per Vulkan call
47#ifndef VULKAN_ENABLE_DUMP_LAYER
48 #define VULKAN_ENABLE_DUMP_LAYER 0
49#endif
50
51#define VULKAN_ENABLE_DRAW_MARKERS VULKAN_SHOULD_ENABLE_DRAW_MARKERS
52
53#ifndef VULKAN_ENABLE_IMAGE_TRACKING_LAYER
54 #define VULKAN_ENABLE_IMAGE_TRACKING_LAYER 0
55#endif
56
57#ifndef VULKAN_ENABLE_BUFFER_TRACKING_LAYER
58 #define VULKAN_ENABLE_BUFFER_TRACKING_LAYER 0
59#endif
60
61#define VULKAN_ENABLE_TRACKING_LAYER (VULKAN_ENABLE_BUFFER_TRACKING_LAYER || VULKAN_ENABLE_IMAGE_TRACKING_LAYER)
62#define VULKAN_ENABLE_WRAP_LAYER (VULKAN_ENABLE_DUMP_LAYER || VULKAN_ENABLE_TRACKING_LAYER)
63
64#define VULKAN_HASH_POOLS_WITH_TYPES_USAGE_ID 1
65
66#define VULKAN_SINGLE_ALLOCATION_PER_RESOURCE 0
67
68#ifndef VULKAN_SHOULD_USE_LLM
69 #define VULKAN_SHOULD_USE_LLM 0
70#endif
71
72#ifndef VULKAN_USE_LLM
73 #define VULKAN_USE_LLM ((ENABLE_LOW_LEVEL_MEM_TRACKER) && VULKAN_SHOULD_USE_LLM)
74#endif
75
76#ifndef VULKAN_CUSTOM_MEMORY_MANAGER_ENABLED
77 #define VULKAN_CUSTOM_MEMORY_MANAGER_ENABLED VULKAN_USE_LLM
78#endif
79
80#ifndef VULKAN_SHOULD_USE_COMMANDWRAPPERS
81 #define VULKAN_SHOULD_USE_COMMANDWRAPPERS VULKAN_ENABLE_WRAP_LAYER
82#endif
83
84#ifndef VULKAN_COMMANDWRAPPERS_ENABLE
85 #define VULKAN_COMMANDWRAPPERS_ENABLE VULKAN_SHOULD_USE_COMMANDWRAPPERS
86#endif
87
88#ifndef VULKAN_USE_IMAGE_ACQUIRE_FENCES
89 #define VULKAN_USE_IMAGE_ACQUIRE_FENCES 1
90#endif
91
92#define VULKAN_ENABLE_AGGRESSIVE_STATS 0
93
94#define VULKAN_REUSE_FENCES 1
95
96#ifndef VULKAN_QUERY_CALLSTACK
97 #define VULKAN_QUERY_CALLSTACK 0
98#endif
99
100#ifndef VULKAN_ENABLE_DESKTOP_HMD_SUPPORT
101 #define VULKAN_ENABLE_DESKTOP_HMD_SUPPORT 0
102#endif
103
104#ifndef VULKAN_SIGNAL_UNIMPLEMENTED
105 #define VULKAN_SIGNAL_UNIMPLEMENTED()
106#endif
107
108#ifndef VULKAN_ENABLE_LRU_CACHE
109 #define VULKAN_ENABLE_LRU_CACHE 0
110#endif
111
112#ifdef VK_EXT_validation_cache
113 #define VULKAN_SUPPORTS_VALIDATION_CACHE 1
114#else
115 #define VULKAN_SUPPORTS_VALIDATION_CACHE 0
116#endif
117
118#ifdef VK_EXT_validation_features
119 #define VULKAN_HAS_VALIDATION_FEATURES 1
120#else
121 #define VULKAN_HAS_VALIDATION_FEATURES 0
122#endif
123
124#ifndef VULKAN_SUPPORTS_DEDICATED_ALLOCATION
125 #define VULKAN_SUPPORTS_DEDICATED_ALLOCATION 1
126#endif
127
128#ifndef VULKAN_SUPPORTS_GOOGLE_DISPLAY_TIMING
129 #define VULKAN_SUPPORTS_GOOGLE_DISPLAY_TIMING 0
130#endif
131
132#ifndef VULKAN_USE_CREATE_ANDROID_SURFACE
133 #define VULKAN_USE_CREATE_ANDROID_SURFACE 0
134#endif
135
136#ifndef VULKAN_USE_CREATE_WIN32_SURFACE
137 #define VULKAN_USE_CREATE_WIN32_SURFACE 0
138#endif
139
140#ifndef VULKAN_USE_DIFFERENT_POOL_CMDBUFFERS
141 #define VULKAN_USE_DIFFERENT_POOL_CMDBUFFERS 1
142#endif
143
144#ifndef VULKAN_DELETE_STALE_CMDBUFFERS
145 #define VULKAN_DELETE_STALE_CMDBUFFERS 1
146#endif
147
148#ifndef VULKAN_SUPPORTS_SCALAR_BLOCK_LAYOUT
149 #define VULKAN_SUPPORTS_SCALAR_BLOCK_LAYOUT 1
150#endif
151
152
153#ifndef VULKAN_SUPPORTS_MEMORY_BUDGET
154 #define VULKAN_SUPPORTS_MEMORY_BUDGET 1
155#endif
156
157#ifndef VULKAN_SUPPORTS_MEMORY_PRIORITY
158 #define VULKAN_SUPPORTS_MEMORY_PRIORITY 1
159#endif
160
161#ifndef VULKAN_SUPPORTS_DRIVER_PROPERTIES
162 #define VULKAN_SUPPORTS_DRIVER_PROPERTIES 1
163#endif
164
165#ifndef VULKAN_SUPPORTS_QCOM_RENDERPASS_SHADER_RESOLVE
166 #ifdef VK_QCOM_render_pass_shader_resolve
167 #define VULKAN_SUPPORTS_QCOM_RENDERPASS_SHADER_RESOLVE 1
168 #else
169 #define VULKAN_SUPPORTS_QCOM_RENDERPASS_SHADER_RESOLVE 0
170 #endif
171#endif
172
173#ifndef VULKAN_SUPPORTS_FULLSCREEN_EXCLUSIVE
174 #ifdef VK_EXT_full_screen_exclusive
175 #define VULKAN_SUPPORTS_FULLSCREEN_EXCLUSIVE 1
176 #else
177 #define VULKAN_SUPPORTS_FULLSCREEN_EXCLUSIVE 0
178 #endif
179#endif
180
181#ifndef VULKAN_SUPPORTS_TEXTURE_COMPRESSION_ASTC_HDR
182#ifdef VK_EXT_texture_compression_astc_hdr
183#define VULKAN_SUPPORTS_TEXTURE_COMPRESSION_ASTC_HDR 1
184#else
185#define VULKAN_SUPPORTS_TEXTURE_COMPRESSION_ASTC_HDR 0
186#endif
187#endif
188
189#ifndef VULKAN_SUPPORTS_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER
190 #define VULKAN_SUPPORTS_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER 1
191#endif
192
193#ifndef VULKAN_SUPPORTS_RENDERPASS2
194 #ifdef VK_KHR_create_renderpass2
195 #define VULKAN_SUPPORTS_RENDERPASS2 1
196 #else
197 #define VULKAN_SUPPORTS_RENDERPASS2 0
198 #endif
199#endif
200
201#ifndef VULKAN_SUPPORTS_ASTC_DECODE_MODE
202 #ifdef VK_EXT_astc_decode_mode
203 #define VULKAN_SUPPORTS_ASTC_DECODE_MODE 1
204 #else
205 #define VULKAN_SUPPORTS_ASTC_DECODE_MODE 0
206 #endif
207#endif
208
209#ifdef VK_EXT_shader_viewport_index_layer
210 #define VULKAN_SUPPORTS_SHADER_VIEWPORT_INDEX_LAYER 1
211#else
212 #define VULKAN_SUPPORTS_SHADER_VIEWPORT_INDEX_LAYER 0
213#endif
214
215#ifndef VULKAN_SUPPORTS_DESCRIPTOR_INDEXING
216 #ifdef VK_EXT_descriptor_indexing
217 #define VULKAN_SUPPORTS_DESCRIPTOR_INDEXING 1
218 #else
219 #define VULKAN_SUPPORTS_DESCRIPTOR_INDEXING 0
220 #endif
221#endif
222
223#ifndef VULKAN_OBJECT_TRACKING
224#define VULKAN_OBJECT_TRACKING 0 //Track objects created and memory used. use r.vulkan.dumpmemory to dump to console
225#endif
226
228
229#if VULKAN_CUSTOM_MEMORY_MANAGER_ENABLED
230 #define VULKAN_CPU_ALLOCATOR VulkanRHI::GetMemoryAllocator(nullptr)
231#else
232 #define VULKAN_CPU_ALLOCATOR nullptr
233#endif
234
235#ifndef VULKAN_PURGE_SHADER_MODULES
236 #define VULKAN_PURGE_SHADER_MODULES 0
237#endif
238
239#ifndef VULKAN_SUPPORTS_TRANSIENT_RESOURCE_ALLOCATOR
240 #define VULKAN_SUPPORTS_TRANSIENT_RESOURCE_ALLOCATOR 1
241#endif
242
243#ifndef VK_TYPE_TO_STRING
244# define VK_TYPE_TO_STRING(Type, Value) *FString::Printf(TEXT("%u"), (uint32)Value)
245#endif
246#ifndef VK_FLAGS_TO_STRING
247# define VK_FLAGS_TO_STRING(Type, Value) *FString::Printf(TEXT("%u"), (uint32)Value)
248#endif
249
250
251namespace VulkanRHI
252{
253 static inline const VkAllocationCallbacks* GetMemoryAllocator(const VkAllocationCallbacks* Allocator)
254 {
255#if VULKAN_CUSTOM_MEMORY_MANAGER_ENABLED
258#else
259 return Allocator;
260#endif
261 }
262}
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
Definition VulkanCommandBuffer.h:22