Files
UnrealEngineUWP/Engine/Plugins/Media/HardwareEncoders/Source/EncoderNVENC/Private/NVENC_EncoderModule.cpp
nick pace 65bfcfd2e7 Integrate Dev-TensorWorks PixelStreaming/AVEncoder changes into Main
#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]
2021-10-26 09:13:01 -04:00

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);