flathub / org.blender.Blender

https://flathub.org/apps/details/org.blender.Blender
19 stars 26 forks source link

OptiX denoiser creation has failed #146

Open heschy2 opened 1 year ago

heschy2 commented 1 year ago

First of all, I already reported this at blender.org: https://projects.blender.org/blender/blender/issues/110298

The problem ist, that I cant use any OptiX functionality: the denoiser is not denoising and if I switch to Optix in Preferences > System, Cycles (in gpu-mode) even refuses to render, giving me the Error Message: "OptiX denoiser creation has failed".

Terminal Example:

heschy@gamingc:~$ flatpak run org.blender.Blender
Read prefs: "/home/heschy/.var/app/org.blender.Blender/config/blender/3.6/config/userpref.blend"
Failed to open dir (No such file or directory): /run/user/1000/gvfs/
Failed to create OptiX denoiser

Refer to the Cycles GPU rendering documentation for possible solutions:
https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html

E0720 13:08:36.520218    75 denoiser_optix.cpp:279] OptiX denoiser creation has failed.

This error is only in the Flatpak-version of blender, and if I use the exact same version (3.6.1) but downloaded from blender.org, anything works fine.

For more information see: https://projects.blender.org/blender/blender/issues/110298

kevinsmia1939 commented 1 year ago

Could be sandboxing issue, does running with flatpak run --device=all org.blender.Blender solve the issue?

heschy2 commented 1 year ago

No, it does not solve the issue:

heschy@gamingpc:~$ flatpak run --device=all org.blender.Blender
Read prefs: "/home/heschy/.var/app/org.blender.Blender/config/blender/3.6/config/userpref.blend"
Read blend: "/home/heschy/Dokumente/Blender/optixdoesnotwork.blend"
Failed to create OptiX denoiser

Refer to the Cycles GPU rendering documentation for possible solutions:
https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html

E0720 19:14:47.227938    70 denoiser_optix.cpp:279] OptiX denoiser creation has failed.

In Flatseal, the application got the following permissions:

The Environment Variables for the Flatpak are:

TMP=/tmp
TMP_DIR=/tmp
SPNAV_SOCKET=/run/spnav.sock

I hope this helps

kevinsmia1939 commented 1 year ago

Running Blender with --verbose 5 does not give much info from what I can tell either. I don't have a clue.

0:13:23.962348   160 path_trace.cpp:408] Rendered 1 samples in 0.000915051 seconds (0.000915051 seconds per sample), occupancy: 0.0013455
I0720 20:13:23.962360   160 render_scheduler.cpp:504] Measured path tracing occupancy: 0.0013455
I0720 20:13:23.962370   160 render_scheduler.cpp:497] Average path tracing time: 0.0603638 seconds.
I0720 20:13:23.962380   160 path_trace.cpp:536] Perform denoising work.
I0720 20:13:23.962412   160 device.cpp:676] Buffer allocate: denoiser guiding passes buffer, 112,464 bytes. (109.83K) in device memory
I0720 20:13:23.962443   160 device_impl.cpp:80] using cuda device "NVIDIA GeForce GTX 1650 Ti" (7.5), buffers: fp16, xmma/xmma-jit convolution, rt v12020
I0720 20:13:23.962455   160 device_impl.cpp:80] using cuda device "NVIDIA GeForce GTX 1650 Ti" (7.5), buffers: fp16, xmma/xmma-jit convolution, rt v12020
E0720 20:13:23.962525   160 device_impl.cpp:74] Unable to load denoiser weights
Failed to create OptiX denoiser

Refer to the Cycles GPU rendering documentation for possible solutions:
https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html

E0720 20:13:23.962545   160 denoiser_optix.cpp:279] OptiX denoiser creation has failed.
I0720 20:13:23.962563   160 render_scheduler.cpp:545] Average denoising time: 0.0112 seconds.
I0720 20:13:23.962574   160 path_trace.cpp:648] Perform copy to GPUDisplay work.
I0720 20:13:23.981179   160 render_scheduler.cpp:564] Average display update time: 1.1902 seconds.
I0720 20:13:24.072180   116 display_driver.cpp:807] Display driver number of textures: 1
I0720 20:13:24.072203   116 display_driver.cpp:808] Display driver number of PBOs: 1
RustyNova016 commented 1 year ago

Same issue here. I suspect it's Nvidia's 535's driver being buggy again. Could you post your inxi -G to confirm? Also try using drivers 325 to see if it fixes things

