greatest-ape / OctaSine

Frequency modulation synthesizer plugin (VST2, CLAP). Runs on macOS, Windows and Linux.
https://www.octasine.com/
GNU Affero General Public License v3.0
634 stars 17 forks source link

OctaSine cannot fetch framebuffer config on Linux GUI launch #136

Closed ecashin closed 1 year ago

ecashin commented 1 year ago

Describe the bug The DAW crashes (unconditionally terminates with backtrace) when the OctaSine GUI launches.

What did you try to do Steps to reproduce the behavior:

  1. Go to Renoise 64-bit v3.4.2 on Linux 5.0.0 on Ubuntu 18.04.2
  2. In the empty project, click the "Plugin" tab and select liboctasine.so under "VST"
  3. Renoise terminates after saying that there was a crash
  4. In the terminal that launched Renoise, the error text appears

(If there are notes in the pattern and the pattern is playing, one can hear OctaSine begin to play sound while Renoise is shutting down.)

Expected behavior The OctaSine GUI appears for user interaction

Screenshots If applicable, add screenshots to help explain your problem.

Software (please complete the following information):

Additional context

Here are relevant lines from the console output.

Renoise LOG> VstPlugs: Trying to instantiate /home/ecashin/.vst/liboctasine.so                           
Renoise LOG> VstPlugs: Analyzing VST plugin 'Joakim Frostegard: liboctasine', Unique ID:1438048625, Version:2400                                     
Renoise LOG> VstPlugs: Instantiate OK                                                                                                                
Renoise LOG> VstWindow: Creating a new X11Window...
Renoise LOG> VstWindow: Setting X11Window properties...
Renoise LOG> VstWindow: Give the plug access to the X11Window...
fatal runtime error: Rust panics must be rethrown
Renoise LOG> CrashLog: Caught signal: SIGABRT (6) ...
Renoise LOG> VstPlugs: Caught exception in VSTPlug::Dispatch
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> VstPlugs: Instantiate FAILED (caught structured exception) !!!
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> CrashLog: /lib/x86_64-linux-gnu/libpthread.so.0(+0x12980) [0x7f5761308980]
Renoise LOG> CrashLog: /home/ecashin/opt/bin/renoise() [0xb30cd4]
Renoise LOG> CrashLog: [(nil)]
Renoise LOG> CrashLog: [0x1]
Renoise LOG> Application: Caught an unhandled fatal exception (Thread: GUI)!
Renoise LOG> Application: Saving a backup...
Renoise LOG> Error Message: A fatal error or crash occurred (unhandled exception in thread: GUI).
Renoise LOG> Error Message: A backup of the current document was saved at
Renoise LOG> Error Message: '/home/ecashin/.config/Renoise/V3.4.2/CrashBackups/Untitled_1_14_2023__10_44_crash.xrns'...
Renoise LOG> Error Message: This either happened because of a bug in Renoise, or because of a bug in one of its loaded components (plugins). Please contact <bug@renoise.com> and report this problem, so that it can be fixed.

Log file contents

15:44:37 [INFO] init
15:44:37 [INFO] OS: Linux 19.3 (tricia) [64-bit]
15:44:37 [INFO] OctaSine build: v0.8.1 (afacfa8) (gl)
15:44:37 [ERROR] thread '<unnamed>' panicked at 'Could not fetch framebuffer config: CreationFailed(InvalidFBConfig)': /home/ecashin/.cargo/git/checkouts/baseview-9d6c750431f4479e/b371263/src/x11/window.rs:243
15:44:37 [ERROR] thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RecvError': /home/ecashin/.cargo/git/checkouts/baseview-9d6c750431f4479e/b371263/src/x11/window.rs:143
greatest-ape commented 1 year ago

Thanks.

dguillemyn commented 1 year ago

I had exactly the same crash, but on a completely different setup:

The error message is the same as the one mentioned by ecashin Note I compiled Octasine from source (tag 0.8.2)

