Skip to content

Commit 7e688dc

Browse files
gsk: Properly gate Vulkan/Broadway renderers
1 parent ffd3422 commit 7e688dc

File tree

8 files changed

+87
-1
lines changed

8 files changed

+87
-1
lines changed

gsk4/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ rust-version = "1.64"
1515
name = "gsk4"
1616

1717
[features]
18-
broadway = []
18+
broadway = ["ffi/broadway"]
19+
vulkan = ["ffi/vulkan"]
1920
v4_2 = ["ffi/v4_2", "gdk/v4_2"]
2021
v4_4 = ["ffi/v4_4", "gdk/v4_4", "v4_2"]
2122
v4_6 = ["ffi/v4_6", "gdk/v4_6", "v4_4"]

gsk4/Gir.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ status = "generate"
206206
name = "parse"
207207
manual = true # bool_return_is_error doesn't seem to work for it
208208

209+
[[object]]
210+
name = "Gsk.VulkanRenderer"
211+
status = "generate"
212+
cfg_condition = "feature = \"vulkan\""
213+
209214
[[object]]
210215
name = "Pango.GlyphInfo"
211216
status = "manual"

gsk4/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ gsk = { git = "https://github.com/gtk-rs/gtk4-rs.git", package = "gsk4" }
4343

4444
| Feature | Description |
4545
| --- | ----------- |
46+
| `vulkan` | Enable `vulkan` Renderer. Only if GTK is compiled with Vulkan support |
4647
| `broadway` | Enable `broadway` Renderer. Only if GTK is compiled with Broadway support |
4748
| `v4_10` | Enable the new APIs part of GTK 4.10 |
4849
| `v4_6` | Enable the new APIs part of GTK 4.6 |

gsk4/src/auto/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ pub use self::texture_scale_node::TextureScaleNode;
113113
mod transform_node;
114114
pub use self::transform_node::TransformNode;
115115

116+
#[cfg(feature = "vulkan")]
117+
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
118+
mod vulkan_renderer;
119+
#[cfg(feature = "vulkan")]
120+
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
121+
pub use self::vulkan_renderer::VulkanRenderer;
122+
116123
mod shader_args_builder;
117124
pub use self::shader_args_builder::ShaderArgsBuilder;
118125

gsk4/src/auto/vulkan_renderer.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// This file was generated by gir (https://github.com/gtk-rs/gir)
2+
// from gir-files (https://github.com/gtk-rs/gir-files)
3+
// DO NOT EDIT
4+
5+
use crate::Renderer;
6+
use glib::{prelude::*, translate::*};
7+
use std::fmt;
8+
9+
glib::wrapper! {
10+
#[doc(alias = "GskVulkanRenderer")]
11+
pub struct VulkanRenderer(Object<ffi::GskVulkanRenderer, ffi::GskVulkanRendererClass>) @extends Renderer;
12+
13+
match fn {
14+
type_ => || ffi::gsk_vulkan_renderer_get_type(),
15+
}
16+
}
17+
18+
impl VulkanRenderer {
19+
#[doc(alias = "gsk_vulkan_renderer_new")]
20+
pub fn new() -> VulkanRenderer {
21+
assert_initialized_main_thread!();
22+
unsafe { Renderer::from_glib_full(ffi::gsk_vulkan_renderer_new()).unsafe_cast() }
23+
}
24+
}
25+
26+
impl Default for VulkanRenderer {
27+
fn default() -> Self {
28+
Self::new()
29+
}
30+
}
31+
32+
impl fmt::Display for VulkanRenderer {
33+
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
34+
f.write_str("VulkanRenderer")
35+
}
36+
}

gsk4/sys/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ v4_2 = []
4242
v4_4 = ["v4_2"]
4343
v4_6 = ["v4_4"]
4444
v4_10 = ["v4_6"]
45+
vulkan = []
46+
broadway = []
4547

4648
[dependencies]
4749
libc = "0.2"

gsk4/sys/Gir.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,21 @@ external_libraries = [
1616

1717
[external_libraries]
1818
gdk4 = "Gdk"
19+
20+
21+
[[object]]
22+
name = "Gsk.BroadwayRenderer"
23+
status = "generate"
24+
cfg_condition = "feature = \"broadway\""
25+
[[object.function]]
26+
pattern = "(new|get_type)"
27+
cfg_condition = "feature = \"broadway\""
28+
29+
30+
[[object]]
31+
name = "Gsk.VulkanRenderer"
32+
status = "generate"
33+
cfg_condition = "feature = \"vulkan\""
34+
[[object.function]]
35+
pattern = "(new|get_type)"
36+
cfg_condition = "feature = \"vulkan\""

gsk4/sys/src/lib.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,12 +312,16 @@ impl ::std::fmt::Debug for GskBorderNode {
312312
}
313313
}
314314

315+
#[cfg(feature = "broadway")]
316+
#[cfg_attr(docsrs, doc(cfg(feature = "broadway")))]
315317
#[repr(C)]
316318
pub struct GskBroadwayRenderer {
317319
_data: [u8; 0],
318320
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
319321
}
320322

323+
#[cfg(feature = "broadway")]
324+
#[cfg_attr(docsrs, doc(cfg(feature = "broadway")))]
321325
impl ::std::fmt::Debug for GskBroadwayRenderer {
322326
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
323327
f.debug_struct(&format!("GskBroadwayRenderer @ {self:p}"))
@@ -707,12 +711,16 @@ impl ::std::fmt::Debug for GskTransformNode {
707711
}
708712
}
709713

714+
#[cfg(feature = "vulkan")]
715+
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
710716
#[repr(C)]
711717
pub struct GskVulkanRenderer {
712718
_data: [u8; 0],
713719
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
714720
}
715721

722+
#[cfg(feature = "vulkan")]
723+
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
716724
impl ::std::fmt::Debug for GskVulkanRenderer {
717725
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
718726
f.debug_struct(&format!("GskVulkanRenderer @ {self:p}"))
@@ -1008,7 +1016,11 @@ extern "C" {
10081016
//=========================================================================
10091017
// GskBroadwayRenderer
10101018
//=========================================================================
1019+
#[cfg(feature = "broadway")]
1020+
#[cfg_attr(docsrs, doc(cfg(feature = "broadway")))]
10111021
pub fn gsk_broadway_renderer_get_type() -> GType;
1022+
#[cfg(feature = "broadway")]
1023+
#[cfg_attr(docsrs, doc(cfg(feature = "broadway")))]
10121024
pub fn gsk_broadway_renderer_new() -> *mut GskRenderer;
10131025

10141026
//=========================================================================
@@ -1532,7 +1544,11 @@ extern "C" {
15321544
//=========================================================================
15331545
// GskVulkanRenderer
15341546
//=========================================================================
1547+
#[cfg(feature = "vulkan")]
1548+
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
15351549
pub fn gsk_vulkan_renderer_get_type() -> GType;
1550+
#[cfg(feature = "vulkan")]
1551+
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
15361552
pub fn gsk_vulkan_renderer_new() -> *mut GskRenderer;
15371553

15381554
//=========================================================================

0 commit comments

Comments
 (0)