@@ -379,16 +379,46 @@ target_link_libraries(QuickView PRIVATE
379379# ============================================================================
380380# Super-Resolution Plugins (QVX)
381381# ============================================================================
382- add_library (sr_realesrgan_d3d11 SHARED plugins/sr_realesrgan_d3d11.cpp )
383- set_target_properties (sr_realesrgan_d3d11 PROPERTIES
384- SUFFIX ".qvx"
385- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR } /plugins"
386- RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR } /plugins"
387- RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR } /plugins"
388- )
389- target_include_directories (sr_realesrgan_d3d11 PRIVATE QuickView )
390- target_link_libraries (sr_realesrgan_d3d11 PRIVATE d3d11.lib d3dcompiler.lib dxgi.lib shlwapi.lib )
391- add_dependencies (QuickView sr_realesrgan_d3d11 )
382+ set (NCNN_DIR "${CMAKE_CURRENT_SOURCE_DIR } /third_party/ncnn/x64" )
383+ if (EXISTS "${NCNN_DIR} /include/ncnn" )
384+ add_library (sr_ncnn_vulkan SHARED plugins/sr/sr_ncnn_vulkan/sr_ncnn_vulkan_engine.cpp )
385+ set_target_properties (sr_ncnn_vulkan PROPERTIES
386+ SUFFIX ".qvx"
387+ MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG :Debug >:Debug >DLL"
388+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR } /plugins/sr/sr_ncnn_vulkan"
389+ RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR } /plugins/sr/sr_ncnn_vulkan"
390+ RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR } /plugins/sr/sr_ncnn_vulkan"
391+ )
392+ target_include_directories (sr_ncnn_vulkan PRIVATE
393+ QuickView
394+ "${NCNN_DIR} /include"
395+ "${NCNN_DIR} /include/ncnn"
396+ )
397+ target_link_libraries (sr_ncnn_vulkan PRIVATE
398+ d3d11.lib dxgi.lib shlwapi.lib
399+ "${NCNN_DIR} /lib/ncnn.lib"
400+ "${NCNN_DIR} /lib/glslang.lib"
401+ "${NCNN_DIR} /lib/SPIRV.lib"
402+ "${NCNN_DIR} /lib/MachineIndependent.lib"
403+ "${NCNN_DIR} /lib/OGLCompiler.lib"
404+ "${NCNN_DIR} /lib/OSDependent.lib"
405+ "${NCNN_DIR} /lib/GenericCodeGen.lib"
406+ )
407+
408+ # Sync plugin models and manifest to build directory
409+ add_custom_command (TARGET sr_ncnn_vulkan POST_BUILD
410+ COMMAND ${CMAKE_COMMAND } -E make_directory "${CMAKE_BINARY_DIR } /plugins/sr/sr_ncnn_vulkan/models"
411+ COMMAND ${CMAKE_COMMAND } -E copy_directory
412+ "${CMAKE_CURRENT_SOURCE_DIR } /plugins/sr/sr_ncnn_vulkan/models"
413+ "${CMAKE_BINARY_DIR } /plugins/sr/sr_ncnn_vulkan/models"
414+ COMMAND ${CMAKE_COMMAND } -E copy_if_different
415+ "${CMAKE_CURRENT_SOURCE_DIR } /plugins/plugins_manifest.json"
416+ "${CMAKE_BINARY_DIR } /plugins/plugins_manifest.json"
417+ COMMENT "Deploying isolated sr_ncnn_vulkan plugin assets & manifest..."
418+ )
419+
420+ add_dependencies (QuickView sr_ncnn_vulkan )
421+ endif ()
392422
393423# ============================================================================
394424# Unit Tests
@@ -424,10 +454,14 @@ add_executable(QuickViewTests
424454 QuickView/ArchiveVFS.cpp
425455 QuickView/exif.cpp
426456 QuickView/QuickViewETW.cpp
457+ QuickView/AppStrings.cpp
427458 QuickView/Plugin/PluginHost.cpp
428459 third_party/yyjson/yyjson.c
429460 QuickView/pch.cpp
430461)
462+ if (TARGET sr_ncnn_vulkan)
463+ add_dependencies (QuickViewTests sr_ncnn_vulkan )
464+ endif ()
431465target_precompile_headers (QuickViewTests PRIVATE $<$<COMPILE_LANGUAGE :CXX >:pch .h >)
432466target_link_libraries (QuickViewTests PRIVATE
433467 GTest::gtest_main
@@ -449,7 +483,6 @@ target_link_libraries(QuickViewTests PRIVATE
449483)
450484target_include_directories (QuickViewTests PRIVATE QuickView third_party/yyjson third_party/unrar-mini )
451485target_compile_definitions (QuickViewTests PRIVATE UNICODE _UNICODE )
452- add_dependencies (QuickViewTests sr_realesrgan_d3d11 )
453486add_test (NAME QuickViewTests COMMAND QuickViewTests )
454487
455488# ============================================================================
0 commit comments