UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanAndroidPlatform.cpp File Reference

Classes

struct  GraphicsPipelineCreateInfo
 
struct  FVKRemoteProgramCompileJNI
 

Namespaces

namespace  AndroidVulkan
 
namespace  AndroidVulkanService
 

Macros

#define INSTANCE_EXT_FLAG_SETTER(FLAG_NAME)   [](FOptionalVulkanInstanceExtensions& ExtensionFlags) { ExtensionFlags.FLAG_NAME = 1; }
 
#define DEFINE_VK_ENTRYPOINTS(Type, Func)   Type VulkanDynamicAPI::Func = NULL;
 
#define VULKAN_MALI_LAYER_NAME   "VK_LAYER_ARM_AGA"
 
#define CHECK_VK_ENTRYPOINTS(Type, Func)   if (VulkanDynamicAPI::Func == NULL) { bFoundAllEntryPoints = false; UE_LOG(LogRHI, Warning, TEXT("Failed to find entry point for %s"), TEXT(#Func)); }
 
#define GET_VK_ENTRYPOINTS(Type, Func)   VulkanDynamicAPI::Func = (Type)dlsym(VulkanLib, #Func);
 
#define GETINSTANCE_VK_ENTRYPOINTS(Type, Func)   VulkanDynamicAPI::Func = (Type)VulkanDynamicAPI::vkGetInstanceProcAddr(inInstance, #Func);
 
#define CLEAR_VK_ENTRYPOINTS(Type, Func)   VulkanDynamicAPI::Func = nullptr;
 
#define COPY_TO_BUFFER(Dst, Src, Size)    Dst.Append((const char*)Src, Size);
 
#define CHECK_JNI_EXCEPTIONS(env)   if (env->ExceptionCheck()) {env->ExceptionDescribe();env->ExceptionClear();}
 

Functions

bool IsInAndroidEventThread ()
 
void CharArrayToBuffer (const TArray< const ANSICHAR * > &CharArray, TArray< char > &MemoryStream)
 
void GetVKStructsFromPNext (const void *InNext, TMap< VkStructureType, const void * > &VkStructs, const TArray< VkStructureType > &ValidTypes)
 
void HandleGraphicsPipelineCreatePNext (const VkGraphicsPipelineCreateInfo *PipelineCreateInfo, TArray< char > &MemoryStream)
 
void HandlePipelineShaderStagePNext (const VkPipelineShaderStageCreateInfo *CreateInfo, TArray< char > &MemoryStream)
 
void HandleSubpassDescriptionPNext (VkSubpassDescription2 *SubpassDescription, TArray< char > &MemoryStream)
 
void HandleDepthStencilAttachmentPNext (const VkAttachmentReference2 *Attachment, TArray< char > &MemoryStream)
 
void PipelineToBinary (FVulkanDevice *Device, const VkGraphicsPipelineCreateInfo *PipelineInfo, const FGfxPipelineDesc *GfxEntry, const FVulkanRenderTargetLayout *RTLayout, TArray< char > &MemoryStream)
 

Variables

int32 GVulkanCPURenderThreadFramePacer
 
int32 GPrintVulkanVsyncDebug
 
int32 GVulkanExtensionFramePacer = 1
 
std::atomic< boolAndroidVulkanService::GRemoteCompileServicesStarted = false
 
std::atomic< boolAndroidVulkanService::GRemoteCompileServicesActive = false
 
std::atomic< boolAndroidVulkanService::bOneTimeErrorEncountered = false
 
std::atomic< int > AndroidVulkanService::TotalErrors = 0
 
struct FVKRemoteProgramCompileJNI VKRemoteProgramCompileJNI
 

Macro Definition Documentation

◆ CHECK_JNI_EXCEPTIONS

#define CHECK_JNI_EXCEPTIONS (   env)    if (env->ExceptionCheck()) {env->ExceptionDescribe();env->ExceptionClear();}

◆ CHECK_VK_ENTRYPOINTS

