Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Black screen instead of GUI in some VST plugins (Spire) #318

Open
1 task done
gearcoded opened this issue Mar 21, 2024 · 2 comments
Open
1 task done

Black screen instead of GUI in some VST plugins (Spire) #318

gearcoded opened this issue Mar 21, 2024 · 2 comments

Comments

@gearcoded
Copy link

gearcoded commented Mar 21, 2024

Thanks for giving yabridge a shot!

  • I read through both the troubleshooting and the known issues sections, and my issue wasn't listed there

Problem description

When I install the Vulkan drivers, I get the black screen instead of the Spire plugin GUI.
If I randomly right-click, the context menus are shown and I can interact with the plugin. The sound plays correctly.

What did you expect to happen?

The GUI should work correctly

What actually happened?

I see a black screen instead of GUI

Operating system

Kubuntu 22.04

How did you install yabridge?

Directly from the releases page

yabridge version

5.0.3

yabridgectl version

5.0.3

Wine version

WineHQ 9.0

Plugin

Reveal Sound's Spire

Plugin type

VST3

Plugin architecture

64-bit

Host

Bitwig Studio 4.4.10

Desktop environment or WM

No response

GPU model

No response

GPU drivers and kernel

No response

Debug log

yabridge.zip

Anything else?

It seems to be related to this issue:

fixme:vulkan:X11DRV_vkCreateWin32SurfaceKHR Application requires child window rendering, which is not implemented yet!

And there is a bug on WineHQ:
https://bugs.winehq.org/show_bug.cgi?id=45277

It is reported that applying the patches should help:

felixhaedicke/wine@258a826

https://github.com/felixhaedicke/wine/commit/258a826593df383c5117e2c04d0a1eb4c866d809.patch

But to apply a patch, you need to build Wine from the source, then replace some system files, which may not be a trivial task.

I will try to create a separate wine bottle without the Vulkan drivers and will tell you if it helps.

@Seliaste
Copy link

I tried installing Wine-tkg which includes the child window patches, but then yabridge-host.exe wouldn't run with it (even with a new wineprefix) resulting in:

Application could not be started, or no application associated with the specified file.
ShellExecuteEx failed: File not found.

@gearcoded
Copy link
Author

Here is somewhat guide for creating a copy of your main wine bottle and save a lot of space. Instead of making just a copy, we add symlinks to the main wine bottle and replace the libraries by the files without the Vulkan support.

First, you need to have the following files that you can get from a wine bottle that doesn't have the Vulkan support:
• d3d9.dll
• d3d10core.dll
• d3d11.dll
• dxgi.dll

Probably, you can get it from the new empty bottle. Or from the backup files that were created by the Vulkan drivers installer.
I got these files from a backup that I made before installing the Vulkan drivers.

Create the .wine_without_vulkan folder for the new wine bottle:

mkdir ~/.wine_without_vulkan
cd ~/.wine_without_vulkan

Create drive folders and symlinks:

cp -r ~/.wine/dosdevices ~/.wine_without_vulkan/
rm ~/.wine_without_vulkan/dosdevices/c:
ln -s ~/.wine_without_vulkan/drive_c ~/.wine_without_vulkan/dosdevices/c:

Copy registry files:

cp ~/.wine/*.reg ~/.wine_without_vulkan/

This is where something might not work, that's why we create a copy instead of creating symlinks.

Create the windows folder:

mkdir drive_c
cd drive_c
mkdir "windows"

Add symlinks to the folders:

ln -s ~/.wine/drive_c/ProgramData ~/.wine_without_vulkan/drive_c/ProgramData
ln -s ~/.wine/drive_c/users ~/.wine_without_vulkan/drive_c/users
ln -s ~/.wine/drive_c/"Program Files (x86)" ~/.wine_without_vulkan/drive_c/"Program Files (x86)"
ln -s ~/.wine/drive_c/"Program Files" ~/.wine_without_vulkan/drive_c/"Program Files"

Now, as we don't want to copy the files to save space, we create symlinks for all of them:

for d in ~/.wine/drive_c/windows/*; do ln -s "$d" ~/.wine_without_vulkan/drive_c/windows/; done

Remove the symlinks for the system32 and syswow64 folders as this is where we'll add the libraries without the Vulkan support:

rm ~/.wine_without_vulkan/drive_c/windows/system32 ~/.wine_without_vulkan/drive_c/windows/syswow64
mkdir ~/.wine_without_vulkan/drive_c/windows/system32 ~/.wine_without_vulkan/drive_c/windows/syswow64

Add symlinks for all files and folders inside the system32 and syswow64 folders:

for d in ~/.wine/drive_c/windows/syswow64/*; do ln -s "$d" ~/.wine_without_vulkan/drive_c/windows/syswow64/; done
for d in ~/.wine/drive_c/windows/system32/*; do ln -s "$d" ~/.wine_without_vulkan/drive_c/windows/system32/; done

Remove the symlinks for the libraries with the Vulkan support:

cd ~/.wine/drive_c/windows/syswow64
rm d3d9.dll d3d10core.dll d3d11.dll dxgi.dll

cd ~/.wine/drive_c/windows/system32
rm d3d9.dll d3d10core.dll d3d11.dll dxgi.dll

Then add the files that don't have the Vulkan support to the system32 and syswow64 folders:
• d3d9.dll
• d3d10core.dll
• d3d11.dll
• dxgi.dll

Now you can add the VST plugins (including Spire) you want (including Spire) to any folder in the .wine_without_vulkan bottle and run the yabridgectl add "destination folder" and yabridgectl sync to get the plugins working.
I already had the Spire installed, so I moved it to the wine_without_vulkan bottle:

mkdir ~/.wine_without_vulkan/drive_c/vst_plugins
yabridgectl add ~/.wine_without_vulkan/drive_c/vst_plugins
mv ~/.wine/drive_c/"Program Files/Common Files"/VST3/Spire ~/.wine_without_vulkan/drive_c/vst_plugins/
yabridgectl sync

In the future, you can install VST libraries to this location from that wine bottle. As the c: drive is different, Yabridge will treat correctly. The VST plugins will have all the libraries they need from the main wine bottle and will use the DirectX libraries without the Vulkan support from this wine bottle.

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

No branches or pull requests

2 participants