UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanLLM.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VulkanLLM.h: Vulkan LLM definitions.
5=============================================================================*/
6
7#pragma once
8
10#include "VulkanConfiguration.h"
11
12#if ENABLE_LOW_LEVEL_MEM_TRACKER
13
14#if VULKAN_USE_LLM
15
16// Add custom Tags
17enum class ELLMTagVulkan : LLM_TAG_TYPE
18{
19 VulkanMisc = (LLM_TAG_TYPE)ELLMTag::PlatformTagStart,
25 VulkanShaders,
30 Count,
31};
32
34#define LLM_TRACK_VULKAN_HIGH_LEVEL_ALLOC(AllocObj, Size) { AllocObj.SetLLMTrackerID(0xDEAD | (++GVulkanLLMAllocationID << 16)); FLowLevelMemTracker::Get().OnLowLevelAlloc(ELLMTracker::Default, (void*)AllocObj.GetLLMTrackerID(), Size, (ELLMTag)ELLMTagVulkan::VulkanMisc); }
35#define LLM_TRACK_VULKAN_HIGH_LEVEL_FREE(AllocObj) { FLowLevelMemTracker::Get().OnLowLevelFree(ELLMTracker::Default, (void*)AllocObj.GetLLMTrackerID()); }
36#define LLM_TRACK_VULKAN_SPARE_MEMORY_GPU(Size) { LLM_SCOPED_PAUSE_TRACKING_WITH_ENUM_AND_AMOUNT((ELLMTag)ELLMTagVulkan::VulkanSpareMemoryGPU, Size, ELLMTracker::Default, ELLMAllocType::None); }
37
38#define LLM_TRACK_VULKAN_HIGH_LEVEL_ALLOCATION
39
40static_assert((int32)ELLMTagVulkan::Count <= (int32)ELLMTag::PlatformTagEnd, "too many ELLMTagVulkan tags");
41
42namespace VulkanLLM
43{
44 void Initialize();
45}
46
47#else // #if VULKAN_USE_LLM
48
49// Translate VulkanTag to regular Tag
50enum class ELLMTagVulkan : LLM_TAG_TYPE
51{
52 VulkanMisc = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
53 VulkanUniformBuffers = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
54 VulkanBuffers = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
55 VulkanTextures = (LLM_TAG_TYPE)ELLMTag::Textures,
56 VulkanRenderTargets = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
57 VulkanSpareMemoryGPU = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
58 VulkanShaders = (LLM_TAG_TYPE)ELLMTag::Shaders,
59 VulkanFrameTemp = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
60 VulkanStagingBuffers = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
61 VulkanDriverMemoryCPU = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
62 VulkanDriverMemoryGPU = (LLM_TAG_TYPE)ELLMTag::RHIMisc,
63 Count = (LLM_TAG_TYPE)ELLMTag::PlatformTagStart + 11,
64};
65
66#define LLM_TRACK_VULKAN_HIGH_LEVEL_ALLOC(...)
67#define LLM_TRACK_VULKAN_HIGH_LEVEL_FREE(...)
68#define LLM_TRACK_VULKAN_SPARE_MEMORY_GPU(...)
69
70#endif // #if VULKAN_USE_LLM
71
72#define LLM_SCOPE_VULKAN(Tag) LLM_SCOPE((ELLMTag)Tag)
73#define LLM_PLATFORM_SCOPE_VULKAN(Tag) LLM_PLATFORM_SCOPE((ELLMTag)Tag)
74static_assert((int32)ELLMTagVulkan::Count == (int32)ELLMTag::PlatformTagStart + 11, "There needs to be a 1 to 1 mapping between VulkanTag and Translation");
75
76#else // #if ENABLE_LOW_LEVEL_MEM_TRACKER
77
78#define LLM_SCOPE_VULKAN(...)
79#define LLM_PLATFORM_SCOPE_VULKAN(...)
80#define LLM_TRACK_VULKAN_HIGH_LEVEL_ALLOC(...)
81#define LLM_TRACK_VULKAN_HIGH_LEVEL_FREE(...)
82#define LLM_TRACK_VULKAN_SPARE_MEMORY_GPU(...)
83
84#endif // #if ENABLE_LOW_LEVEL_MEM_TRACKER
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127