skia_safe/
gpu.rs

1#[cfg(feature = "d3d")]
2pub mod d3d;
3pub mod ganesh;
4#[cfg(feature = "gl")]
5pub mod gl;
6mod mutable_texture_state;
7mod types;
8#[cfg(feature = "vulkan")]
9pub mod vk;
10
11// Ganesh re-exports (these will probably be conflict with future graphite types)
12pub use ganesh::{
13    context_options::ContextOptions, images, BackendAPI, BackendFormat, BackendRenderTarget,
14    BackendTexture, DirectContext, DirectContextId, DriverBugWorkarounds, FlushInfo,
15    PurgeResourceOptions, RecordingContext, SemaphoresSubmitted, SubmitInfo, SurfaceOrigin,
16    SyncCpu, YUVABackendTextureInfo, YUVABackendTextures,
17};
18
19pub use mutable_texture_state::*;
20pub use types::*;
21
22#[cfg(feature = "metal")]
23pub mod mtl {
24    pub use super::ganesh::mtl::{types::*, BackendContext};
25}
26
27pub mod surfaces {
28    #[cfg(feature = "metal")]
29    pub use super::ganesh::mtl::surface_metal::*;
30    pub use super::ganesh::surface_ganesh::*;
31}
32
33pub mod backend_formats {
34    #[cfg(feature = "gl")]
35    pub use super::ganesh::gl::backend_formats::*;
36    #[cfg(feature = "metal")]
37    pub use super::ganesh::mtl::backend_formats::*;
38    #[cfg(feature = "vulkan")]
39    pub use super::ganesh::vk::backend_formats::*;
40}
41
42pub mod backend_textures {
43    #[cfg(feature = "gl")]
44    pub use super::ganesh::gl::backend_textures::*;
45    #[cfg(feature = "metal")]
46    pub use super::ganesh::mtl::backend_textures::*;
47    #[cfg(feature = "vulkan")]
48    pub use super::ganesh::vk::backend_textures::*;
49}
50
51pub mod backend_render_targets {
52    #[cfg(feature = "gl")]
53    pub use super::ganesh::gl::backend_render_targets::*;
54    #[cfg(feature = "metal")]
55    pub use super::ganesh::mtl::backend_render_targets::*;
56    #[cfg(feature = "vulkan")]
57    pub use super::ganesh::vk::backend_render_targets::*;
58}
59
60pub mod direct_contexts {
61    #[cfg(feature = "gl")]
62    pub use super::ganesh::gl::direct_contexts::*;
63    #[cfg(feature = "metal")]
64    pub use super::ganesh::mtl::direct_contexts::*;
65    #[cfg(feature = "vulkan")]
66    pub use super::ganesh::vk::direct_contexts::*;
67}
68
69#[cfg(feature = "gl")]
70pub mod interfaces {
71    #[cfg(feature = "egl")]
72    pub use super::ganesh::gl::make_egl_interface::interfaces::*;
73    #[cfg(target_os = "ios")]
74    pub use super::ganesh::gl::make_ios_interface::interfaces::*;
75    #[cfg(target_os = "macos")]
76    pub use super::ganesh::gl::make_mac_interface::interfaces::*;
77    #[cfg(target_arch = "wasm32")]
78    pub use super::ganesh::gl::make_web_gl_interface::interfaces::*;
79    #[cfg(target_os = "windows")]
80    pub use super::ganesh::gl::make_win_interface::interfaces::*;
81}
82
83#[cfg(test)]
84mod tests {
85    use super::{DirectContext, RecordingContext};
86
87    #[test]
88    fn implicit_deref_conversion_from_direct_context_to_context_to_recording_context() {
89        fn _recording_context(_context: &RecordingContext) {}
90        fn _context(context: &DirectContext) {
91            _recording_context(context)
92        }
93        fn _direct_context(context: &DirectContext) {
94            _context(context)
95        }
96
97        fn _recording_context_mut(_context: &mut RecordingContext) {}
98        fn _context_mut(context: &mut DirectContext) {
99            _recording_context_mut(context)
100        }
101        fn _direct_context_mut(context: &mut DirectContext) {
102            _context_mut(context)
103        }
104    }
105}