Trying the downloaded Windows VST2 plugin also resulted in a crash :(

greatest-ape commented 1 year ago

@dguillemyn and @ecashin, could you please try building from commit https://github.com/greatest-ape/OctaSine/tree/3efc1de71c9dc059ef95321dd4ff3d63f1e3a06f and checking if it works on Linux?

And @dguillemyn, could you please try out this build on Windows?

OctaSine-tmp-2023-02-12-Windows.zip

ecashin commented 1 year ago

I'll try, but I did an upgrade from Linux Mint 19 to 20, which upgraded glibc, so if it works for me now the big could still be there on older Ubuntu Xenial (I think) systems.

greatest-ape commented 1 year ago

@ecashin Alright.

ecashin commented 1 year ago

Hi. Thanks for looking into this.

OK, after removing the old one...

ecashin@dell-Latitude-E6420:~$ rm ~/.vst/liboctasine.so 

it built nicely...

ecashin@dell-Latitude-E6420:~/git/OctaSine$ git fetch
ecashin@dell-Latitude-E6420:~/git/OctaSine$ git checkout 3efc1de71c9dc059ef95321dd4ff3d63f1e3a06f           
ecashin@dell-Latitude-E6420:~/git/OctaSine$ cargo xtask bundle octasine --release                           
ecashin@dell-Latitude-E6420:~/git/OctaSine$ cp -i target/bundled/octasine.so ~/.vst/
ecashin@dell-Latitude-E6420:~/git/OctaSine$ ~/opt/bin/renoise 

... but the behavior appears to be the same. I put in some notes and then switched to OctaSine. I could hear the notes playing but saw the dialog from Renoise stating that a crash had occurred. I am pasting the last part of the console output below.

Renoise LOG> VstPlugs: Trying to instantiate /home/ecashin/.vst/octasine.so
Renoise LOG> VstPlugs: Analyzing VST plugin 'Joakim Frostegard: octasine', Unique ID:1438048625, Version:2400
Renoise LOG> VstPlugs: Instantiate OK
Renoise LOG> VstWindow: Creating a new X11Window...
Renoise LOG> VstWindow: Setting X11Window properties...
Renoise LOG> VstWindow: Give the plug access to the X11Window...
fatal runtime error: Rust panics must be rethrown
Renoise LOG> CrashLog: Caught signal: SIGABRT (6) ...
Renoise LOG> VstPlugs: Caught exception in VSTPlug::Dispatch
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> VstPlugs: Instantiate FAILED (caught structured exception) !!!
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> VstPlugs: Instantiate FAILED (caught structured exception) !!!
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> VstPlugs: Instantiate FAILED (caught structured exception) !!!
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> VstPlugs: Instantiate FAILED (caught structured exception) !!!
Renoise LOG> CrashLog: Caught signal: SIGSEGV (11) ...
Renoise LOG> CrashLog: /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420) [0x7f4d08efc420]
Renoise LOG> CrashLog: /home/ecashin/opt/bin/renoise() [0xb30cdb]
Renoise LOG> CrashLog: [(nil)]
Renoise LOG> CrashLog: [0x7fff292adc90]
Renoise LOG> Application: Caught an unhandled fatal exception (Thread: GUI)!
Renoise LOG> Application: Saving a backup...
Renoise LOG> Error Message: A fatal error or crash occurred (unhandled exception in thread: GUI).
Renoise LOG> Error Message: A backup of the current document was saved at
Renoise LOG> Error Message: '/home/ecashin/.config/Renoise/V3.4.2/CrashBackups/Untitled_2_12_2023__21_47_crash.xrns'...
Renoise LOG> Error Message: This either happened because of a bug in Renoise, or because of a bug in one of its loaded components (plugins). Please contact <bug@renoise.com> and report this problem, so that it can be fixed.
Renoise LOG> Error Message: Note: It's very important that we know exactly what has happened (what you were doing before this message popped up), or the problem cannot be replicated/analyzed. Please include a description of what you were doing and which components were being used...
Renoise LOG> Application: Terminating...
Renoise LOG> ALSA: Stopping ALSA playback...
Renoise LOG> MIDI: Shut down: Closing all acquired MIDI devices...
Renoise LOG> MIDI-IO: Closing MIDI in device 'Renoise MIDI In Port B'...
Renoise LOG> MIDI-IO: Closing MIDI in device 'Renoise MIDI In Sync'...
Renoise LOG> MIDI-IO: Closing MIDI out device 'Renoise MIDI Out Sync'...
Renoise LOG> MIDI-IO: Shutting down the MIDI sequencers...
Killed
greatest-ape commented 1 year ago

Hmm, ok, strange. Thanks for trying it out.

dguillemyn commented 1 year ago

Hi @greatest-ape : The Windows version seems to work fine now. Thanks!

I'll try building from the commit you're referring to tonight.

