Skip to content

Upflow2x 0.5.1: one-click setup, faster renders, renders out of clip folders - #26

Merged
Alitleis123 merged 47 commits into
mainfrom
release-0.5.1
Nov 10, 2026
Merged

Alitleis123 merged 47 commits into
mainfrom
release-0.5.1

Conversation

@Alitleis123

Copy link
Copy Markdown
Collaborator

Upflow2x 0.5.1: one-click setup, renders about three times faster, and renders saved out of your clip folders.

One-click install

  • New installers: Upflow2xInstaller.exe on Windows, and Upflow2xInstaller-mac.zip on a Mac, which holds one app for Apple Silicon and Intel.
  • Setup installs its own private Python. Nobody installs Python or opens a terminal.
  • The plugin goes in DaVinci Resolve's own folder, %APPDATA%\Blackmagic Design\DaVinci Resolve\Support\Upflow2x on Windows or ~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Upflow2x on a Mac. It sits beside Fusion, not in its Scripts folder, and the download can be deleted afterwards.
  • Setup isn't signed yet. The install steps walk through Windows' More info → Run anyway and macOS's Open Anyway.
  • The installer window and a new (i) at the top of the panel list what Upflow2x needs.
  • The release workflow builds both installers on their own platforms and attaches them to the release.

Faster renders

  • A 190-frame 4K render of a 1080p anime cut took 93 s and now takes 33 s on an RX 7900 XT.
  • Real-ESRGAN upscales only the drawings, here 10 frames instead of 190. Each in-between is drawn at 4K from the upscaled drawings with RIFE's own motion and blend mask. That data is added to the model's outputs when it loads, by patching its protobuf in memory.
  • Drawings come out identical, and the in-betweens measured 45 to 50 dB against the old ones.
  • The 4K warps and the frame writes run in a pool while the GPU draws the next frame. There is less CPU work around each RIFE call, and OpenCV's threads are shared between the workers.

Where renders go

  • Renders no longer go in an Upflow2x folder beside each clip. They go in an Upflow2x folder beside the project's Resolve cache folder, with a folder for each project.
  • If the project has no cache folder, or it is unplugged, read only or in OneDrive, renders go in Upflow2x\Renders in Resolve's own folder.
  • A new Save to row under Output chooses another folder through Fusion's folder dialog, still with a folder for each project. A chosen folder that can't be written stops the render with a message.
  • A render that is stopped or fails is deleted. A finished render is never deleted, because the timeline uses it.
  • Each render makes its own folder or file when it picks its name, and a video is drawn into a file of its own until it is done. Two renders at once can never overwrite or delete each other's files.
  • Renders from 0.5.0 and earlier stay where they are.

Fixes

  • A cache or output folder ending in a backslash escaped its closing quote on Windows, and the status file argument was lost, which broke progress and Stop.
  • A project named like a Windows device, such as NUL or COM1, failed on its first frame.
  • Choosing a drive root such as D:\ under Save to no longer turns into the drive-relative D:.

README and site

  • README: new requirements, the setup install steps, a manual install section with the Python limits for source ZIPs, a "Where renders go" section, the new upscale and timing details, a "Rendering is slow" troubleshooting entry, and the new release steps for the installers.
  • Home page: the specs now say Python installs automatically, and the download note says about 50 MB in all.
  • Download page: the buttons point at the installers, with new steps.
  • Help page: new Windows and Mac install steps with the security prompts, a Manual installation section, a "Where renders go" section, and updated Upscaling, Interpolate and troubleshooting text.

Testing

  • Full test suite: 840+ tests pass on Windows, with 3 platform skips. Nothing needs Resolve.
  • Real renders of a 1080p Demon Slayer cut on an RX 7900 XT, old against new: 93 s → 33 s, with frame-by-frame PSNR checks.
  • Not yet tested inside Resolve: setup on Windows and Mac, the new panel row, Fusion's folder dialog, and Stop cleanup. That happens while recording the install tutorial, before the v0.5.1 tag.

Updating from 0.5.0: the panel updates itself. Restart Resolve, and renders go to the new folders after the restart.

Alitleis123 and others added 30 commits November 10, 2026 15:48
Real-ESRGAN upscaled every output frame, so a 190-frame render ran it 190
times for 10 drawings. RIFE's own motion, its last flow and blend mask, is
now added to the model's outputs when it loads, and each in-between is drawn
at 2x by moving and mixing the upscaled drawings with it. On Hero's walk
that came within 46 dB of upscaling the network's frame.

