Files
UnrealEngine/Engine/Source/Runtime/VulkanRHI/Private/Linux/VulkanLinuxPlatform.h
2025-05-18 13:04:45 +08:00

63 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "RHI.h"
#define VULKAN_DYNAMICALLYLOADED 1
#define VULKAN_ENABLE_DUMP_LAYER 0
#define VULKAN_SHOULD_DEBUG_IN_DEVELOPMENT 1
#define VULKAN_SHOULD_ENABLE_DRAW_MARKERS (UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT)
#define VULKAN_SIGNAL_UNIMPLEMENTED() checkf(false, TEXT("Unimplemented vulkan functionality: %hs"), __PRETTY_FUNCTION__)
#define VULKAN_SUPPORTS_AMD_BUFFER_MARKER 1
#define VULKAN_SUPPORTS_SCALAR_BLOCK_LAYOUT 1
#define VULKAN_SUPPORTS_RAY_TRACING_POSITION_FETCH 1
#define UE_VK_API_VERSION VK_API_VERSION_1_1
#if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
# include "vk_enum_string_helper.h"
# define VK_TYPE_TO_STRING(Type, Value) ANSI_TO_TCHAR(string_##Type(Value))
# define VK_FLAGS_TO_STRING(Type, Value) ANSI_TO_TCHAR(string_##Type(Value).c_str())
#endif
#define ENUM_VK_ENTRYPOINTS_PLATFORM_BASE(EnumMacro)
#define ENUM_VK_ENTRYPOINTS_PLATFORM_INSTANCE(EnumMacro)
#define ENUM_VK_ENTRYPOINTS_OPTIONAL_PLATFORM_INSTANCE(EnumMacro)
// and now, include the GenericPlatform class
#include "../VulkanGenericPlatform.h"
typedef FVulkanGenericPlatformWindowContext FVulkanPlatformWindowContext;
class FVulkanLinuxPlatform : public FVulkanGenericPlatform
{
public:
static bool IsSupported();
static bool LoadVulkanLibrary();
static bool LoadVulkanInstanceFunctions(VkInstance inInstance);
static void FreeVulkanLibrary();
static void GetInstanceExtensions(FVulkanInstanceExtensionArray& OutExtensions);
static void GetInstanceLayers(TArray<const ANSICHAR*>& OutLayers) {}
static void GetDeviceExtensions(FVulkanDevice* Device, FVulkanDeviceExtensionArray& OutExtensions);
static void GetDeviceLayers(TArray<const ANSICHAR*>& OutLayers) {}
static void CreateSurface(FVulkanPlatformWindowContext& WindowContext, VkInstance Instance, VkSurfaceKHR* OutSurface);
static void WriteCrashMarker(const FOptionalVulkanDeviceExtensions& OptionalExtensions, FVulkanCommandBuffer* CmdBuffer, VkBuffer DestBuffer, const TArrayView<uint32>& Entries, bool bAdding);
static VkTimeDomainKHR GetTimeDomain() { return VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR; }
protected:
static void* VulkanLib;
static bool bLoadedSDLVulkanLibrary;
static bool bAttemptedLoad;
};
typedef FVulkanLinuxPlatform FVulkanPlatform;