Does anyone know how to get FSR to work with UE 5.8?

I created an empty C++ project, added the 5.7.0 plugin to its Plugins folder, opened its visual studio project and ran the build process, but that fails with errors. Is this just not compatible at all? Do we have to wait on AMD to release a new plugin?

Still having no luck. I’ve got my project working with Visual Studio 2026, but all attempts to compile the FSR plugin result in the following.

Plugin 'FSR' failed to load because module 'FFXFSRSettings' could not be found.  Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project.

Does anyone have any suggestions here? I’ve already tried moving it to the Plugins/Markplace folder of the engine as well. It outputs the same error.

Ok, rebuilt the entire project from within Visual Studio 2026 and extracted the compile log. Looks like there’s a lot more to it. Plugin itself seams to need several code fixes to be compatible with 5.8. Below is the log.

6>  [10/67] Compile Resource [x64] Default.rc2
6>  [11/67] Compile [x64] SharedPCH.UnrealEd.Project.ValApi.ValExpApi.Cpp20.cpp
6>  [12/67] Compile [x64] SharedPCH.UnrealEd.Cpp20.cpp
6>  [13/67] Compile [x64] Module.FFXShared.cpp
6>  [14/67] Compile [x64] FFXSharedModule.cpp
6>  [15/67] Compile [x64] Module.FFXFrameInterpolationApi.cpp
6>  [16/67] Compile [x64] FFXFrameInterpolationApiModule.cpp
6>  [17/67] Compile [x64] Module.FFXFSRSettings.cpp
6>  [18/67] Compile [x64] FFXFSRSettings.cpp
6>  [19/67] Link [x64] UnrealEditor-FFXFSRSettings.lib
6>  [20/67] Compile [x64] FFXFrameInterpolationApi.cpp
6>  [21/67] Compile [x64] FFXSharedBackend.cpp
6>  [22/67] Compile [x64] FFXShared.cpp
6>  [23/67] Link [x64] UnrealEditor-FFXFrameInterpolationApi.lib
6>  [24/67] Link [x64] UnrealEditor-FFXShared.lib
6>  [25/67] Compile [x64] FFXFSRModule.cpp
6>  [26/67] Compile [x64] Module.FFXFSRApi.cpp
6>  [27/67] Compile [x64] FFXOpticalFlowApiModule.cpp
6>  [28/67] Compile [x64] Module.FFXOpticalFlowApi.cpp
6>  [29/67] Link [x64] UnrealEditor-FFXShared.dll
6>  [30/67] Compile [x64] FFXFSR.cpp
6>  [31/67] Link [x64] UnrealEditor-FFXFSRApi.lib
6>  [32/67] Compile [x64] FFXOpticalFlowApi.cpp
6>  [33/67] Link [x64] UnrealEditor-FFXOpticalFlowApi.lib
6>  [34/67] Compile [x64] Module.FFXD3D12.cpp
6>  [35/67] Compile [x64] FFXD3D12Module.cpp
6>  [36/67] Link [x64] UnrealEditor-FFXFSRApi.dll
6>  [37/67] Compile [x64] PerModuleInline.gen.cpp
6>  [38/67] Compile [x64] PluginCompiler.cpp
6>  [39/67] Link [x64] UnrealEditor-FFXOpticalFlowApi.dll
6>  [40/67] Link [x64] UnrealEditor-PluginCompiler.lib
6>  [41/67] Link [x64] UnrealEditor-FFXFSRSettings.dll
6>  [42/67] Link [x64] UnrealEditor-FFXFrameInterpolationApi.dll
6>  [43/67] Link [x64] UnrealEditor-PluginCompiler.dll
6>  [44/67] Compile [x64] FFXD3D12Includes.cpp
6>  [45/67] Link [x64] UnrealEditor-FFXD3D12.lib
6>  [46/67] Link [x64] UnrealEditor-FFXD3D12.dll
6>  [47/67] Compile [x64] FFXFrameInterpolation.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXShared\Public\FFXSlateApplicationBase.h(27,1): fatal error C1083: Cannot open include file: 'FSlateApplicationVersions/FSlateApplication_5_8_0.h': No such file or directory
6>  #include FFX_BUILD_VERSIONED_INCLUDE_PATH(SlateApplication)
6>  ^
6>  [48/67] Compile [x64] Module.FFXD3D12Backend.cpp
6>  [49/67] Compile [x64] Module.FFXFSRTemporalUpscaling.cpp
6>  [50/67] Compile [x64] FFXD3D12Backend.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(190,113): warning C4996: 'FThreadSafeRefCountedObject': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  class DECLSPEC_UUID("51A371DA-9961-438C-8121-E267F4307830") FFXD3D12SwapChain : public IDXGISwapChain4, private FThreadSafeRefCountedObject
6>                                                                                                                  ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(197,2): warning C4996: 'FThreadSafeRefCountedObject::~FThreadSafeRefCountedObject': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  	{
6>  	^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(200,2): warning C4996: 'FThreadSafeRefCountedObject::~FThreadSafeRefCountedObject': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  	{
6>  	^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(254,21): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return GetRefCount();
6>  		                  ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(262,46): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FThreadSafeRefCountedObject::Release();
6>  		                                           ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(477,60): error C3861: 'message': identifier not found
6>  		const FString FFXSDKBinPath = FPaths::Combine(PluginDir, TEXT(PREPROCESSOR_TO_STRING(FSR_FFXSDK_BIN_PATH)));
6>  		                                                         ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(477,60): error C3861: 'L__pragma': identifier not found
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(477,60): error C2143: syntax error: missing ')' before 'string'
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(477,60): error C2143: syntax error: missing ';' before 'string'
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(477,109): error C2059: syntax error: ')'
6>  		const FString FFXSDKBinPath = FPaths::Combine(PluginDir, TEXT(PREPROCESSOR_TO_STRING(FSR_FFXSDK_BIN_PATH)));
6>  		                                                                                                          ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(841,10): warning C4996: 'FThreadSafeRefCountedObject': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  	private FThreadSafeRefCountedObject
6>  	        ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(853,2): warning C4996: 'FThreadSafeRefCountedObject::~FThreadSafeRefCountedObject': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  	{
6>  	^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(868,2): warning C4996: 'FThreadSafeRefCountedObject::~FThreadSafeRefCountedObject': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  	{
6>  	^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(1015,18): warning C4996: 'ERHIZBuffer': ERHIZBuffer is being removed as the assumption of using an Inverted Z buffer is so ingrained that it could not reasonably be changed. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  			Flags |= bool(ERHIZBuffer::IsInverted) ? FFX_FRAMEINTERPOLATION_ENABLE_DEPTH_INVERTED : 0;
6>  			              ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(1015,31): warning C4996: 'ERHIZBuffer': ERHIZBuffer is being removed as the assumption of using an Inverted Z buffer is so ingrained that it could not reasonably be changed. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  			Flags |= bool(ERHIZBuffer::IsInverted) ? FFX_FRAMEINTERPOLATION_ENABLE_DEPTH_INVERTED : 0;
6>  			                           ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\RHI\Public\RHIDefinitions.h(285,168): note: see declaration of 'ERHIZBuffer'
6>  enum class UE_DEPRECATED(5.8, "ERHIZBuffer is being removed as the assumption of using an Inverted Z buffer is so ingrained that it could not reasonably be changed.") ERHIZBuffer
6>                                                                                                                                                                         ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(1240,18): warning C4996: 'ERHIZBuffer': ERHIZBuffer is being removed as the assumption of using an Inverted Z buffer is so ingrained that it could not reasonably be changed. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  			Flags |= bool(ERHIZBuffer::IsInverted) ? FFX_FRAMEINTERPOLATION_ENABLE_DEPTH_INVERTED : 0;
6>  			              ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(1240,31): warning C4996: 'ERHIZBuffer': ERHIZBuffer is being removed as the assumption of using an Inverted Z buffer is so ingrained that it could not reasonably be changed. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  			Flags |= bool(ERHIZBuffer::IsInverted) ? FFX_FRAMEINTERPOLATION_ENABLE_DEPTH_INVERTED : 0;
6>  			                           ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\RHI\Public\RHIDefinitions.h(285,168): note: see declaration of 'ERHIZBuffer'
6>  enum class UE_DEPRECATED(5.8, "ERHIZBuffer is being removed as the assumption of using an Inverted Z buffer is so ingrained that it could not reasonably be changed.") ERHIZBuffer
6>                                                                                                                                                                         ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(1328,21): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return GetRefCount();
6>  		                  ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXD3D12Backend\Private\FFXD3D12Backend.cpp(1336,46): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FThreadSafeRefCountedObject::Release();
6>  		                                           ^
6>  [51/67] Compile [x64] FFXFrameInterpolationSlate.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXShared\Public\FFXSlateApplicationBase.h(27,1): fatal error C1083: Cannot open include file: 'FSlateApplicationVersions/FSlateApplication_5_8_0.h': No such file or directory
6>  #include FFX_BUILD_VERSIONED_INCLUDE_PATH(SlateApplication)
6>  ^
6>  [52/67] Compile [x64] FFXFrameInterpolationCustomPresent.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXFrameInterpolation\Private\FFXFrameInterpolationCustomPresent.h(154,7): error C3668: 'FFXFrameInterpolationCustomPresent::Present': method with override specifier 'override' did not override any base class methods
6>  	bool Present(IRHICommandContext& RHICmdContext, int32& InOutSyncInterval) override final;
6>  	     ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFrameInterpolation\Private\FFXFrameInterpolationCustomPresent.h(154,7): warning C4263: 'bool FFXFrameInterpolationCustomPresent::Present(IRHICommandContext &,int32 &)': member function does not override any base class virtual member function
6>PROJECT_PATH\Plugins\FSR\Source\FFXFrameInterpolation\Private\FFXFrameInterpolationCustomPresent.h(80,7): warning C4264: 'bool FRHICustomPresent::Present(FRHIViewport *,IRHICommandContext &,int32 &)': no override available for virtual member function from base 'FRHICustomPresent'; function is hidden
6>  class FFXFrameInterpolationCustomPresent : public IFFXFrameInterpolationCustomPresent
6>        ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\RHI\Public\RHIResources.h(4394,15): note: see declaration of 'FRHICustomPresent::Present'
6>  	virtual bool Present(FRHIViewport* Viewport, IRHICommandContext& RHICmdContext, int32& InOutSyncInterval) { check(false); return true; };
6>  	             ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\RHI\Public\RHIResources.h(4365,7): note: see declaration of 'FRHICustomPresent'
6>  class FRHICustomPresent : public FRHIResource
6>        ^
6>  [53/67] Compile [x64] FFXFSRTemporalUpscaling.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(112,75): warning C4996: 'FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  class FFXFSRTemporalUpscalerHistory final : public IFFXFSRHistory, public FRefCountBase
6>                                                                            ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(137,25): error C2555: 'FFXFSRTemporalUpscalerHistory::AddRef': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::AddRef'
6>  	FReturnedRefCountValue AddRef() const final
6>  	                       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(108,15): note: see declaration of 'IRefCountedObject::AddRef'
6>  	virtual void AddRef() const = 0;
6>  	             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(142,9): error C2555: 'FFXFSRTemporalUpscalerHistory::Release': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::Release'
6>  	uint32 Release() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(110,33): note: see declaration of 'IRefCountedObject::Release'
6>  	virtual FReturnedRefCountValue Release() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(147,9): error C2555: 'FFXFSRTemporalUpscalerHistory::GetRefCount': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::GetRefCount'
6>  	uint32 GetRefCount() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(112,33): note: see declaration of 'IRefCountedObject::GetRefCount'
6>  	virtual FReturnedRefCountValue GetRefCount() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): error C2440: 'return': cannot convert from 'void' to 'FReturnedRefCountValue'
6>  		return FRefCountBase::AddRef();
6>  		^
6>  PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): note: Expressions of type void cannot be converted to other types
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(144,32): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::Release();
6>  		                             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(149,36): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::GetRefCount();
6>  		                                 ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscaler.h(258,32): error C2079: 'FFXFSRTemporalUpscaler::PostInputs' uses undefined struct 'FPostProcessingInputs'
6>  	mutable FPostProcessingInputs PostInputs;
6>  	                              ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscaling.cpp(56,18): warning C4996: 'FCoreDelegates::OnPostEngineInit': OnPostEngineInit has been deprecated. Please use GetOnPostEngineInit() instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  	FCoreDelegates::OnPostEngineInit.AddRaw(this, &FFXFSRTemporalUpscalingModule::OnPostEngineInit);
6>  	                ^
6>  [54/67] Compile [x64] FFXFSRTemporalUpscalerHistory.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(112,75): warning C4996: 'FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  class FFXFSRTemporalUpscalerHistory final : public IFFXFSRHistory, public FRefCountBase
6>                                                                            ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(137,25): error C2555: 'FFXFSRTemporalUpscalerHistory::AddRef': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::AddRef'
6>  	FReturnedRefCountValue AddRef() const final
6>  	                       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(108,15): note: see declaration of 'IRefCountedObject::AddRef'
6>  	virtual void AddRef() const = 0;
6>  	             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(142,9): error C2555: 'FFXFSRTemporalUpscalerHistory::Release': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::Release'
6>  	uint32 Release() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(110,33): note: see declaration of 'IRefCountedObject::Release'
6>  	virtual FReturnedRefCountValue Release() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(147,9): error C2555: 'FFXFSRTemporalUpscalerHistory::GetRefCount': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::GetRefCount'
6>  	uint32 GetRefCount() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(112,33): note: see declaration of 'IRefCountedObject::GetRefCount'
6>  	virtual FReturnedRefCountValue GetRefCount() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): error C2440: 'return': cannot convert from 'void' to 'FReturnedRefCountValue'
6>  		return FRefCountBase::AddRef();
6>  		^
6>  PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): note: Expressions of type void cannot be converted to other types
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(144,32): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::Release();
6>  		                             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(149,36): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::GetRefCount();
6>  		                                 ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscaler.h(258,32): error C2079: 'FFXFSRTemporalUpscaler::PostInputs' uses undefined struct 'FPostProcessingInputs'
6>  	mutable FPostProcessingInputs PostInputs;
6>  	                              ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.cpp(39,1): warning C4996: 'FRefCountBase::~FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  {
6>  ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.cpp(47,1): warning C4996: 'FRefCountBase::~FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  {
6>  ^
6>  [55/67] Compile [x64] FFXFSRTemporalUpscalerProxy.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(112,75): warning C4996: 'FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  class FFXFSRTemporalUpscalerHistory final : public IFFXFSRHistory, public FRefCountBase
6>                                                                            ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(137,25): error C2555: 'FFXFSRTemporalUpscalerHistory::AddRef': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::AddRef'
6>  	FReturnedRefCountValue AddRef() const final
6>  	                       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(108,15): note: see declaration of 'IRefCountedObject::AddRef'
6>  	virtual void AddRef() const = 0;
6>  	             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(142,9): error C2555: 'FFXFSRTemporalUpscalerHistory::Release': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::Release'
6>  	uint32 Release() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(110,33): note: see declaration of 'IRefCountedObject::Release'
6>  	virtual FReturnedRefCountValue Release() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(147,9): error C2555: 'FFXFSRTemporalUpscalerHistory::GetRefCount': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::GetRefCount'
6>  	uint32 GetRefCount() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(112,33): note: see declaration of 'IRefCountedObject::GetRefCount'
6>  	virtual FReturnedRefCountValue GetRefCount() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): error C2440: 'return': cannot convert from 'void' to 'FReturnedRefCountValue'
6>  		return FRefCountBase::AddRef();
6>  		^
6>  PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): note: Expressions of type void cannot be converted to other types
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(144,32): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::Release();
6>  		                             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(149,36): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::GetRefCount();
6>  		                                 ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscaler.h(258,32): error C2079: 'FFXFSRTemporalUpscaler::PostInputs' uses undefined struct 'FPostProcessingInputs'
6>  	mutable FPostProcessingInputs PostInputs;
6>  	                              ^
6>  [56/67] Compile [x64] FFXFSRTemporalUpscaler.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(112,75): warning C4996: 'FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  class FFXFSRTemporalUpscalerHistory final : public IFFXFSRHistory, public FRefCountBase
6>                                                                            ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(137,25): error C2555: 'FFXFSRTemporalUpscalerHistory::AddRef': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::AddRef'
6>  	FReturnedRefCountValue AddRef() const final
6>  	                       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(108,15): note: see declaration of 'IRefCountedObject::AddRef'
6>  	virtual void AddRef() const = 0;
6>  	             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(142,9): error C2555: 'FFXFSRTemporalUpscalerHistory::Release': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::Release'
6>  	uint32 Release() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(110,33): note: see declaration of 'IRefCountedObject::Release'
6>  	virtual FReturnedRefCountValue Release() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(147,9): error C2555: 'FFXFSRTemporalUpscalerHistory::GetRefCount': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::GetRefCount'
6>  	uint32 GetRefCount() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(112,33): note: see declaration of 'IRefCountedObject::GetRefCount'
6>  	virtual FReturnedRefCountValue GetRefCount() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): error C2440: 'return': cannot convert from 'void' to 'FReturnedRefCountValue'
6>  		return FRefCountBase::AddRef();
6>  		^
6>  PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): note: Expressions of type void cannot be converted to other types
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(144,32): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::Release();
6>  		                             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(149,36): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::GetRefCount();
6>  		                                 ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscaler.h(258,32): error C2079: 'FFXFSRTemporalUpscaler::PostInputs' uses undefined struct 'FPostProcessingInputs'
6>  	mutable FPostProcessingInputs PostInputs;
6>  	                              ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXShared\Public\FFXRDGBuilderBase.h(31,1): fatal error C1083: Cannot open include file: 'FRDGBuilderVersions/FRDGBuilder_5_8_0.h': No such file or directory
6>  #include FFX_BUILD_VERSIONED_INCLUDE_PATH(RDGBuilder)
6>  ^
6>  [57/67] Compile [x64] FFXFrameInterpolationModule.cpp
6>  [58/67] Compile [x64] Module.FFXFrameInterpolation.cpp
6>  [59/67] Compile [x64] FFXFSRViewExtension.cpp
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(112,75): warning C4996: 'FRefCountBase': `FRefCountedObject` is now thread-safe so use that instead. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  class FFXFSRTemporalUpscalerHistory final : public IFFXFSRHistory, public FRefCountBase
6>                                                                            ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(137,25): error C2555: 'FFXFSRTemporalUpscalerHistory::AddRef': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::AddRef'
6>  	FReturnedRefCountValue AddRef() const final
6>  	                       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(108,15): note: see declaration of 'IRefCountedObject::AddRef'
6>  	virtual void AddRef() const = 0;
6>  	             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(142,9): error C2555: 'FFXFSRTemporalUpscalerHistory::Release': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::Release'
6>  	uint32 Release() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(110,33): note: see declaration of 'IRefCountedObject::Release'
6>  	virtual FReturnedRefCountValue Release() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(147,9): error C2555: 'FFXFSRTemporalUpscalerHistory::GetRefCount': overriding virtual function return type differs and is not covariant from 'IRefCountedObject::GetRefCount'
6>  	uint32 GetRefCount() const final
6>  	       ^
6>  UNREAL_ENGINE_PATH\Engine\Source\Runtime\Core\Public\Templates\RefCounting.h(112,33): note: see declaration of 'IRefCountedObject::GetRefCount'
6>  	virtual FReturnedRefCountValue GetRefCount() const = 0;
6>  	                               ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): error C2440: 'return': cannot convert from 'void' to 'FReturnedRefCountValue'
6>  		return FRefCountBase::AddRef();
6>  		^
6>  PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(139,3): note: Expressions of type void cannot be converted to other types
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(144,32): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::Release();
6>  		                             ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscalerHistory.h(149,36): warning C4996: 'FReturnedRefCountValue::operator uint32': Inspecting an object's refcount is deprecated. - Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
6>  		return FRefCountBase::GetRefCount();
6>  		                                 ^
6>PROJECT_PATH\Plugins\FSR\Source\FFXFSRTemporalUpscaling\Private\FFXFSRTemporalUpscaler.h(258,32): error C2079: 'FFXFSRTemporalUpscaler::PostInputs' uses undefined struct 'FPostProcessingInputs'
6>  	mutable FPostProcessingInputs PostInputs;
6>  	                              ^
6>  [60/67] Compile [x64] FFXFrameInterpolationViewExtension.cpp

