You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#JIRA UCS-1831 [FYI] luke.bermingham, marco.anastasi #rb aidan.possemiers #ROBOMERGE-AUTHOR: nick.pace #ROBOMERGE-SOURCE: CL 17920208 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v885-17909292) [CL 17922580 by nick pace in ue5-release-engine-test branch]
55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "Modules/ModuleManager.h"
|
|
|
|
#include "VulkanRHIPrivate.h"
|
|
#include "VulkanRHIBridge.h"
|
|
|
|
#include "DynamicRHI.h"
|
|
|
|
#include "NVENC_Common.h"
|
|
#include "NVENC_EncoderH264.h"
|
|
#include "VideoEncoderFactory.h"
|
|
|
|
#include "Misc/CoreDelegates.h"
|
|
|
|
class FNVENCEncoderModule : public IModuleInterface
|
|
{
|
|
public:
|
|
void StartupModule()
|
|
{
|
|
using namespace AVEncoder;
|
|
if(FApp::CanEverRender())
|
|
{
|
|
FNVENCCommon& NVENC = FNVENCCommon::Setup();
|
|
|
|
if (NVENC.GetIsAvailable())
|
|
{
|
|
#if PLATFORM_WINDOWS
|
|
const TCHAR* DynamicRHIModuleName = GetSelectedDynamicRHIModuleName(false);
|
|
#elif PLATFORM_LINUX
|
|
const TCHAR* DynamicRHIModuleName = TEXT("VulkanRHI");
|
|
#endif
|
|
|
|
if(FString("VulkanRHI") == FString(DynamicRHIModuleName))
|
|
{
|
|
#if PLATFORM_WINDOWS
|
|
const TArray<const ANSICHAR*> ExtentionsToAdd{ VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME };
|
|
#elif PLATFORM_LINUX
|
|
const TArray<const ANSICHAR*> ExtentionsToAdd{ VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME };
|
|
#endif
|
|
VulkanRHIBridge::AddEnabledDeviceExtensionsAndLayers(ExtentionsToAdd, TArray<const ANSICHAR*>());
|
|
}
|
|
|
|
#if PLATFORM_LINUX
|
|
FModuleManager::LoadModuleChecked<FCUDAModule>("CUDA").OnPostCUDAInit.AddLambda([]() {FVideoEncoderNVENC_H264::Register(FVideoEncoderFactory::Get());});
|
|
#else
|
|
FCoreDelegates::OnPostEngineInit.AddLambda([]() {FVideoEncoderNVENC_H264::Register(FVideoEncoderFactory::Get());});
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
IMPLEMENT_MODULE(FNVENCEncoderModule, EncoderNVENC);
|