dguillemyn commented 1 year ago
I meanwhile tried to build, but I got following compilation errors: `Compiling octasine v0.8.2 (/media/ssd/dev/arm/OctaSine/octasine) error[E0308]: mismatched types --> octasine/src/plugin/clap/mod.rs:18:16 18 init: Some(init), ---- ^^^^ expected u8, found i8
arguments to this enum variant are incorrect

= note: expected fn pointer unsafe extern "C" fn(*const u8) -> _ found fn item extern "C" fn(*const i8) -> _ {clap::init} note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/mod.rs:20:23 20 get_factory: Some(entry_get_factory), ---- ^^^^^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect

= note: expected fn pointer unsafe extern "C" fn(*const u8) -> _ found fn item unsafe extern "C" fn(*const i8) -> _ {entry_get_factory} note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:15:36 15 pub const ID: *const i8 = unsafe { CStr::from_bytes_with_nul_unchecked(b"OctaSine\0").as_ptr() }; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected i8, found u8

= note: expected raw pointer *const i8 found raw pointer *const u8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:16:34 16 const NAME: *const i8 = unsafe { CStr::from_bytes_with_nul_unchecked(b"OctaSine\0").as_ptr() }; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected i8, found u8

= note: expected raw pointer *const i8 found raw pointer *const u8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:18:14 18 unsafe { CStr::from_bytes_with_nul_unchecked(b"Joakim Frostegard\0").as_ptr() }; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected i8, found u8

= note: expected raw pointer *const i8 found raw pointer *const u8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:20:14 20 unsafe { CStr::from_bytes_with_nul_unchecked(b"https://octasine.com\0").as_ptr() }; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected i8, found u8

= note: expected raw pointer *const i8 found raw pointer *const u8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:23:5 23 CLAP_PLUGIN_FEATURE_INSTRUMENT.as_ptr(), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected i8, found u8

= note: expected raw pointer *const i8 found raw pointer *const u8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:33:9 33 id: ID, ^^ expected u8, found i8

= note: expected raw pointer *const u8 found raw pointer *const i8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:34:11 34 name: NAME, ^^^^ expected u8, found i8

= note: expected raw pointer *const u8 found raw pointer *const i8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:35:13 35 vendor: VENDOR, ^^^^^^ expected u8, found i8

= note: expected raw pointer *const u8 found raw pointer *const i8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:36:10 36 url: URL, ^^^ expected u8, found i8

= note: expected raw pointer *const u8 found raw pointer *const i8

error[E0308]: mismatched types --> octasine/src/plugin/clap/descriptor.rs:41:15 41 features: FEATURES.as_ptr(), ^^^^^^^^^^^^^^^^^ expected u8, found i8

= note: expected raw pointer *const *const u8 found raw pointer *const *const i8

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/gui.rs:128:28 128 is_api_supported: Some(is_api_supported), ---- ^^^^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect
= note: expected fn pointer `unsafe extern "C" fn(_, *const u8, _) -> _`
              found fn item `unsafe extern "C" fn(_, *const i8, _) -> _ {is_api_supported}`

note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/gui.rs:129:29 129 get_preferred_api: Some(get_preferred_api), ---- ^^^^^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect
= note: expected fn pointer `unsafe extern "C" fn(_, *mut *const u8, _) -> _`
              found fn item `unsafe extern "C" fn(_, *mut *const i8, _) -> _ {get_preferred_api}`

note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/gui.rs:130:18 130 create: Some(create), ---- ^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect
= note: expected fn pointer `unsafe extern "C" fn(_, *const u8, _) -> _`
              found fn item `unsafe extern "C" fn(_, *const i8, _) -> _ {create}`

note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/params.rs:172:25 172 value_to_text: Some(value_to_text), ---- ^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect
= note: expected fn pointer `unsafe extern "C" fn(_, _, _, *mut u8, _) -> _`
              found fn item `unsafe extern "C" fn(_, _, _, *mut i8, _) -> _ {value_to_text}`

note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/params.rs:173:25 173 text_to_value: Some(text_to_value), ---- ^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect
= note: expected fn pointer `unsafe extern "C" fn(_, _, *const u8, _) -> _`
              found fn item `unsafe extern "C" fn(_, _, *const i8, _) -> _ {text_to_value}`

note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/factory.rs:15:25 15 create_plugin: Some(create_plugin), ---- ^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect

= note: expected fn pointer unsafe extern "C" fn(_, _, *const u8) -> _ found fn item unsafe extern "C" fn(_, _, *const i8) -> _ {create_plugin} note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/gui.rs:31:36 31 !is_floating && CStr::from_ptr(api) == SUPPORTED_API -------------- ^^^ expected u8, found i8
arguments to this function are incorrect

= note: expected raw pointer *const u8 found raw pointer *const i8 note: associated function defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/gui.rs:39:12 39 *api = SUPPORTED_API.as_ptr(); ---- ^^^^^^^^^^^^^^^^^^^^^^ expected i8, found u8
expected due to the type of this binding

= note: expected raw pointer *const i8 found raw pointer *const u8

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/gui.rs:50:38 50 if is_floating CStr::from_ptr(api) != SUPPORTED_API { -------------- ^^^ expected u8, found i8
arguments to this function are incorrect

= note: expected raw pointer *const u8 found raw pointer *const i8 note: associated function defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/params.rs:46:19 46 name: make_c_char_arr(&parameter.name), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8

= note: expected array [u8; 256] found array [i8; _]

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/params.rs:47:21 47 module: make_c_char_arr(&parameter.clap_path), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8

= note: expected array [u8; 1024] found array [i8; _]

error[E0308]: mismatched types --> octasine/src/plugin/clap/ext/params.rs:128:42 128 if let Ok(text) = CStr::from_ptr(text).to_str() { -------------- ^^^^ expected u8, found i8
arguments to this function are incorrect
= note: expected raw pointer `*const u8`
           found raw pointer `*const i8`

note: associated function defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/factory.rs:38:47 38 if !plugin_id.is_null() && CStr::from_ptr(plugin_id) == CStr::from_ptr(super::descriptor::ID) { -------------- ^^^^^^^^^ expected u8, found i8
arguments to this function are incorrect

= note: expected raw pointer *const u8 found raw pointer *const i8 note: associated function defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/factory.rs:38:76 38 if !plugin_id.is_null() && CStr::from_ptr(plugin_id) == CStr::from_ptr(super::descriptor::ID) { -------------- ^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8
arguments to this function are incorrect

= note: expected raw pointer *const u8 found raw pointer *const i8 note: associated function defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/plugin.rs:87:37 87 get_extension: Some(Self::get_extension), ---- ^^^^^^^^^^^^^^^^^^^ expected u8, found i8
arguments to this enum variant are incorrect

= note: expected fn pointer unsafe extern "C" fn(_, *const u8) -> _ found fn item unsafe extern "C" fn(_, *const i8) -> _ {clap::plugin::OctaSine::get_extension} note: tuple variant defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/plugin.rs:262:33 262 let id = CStr::from_ptr(id); -------------- ^^ expected u8, found i8
arguments to this function are incorrect
= note: expected raw pointer `*const u8`
           found raw pointer `*const i8`

note: associated function defined here

error[E0308]: mismatched types --> octasine/src/plugin/clap/mod.rs:30:46 30 let factory_id = unsafe { CStr::from_ptr(factory_id) }; -------------- ^^^^^^^^^^ expected u8, found i8
arguments to this function are incorrect

= note: expected raw pointer *const u8 found raw pointer *const i8 note: associated function defined here`

