Skip to content

Commit a77c152

Browse files
Simplify super-resolution initialization
1 parent e5bfc09 commit a77c152

16 files changed

+549
-900
lines changed

Graphics/SuperResolution/CMakeLists.txt

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ set(DILIGENT_DLSS_SUPPORTED FALSE CACHE INTERNAL "DLSS is not supported")
88
set(DILIGENT_DSR_SUPPORTED FALSE CACHE INTERNAL "DirectSR is not supported")
99

1010
if(PLATFORM_WIN32)
11-
set(DILIGENT_DLSS_SUPPORTED TRUE CACHE INTERNAL "DLSS is supported on Win32 platform")
12-
set(DILIGENT_DSR_SUPPORTED TRUE CACHE INTERNAL "DirectSR is supported on Win32 platform")
11+
if (D3D11_SUPPORTED OR D3D12_SUPPORTED OR VULKAN_SUPPORTED)
12+
set(DILIGENT_DLSS_SUPPORTED TRUE CACHE INTERNAL "DLSS is supported on Win32 platform")
13+
endif()
14+
if (D3D12_SUPPORTED)
15+
set(DILIGENT_DSR_SUPPORTED TRUE CACHE INTERNAL "DirectSR is supported on Win32 platform")
16+
endif()
1317
endif()
1418

1519
if(${DILIGENT_NO_DLSS})
@@ -42,12 +46,9 @@ endif()
4246

4347
set(INCLUDE
4448
include/SuperResolutionBase.hpp
45-
include/SuperResolutionFactoryBase.hpp
4649
include/SuperResolutionVariants.hpp
47-
include/DLSSProviderD3D12.hpp
48-
include/DLSSProviderD3D11.hpp
49-
include/DLSSProviderVk.hpp
50-
include/DSRProviderD3D12.hpp
50+
include/SuperResolutionProvider.hpp
51+
include/SuperResolutionProviderRegistry.hpp
5152
)
5253

