antonok-edm / ampli-Fe

Fully cross-platform VST2 plugin with a custom editor UI, written in Rust.
MIT License
177 stars 14 forks source link

UI doesn't render in Ableton Live 10 on Windows #5

Open alalalexexex opened 3 years ago

alalalexexex commented 3 years ago

Steps for repro:

not_working

*Note: I'm a complete novice for vst dev, and just wanted to explore where to start: i.e. In no rush, but wanted to see if I could compile something from scratch.

antonok-edm commented 3 years ago

Thanks for the report! I don't have access to Ableton myself so this is good to know.

This is probably another issue with vst_window; I suppose Ableton does something different from the other DAWs I've tested.

antonok-edm commented 3 years ago

@alalalexexex or others, if you have a Mac it'd be interesting to see if ampli-Fe is also broken with Ableton there.

faejr commented 3 years ago

I'm using Ableton live 11 and running a release build of ampli-Fe makes it crash as well (Windows).

Scratch that, seems it doesn't crash anymore and just get a blank screen like above. Seems that #3 fixed that for me and I forgot to pull it down.

faejr commented 3 years ago

@antonok-edm I finally had a minute to test it on Ableton 11 on a Mac and it seems to work without any issues, so strange that it doesn't seem to function as well on the Windows version.

image
detrimentalist commented 2 years ago

Same issue with Bitwig 4.0.5 on Ubuntu 20.04

Screenshot_2022-01-17_11-32-40

antonok-edm commented 2 years ago

@detrimentalist after loading an instance of ampli-Fe, could you check your Bitwig's engine logs for any errors? Should be in ~/.BitwigStudio/log/engine.log by default.

I'm using Bitwig 4.1.0 in Arch without any issues, so I suspect what you're seeing is a hardware or driver related issue in wgpu.

detrimentalist commented 2 years ago

The only line that shows up is this:

"WARNING: lavapipe is not a conformant vulkan implementation, testing use only."

I have seen this line somewhere before, I think it has to do with selecting the wrong adapter.

So I ran the following code on my system:

instance.enumerate_adapters(wgpu::Backends::all()).for_each(|a| {
            println!("{:?}", a);
            println!("{:?}", a.get_info());
            println!("");
        });

yielding

Adapter { context: Context { type: "Native" }, id: (0, 1, Vulkan) }
AdapterInfo { name: "NVIDIA GeForce GTX 1650", vendor: 4318, device: 8066, device_type: DiscreteGpu, backend: Vulkan }

Adapter { context: Context { type: "Native" }, id: (1, 1, Vulkan) }
AdapterInfo { name: "llvmpipe (LLVM 12.0.1, 256 bits)", vendor: 65541, device: 0, device_type: Cpu, backend: Vulkan }

Adapter { context: Context { type: "Native" }, id: (2, 1, Vulkan) }
AdapterInfo { name: "NVIDIA GeForce GTX 1650", vendor: 4318, device: 8066, device_type: DiscreteGpu, backend: Vulkan }

Adapter { context: Context { type: "Native" }, id: (3, 1, Vulkan) }
AdapterInfo { name: "llvmpipe (LLVM 12.0.1, 256 bits)", vendor: 65541, device: 0, device_type: Cpu, backend: Vulkan }

OK, so I'm thinking the adapter selection code in Ampli-Fe is not robust enough. I made a hack to try to select another adapter in graphics.rs:


            let adapters: Vec<Adapter> = instance.enumerate_adapters(BackendBit::all()).filter(|a| {
                a.get_info().device_type == DeviceType::DiscreteGpu
            }).collect();

            let adapter = adapters[0].borrow();

With this change the UI renders, but this is of course not the right way to do it. I have no clue how to do it the right way tho. :)

Cheers

antonok-edm commented 2 years ago

@detrimentalist yep, that's roughly what I expected to see. If one of the adapters works, but isn't automatically chosen by instance.request_adapter(...), then it's an issue with wgpu or your installed driver/hardware combination. You might be running into something like https://github.com/gfx-rs/wgpu/issues/2397 - it'd be worth commenting there or opening another report.

Granted, ampli-Fe is pulling a version of wgpu from more than a year ago, so it may also be worth trying to update that.

antonok-edm commented 2 years ago

@detrimentalist could you try building the update-wgpu branch? That's using the latest published wgpu version.

(I suppose others who were facing rendering issues are encouraged to try as well :smile:)

Edit: update-wgpu was merged to master.

detrimentalist commented 2 years ago

Building from the update-wgpu branch resolved the issue for me. Thanks!

faejr commented 2 years ago

I finally got around to building the update-wgpu branch and I'm unfortunately still having issues. Although I did have to also make the following patches to get it to build: https://github.com/antonok-edm/vst_window/pull/2

image