gstreamer_vulkan/
vulkan_device.rs

1use crate::VulkanDevice;
2
3use glib::prelude::*;
4use glib::translate::*;
5
6pub trait VulkanDeviceExtManual: IsA<VulkanDevice> + 'static {
7    fn create_shader(&self, code: &[u8]) -> Result<crate::VulkanHandle, glib::Error> {
8        unsafe {
9            let mut error = std::ptr::null_mut();
10            let shader = crate::ffi::gst_vulkan_create_shader(
11                self.as_ref().to_glib_none().0,
12                code.as_ptr() as *const i8,
13                code.len(),
14                &mut error,
15            );
16            debug_assert_eq!(shader.is_null(), !error.is_null());
17            if error.is_null() {
18                Ok(crate::VulkanHandle::from_glib_full(shader))
19            } else {
20                Err(from_glib_full(error))
21            }
22        }
23    }
24}
25impl<O: IsA<VulkanDevice>> VulkanDeviceExtManual for O {}