5354
set(INTERFACE
@@ -58,21 +59,28 @@ set(INTERFACE
5859

5960
set(SOURCE
6061
src/SuperResolutionBase.cpp
61-
src/SuperResolutionFactoryBase.cpp
6262
src/SuperResolutionFactory.cpp
63-
src/SuperResolutionFactoryD3D12.cpp
64-
src/SuperResolutionFactoryD3D11.cpp
65-
src/SuperResolutionFactoryVk.cpp
66-
src/SuperResolutionFactoryMtl.cpp
67-
src/DLSSProviderD3D12.cpp
68-
src/DLSSProviderD3D11.cpp
69-
src/DLSSProviderVk.cpp
70-
src/DSRProviderD3D12.cpp
63+
src/SuperResolutionProviderRegistry.cpp
7164
)
7265

7366
if(DILIGENT_DLSS_SUPPORTED)
7467
list(APPEND INCLUDE include/SuperResolutionDLSS.hpp)
7568
list(APPEND SOURCE src/SuperResolutionDLSS.cpp)
69+
if (D3D11_SUPPORTED)
70+
list(APPEND SOURCE src/DLSSProviderD3D11.cpp)
71+
endif()
72+
if (D3D12_SUPPORTED)
73+
list(APPEND SOURCE src/DLSSProviderD3D12.cpp)
74+
endif()
75+
if (VULKAN_SUPPORTED)
76+
list(APPEND SOURCE src/DLSSProviderVk.cpp)
77+
endif()
78+
endif()
79+
80+
if (DILIGENT_DSR_SUPPORTED)
81+
if (D3D12_SUPPORTED)
82+
list(APPEND SOURCE src/DSRProviderD3D12.cpp)
83+
endif()
7684
endif()
7785

7886
set(DLL_SOURCE

Graphics/SuperResolution/include/DSRProviderD3D12.hpp

Lines changed: 0 additions & 60 deletions
This file was deleted.

Graphics/SuperResolution/include/SuperResolutionFactoryBase.hpp

Lines changed: 0 additions & 117 deletions
This file was deleted.

Graphics/SuperResolution/include/DLSSProviderVk.hpp renamed to Graphics/SuperResolution/include/SuperResolutionProvider.hpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,25 @@
2828

2929
#include "SuperResolutionFactory.h"
3030
#include "SuperResolution.h"
31-
#include "RefCntAutoPtr.hpp"
3231

3332
#include <vector>
3433

35-
struct NVSDK_NGX_Parameter;
36-
3734
namespace Diligent
3835
{
3936

40-
class DLSSProviderVk final
37+
class SuperResolutionProvider
4138
{
4239
public:
43-
DLSSProviderVk(IRenderDevice* pDevice);
44-
45-
~DLSSProviderVk();
46-
47-
void EnumerateVariants(std::vector<SuperResolutionInfo>& Variants);
40+
virtual ~SuperResolutionProvider()
41+
{}
4842

49-
void GetSourceSettings(const SuperResolutionSourceSettingsAttribs& Attribs, SuperResolutionSourceSettings& Settings);
43+
virtual void EnumerateVariants(std::vector<SuperResolutionInfo>& Variants) = 0;
5044

51-
void CreateSuperResolution(const SuperResolutionDesc& Desc, ISuperResolution** ppUpscaler);
45+
virtual void GetSourceSettings(const SuperResolutionSourceSettingsAttribs& Attribs,
46+
SuperResolutionSourceSettings& Settings) = 0;
5247

53-
private:
54-
RefCntAutoPtr<IRenderDevice> m_pDevice;
55-
NVSDK_NGX_Parameter* m_pNGXParams = nullptr;
48+
virtual void CreateSuperResolution(const SuperResolutionDesc& Desc,
49+
ISuperResolution** ppUpscaler) = 0;
5650
};
5751

5852
} // namespace Diligent

Graphics/SuperResolution/include/DLSSProviderD3D11.hpp renamed to Graphics/SuperResolution/include/SuperResolutionProviderRegistry.hpp

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,33 +26,39 @@
2626

2727
#pragma once
2828

29-
#include "SuperResolutionFactory.h"
30-
#include "SuperResolution.h"
31-
#include "RefCntAutoPtr.hpp"
29+
#include "SuperResolutionProvider.hpp"
3230

31+
#include <string>
32+
#include <functional>
3333
#include <vector>
34-
35-
struct NVSDK_NGX_Parameter;
34+
#include <memory>
3635

3736
namespace Diligent
3837
{
3938

40-
class DLSSProviderD3D11 final
39+
namespace SuperResolutionProviderRegistry
4140
{
42-
public:
43-
DLSSProviderD3D11(IRenderDevice* pDevice);
44-
45-
~DLSSProviderD3D11();
4641

47-
void EnumerateVariants(std::vector<SuperResolutionInfo>& Variants);
42+
struct RegistrationInfo
43+
{
44+
std::string Name;
4845

49-
void GetSourceSettings(const SuperResolutionSourceSettingsAttribs& Attribs, SuperResolutionSourceSettings& Settings);
46+
// Returns true if provider supports the given device.
47+
std::function<bool(IRenderDevice*)> SupportsDevice;
5048

51-
void CreateSuperResolution(const SuperResolutionDesc& Desc, ISuperResolution** ppUpscaler);
49+
// Creates a provider for the given device.
50+
std::function<std::unique_ptr<SuperResolutionProvider>(IRenderDevice*)> CreateProvider;
51+
};
5252

53-
private:
54-
RefCntAutoPtr<IRenderDevice> m_pDevice;
55-
NVSDK_NGX_Parameter* m_pNGXParams = nullptr;
53+
// Registers a super resolution provider.
54+
struct Registrar
55+
{
56+
Registrar(RegistrationInfo Reg);
5657
};
5758

59+
// Returns a list of registered super resolution providers.
60+
const std::vector<RegistrationInfo>& GetProviders();
61+
62+
} // namespace SuperResolutionProviderRegistry
63+
5864
} // namespace Diligent

0 commit comments

Comments
 (0)