greatest-ape commented 1 year ago

@dguillemyn thanks, it’s great that the Windows version works for you now. Could you please try building the Linux one with —no-default-features —features “wgpu vst2”? Since the build error seems to originate in the clap plugin code.

greatest-ape commented 1 year ago

@ecashin does running any of the iced examples work for you? https://github.com/iced-rs/iced

dguillemyn commented 1 year ago

@greatest-ape: I just recompiled with the proposed options. It compiles fine now, but still no success in launching the vst in carla or ardour. Both result in a crash. When I launch the console version with the run-gui option, it also crashes with in the end the following trace: 0:35:02 [INFO] Created render pipeline Valid((4, 1, Gl)) with RenderPipelineDescriptor { label: Some("iced_wgpu::triangle::gradient pipeline"), layout: Some((4, 1, Gl)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 5, Gl), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 8, step_mode: Vertex, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 0 }] }] }, primitive: PrimitiveState { topology: TriangleList, strip_index_format: None, front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 4, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 5, Gl), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba8UnormSrgb, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: RED | GREEN | BLUE | ALPHA | COLOR | ALL })] }), multiview: None } 20:35:02 [INFO] configuring surface with SurfaceConfiguration { usage: RENDER_ATTACHMENT, format: Rgba8UnormSrgb, width: 972, height: 660, present_mode: Immediate, alpha_mode: Auto } thread '<unnamed>' **panicked at 'Error in Surface::configure: requested present mode Immediate is not in the list of supported present modes: [Fifo]', /home/khadas/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.14.2/src/backend/direct.rs:274:9 note: run withRUST_BACKTRACE=1environment variable to display a backtrace 20:35:02 [INFO] Dropping Global 20:35:02 [INFO] Destroying 0 command encoders thread 'main' panicked at 'calledResult::unwrap()on anErrvalue: RecvError', /home/khadas/.cargo/git/checkouts/baseview-9d6c750431f4479e/7001c25/src/x11/window.rs:181:27**