The conversions around both networks now use OpenCV instead of numpy
transposes, and the network's input is reused between in-betweens of the
same two frames.
The 2x in-betweens were drawn on the main thread and only three threads
wrote PNGs, so on a 7900 XT the GPU sat at 20%. The 2x in-betweens are now
Futures drawn in a pool of up to eight threads, which also writes the
frames, and the network starts on the next frame meanwhile. A video still
gets its frames in order.
Renders went in an Upflow2x folder beside each clip, so they ended up
among the recordings in every folder clips came from. The panel now
passes the project's name and Resolve's cache folder, and renders go in
<cache folder's parent>/Upflow2x/<project>. Without a cache folder, or
with one on a drive that is not there, they go in Videos/Upflow2x, or
Movies on a Mac. An output_dir in the settings still wins.
Stage runs in the tests that name no output folder now render into the
Videos folder, which was the real one on the machine running them.
On a 7900 XT each call spent 83 ms on the GPU and 64 ms on the CPU around
it, on the thread that feeds the GPU. An in-between drawn at 2x now only
brings back the network's motion, not a frame nobody uses, and each
frame's planes are kept for the next call that takes the same frame.
Eight workers each spreading every remap over all 32 threads of a 5950X
slowed the thread feeding the GPU. With half the cores shared between
them, the same render took 31.6 s instead of 34.6 s.
A folder like D:\CacheClip\ escaped its own closing quote, and the next
argument, the status file, became part of it. Progress and Stop then had
nowhere to go.
Windows will not make a folder called NUL or COM1, so the render failed
on its first frame. Such a name gets an underscore in front.
The specs were only on the website. Both installers now list them before
installing anything, the (i) at the top of the panel shows them, and the
README has the full list. A test keeps every copy in line with the site.
"Older Macs need an older one" pointed at a guide the installer cannot
link to. An Intel Mac on Python 3.14 gets no AI runtime and draws no
in-betweens, so the list now says 3.13 or older for Intel and macOS 13,
and 3.12 or older for macOS 12, as the Mac guide does.
# Conflicts:
#	Installer/gui_installer.py
#	README.md
#	release/upflow2x-mac/Installer/gui_installer.py
#	release/upflow2x-mac/README.md
#	release/upflow2x-win/Installer/gui_installer.py
#	release/upflow2x-win/README.md
With no cache folder, renders went in the Videos folder, which OneDrive
can back up, uploading gigabytes of frames. They now go in Resolve's own
folder, the one its scripts are installed in, and so does a render whose
cache folder is in OneDrive.
A cache path with .. or a short 8.3 name hid that it was in OneDrive,
and a render folder that was already there but refused files skipped the
fallback, so the render failed. Paths are resolved before the check, the
check is on the folder renders go to, and a file is written there first.
# Conflicts:
#	README.md
#	release/upflow2x-mac/README.md
#	release/upflow2x-win/README.md
It never goes into Resolve, so its frames only took space, about 6 MB a
frame at 4K. A finished render is never deleted, since the timeline
points at it.
Two runs could pick the same empty folder, and one that failed then
deleted the other's finished render. The render's folder or file is now
made when its name is picked, and an existing one is never reused. A Stop
during the last status write now deletes the render too, and a delete
that fails no longer hides the Stop.
A Save to row under Output keeps Resolve's folder as the default and
opens Fusion's folder dialog to choose another, like a drive with more
space. The choice is kept in the settings. A chosen folder gets a folder
per project too, and one that cannot be written stops the render with
a message saying so, rather than saving somewhere unasked.
# Conflicts:
#	Installer/Eternal2x.lua
#	release/upflow2x-mac/Installer/Eternal2x.lua
#	release/upflow2x-win/Installer/Eternal2x.lua
OpenCV deletes a video file its encoder cannot start, which freed the
reserved name for another render of the same clip, and this run's
cleanup then deleted that one. The video is now drawn into a file named
after the run and moved onto its name when done.
Choosing D:\ kept D:, which means the folder that drive was last in, and
choosing / kept nothing, so renders went to Resolve's folder unasked.
Roots now keep their separator. Save to also ignores an index change that
picks the folder already in use, so its own refill cannot set off
another.
Setup put the plugin in an Upflow2x folder of its own in the user's app
data. It now goes in Resolve's folder beside Fusion, not in its Scripts
folder, where Resolve would list every file as a script. Renders that
fall back to Resolve's folder go in a Renders folder in it, so a project
named like one of the plugin's folders can never land among its code.
CI still ran Python 3.9, which setup now refuses, since ONNX Runtime has
no builds Upflow2x can use there. The installer test that prefers the
running Python failed on it for that reason.
A manual install, or one updated from 0.5.0, keeps the plugin folder it
was installed in, so the new setup folder isn't where its log is.
@Alitleis123
Alitleis123 merged commit a7db53e into main Nov 10, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant