about summary refs log tree commit diff
path: root/pkgs/tools/graphics/realesrgan-ncnn-vulkan
diff options
context:
space:
mode:
authortilcreator <tilcreator@tc-j.de>2021-12-28 17:51:21 +0100
committertilcreator <tilcreator@tc-j.de>2022-01-24 01:14:43 +0100
commit260bdcf048b961fa62f65673a83d46cc4756aeac (patch)
tree95b476588d83c2afb2cc7d86c73c0b633b6585c3 /pkgs/tools/graphics/realesrgan-ncnn-vulkan
parent0fbb17370399ac73eda80512f21cdf9731a46411 (diff)
realesrgan-ncnn-vulkan: init at 0.1.3.2
realesrgan-ncnn-vulkan: formating improvements

Co-authored-by: Yannik Rödel <hey@yannik.info>

realesrgan-ncnn-vulkan: patch CMakeLists.txt

Co-authored-by: Yannik Rödel <hey@yannik.info>

realesrgan-ncnn-vulkan: Add models

realesrgan-ncnn-vulkan: Fix fetchzip

realesrgan-ncnn-vulkan: fix homepage url

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>

realesrgan-ncnn-vulkan: Remove second version
Diffstat (limited to 'pkgs/tools/graphics/realesrgan-ncnn-vulkan')
-rw-r--r--pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch13
-rw-r--r--pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix65
-rw-r--r--pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch22
3 files changed, 100 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch
new file mode 100644
index 0000000000000..5ee94a917262b
--- /dev/null
+++ b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a234caa..cd9d2c5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -114,6 +114,8 @@ if(USE_SYSTEM_NCNN)
+             include("${GLSLANG_TARGET_DIR}/HLSLTargets.cmake")
+         endif()
+         include("${GLSLANG_TARGET_DIR}/glslangTargets.cmake")
++        include("${GLSLANG_TARGET_DIR}/SPIRV-Tools/SPIRV-ToolsTarget.cmake")
++        include("${GLSLANG_TARGET_DIR}/SPIRV-Tools-opt/SPIRV-Tools-optTargets.cmake")
+         include("${GLSLANG_TARGET_DIR}/SPIRVTargets.cmake")
+ 
+         if (NOT TARGET glslang OR NOT TARGET SPIRV)
diff --git a/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
new file mode 100644
index 0000000000000..d66a06b7eed2a
--- /dev/null
+++ b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchzip
+, fetchFromGitHub
+, cmake
+, spirv-headers
+, vulkan-headers
+, vulkan-loader
+, glslang
+, libgcc
+, libwebp
+, ncnn
+}:
+
+stdenv.mkDerivation rec {
+  pname = "Real-ESRGAN-ncnn-vulkan";
+  version = "0.1.3.2";
+
+  src = fetchFromGitHub {
+    owner = "xinntao";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-eLAIlOl1sUxijeVPFG+NscZGxDdtrQqVkMuxhegESHk=";
+  };
+  sourceRoot = "source/src";
+
+  models = fetchzip {
+    # Choose the newst release from https://github.com/xinntao/Real-ESRGAN/releases to update
+    url = "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.3.0/realesrgan-ncnn-vulkan-20211212-ubuntu.zip";
+    stripRoot = false;
+    sha256 = "sha256-17k6fewVEXxx7hi+vPXjHAOq4IIUHLh7WC80CwTeFKI=";
+  };
+
+  patches = [
+    ./cmakelists.patch
+    ./models_path.patch
+  ];
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_NCNN=1"
+    "-DUSE_SYSTEM_WEBP=1"
+
+    "-DGLSLANG_TARGET_DIR=${glslang}/lib/cmake"
+  ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ vulkan-headers vulkan-loader glslang libgcc libwebp ncnn ];
+
+  postPatch = ''
+    substituteInPlace main.cpp --replace REPLACE_MODELS $out/share/models
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share
+    cp realesrgan-ncnn-vulkan $out/bin/
+    cp -r ${models}/models $out/share
+  '';
+
+  meta = with lib; {
+    description = "NCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration.";
+    homepage = "https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan";
+    license = licenses.mit;
+    maintainers = with maintainers; [ tilcreator ];
+  };
+}
diff --git a/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch
new file mode 100644
index 0000000000000..43b8e4503be2c
--- /dev/null
+++ b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch
@@ -0,0 +1,22 @@
+diff --git a/main.cpp b/main.cpp
+index eb6f6c8..b230bed 100644
+--- a/main.cpp
++++ b/main.cpp
+@@ -110,7 +110,7 @@ static void print_usage()
+     fprintf(stderr, "  -o output-path       output image path (jpg/png/webp) or directory\n");
+     fprintf(stderr, "  -s scale             upscale ratio (can be 2, 4. default=4)\n");
+     fprintf(stderr, "  -t tile-size         tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu\n");
+-    fprintf(stderr, "  -m model-path        folder path to pre-trained models(default=models)\n");
++    fprintf(stderr, "  -m model-path        folder path to pre-trained models(default=REPLACE_MODELS)\n");
+     fprintf(stderr, "  -n model-name        model name (default=realesrgan-x4plus, can be realesrgan-x4plus | realesrgan-x4plus-anime | realesrnet-x4plus | RealESRGANv2-animevideo-xsx2 | RealESRGANv2-animevideo-xsx4 | RealESRGANv2-anime-xsx2 | RealESRGANv2-anime-xsx4)\n");
+     fprintf(stderr, "  -g gpu-id            gpu device to use (default=auto) can be 0,1,2 for multi-gpu\n");
+     fprintf(stderr, "  -j load:proc:save    thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu\n");
+@@ -438,7 +438,7 @@ int main(int argc, char** argv)
+     path_t outputpath;
+     int scale = 4;
+     std::vector<int> tilesize;
+-    path_t model = PATHSTR("models");
++    path_t model = PATHSTR("REPLACE_MODELS");
+     path_t modelname = PATHSTR("realesrgan-x4plus");
+     std::vector<int> gpuid;
+     int jobs_load = 1;