#define CHECK_VK_ENTRYPOINTS (   Type,
  Func 
)    if (VulkanDynamicAPI::Func == NULL) { bFoundAllEntryPoints = false; UE_LOG(LogRHI, Warning, TEXT("Failed to find entry point for %s"), TEXT(#Func)); }

◆ CLEAR_VK_ENTRYPOINTS

#define CLEAR_VK_ENTRYPOINTS (   Type,
  Func 
)    VulkanDynamicAPI::Func = nullptr;

◆ COPY_TO_BUFFER

#define COPY_TO_BUFFER (   Dst,
  Src,
  Size 
)     Dst.Append((const char*)Src, Size);

◆ DEFINE_VK_ENTRYPOINTS

#define DEFINE_VK_ENTRYPOINTS (   Type,
  Func 
)    Type VulkanDynamicAPI::Func = NULL;

◆ GET_VK_ENTRYPOINTS

#define GET_VK_ENTRYPOINTS (   Type,
  Func 
)    VulkanDynamicAPI::Func = (Type)dlsym(VulkanLib, #Func);

◆ GETINSTANCE_VK_ENTRYPOINTS

#define GETINSTANCE_VK_ENTRYPOINTS (   Type,
  Func 
)    VulkanDynamicAPI::Func = (Type)VulkanDynamicAPI::vkGetInstanceProcAddr(inInstance, #Func);

◆ INSTANCE_EXT_FLAG_SETTER

#define INSTANCE_EXT_FLAG_SETTER (   FLAG_NAME)    [](FOptionalVulkanInstanceExtensions& ExtensionFlags) { ExtensionFlags.FLAG_NAME = 1; }

◆ VULKAN_MALI_LAYER_NAME

#define VULKAN_MALI_LAYER_NAME   "VK_LAYER_ARM_AGA"

Function Documentation

◆ CharArrayToBuffer()

void CharArrayToBuffer ( const TArray< const ANSICHAR * > &  CharArray,
TArray< char > &  MemoryStream 
)

◆ GetVKStructsFromPNext()

void GetVKStructsFromPNext ( const void InNext,
TMap< VkStructureType, const void * > &  VkStructs,
const TArray< VkStructureType > &  ValidTypes 
)

◆ HandleDepthStencilAttachmentPNext()

void HandleDepthStencilAttachmentPNext ( const VkAttachmentReference2 *  Attachment,
TArray< char > &  MemoryStream 
)

◆ HandleGraphicsPipelineCreatePNext()

void HandleGraphicsPipelineCreatePNext ( const VkGraphicsPipelineCreateInfo PipelineCreateInfo,
TArray< char > &  MemoryStream 
)

◆ HandlePipelineShaderStagePNext()

void HandlePipelineShaderStagePNext ( const VkPipelineShaderStageCreateInfo CreateInfo,
TArray< char > &  MemoryStream 
)

◆ HandleSubpassDescriptionPNext()

void HandleSubpassDescriptionPNext ( VkSubpassDescription2 *  SubpassDescription,
TArray< char > &  MemoryStream 
)

◆ IsInAndroidEventThread()

bool IsInAndroidEventThread ( )
extern

◆ PipelineToBinary()

void PipelineToBinary ( FVulkanDevice Device,
const VkGraphicsPipelineCreateInfo PipelineInfo,
const FGfxPipelineDesc GfxEntry,
const FVulkanRenderTargetLayout RTLayout,
TArray< char > &  MemoryStream 
)

Variable Documentation

◆ GPrintVulkanVsyncDebug

int32 GPrintVulkanVsyncDebug
extern

◆ GVulkanCPURenderThreadFramePacer

int32 GVulkanCPURenderThreadFramePacer
extern

◆ GVulkanExtensionFramePacer

int32 GVulkanExtensionFramePacer = 1

◆ VKRemoteProgramCompileJNI

struct FVKRemoteProgramCompileJNI VKRemoteProgramCompileJNI