1use crate::{VulkanCommandBuffer, VulkanFence, VulkanHandle, VulkanQueue, ffi};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10 #[doc(alias = "GstVulkanFullScreenQuad")]
16 pub struct VulkanFullScreenQuad(Object<ffi::GstVulkanFullScreenQuad, ffi::GstVulkanFullScreenQuadClass>) @extends gst::Object;
17
18 match fn {
19 type_ => || ffi::gst_vulkan_full_screen_quad_get_type(),
20 }
21}
22
23impl VulkanFullScreenQuad {
24 pub const NONE: Option<&'static VulkanFullScreenQuad> = None;
25
26 #[doc(alias = "gst_vulkan_full_screen_quad_new")]
33 pub fn new(queue: &impl IsA<VulkanQueue>) -> VulkanFullScreenQuad {
34 skip_assert_initialized!();
35 unsafe {
36 from_glib_full(ffi::gst_vulkan_full_screen_quad_new(
37 queue.as_ref().to_glib_none().0,
38 ))
39 }
40 }
41}
42
43unsafe impl Send for VulkanFullScreenQuad {}
44unsafe impl Sync for VulkanFullScreenQuad {}
45
46pub trait VulkanFullScreenQuadExt: IsA<VulkanFullScreenQuad> + 'static {
52 #[doc(alias = "gst_vulkan_full_screen_quad_draw")]
63 fn draw(&self) -> Result<(), glib::Error> {
64 unsafe {
65 let mut error = std::ptr::null_mut();
66 let is_ok =
67 ffi::gst_vulkan_full_screen_quad_draw(self.as_ref().to_glib_none().0, &mut error);
68 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
69 if error.is_null() {
70 Ok(())
71 } else {
72 Err(from_glib_full(error))
73 }
74 }
75 }
76
77 #[doc(alias = "gst_vulkan_full_screen_quad_enable_blend")]
84 fn enable_blend(&self, enable_blend: bool) {
85 unsafe {
86 ffi::gst_vulkan_full_screen_quad_enable_blend(
87 self.as_ref().to_glib_none().0,
88 enable_blend.into_glib(),
89 );
90 }
91 }
92
93 #[doc(alias = "gst_vulkan_full_screen_quad_enable_clear")]
96 fn enable_clear(&self, enable_clear: bool) {
97 unsafe {
98 ffi::gst_vulkan_full_screen_quad_enable_clear(
99 self.as_ref().to_glib_none().0,
100 enable_clear.into_glib(),
101 );
102 }
103 }
104
105 #[doc(alias = "gst_vulkan_full_screen_quad_fill_command_buffer")]
113 fn fill_command_buffer(
114 &self,
115 cmd: &mut VulkanCommandBuffer,
116 fence: &mut VulkanFence,
117 ) -> Result<(), glib::Error> {
118 unsafe {
119 let mut error = std::ptr::null_mut();
120 let is_ok = ffi::gst_vulkan_full_screen_quad_fill_command_buffer(
121 self.as_ref().to_glib_none().0,
122 cmd.to_glib_none_mut().0,
123 fence.to_glib_none_mut().0,
124 &mut error,
125 );
126 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
127 if error.is_null() {
128 Ok(())
129 } else {
130 Err(from_glib_full(error))
131 }
132 }
133 }
134
135 #[doc(alias = "gst_vulkan_full_screen_quad_get_last_fence")]
136 #[doc(alias = "get_last_fence")]
137 fn last_fence(&self) -> VulkanFence {
138 unsafe {
139 from_glib_full(ffi::gst_vulkan_full_screen_quad_get_last_fence(
140 self.as_ref().to_glib_none().0,
141 ))
142 }
143 }
144
145 #[doc(alias = "gst_vulkan_full_screen_quad_get_queue")]
151 #[doc(alias = "get_queue")]
152 fn queue(&self) -> Option<VulkanQueue> {
153 unsafe {
154 from_glib_full(ffi::gst_vulkan_full_screen_quad_get_queue(
155 self.as_ref().to_glib_none().0,
156 ))
157 }
158 }
159
160 #[doc(alias = "gst_vulkan_full_screen_quad_prepare_draw")]
168 fn prepare_draw(&self, fence: &mut VulkanFence) -> Result<(), glib::Error> {
169 unsafe {
170 let mut error = std::ptr::null_mut();
171 let is_ok = ffi::gst_vulkan_full_screen_quad_prepare_draw(
172 self.as_ref().to_glib_none().0,
173 fence.to_glib_none_mut().0,
174 &mut error,
175 );
176 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
177 if error.is_null() {
178 Ok(())
179 } else {
180 Err(from_glib_full(error))
181 }
182 }
183 }
184
185 #[cfg(feature = "v1_30")]
209 #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
210 #[doc(alias = "gst_vulkan_full_screen_quad_set_immutable_sampler")]
211 fn set_immutable_sampler(&self, sampler: &VulkanHandle) -> bool {
212 unsafe {
213 from_glib(ffi::gst_vulkan_full_screen_quad_set_immutable_sampler(
214 self.as_ref().to_glib_none().0,
215 sampler.to_glib_none().0,
216 ))
217 }
218 }
219
220 #[doc(alias = "gst_vulkan_full_screen_quad_set_index_buffer")]
230 fn set_index_buffer(&self, indices: &gst::Memory, n_indices: usize) -> Result<(), glib::Error> {
231 unsafe {
232 let mut error = std::ptr::null_mut();
233 let is_ok = ffi::gst_vulkan_full_screen_quad_set_index_buffer(
234 self.as_ref().to_glib_none().0,
235 indices.to_glib_none().0,
236 n_indices,
237 &mut error,
238 );
239 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
240 if error.is_null() {
241 Ok(())
242 } else {
243 Err(from_glib_full(error))
244 }
245 }
246 }
247
248 #[doc(alias = "gst_vulkan_full_screen_quad_set_info")]
257 fn set_info(&self, in_info: &gst_video::VideoInfo, out_info: &gst_video::VideoInfo) -> bool {
258 unsafe {
259 from_glib(ffi::gst_vulkan_full_screen_quad_set_info(
260 self.as_ref().to_glib_none().0,
261 in_info.to_glib_none().0,
262 out_info.to_glib_none().0,
263 ))
264 }
265 }
266
267 #[doc(alias = "gst_vulkan_full_screen_quad_set_input_buffer")]
274 fn set_input_buffer(&self, buffer: Option<&gst::Buffer>) -> Result<(), glib::Error> {
275 unsafe {
276 let mut error = std::ptr::null_mut();
277 let is_ok = ffi::gst_vulkan_full_screen_quad_set_input_buffer(
278 self.as_ref().to_glib_none().0,
279 buffer.to_glib_none().0,
280 &mut error,
281 );
282 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
283 if error.is_null() {
284 Ok(())
285 } else {
286 Err(from_glib_full(error))
287 }
288 }
289 }
290
291 #[doc(alias = "gst_vulkan_full_screen_quad_set_output_buffer")]
298 fn set_output_buffer(&self, buffer: Option<&gst::Buffer>) -> Result<(), glib::Error> {
299 unsafe {
300 let mut error = std::ptr::null_mut();
301 let is_ok = ffi::gst_vulkan_full_screen_quad_set_output_buffer(
302 self.as_ref().to_glib_none().0,
303 buffer.to_glib_none().0,
304 &mut error,
305 );
306 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
307 if error.is_null() {
308 Ok(())
309 } else {
310 Err(from_glib_full(error))
311 }
312 }
313 }
314
315 #[cfg(feature = "v1_30")]
324 #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
325 #[doc(alias = "gst_vulkan_full_screen_quad_set_sampler")]
326 fn set_sampler(&self, sampler: &VulkanHandle) -> bool {
327 unsafe {
328 from_glib(ffi::gst_vulkan_full_screen_quad_set_sampler(
329 self.as_ref().to_glib_none().0,
330 sampler.to_glib_none().0,
331 ))
332 }
333 }
334
335 #[doc(alias = "gst_vulkan_full_screen_quad_set_shaders")]
344 fn set_shaders(&self, vert: &VulkanHandle, frag: &VulkanHandle) -> bool {
345 unsafe {
346 from_glib(ffi::gst_vulkan_full_screen_quad_set_shaders(
347 self.as_ref().to_glib_none().0,
348 vert.to_glib_none().0,
349 frag.to_glib_none().0,
350 ))
351 }
352 }
353
354 #[doc(alias = "gst_vulkan_full_screen_quad_set_uniform_buffer")]
361 fn set_uniform_buffer(&self, uniforms: &gst::Memory) -> Result<(), glib::Error> {
362 unsafe {
363 let mut error = std::ptr::null_mut();
364 let is_ok = ffi::gst_vulkan_full_screen_quad_set_uniform_buffer(
365 self.as_ref().to_glib_none().0,
366 uniforms.to_glib_none().0,
367 &mut error,
368 );
369 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
370 if error.is_null() {
371 Ok(())
372 } else {
373 Err(from_glib_full(error))
374 }
375 }
376 }
377
378 #[doc(alias = "gst_vulkan_full_screen_quad_set_vertex_buffer")]
385 fn set_vertex_buffer(&self, vertices: &gst::Memory) -> Result<(), glib::Error> {
386 unsafe {
387 let mut error = std::ptr::null_mut();
388 let is_ok = ffi::gst_vulkan_full_screen_quad_set_vertex_buffer(
389 self.as_ref().to_glib_none().0,
390 vertices.to_glib_none().0,
391 &mut error,
392 );
393 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
394 if error.is_null() {
395 Ok(())
396 } else {
397 Err(from_glib_full(error))
398 }
399 }
400 }
401
402 #[doc(alias = "gst_vulkan_full_screen_quad_submit")]
411 fn submit(&self, cmd: VulkanCommandBuffer, fence: &mut VulkanFence) -> Result<(), glib::Error> {
412 unsafe {
413 let mut error = std::ptr::null_mut();
414 let is_ok = ffi::gst_vulkan_full_screen_quad_submit(
415 self.as_ref().to_glib_none().0,
416 cmd.into_glib_ptr(),
417 fence.to_glib_none_mut().0,
418 &mut error,
419 );
420 debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
421 if error.is_null() {
422 Ok(())
423 } else {
424 Err(from_glib_full(error))
425 }
426 }
427 }
428}
429
430impl<O: IsA<VulkanFullScreenQuad>> VulkanFullScreenQuadExt for O {}