Here's mine for reference. Graphics: Device-1: NVIDIA GA104M [GeForce RTX 3070 Mobile / Max-Q] driver: nvidia v: 535.86.05 Device-2: AMD Cezanne driver: amdgpu v: kernel Display: x11 server: X.Org v: 1.21.1.4 driver: X: loaded: amdgpu,ati,nvidia unloaded: fbdev,modesetting,nouveau,vesa gpu: amdgpu resolution: 1: 1920x550~60Hz 2: 2560x1440~144Hz 3: 1920x1080~300Hz OpenGL: renderer: RENOIR (renoir LLVM 15.0.7 DRM 3.42 5.15.0-78-generic) v: 4.6 Mesa 23.0.4-0ubuntu1~22.04.1

RustyNova016 commented 1 year ago

Also try using Steam Edition to rule out if it's flatpack or not. For me this is definitively a flatpack/nvidia 535.x issue.

nk3z commented 1 year ago

Same problem only with flatpak. Any update?

rasmusthog commented 1 year ago

I'm able to render with Optix, but the denoiser will fail. Also installed through Flatpak. Denoiser seems to work if I use CUDA instead.

heschy2 commented 1 year ago

Just like rasmusthog, I can now render with optix, however the denoiser fails. But also when using CUDA.

Also try using Steam Edition to rule out if it's flatpack or not. For me this is definitively a flatpack/nvidia 535.x issue.

Well, I already know that it is a flatpak issue, in the initial message, I linked (twice) the original blender disscusion, there I was told that I should report here, because it only broke with flatpak.

SimonHeggie commented 11 months ago

Hey guys I just tested this and reporting the same issue as heschy2. Optix denoiser works fine in the steam version of Blender 4 but not in the flatpack version.

GPU: GTX 1080 Nobara Official (fedora 38 based)

atuleu commented 11 months ago

Also try using Steam Edition to rule out if it's flatpack or not. For me this is definitively a flatpack/nvidia 535.x issue.

Tried the steam version, and got the same issue. Can Render with Optix, but cannot use Optix Denoiser. Both flatpak and steam edition

atuleu commented 11 months ago

So for everyone that land there, I can report it seems an issue with flatpak steam and drivers.

Manually downloading the tarball from blender.org, I can run Optix and Optix Denoiser.

System:

urbenlegend commented 9 months ago

I am running the Blender version from the Arch Linux repos and I am also getting this issue. Regular Optix rendering is fine, but it breaks when enabling the Optix denoiser. I don't think this is necessarily a Flatpak specific issue.

Arch Linux Blender 4.0.2-10 Nvidia 3090 w/ 550.40.07 Beta drivers Kernel 6.7.3.arch1-2

fionera commented 9 months ago

I am watching this issue for some time now and I can confirm this is not a Flatpak specific issue. I cant get the Optix Denoiser to work with any driver newer than 525. I cant really make a good reproducer since my setup is very cursed but depending on the driver version I can even make blender segfault :D

heschy2 commented 9 months ago

So, for anyone new here, this Issue is most likeley related to the drivers, multi distro (fedora, fedora silverblue, arch, nobara, PopOS, etc...) and is present in the flatpak and steam version, but not in thw official Blender Tarball.

fionera commented 9 months ago

but not in thw official Blender Tarball.

It also happens with the official tarball. I can reproduce it with the linuxserver/blender docker image

SimonHeggie commented 9 months ago

I created an install script that works with Optix and Cuda which I tested on these devices in Nobara:

-Nobara 38/39, GTX 1080 custom tower

-Nobara 38, surface book with integrated Intel and dedicated gtx 965m

-Nobara 39, Lenovo Legion with hybrid of integrated Intel and dedicated RTX 4090.

It should work with other distros but remember that you must enable Cuda via installing the correct proprietary NVIDIA drivers, and Nobara just handles that for you, so I can't promise this will work for everyone. I (think) it'll work with POP.

Install Script:

echo "Installing Blender to ~/.Applications/Blender (hidden in your home directory)"
INSTALL_DIR=~/.Applications/Blender
mkdir -p "$INSTALL_DIR"
cd "$INSTALL_DIR"

echo "Getting the latest version of Blender"
BASE_BLENDER_URL="https://download.blender.org/release/"
LATEST_BLENDER_VERSION=$(curl -s $BASE_BLENDER_URL | grep -oP 'Blender[0-9\.]+/.*(?=")' | sort -V | tail -1)
BLENDER_DOWNLOAD_PAGE="${BASE_BLENDER_URL}${LATEST_BLENDER_VERSION}"

