Răsfoiți Sursa

- Complete NGX/DLSS initialization, everything working now.

Sergio Alapont 3 ani în urmă
părinte
comite
479719c86a

+ 11 - 0
AnKi/Gr/CMakeLists.txt

@@ -29,6 +29,7 @@ set(common_headers
 	Texture.h
 	TextureView.h
 	TimestampQuery.h
+	DLSSCtx.h
 	Utils/FrameGpuAllocator.h
 	Utils/Functions.h
 	Utils/InstantiationMacros.h)
@@ -138,3 +139,13 @@ target_link_libraries(AnKiGrCommon AnKiUtil) # Only depend on Util
 add_library(AnKiGr ${backend_sources} ${backend_headers})
 target_compile_definitions(AnKiGr PRIVATE -DANKI_SOURCE_FILE)
 target_link_libraries(AnKiGr AnKiCore AnKiSpirvCross AnKiGrCommon)
+
+# Copy required DLLs
+if(DLSS_SUPPORT)
+	get_target_property(ANKINGX_DLL AnkiNgx IMPORTED_LOCATION)
+	add_custom_command(TARGET AnKiGr
+	COMMENT "Dependant DLLs copy ${ANKINGX_DLL} ${CMAKE_BINARY_DIR}/Bin"
+	COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ANKINGX_DLL}" "${CMAKE_BINARY_DIR}/Bin")
+	STRING(REGEX REPLACE "\\\\" "/" ANKINGX_DLL ${ANKINGX_DLL})
+	install(FILES ${ANKINGX_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif()

+ 3 - 0
AnKi/Gr/Vulkan/Common.h

@@ -88,6 +88,9 @@ enum class VulkanExtensions : U32
 	KHR_FRAGMENT_SHADING_RATE = 1 << 24,
 	EXT_ASTC_DECODE_MODE = 1 << 25,
 	EXT_TEXTURE_COMPRESSION_ASTC_HDR = 1 << 26,
+	NVX_BINARY_IMPORT = 1<<27,
+	NVX_IMAGE_VIEW_HANDLE = 1<<28,
+	KHR_PUSH_DESCRIPTOR = 1<<29
 };
 ANKI_ENUM_ALLOW_NUMERIC_OPERATIONS(VulkanExtensions)
 

+ 6 - 0
AnKi/Gr/Vulkan/DLSSCtxImpl.cpp

@@ -73,6 +73,12 @@ Error DLSSCtxImpl::init(const DLSSCtxInitInfo& init)
         return Error::FUNCTION_FAILED;
     }
 
+    const char** instanceExt(nullptr);
+	const char** deviceExt(nullptr);
+	U32 instanceExtCount(0);
+	U32 deviceExtCount(0);
+	NVSDK_NGX_Result queryExtResult = NVSDK_NGX_VULKAN_RequiredExtensions(&instanceExtCount, &instanceExt, &deviceExtCount, &deviceExt);
+
     // Currently, the SDK and this sample are not in sync.  The sample is a bit forward looking,
     // in this case.  This will likely be resolved very shortly, and therefore, the code below
     // should be thought of as needed for a smooth user experience.

+ 18 - 0
AnKi/Gr/Vulkan/GrManagerImpl.cpp

@@ -15,6 +15,9 @@
 
 namespace anki {
 
+// DLSS related
+#define ANKI_VK_NVX_BINARY_IMPORT "VK_NVX_binary_import"
+
 GrManagerImpl::~GrManagerImpl()
 {
 	ANKI_VK_LOGI("Destroying Vulkan backend");
@@ -771,6 +774,21 @@ Error GrManagerImpl::initDevice(const GrManagerInitInfo& init)
 				m_extensions |= VulkanExtensions::EXT_TEXTURE_COMPRESSION_ASTC_HDR;
 				extensionsToEnable[extensionsToEnableCount++] = extensionName.cstr();
 			}
+			else if(extensionName == ANKI_VK_NVX_BINARY_IMPORT)
+			{
+				m_extensions |= VulkanExtensions::NVX_BINARY_IMPORT;
+				extensionsToEnable[extensionsToEnableCount++] = extensionName.cstr();
+			}
+			else if(extensionName == VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME)
+			{
+				m_extensions |= VulkanExtensions::NVX_IMAGE_VIEW_HANDLE;
+				extensionsToEnable[extensionsToEnableCount++] = extensionName.cstr();
+			}
+			else if(extensionName == VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME)
+			{
+				m_extensions |= VulkanExtensions::KHR_PUSH_DESCRIPTOR;
+				extensionsToEnable[extensionsToEnableCount++] = extensionName.cstr();
+			}
 		}
 
 		ANKI_VK_LOGI("Will enable the following device extensions:");

+ 1 - 1
AnKi/Renderer/CMakeLists.txt

@@ -2,4 +2,4 @@ file(GLOB_RECURSE sources *.cpp)
 file(GLOB_RECURSE headers *.h)
 add_library(AnKiRenderer ${sources} ${headers})
 target_compile_definitions(AnKiRenderer PRIVATE -DANKI_SOURCE_FILE)
-target_link_libraries(AnKiRenderer AnKiGr AnKiResource AnKiUi)
+target_link_libraries(AnKiRenderer AnKiGr AnKiResource AnKiUi)

+ 3 - 6
ThirdParty/nvngx_dlss_sdk/CMakeLists.txt

@@ -18,11 +18,8 @@ if (WIN32)
     MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
     )
 
-    # TODO: It seems this component should be configured as STATIC rather than SHARED
-    #       and IMPORTED_LOCATION point to the actual SDK static library that applications
-    #       will link against
-    set_target_properties(AnkiNgx PROPERTIES IMPORTED_LOCATION "${NGX_SDK_ROOT}/lib/Windows_x86_64/$<IF:$<CONFIG:Debug>,dev,rel>/nvngx_dlss.dll")
-
+    # TODO: DO NOT USE/PUSH THE DEV DLLs 
+    set_target_properties(AnkiNgx PROPERTIES IMPORTED_LOCATION "${NGX_SDK_ROOT}/lib/Windows_x86_64/dev/nvngx_dlss.dll")
 else ()
     add_library(AnkiNgx IMPORTED STATIC GLOBAL)
 
@@ -38,4 +35,4 @@ endif()
 
 set_property(TARGET AnkiNgx APPEND PROPERTY EXTRA_DLLS "${__NGX_DLLS_LIST}")
 
-target_include_directories(AnkiNgx INTERFACE ./include)
+target_include_directories(AnkiNgx INTERFACE ${NGX_SDK_ROOT}/include)