greatest-ape commented 1 year ago

@dguillemyn Thanks! I tried switching to the (default) FIFO present mode, which the log says is supported for you (and should be supported on the most platforms). Could you please try building from commit https://github.com/greatest-ape/OctaSine/commit/86b7fd117dfff37f35102954d4d9d0f1ccb55321?

dguillemyn commented 1 year ago

Hi @greatest-ape

Your fix did the job! No crashes anymore, I can start it from the console, as well as from Carla.

Unfortunately, the GUI is missing quite some 'widgets', see the attached screenshot. Any idea what went wrong here?

2023-02-13_21-50

greatest-ape commented 1 year ago

@dguillemyn thanks! that’s annoying 😛 it seems to be the same issue as this, since only canvas elements are affected: https://github.com/iced-rs/iced/issues/1338

The issue with removing antialiasing is that widgets will look very bad. I’ll have to think about how to best solve this..

ecashin commented 1 year ago

@ecashin does running any of the iced examples work for you? https://github.com/iced-rs/iced

The clock doesn't work. A GUI flashes into view briefly and disappears immediately.

ecashin@dell-Latitude-E6420:~/git/iced/examples/clock$ cargo run --package clock
    Finished dev [unoptimized + debuginfo] target(s) in 0.25s
     Running `/home/ecashin/git/iced/target/debug/clock`
Error: GraphicsCreationFailed(GraphicsAdapterNotFound)
ecashin@dell-Latitude-E6420:~/git/iced/examples/clock$ 

The counter is the same, as is progress_bar, so I stopped trying examples.

This problem appears in https://github.com/iced-rs/iced/issues/534 which refers to https://github.com/iced-rs/iced/issues/454, which recommends enabling the "glow" feature. Doing that allowed the progress_bar example to work.

diff --git a/examples/progress_bar/Cargo.toml b/examples/progress_bar/Cargo.toml
index 383a9bdd..fac70908 100644
--- a/examples/progress_bar/Cargo.toml
+++ b/examples/progress_bar/Cargo.toml
@@ -6,4 +6,4 @@ edition = "2021"
 publish = false

 [dependencies]
-iced = { path = "../.." }
+iced = { path = "../..", features = ["glow"] }
ecashin@dell-Latitude-E6420:~/git/iced/examples/progress_bar$ 

I did that in OctaSine,

ecashin@dell-Latitude-E6420:~/git/OctaSine$ git diff
diff --git a/octasine/Cargo.toml b/octasine/Cargo.toml
index 1fc6ae3..ee93093 100644
--- a/octasine/Cargo.toml
+++ b/octasine/Cargo.toml
@@ -6,7 +6,7 @@ license = "AGPL-3.0"
 edition = "2021"

 [features]
-default = ["clap", "vst2", "wgpu"]
+default = ["clap", "glow", "vst2"]
 clap = ["atomic_refcell", "bytemuck", "clap-sys", "parking_lot"]
 vst2 = ["vst"]
 glow = ["gui", "iced_baseview/glow", "iced_audio/glow"]
ecashin@dell-Latitude-E6420:~/git/OctaSine$ 

... and I thought maybe it would work! But I get the same behavior as before. :/

greatest-ape commented 1 year ago

@dguillemyn and @ecashin Thanks! Does commit e713cc3 work for you with glow, i.e. with --no-default-features --features "glow vst2"? I've applied a possible fix to an upstream issue as well as reduced antialiasing to x4 on Linux, which might fix the framebuffer config issue. (Side note: iced seems to default to turning off antialiasing with OpenGL.)

ecashin commented 1 year ago