echo "Fetching the latest Blender download link"
LATEST_BLENDER_TARBALL=$(curl -s $BLENDER_DOWNLOAD_PAGE | grep -oP 'blender-[0-9\.]+-linux-x64.tar.xz' | head -1)

echo "Checking to see if your version of Blender is up to date?"
if [ ! -f "$LATEST_BLENDER_TARBALL" ]; then
    echo "Downloading new Blender"
    wget -O "$LATEST_BLENDER_TARBALL" "${BLENDER_DOWNLOAD_PAGE}${LATEST_BLENDER_TARBALL}"
    tar -xf "$LATEST_BLENDER_TARBALL" -C "$INSTALL_DIR"
else
    echo "Latest Blender is already installed; moving on."
fi

echo "Updating the desktop file with correct paths"
BLENDER_EXTRACTED_DIR=$(tar -tf "$LATEST_BLENDER_TARBALL" | head -1 | sed 's|/.*||')
EXTRACTED_DESKTOP_FILE="$INSTALL_DIR/$BLENDER_EXTRACTED_DIR/blender.desktop"
ICON_PATH="$INSTALL_DIR/$BLENDER_EXTRACTED_DIR/blender.svg"
if [ -f "$EXTRACTED_DESKTOP_FILE" ]; then
    echo "Pointing shortcut to Blender"
    sed -i 's|^Exec=.*|Exec='"$INSTALL_DIR/$BLENDER_EXTRACTED_DIR/blender"'|' "$EXTRACTED_DESKTOP_FILE"
    sed -i 's|^Icon=.*|Icon='"$ICON_PATH"'|' "$EXTRACTED_DESKTOP_FILE"
    cp "$EXTRACTED_DESKTOP_FILE" ~/.local/share/applications/
else
    echo "Extracted desktop file not found, it could have been moved."
fi

echo "DONE! Installed Blender."

This will install without stopping for permission. The same script will update to the latest stable version if you run it again.

It will create a handy desktop shortcut. And the following script will remove it neatly:

Uninstall Script:

# Define the installation directory
INSTALL_DIR=~/.Applications/Blender

# Check if Blender is installed
if [ -d "$INSTALL_DIR" ]; then
    read -p "Are you sure you want to uninstall Blender? [Y/N] " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        echo "Uninstalling Blender..."
        rm -rf "$INSTALL_DIR"

        # Remove desktop entry if exists
        DESKTOP_FILE=~/.local/share/applications/blender.desktop
        [ -f "$DESKTOP_FILE" ] && rm "$DESKTOP_FILE"

        echo "Blender has been uninstalled."
    else
        echo "Uninstall aborted."
    fi
else
    echo "Blender is not installed in $INSTALL_DIR."
fi

I do other installation scripts too. For instance I have one that extends Krita to have object select and has genAI built in. Thanks to ACLY.

I'll be interested to know how many people are interested in these kinds of install scripts. I do it with most of my apps because it's easy to generate these days.

-S

spitzak commented 8 months ago

Just wanted to say I have the same problem here. Again it is POP-OS. The flatpak version you get from the POP-OS software repository does not work with OptiX, but the version downloaded from blender.org works perfectly.

In addition the "flatpack" writes /tmp to a completely hidden location, which is pretty inconvienent.

paulbicheler commented 7 months ago

The latest blender 4.x didn't work with optix on ubuntu 23.10 from the flatpak repository. I switched over to the steam version which works fine, same as the tarball from blender.org

urbenlegend commented 7 months ago

Odd, I am unable to get the tarball working with Optix on my machine. If I set Viewport denoiser to automatic it will always fall back to OpenImageDenoise. Setting it explicitly to Optix still fails.

heschy2 commented 3 months ago

Okay, just so that is clear, we are talking about using the GPU to render using Optix-Rendering AND denoise it with the OptiX Denoiser.

Because today I thought the problem was fixed but in fact it still occurs if you switch to GPU Compute.

In CUDA Mode however, the optix-denoiser works fine (which it did not when I created this issue, so that is good)

urbenlegend commented 3 months ago

The native Arch package seems to be working with Optix (with GPU compute) now. Tested this morning with Blender 4.2 and Nvidia 555.58.02 drivers.