May give fixing some of this a try, but it at least explains why AMD is taking forever to update the plugin. DLSS and XeSS have already released UE5.8 plugins.

Hello there @Krileon!

Indeed, the FSR plugin won’t work with 5.8, at least for the moment, as AMD as yet to release an update for the component:

Manual fixing would be possible, but we are talking about a big chung of custom C++ code. I would suggest waiting for the official update instead, which can be checked on their site:

For the moment, the alternatives are to stay on 5.7, or work with 5.8 using UE’s own TSR:

Thanks ChatGPT.

I’m aware of all of that. That’s pretty obvious from my topic. I’m opening discussion here to try and fix this without having to wait months for AMD to do something about it.

Got a chunk of the compile errors fixed, but I just don’t know enough about these APIs to fix the rest. Will try some more if time permits, but for now am just going to exclude FSR. Someone at Epic should really put some pressure on AMD. Last time it took them months for compatibility.

I successfully compiled FSR in Unreal 5.8. It required quite a lot of modifications. Especially with the IDXGISwapchainProvider in Unreal 5.8, it caused quite a lot of problems and I had to make many modifications to the plugin. But I still managed to complete it. Now it can serve as a temporary solution. If AMD releases a new version in the future, I suggest using the official AMD plugin. https://drive.google.com/file/d/1foAEkL7Z3ilbpcJAB5BKWodOv3YdzulM/view?usp=drive_link