@dguillemyn and @ecashin Thanks! Does commit e713cc3 work for you with glow, i.e. with --no-default-features --features "glow vst2"? I've applied a possible fix to an upstream issue as well as reduced antialiasing to x4 on Linux, which might fix the framebuffer config issue. (Side note: iced seems to default to turning off antialiasing with OpenGL.)

Yes, it works now! I'm going to make a song. :)

Thanks for sticking with it.

greatest-ape commented 1 year ago

Great! Thanks for trying out all the changes.

dguillemyn commented 1 year ago

@dguillemyn and @ecashin Thanks! Does commit e713cc3 work for you with glow, i.e. with --no-default-features --features "glow vst2"? I've applied a possible fix to an upstream issue as well as reduced antialiasing to x4 on Linux, which might fix the framebuffer config issue. (Side note: iced seems to default to turning off antialiasing with OpenGL.)

Hi @greatest-ape

I compiled commit e713cc3 with the "glow vst2" option, but I get the following at startup:

[khadas@vim3 release]$ ./octasine-cli run-gui thread '' panicked at 'Could not create OpenGL context: CreationFailed(X11Error(XLibError { error_code: 167, error_message: "GLXBadFBConfig", minor_code: 0, request_code: 152, type: 0, resource_id: 60817413, serial: 44 }))', /home/khadas/.cargo/git/checkouts/baseview-9d6c750431f4479e/7001c25/src/x11/window.rs:333:18 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace thread 'main' panicked at 'called Result::unwrap() on an Err value: RecvError', /home/khadas/.cargo/git/checkouts/baseview-9d6c750431f4479e/7001c25/src/x11/window.rs:181:27

Looks like X11 is not happy with the specific config :(

greatest-ape commented 1 year ago

@dguillemyn ok. What if you turn off antialiasing by changing the struct values for these two lines to None? https://github.com/greatest-ape/OctaSine/blob/e713cc36d1b12a659a11f678a057ef979e536101/octasine/src/gui/mod.rs#L873 and https://github.com/greatest-ape/OctaSine/blob/e713cc36d1b12a659a11f678a057ef979e536101/octasine/src/gui/mod.rs#L474

If this doesn’t work, could you please find out the minimum supported OpenGL version for your graphics driver? And is it maybe OpenGL ES, not OpenGL core, since it’s a dev board?

dguillemyn commented 1 year ago

@dguillemyn ok. What if you turn off antialiasing by changing the struct values for these two lines to None?

https://github.com/greatest-ape/OctaSine/blob/e713cc36d1b12a659a11f678a057ef979e536101/octasine/src/gui/mod.rs#L873 and

https://github.com/greatest-ape/OctaSine/blob/e713cc36d1b12a659a11f678a057ef979e536101/octasine/src/gui/mod.rs#L474

If this doesn’t work, could you please find out the minimum supported OpenGL version for your graphics driver? And is it maybe OpenGL ES, not OpenGL core, since it’s a dev board?

@greatest-ape : My first rust programming ever ;) But alas, the same issue... I checked the khadas VIM3 specs: it indeed supports OpenGL ES, not OpenGL core. According to the datasheet: VIM3 GPU supports OpenGL ES 3.2, Vulkan 1.0 and OpenCL 2.0 (see https://dl.khadas.com/products/vim3/datasheet/) For sure I have quite an exotic setup. I use this board as a handy, cost effective SBC platform for experimenting with open source Linux audio plugins etc. No issue if you can't get Octasine to work on this particular setup.

greatest-ape commented 1 year ago

@dguillemyn Haha! Ok! I can't support both normal GL and GL ES, unfortunately.

If you want to do some more Rust programming, it might work to add the lines

                profile: iced_baseview::baseview::gl::Profile::Compatibility,
                version: (2, 0),

to just above this line: https://github.com/greatest-ape/OctaSine/blob/e713cc36d1b12a659a11f678a057ef979e536101/octasine/src/gui/mod.rs#L872

dguillemyn commented 1 year ago

Hi @greatest-ape You made my day! Works like a charm now... All canvas elements are there and functional. Thanks for diving further into this. My time now for playing a song...

(And after 30+ years of C++ programming, seems like I should start picking up rust ;) )

greatest-ape commented 1 year ago

@dguillemyn Great! Yes, you most definitely should ;)

greatest-ape commented 1 year ago

I'm closing this issue now since it's resolved.