gstreamer_vulkan/
vulkan_device.rs1use 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 {}