AMD consistently fails to keep up with the updates of Unreal Engine, and the internal documentation is also very confusing. I don’t know what they’re doing

Thanks for sharing!

Yeah, it’s pretty crazy that it takes AMD months to update their plugin. Luckily I still got a few months before release so I’ve just put it on the back burner for now. Already have DLSS and XeSS plugins working great though.

Hey thanks for that but file is not accessible on Google Drive, you need to allow public share

Hi QXNY, I requested access to the files, would be extremely thankfull for sharing!

My problem, now solved

Now it’s accessible.

Thank you very much!

If anyone is reading this, they’ve just released the 5.8 version. AMD FSR Unreal Engine plugin guide - AMD GPUOpen

Haven’t tested it yet, but it’s the official version.

Update: Builds successfully and works ok.

FSR 4.1.1 seems to now be out, though also seems to be bugged.

Had an invisible mouse when starting in editor viewport, in addition to the following when compiling:

1>Module.FFXD3D12Backend.cpp.obj : error LNK2019: unresolved external symbol ffxCreateContext referenced in function "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxCreateContext(void * *,struct ffxApiHeader *)" (?ffxCreateContext@FFXD3D12Backend@@UEAAIPEAPEAXPEAUffxApiHeader@@@Z)
1>  Hint on symbols that are defined and could potentially match:
1>    "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxCreateContext(void * *,struct ffxApiHeader *)" (?ffxCreateContext@FFXD3D12Backend@@UEAAIPEAPEAXPEAUffxApiHeader@@@Z)
1>Module.FFXD3D12Backend.cpp.obj : error LNK2019: unresolved external symbol ffxDestroyContext referenced in function "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxDestroyContext(void * *)" (?ffxDestroyContext@FFXD3D12Backend@@UEAAIPEAPEAX@Z)
1>  Hint on symbols that are defined and could potentially match:
1>    "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxDestroyContext(void * *)" (?ffxDestroyContext@FFXD3D12Backend@@UEAAIPEAPEAX@Z)
1>Module.FFXD3D12Backend.cpp.obj : error LNK2019: unresolved external symbol ffxConfigure referenced in function "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxConfigure(void * *,struct ffxApiHeader const *)" (?ffxConfigure@FFXD3D12Backend@@UEAAIPEAPEAXPEBUffxApiHeader@@@Z)
1>  Hint on symbols that are defined and could potentially match:
1>    "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxConfigure(void * *,struct ffxApiHeader const *)" (?ffxConfigure@FFXD3D12Backend@@UEAAIPEAPEAXPEBUffxApiHeader@@@Z)
1>Module.FFXD3D12Backend.cpp.obj : error LNK2019: unresolved external symbol ffxQuery referenced in function "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxQuery(void * *,struct ffxApiHeader *)" (?ffxQuery@FFXD3D12Backend@@UEAAIPEAPEAXPEAUffxApiHeader@@@Z)
1>  Hint on symbols that are defined and could potentially match:
1>    "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxQuery(void * *,struct ffxApiHeader *)" (?ffxQuery@FFXD3D12Backend@@UEAAIPEAPEAXPEAUffxApiHeader@@@Z)
1>Module.FFXD3D12Backend.cpp.obj : error LNK2019: unresolved external symbol ffxDispatch referenced in function "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxDispatch(void * *,struct ffxApiHeader const *)" (?ffxDispatch@FFXD3D12Backend@@UEAAIPEAPEAXPEBUffxApiHeader@@@Z)
1>  Hint on symbols that are defined and could potentially match:
1>    "public: virtual unsigned int __cdecl FFXD3D12Backend::ffxDispatch(void * *,struct ffxApiHeader const *)" (?ffxDispatch@FFXD3D12Backend@@UEAAIPEAPEAXPEBUffxApiHeader@@@Z)
1>H:\Projects\Perforce\TempName\Plugins\FSR-580\FSR\Binaries\Win64\UnrealEditor-FFXD3D12Backend.dll : fatal error LNK1120: 5 unresolved externals

The community patch prevails QXNY! :smiley:

I tested AMD’s official plugin and didn’t encounter this issue. Could you describe it in more detail?

Sure thing!

For the mouse cursor issue, it could be related to how I tried to fix the compile issue, so I won’t go into more detail on that.

As for the other issue, it seems that regenerating the project files worked to clear that up, which is the first time I’ve had to do that for an FSR update (As normally just re-compiling would work)

Going to re-check the mouse cursor issue, I’ll update this comment shortly!

Edit: The mouse cursor issue is unfortunately still present, so I’ll provide a bit more info on that.

It’s a custom Widget with the following layout:

  • RetainerBox
    • CanvasPanel
      • CursorImage(Image with custom material)

It is assigned in both the Software Cursors settings page as the Default cursor,
and on BeginPlay for my persistent level
(Since this issue is an identical match to one I had when first upgrading to 5.8 from 5.7 where the cursor was not receiving parameter updates, which is the same issue present here)

I did also confirm the issue is isolated to FSR, since disabling the FSR plugin does allow the cursor to display and update normally.

Edit 2: After further digging, I was able to resolve this issue by reimplementing part of the FFXFrameInterpolation module from your changes (The Slate Hook changes, in addition to the logic related to FI.Enabled).

I’m unsure just how much of this was relevant towards the fix besides the Slate Hook changes,
so, I’ve attached a link to the changes made (As a GIT patch file) – also unsure if this is actually a bug with FSR, or something specific to my project so I hope it helps if it ends up being a case of the former.

Patch Link: https://drive.google.com/file/d/1ZzF-Qx3BjYyYdkznELo4I0c0OZ5ATOsA/view?usp=drive_link

Have you tried the commands in the UI Rendering section with the official plugin to see if that solves your mouse cursor problem?

Normally you wouldn’t be applying the upscaling to the UI so it shouldn’t really have any impact there. I’m thinking maybe your issue is a FSR configuration problem?

Also are you using software cursor or hardware cursor? Pretty sure hardware cursors get wonky with any kind of upscaling still.

As my previous post mentions, this is a Software cursor, not a hardware cursor.

Additionally, both the CVars for enabling FSR and Frame Interpolation were disabled, so it shouldn’t be a configuration issue. As I also mentioned, the only change was the update from QXNY’s version of 4.0.3a (Which worked fine in UE5.8.1 and 5.8.2) to the official version of 4.1.1 – no configuration settings were modified at the time of upgrading.