1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_images_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct ImagePipe2AddBufferCollection2Request {
16 pub buffer_collection_id: u32,
17 pub buffer_collection_token:
18 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem2::BufferCollectionTokenMarker>,
19}
20
21impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
22 for ImagePipe2AddBufferCollection2Request
23{
24}
25
26#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
27pub struct ImagePipe2AddBufferCollectionRequest {
28 pub buffer_collection_id: u32,
29 pub buffer_collection_token:
30 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem::BufferCollectionTokenMarker>,
31}
32
33impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
34 for ImagePipe2AddBufferCollectionRequest
35{
36}
37
38#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
39pub struct ImagePipe2PresentImageRequest {
40 pub image_id: u32,
41 pub presentation_time: u64,
42 pub acquire_fences: Vec<fidl::Event>,
43 pub release_fences: Vec<fidl::Event>,
44}
45
46impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
47 for ImagePipe2PresentImageRequest
48{
49}
50
51#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
52pub struct ImagePipe2Marker;
53
54impl fidl::endpoints::ProtocolMarker for ImagePipe2Marker {
55 type Proxy = ImagePipe2Proxy;
56 type RequestStream = ImagePipe2RequestStream;
57 #[cfg(target_os = "fuchsia")]
58 type SynchronousProxy = ImagePipe2SynchronousProxy;
59
60 const DEBUG_NAME: &'static str = "(anonymous) ImagePipe2";
61}
62
63pub trait ImagePipe2ProxyInterface: Send + Sync {
64 fn r#add_buffer_collection2(
65 &self,
66 buffer_collection_id: u32,
67 buffer_collection_token: fidl::endpoints::ClientEnd<
68 fidl_fuchsia_sysmem2::BufferCollectionTokenMarker,
69 >,
70 ) -> Result<(), fidl::Error>;
71 fn r#add_buffer_collection(
72 &self,
73 buffer_collection_id: u32,
74 buffer_collection_token: fidl::endpoints::ClientEnd<
75 fidl_fuchsia_sysmem::BufferCollectionTokenMarker,
76 >,
77 ) -> Result<(), fidl::Error>;
78 fn r#add_image(
79 &self,
80 image_id: u32,
81 buffer_collection_id: u32,
82 buffer_collection_index: u32,
83 image_format: &fidl_fuchsia_sysmem::ImageFormat2,
84 ) -> Result<(), fidl::Error>;
85 fn r#remove_buffer_collection(&self, buffer_collection_id: u32) -> Result<(), fidl::Error>;
86 fn r#remove_image(&self, image_id: u32) -> Result<(), fidl::Error>;
87 type PresentImageResponseFut: std::future::Future<Output = Result<PresentationInfo, fidl::Error>>
88 + Send;
89 fn r#present_image(
90 &self,
91 image_id: u32,
92 presentation_time: u64,
93 acquire_fences: Vec<fidl::Event>,
94 release_fences: Vec<fidl::Event>,
95 ) -> Self::PresentImageResponseFut;
96}
97#[derive(Debug)]
98#[cfg(target_os = "fuchsia")]
99pub struct ImagePipe2SynchronousProxy {
100 client: fidl::client::sync::Client,
101}
102
103#[cfg(target_os = "fuchsia")]
104impl fidl::endpoints::SynchronousProxy for ImagePipe2SynchronousProxy {
105 type Proxy = ImagePipe2Proxy;
106 type Protocol = ImagePipe2Marker;
107
108 fn from_channel(inner: fidl::Channel) -> Self {
109 Self::new(inner)
110 }
111
112 fn into_channel(self) -> fidl::Channel {
113 self.client.into_channel()
114 }
115
116 fn as_channel(&self) -> &fidl::Channel {
117 self.client.as_channel()
118 }
119}
120
121#[cfg(target_os = "fuchsia")]
122impl ImagePipe2SynchronousProxy {
123 pub fn new(channel: fidl::Channel) -> Self {
124 Self { client: fidl::client::sync::Client::new(channel) }
125 }
126
127 pub fn into_channel(self) -> fidl::Channel {
128 self.client.into_channel()
129 }
130
131 pub fn wait_for_event(
134 &self,
135 deadline: zx::MonotonicInstant,
136 ) -> Result<ImagePipe2Event, fidl::Error> {
137 ImagePipe2Event::decode(self.client.wait_for_event::<ImagePipe2Marker>(deadline)?)
138 }
139
140 pub fn r#add_buffer_collection2(
152 &self,
153 mut buffer_collection_id: u32,
154 mut buffer_collection_token: fidl::endpoints::ClientEnd<
155 fidl_fuchsia_sysmem2::BufferCollectionTokenMarker,
156 >,
157 ) -> Result<(), fidl::Error> {
158 self.client.send::<ImagePipe2AddBufferCollection2Request>(
159 (buffer_collection_id, buffer_collection_token),
160 0x181c72c935b0b4ee,
161 fidl::encoding::DynamicFlags::empty(),
162 )
163 }
164
165 pub fn r#add_buffer_collection(
166 &self,
167 mut buffer_collection_id: u32,
168 mut buffer_collection_token: fidl::endpoints::ClientEnd<
169 fidl_fuchsia_sysmem::BufferCollectionTokenMarker,
170 >,
171 ) -> Result<(), fidl::Error> {
172 self.client.send::<ImagePipe2AddBufferCollectionRequest>(
173 (buffer_collection_id, buffer_collection_token),
174 0x663ec76e20c87c05,
175 fidl::encoding::DynamicFlags::empty(),
176 )
177 }
178
179 pub fn r#add_image(
199 &self,
200 mut image_id: u32,
201 mut buffer_collection_id: u32,
202 mut buffer_collection_index: u32,
203 mut image_format: &fidl_fuchsia_sysmem::ImageFormat2,
204 ) -> Result<(), fidl::Error> {
205 self.client.send::<ImagePipe2AddImageRequest>(
206 (image_id, buffer_collection_id, buffer_collection_index, image_format),
207 0x23566808b13af395,
208 fidl::encoding::DynamicFlags::empty(),
209 )
210 }
211
212 pub fn r#remove_buffer_collection(
225 &self,
226 mut buffer_collection_id: u32,
227 ) -> Result<(), fidl::Error> {
228 self.client.send::<ImagePipe2RemoveBufferCollectionRequest>(
229 (buffer_collection_id,),
230 0x16bebb759a932299,
231 fidl::encoding::DynamicFlags::empty(),
232 )
233 }
234
235 pub fn r#remove_image(&self, mut image_id: u32) -> Result<(), fidl::Error> {
250 self.client.send::<ImagePipe2RemoveImageRequest>(
251 (image_id,),
252 0x16e8edd0f4d50f68,
253 fidl::encoding::DynamicFlags::empty(),
254 )
255 }
256
257 pub fn r#present_image(
293 &self,
294 mut image_id: u32,
295 mut presentation_time: u64,
296 mut acquire_fences: Vec<fidl::Event>,
297 mut release_fences: Vec<fidl::Event>,
298 ___deadline: zx::MonotonicInstant,
299 ) -> Result<PresentationInfo, fidl::Error> {
300 let _response = self.client.send_query::<
301 ImagePipe2PresentImageRequest,
302 ImagePipe2PresentImageResponse,
303 ImagePipe2Marker,
304 >(
305 (image_id, presentation_time, acquire_fences.as_mut(), release_fences.as_mut(),),
306 0x73cfb50f577c143a,
307 fidl::encoding::DynamicFlags::empty(),
308 ___deadline,
309 )?;
310 Ok(_response.presentation_info)
311 }
312}
313
314#[cfg(target_os = "fuchsia")]
315impl From<ImagePipe2SynchronousProxy> for zx::NullableHandle {
316 fn from(value: ImagePipe2SynchronousProxy) -> Self {
317 value.into_channel().into()
318 }
319}
320
321#[cfg(target_os = "fuchsia")]
322impl From<fidl::Channel> for ImagePipe2SynchronousProxy {
323 fn from(value: fidl::Channel) -> Self {
324 Self::new(value)
325 }
326}
327
328#[cfg(target_os = "fuchsia")]
329impl fidl::endpoints::FromClient for ImagePipe2SynchronousProxy {
330 type Protocol = ImagePipe2Marker;
331
332 fn from_client(value: fidl::endpoints::ClientEnd<ImagePipe2Marker>) -> Self {
333 Self::new(value.into_channel())
334 }
335}
336
337#[derive(Debug, Clone)]
338pub struct ImagePipe2Proxy {
339 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
340}
341
342impl fidl::endpoints::Proxy for ImagePipe2Proxy {
343 type Protocol = ImagePipe2Marker;
344
345 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
346 Self::new(inner)
347 }
348
349 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
350 self.client.into_channel().map_err(|client| Self { client })
351 }
352
353 fn as_channel(&self) -> &::fidl::AsyncChannel {
354 self.client.as_channel()
355 }
356}
357
358impl ImagePipe2Proxy {
359 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
361 let protocol_name = <ImagePipe2Marker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
362 Self { client: fidl::client::Client::new(channel, protocol_name) }
363 }
364
365 pub fn take_event_stream(&self) -> ImagePipe2EventStream {
371 ImagePipe2EventStream { event_receiver: self.client.take_event_receiver() }
372 }
373
374 pub fn r#add_buffer_collection2(
386 &self,
387 mut buffer_collection_id: u32,
388 mut buffer_collection_token: fidl::endpoints::ClientEnd<
389 fidl_fuchsia_sysmem2::BufferCollectionTokenMarker,
390 >,
391 ) -> Result<(), fidl::Error> {
392 ImagePipe2ProxyInterface::r#add_buffer_collection2(
393 self,
394 buffer_collection_id,
395 buffer_collection_token,
396 )
397 }
398
399 pub fn r#add_buffer_collection(
400 &self,
401 mut buffer_collection_id: u32,
402 mut buffer_collection_token: fidl::endpoints::ClientEnd<
403 fidl_fuchsia_sysmem::BufferCollectionTokenMarker,
404 >,
405 ) -> Result<(), fidl::Error> {
406 ImagePipe2ProxyInterface::r#add_buffer_collection(
407 self,
408 buffer_collection_id,
409 buffer_collection_token,
410 )
411 }
412
413 pub fn r#add_image(
433 &self,
434 mut image_id: u32,
435 mut buffer_collection_id: u32,
436 mut buffer_collection_index: u32,
437 mut image_format: &fidl_fuchsia_sysmem::ImageFormat2,
438 ) -> Result<(), fidl::Error> {
439 ImagePipe2ProxyInterface::r#add_image(
440 self,
441 image_id,
442 buffer_collection_id,
443 buffer_collection_index,
444 image_format,
445 )
446 }
447
448 pub fn r#remove_buffer_collection(
461 &self,
462 mut buffer_collection_id: u32,
463 ) -> Result<(), fidl::Error> {
464 ImagePipe2ProxyInterface::r#remove_buffer_collection(self, buffer_collection_id)
465 }
466
467 pub fn r#remove_image(&self, mut image_id: u32) -> Result<(), fidl::Error> {
482 ImagePipe2ProxyInterface::r#remove_image(self, image_id)
483 }
484
485 pub fn r#present_image(
521 &self,
522 mut image_id: u32,
523 mut presentation_time: u64,
524 mut acquire_fences: Vec<fidl::Event>,
525 mut release_fences: Vec<fidl::Event>,
526 ) -> fidl::client::QueryResponseFut<
527 PresentationInfo,
528 fidl::encoding::DefaultFuchsiaResourceDialect,
529 > {
530 ImagePipe2ProxyInterface::r#present_image(
531 self,
532 image_id,
533 presentation_time,
534 acquire_fences,
535 release_fences,
536 )
537 }
538}
539
540impl ImagePipe2ProxyInterface for ImagePipe2Proxy {
541 fn r#add_buffer_collection2(
542 &self,
543 mut buffer_collection_id: u32,
544 mut buffer_collection_token: fidl::endpoints::ClientEnd<
545 fidl_fuchsia_sysmem2::BufferCollectionTokenMarker,
546 >,
547 ) -> Result<(), fidl::Error> {
548 self.client.send::<ImagePipe2AddBufferCollection2Request>(
549 (buffer_collection_id, buffer_collection_token),
550 0x181c72c935b0b4ee,
551 fidl::encoding::DynamicFlags::empty(),
552 )
553 }
554
555 fn r#add_buffer_collection(
556 &self,
557 mut buffer_collection_id: u32,
558 mut buffer_collection_token: fidl::endpoints::ClientEnd<
559 fidl_fuchsia_sysmem::BufferCollectionTokenMarker,
560 >,
561 ) -> Result<(), fidl::Error> {
562 self.client.send::<ImagePipe2AddBufferCollectionRequest>(
563 (buffer_collection_id, buffer_collection_token),
564 0x663ec76e20c87c05,
565 fidl::encoding::DynamicFlags::empty(),
566 )
567 }
568
569 fn r#add_image(
570 &self,
571 mut image_id: u32,
572 mut buffer_collection_id: u32,
573 mut buffer_collection_index: u32,
574 mut image_format: &fidl_fuchsia_sysmem::ImageFormat2,
575 ) -> Result<(), fidl::Error> {
576 self.client.send::<ImagePipe2AddImageRequest>(
577 (image_id, buffer_collection_id, buffer_collection_index, image_format),
578 0x23566808b13af395,
579 fidl::encoding::DynamicFlags::empty(),
580 )
581 }
582
583 fn r#remove_buffer_collection(&self, mut buffer_collection_id: u32) -> Result<(), fidl::Error> {
584 self.client.send::<ImagePipe2RemoveBufferCollectionRequest>(
585 (buffer_collection_id,),
586 0x16bebb759a932299,
587 fidl::encoding::DynamicFlags::empty(),
588 )
589 }
590
591 fn r#remove_image(&self, mut image_id: u32) -> Result<(), fidl::Error> {
592 self.client.send::<ImagePipe2RemoveImageRequest>(
593 (image_id,),
594 0x16e8edd0f4d50f68,
595 fidl::encoding::DynamicFlags::empty(),
596 )
597 }
598
599 type PresentImageResponseFut = fidl::client::QueryResponseFut<
600 PresentationInfo,
601 fidl::encoding::DefaultFuchsiaResourceDialect,
602 >;
603 fn r#present_image(
604 &self,
605 mut image_id: u32,
606 mut presentation_time: u64,
607 mut acquire_fences: Vec<fidl::Event>,
608 mut release_fences: Vec<fidl::Event>,
609 ) -> Self::PresentImageResponseFut {
610 fn _decode(
611 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
612 ) -> Result<PresentationInfo, fidl::Error> {
613 let _response = fidl::client::decode_transaction_body::<
614 ImagePipe2PresentImageResponse,
615 fidl::encoding::DefaultFuchsiaResourceDialect,
616 0x73cfb50f577c143a,
617 >(_buf?)?;
618 Ok(_response.presentation_info)
619 }
620 self.client.send_query_and_decode::<ImagePipe2PresentImageRequest, PresentationInfo>(
621 (image_id, presentation_time, acquire_fences.as_mut(), release_fences.as_mut()),
622 0x73cfb50f577c143a,
623 fidl::encoding::DynamicFlags::empty(),
624 _decode,
625 )
626 }
627}
628
629pub struct ImagePipe2EventStream {
630 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
631}
632
633impl std::marker::Unpin for ImagePipe2EventStream {}
634
635impl futures::stream::FusedStream for ImagePipe2EventStream {
636 fn is_terminated(&self) -> bool {
637 self.event_receiver.is_terminated()
638 }
639}
640
641impl futures::Stream for ImagePipe2EventStream {
642 type Item = Result<ImagePipe2Event, fidl::Error>;
643
644 fn poll_next(
645 mut self: std::pin::Pin<&mut Self>,
646 cx: &mut std::task::Context<'_>,
647 ) -> std::task::Poll<Option<Self::Item>> {
648 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
649 &mut self.event_receiver,
650 cx
651 )?) {
652 Some(buf) => std::task::Poll::Ready(Some(ImagePipe2Event::decode(buf))),
653 None => std::task::Poll::Ready(None),
654 }
655 }
656}
657
658#[derive(Debug)]
659pub enum ImagePipe2Event {}
660
661impl ImagePipe2Event {
662 fn decode(
664 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
665 ) -> Result<ImagePipe2Event, fidl::Error> {
666 let (bytes, _handles) = buf.split_mut();
667 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
668 debug_assert_eq!(tx_header.tx_id, 0);
669 match tx_header.ordinal {
670 _ => Err(fidl::Error::UnknownOrdinal {
671 ordinal: tx_header.ordinal,
672 protocol_name: <ImagePipe2Marker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
673 }),
674 }
675 }
676}
677
678pub struct ImagePipe2RequestStream {
680 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
681 is_terminated: bool,
682}
683
684impl std::marker::Unpin for ImagePipe2RequestStream {}
685
686impl futures::stream::FusedStream for ImagePipe2RequestStream {
687 fn is_terminated(&self) -> bool {
688 self.is_terminated
689 }
690}
691
692impl fidl::endpoints::RequestStream for ImagePipe2RequestStream {
693 type Protocol = ImagePipe2Marker;
694 type ControlHandle = ImagePipe2ControlHandle;
695
696 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
697 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
698 }
699
700 fn control_handle(&self) -> Self::ControlHandle {
701 ImagePipe2ControlHandle { inner: self.inner.clone() }
702 }
703
704 fn into_inner(
705 self,
706 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
707 {
708 (self.inner, self.is_terminated)
709 }
710
711 fn from_inner(
712 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
713 is_terminated: bool,
714 ) -> Self {
715 Self { inner, is_terminated }
716 }
717}
718
719impl futures::Stream for ImagePipe2RequestStream {
720 type Item = Result<ImagePipe2Request, fidl::Error>;
721
722 fn poll_next(
723 mut self: std::pin::Pin<&mut Self>,
724 cx: &mut std::task::Context<'_>,
725 ) -> std::task::Poll<Option<Self::Item>> {
726 let this = &mut *self;
727 if this.inner.check_shutdown(cx) {
728 this.is_terminated = true;
729 return std::task::Poll::Ready(None);
730 }
731 if this.is_terminated {
732 panic!("polled ImagePipe2RequestStream after completion");
733 }
734 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
735 |bytes, handles| {
736 match this.inner.channel().read_etc(cx, bytes, handles) {
737 std::task::Poll::Ready(Ok(())) => {}
738 std::task::Poll::Pending => return std::task::Poll::Pending,
739 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
740 this.is_terminated = true;
741 return std::task::Poll::Ready(None);
742 }
743 std::task::Poll::Ready(Err(e)) => {
744 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
745 e.into(),
746 ))));
747 }
748 }
749
750 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
752
753 std::task::Poll::Ready(Some(match header.ordinal {
754 0x181c72c935b0b4ee => {
755 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
756 let mut req = fidl::new_empty!(
757 ImagePipe2AddBufferCollection2Request,
758 fidl::encoding::DefaultFuchsiaResourceDialect
759 );
760 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ImagePipe2AddBufferCollection2Request>(&header, _body_bytes, handles, &mut req)?;
761 let control_handle = ImagePipe2ControlHandle { inner: this.inner.clone() };
762 Ok(ImagePipe2Request::AddBufferCollection2 {
763 buffer_collection_id: req.buffer_collection_id,
764 buffer_collection_token: req.buffer_collection_token,
765
766 control_handle,
767 })
768 }
769 0x663ec76e20c87c05 => {
770 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
771 let mut req = fidl::new_empty!(
772 ImagePipe2AddBufferCollectionRequest,
773 fidl::encoding::DefaultFuchsiaResourceDialect
774 );
775 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ImagePipe2AddBufferCollectionRequest>(&header, _body_bytes, handles, &mut req)?;
776 let control_handle = ImagePipe2ControlHandle { inner: this.inner.clone() };
777 Ok(ImagePipe2Request::AddBufferCollection {
778 buffer_collection_id: req.buffer_collection_id,
779 buffer_collection_token: req.buffer_collection_token,
780
781 control_handle,
782 })
783 }
784 0x23566808b13af395 => {
785 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
786 let mut req = fidl::new_empty!(
787 ImagePipe2AddImageRequest,
788 fidl::encoding::DefaultFuchsiaResourceDialect
789 );
790 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ImagePipe2AddImageRequest>(&header, _body_bytes, handles, &mut req)?;
791 let control_handle = ImagePipe2ControlHandle { inner: this.inner.clone() };
792 Ok(ImagePipe2Request::AddImage {
793 image_id: req.image_id,
794 buffer_collection_id: req.buffer_collection_id,
795 buffer_collection_index: req.buffer_collection_index,
796 image_format: req.image_format,
797
798 control_handle,
799 })
800 }
801 0x16bebb759a932299 => {
802 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
803 let mut req = fidl::new_empty!(
804 ImagePipe2RemoveBufferCollectionRequest,
805 fidl::encoding::DefaultFuchsiaResourceDialect
806 );
807 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ImagePipe2RemoveBufferCollectionRequest>(&header, _body_bytes, handles, &mut req)?;
808 let control_handle = ImagePipe2ControlHandle { inner: this.inner.clone() };
809 Ok(ImagePipe2Request::RemoveBufferCollection {
810 buffer_collection_id: req.buffer_collection_id,
811
812 control_handle,
813 })
814 }
815 0x16e8edd0f4d50f68 => {
816 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
817 let mut req = fidl::new_empty!(
818 ImagePipe2RemoveImageRequest,
819 fidl::encoding::DefaultFuchsiaResourceDialect
820 );
821 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ImagePipe2RemoveImageRequest>(&header, _body_bytes, handles, &mut req)?;
822 let control_handle = ImagePipe2ControlHandle { inner: this.inner.clone() };
823 Ok(ImagePipe2Request::RemoveImage {
824 image_id: req.image_id,
825
826 control_handle,
827 })
828 }
829 0x73cfb50f577c143a => {
830 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
831 let mut req = fidl::new_empty!(
832 ImagePipe2PresentImageRequest,
833 fidl::encoding::DefaultFuchsiaResourceDialect
834 );
835 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ImagePipe2PresentImageRequest>(&header, _body_bytes, handles, &mut req)?;
836 let control_handle = ImagePipe2ControlHandle { inner: this.inner.clone() };
837 Ok(ImagePipe2Request::PresentImage {
838 image_id: req.image_id,
839 presentation_time: req.presentation_time,
840 acquire_fences: req.acquire_fences,
841 release_fences: req.release_fences,
842
843 responder: ImagePipe2PresentImageResponder {
844 control_handle: std::mem::ManuallyDrop::new(control_handle),
845 tx_id: header.tx_id,
846 },
847 })
848 }
849 _ => Err(fidl::Error::UnknownOrdinal {
850 ordinal: header.ordinal,
851 protocol_name:
852 <ImagePipe2Marker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
853 }),
854 }))
855 },
856 )
857 }
858}
859
860#[derive(Debug)]
920pub enum ImagePipe2Request {
921 AddBufferCollection2 {
933 buffer_collection_id: u32,
934 buffer_collection_token:
935 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem2::BufferCollectionTokenMarker>,
936 control_handle: ImagePipe2ControlHandle,
937 },
938 AddBufferCollection {
939 buffer_collection_id: u32,
940 buffer_collection_token:
941 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem::BufferCollectionTokenMarker>,
942 control_handle: ImagePipe2ControlHandle,
943 },
944 AddImage {
964 image_id: u32,
965 buffer_collection_id: u32,
966 buffer_collection_index: u32,
967 image_format: fidl_fuchsia_sysmem::ImageFormat2,
968 control_handle: ImagePipe2ControlHandle,
969 },
970 RemoveBufferCollection { buffer_collection_id: u32, control_handle: ImagePipe2ControlHandle },
983 RemoveImage { image_id: u32, control_handle: ImagePipe2ControlHandle },
998 PresentImage {
1034 image_id: u32,
1035 presentation_time: u64,
1036 acquire_fences: Vec<fidl::Event>,
1037 release_fences: Vec<fidl::Event>,
1038 responder: ImagePipe2PresentImageResponder,
1039 },
1040}
1041
1042impl ImagePipe2Request {
1043 #[allow(irrefutable_let_patterns)]
1044 pub fn into_add_buffer_collection2(
1045 self,
1046 ) -> Option<(
1047 u32,
1048 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem2::BufferCollectionTokenMarker>,
1049 ImagePipe2ControlHandle,
1050 )> {
1051 if let ImagePipe2Request::AddBufferCollection2 {
1052 buffer_collection_id,
1053 buffer_collection_token,
1054 control_handle,
1055 } = self
1056 {
1057 Some((buffer_collection_id, buffer_collection_token, control_handle))
1058 } else {
1059 None
1060 }
1061 }
1062
1063 #[allow(irrefutable_let_patterns)]
1064 pub fn into_add_buffer_collection(
1065 self,
1066 ) -> Option<(
1067 u32,
1068 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem::BufferCollectionTokenMarker>,
1069 ImagePipe2ControlHandle,
1070 )> {
1071 if let ImagePipe2Request::AddBufferCollection {
1072 buffer_collection_id,
1073 buffer_collection_token,
1074 control_handle,
1075 } = self
1076 {
1077 Some((buffer_collection_id, buffer_collection_token, control_handle))
1078 } else {
1079 None
1080 }
1081 }
1082
1083 #[allow(irrefutable_let_patterns)]
1084 pub fn into_add_image(
1085 self,
1086 ) -> Option<(u32, u32, u32, fidl_fuchsia_sysmem::ImageFormat2, ImagePipe2ControlHandle)> {
1087 if let ImagePipe2Request::AddImage {
1088 image_id,
1089 buffer_collection_id,
1090 buffer_collection_index,
1091 image_format,
1092 control_handle,
1093 } = self
1094 {
1095 Some((
1096 image_id,
1097 buffer_collection_id,
1098 buffer_collection_index,
1099 image_format,
1100 control_handle,
1101 ))
1102 } else {
1103 None
1104 }
1105 }
1106
1107 #[allow(irrefutable_let_patterns)]
1108 pub fn into_remove_buffer_collection(self) -> Option<(u32, ImagePipe2ControlHandle)> {
1109 if let ImagePipe2Request::RemoveBufferCollection { buffer_collection_id, control_handle } =
1110 self
1111 {
1112 Some((buffer_collection_id, control_handle))
1113 } else {
1114 None
1115 }
1116 }
1117
1118 #[allow(irrefutable_let_patterns)]
1119 pub fn into_remove_image(self) -> Option<(u32, ImagePipe2ControlHandle)> {
1120 if let ImagePipe2Request::RemoveImage { image_id, control_handle } = self {
1121 Some((image_id, control_handle))
1122 } else {
1123 None
1124 }
1125 }
1126
1127 #[allow(irrefutable_let_patterns)]
1128 pub fn into_present_image(
1129 self,
1130 ) -> Option<(u32, u64, Vec<fidl::Event>, Vec<fidl::Event>, ImagePipe2PresentImageResponder)>
1131 {
1132 if let ImagePipe2Request::PresentImage {
1133 image_id,
1134 presentation_time,
1135 acquire_fences,
1136 release_fences,
1137 responder,
1138 } = self
1139 {
1140 Some((image_id, presentation_time, acquire_fences, release_fences, responder))
1141 } else {
1142 None
1143 }
1144 }
1145
1146 pub fn method_name(&self) -> &'static str {
1148 match *self {
1149 ImagePipe2Request::AddBufferCollection2 { .. } => "add_buffer_collection2",
1150 ImagePipe2Request::AddBufferCollection { .. } => "add_buffer_collection",
1151 ImagePipe2Request::AddImage { .. } => "add_image",
1152 ImagePipe2Request::RemoveBufferCollection { .. } => "remove_buffer_collection",
1153 ImagePipe2Request::RemoveImage { .. } => "remove_image",
1154 ImagePipe2Request::PresentImage { .. } => "present_image",
1155 }
1156 }
1157}
1158
1159#[derive(Debug, Clone)]
1160pub struct ImagePipe2ControlHandle {
1161 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1162}
1163
1164impl ImagePipe2ControlHandle {
1165 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1166 self.inner.shutdown_with_epitaph(status.into())
1167 }
1168}
1169
1170impl fidl::endpoints::ControlHandle for ImagePipe2ControlHandle {
1171 fn shutdown(&self) {
1172 self.inner.shutdown()
1173 }
1174
1175 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1176 self.inner.shutdown_with_epitaph(status)
1177 }
1178
1179 fn is_closed(&self) -> bool {
1180 self.inner.channel().is_closed()
1181 }
1182 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1183 self.inner.channel().on_closed()
1184 }
1185
1186 #[cfg(target_os = "fuchsia")]
1187 fn signal_peer(
1188 &self,
1189 clear_mask: zx::Signals,
1190 set_mask: zx::Signals,
1191 ) -> Result<(), zx_status::Status> {
1192 use fidl::Peered;
1193 self.inner.channel().signal_peer(clear_mask, set_mask)
1194 }
1195}
1196
1197impl ImagePipe2ControlHandle {}
1198
1199#[must_use = "FIDL methods require a response to be sent"]
1200#[derive(Debug)]
1201pub struct ImagePipe2PresentImageResponder {
1202 control_handle: std::mem::ManuallyDrop<ImagePipe2ControlHandle>,
1203 tx_id: u32,
1204}
1205
1206impl std::ops::Drop for ImagePipe2PresentImageResponder {
1210 fn drop(&mut self) {
1211 self.control_handle.shutdown();
1212 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1214 }
1215}
1216
1217impl fidl::endpoints::Responder for ImagePipe2PresentImageResponder {
1218 type ControlHandle = ImagePipe2ControlHandle;
1219
1220 fn control_handle(&self) -> &ImagePipe2ControlHandle {
1221 &self.control_handle
1222 }
1223
1224 fn drop_without_shutdown(mut self) {
1225 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1227 std::mem::forget(self);
1229 }
1230}
1231
1232impl ImagePipe2PresentImageResponder {
1233 pub fn send(self, mut presentation_info: &PresentationInfo) -> Result<(), fidl::Error> {
1237 let _result = self.send_raw(presentation_info);
1238 if _result.is_err() {
1239 self.control_handle.shutdown();
1240 }
1241 self.drop_without_shutdown();
1242 _result
1243 }
1244
1245 pub fn send_no_shutdown_on_err(
1247 self,
1248 mut presentation_info: &PresentationInfo,
1249 ) -> Result<(), fidl::Error> {
1250 let _result = self.send_raw(presentation_info);
1251 self.drop_without_shutdown();
1252 _result
1253 }
1254
1255 fn send_raw(&self, mut presentation_info: &PresentationInfo) -> Result<(), fidl::Error> {
1256 self.control_handle.inner.send::<ImagePipe2PresentImageResponse>(
1257 (presentation_info,),
1258 self.tx_id,
1259 0x73cfb50f577c143a,
1260 fidl::encoding::DynamicFlags::empty(),
1261 )
1262 }
1263}
1264
1265mod internal {
1266 use super::*;
1267
1268 impl fidl::encoding::ResourceTypeMarker for ImagePipe2AddBufferCollection2Request {
1269 type Borrowed<'a> = &'a mut Self;
1270 fn take_or_borrow<'a>(
1271 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1272 ) -> Self::Borrowed<'a> {
1273 value
1274 }
1275 }
1276
1277 unsafe impl fidl::encoding::TypeMarker for ImagePipe2AddBufferCollection2Request {
1278 type Owned = Self;
1279
1280 #[inline(always)]
1281 fn inline_align(_context: fidl::encoding::Context) -> usize {
1282 4
1283 }
1284
1285 #[inline(always)]
1286 fn inline_size(_context: fidl::encoding::Context) -> usize {
1287 8
1288 }
1289 }
1290
1291 unsafe impl
1292 fidl::encoding::Encode<
1293 ImagePipe2AddBufferCollection2Request,
1294 fidl::encoding::DefaultFuchsiaResourceDialect,
1295 > for &mut ImagePipe2AddBufferCollection2Request
1296 {
1297 #[inline]
1298 unsafe fn encode(
1299 self,
1300 encoder: &mut fidl::encoding::Encoder<
1301 '_,
1302 fidl::encoding::DefaultFuchsiaResourceDialect,
1303 >,
1304 offset: usize,
1305 _depth: fidl::encoding::Depth,
1306 ) -> fidl::Result<()> {
1307 encoder.debug_check_bounds::<ImagePipe2AddBufferCollection2Request>(offset);
1308 fidl::encoding::Encode::<
1310 ImagePipe2AddBufferCollection2Request,
1311 fidl::encoding::DefaultFuchsiaResourceDialect,
1312 >::encode(
1313 (
1314 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.buffer_collection_id),
1315 <fidl::encoding::Endpoint<
1316 fidl::endpoints::ClientEnd<
1317 fidl_fuchsia_sysmem2::BufferCollectionTokenMarker,
1318 >,
1319 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1320 &mut self.buffer_collection_token,
1321 ),
1322 ),
1323 encoder,
1324 offset,
1325 _depth,
1326 )
1327 }
1328 }
1329 unsafe impl<
1330 T0: fidl::encoding::Encode<u32, fidl::encoding::DefaultFuchsiaResourceDialect>,
1331 T1: fidl::encoding::Encode<
1332 fidl::encoding::Endpoint<
1333 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem2::BufferCollectionTokenMarker>,
1334 >,
1335 fidl::encoding::DefaultFuchsiaResourceDialect,
1336 >,
1337 >
1338 fidl::encoding::Encode<
1339 ImagePipe2AddBufferCollection2Request,
1340 fidl::encoding::DefaultFuchsiaResourceDialect,
1341 > for (T0, T1)
1342 {
1343 #[inline]
1344 unsafe fn encode(
1345 self,
1346 encoder: &mut fidl::encoding::Encoder<
1347 '_,
1348 fidl::encoding::DefaultFuchsiaResourceDialect,
1349 >,
1350 offset: usize,
1351 depth: fidl::encoding::Depth,
1352 ) -> fidl::Result<()> {
1353 encoder.debug_check_bounds::<ImagePipe2AddBufferCollection2Request>(offset);
1354 self.0.encode(encoder, offset + 0, depth)?;
1358 self.1.encode(encoder, offset + 4, depth)?;
1359 Ok(())
1360 }
1361 }
1362
1363 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1364 for ImagePipe2AddBufferCollection2Request
1365 {
1366 #[inline(always)]
1367 fn new_empty() -> Self {
1368 Self {
1369 buffer_collection_id: fidl::new_empty!(
1370 u32,
1371 fidl::encoding::DefaultFuchsiaResourceDialect
1372 ),
1373 buffer_collection_token: fidl::new_empty!(
1374 fidl::encoding::Endpoint<
1375 fidl::endpoints::ClientEnd<
1376 fidl_fuchsia_sysmem2::BufferCollectionTokenMarker,
1377 >,
1378 >,
1379 fidl::encoding::DefaultFuchsiaResourceDialect
1380 ),
1381 }
1382 }
1383
1384 #[inline]
1385 unsafe fn decode(
1386 &mut self,
1387 decoder: &mut fidl::encoding::Decoder<
1388 '_,
1389 fidl::encoding::DefaultFuchsiaResourceDialect,
1390 >,
1391 offset: usize,
1392 _depth: fidl::encoding::Depth,
1393 ) -> fidl::Result<()> {
1394 decoder.debug_check_bounds::<Self>(offset);
1395 fidl::decode!(
1397 u32,
1398 fidl::encoding::DefaultFuchsiaResourceDialect,
1399 &mut self.buffer_collection_id,
1400 decoder,
1401 offset + 0,
1402 _depth
1403 )?;
1404 fidl::decode!(
1405 fidl::encoding::Endpoint<
1406 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem2::BufferCollectionTokenMarker>,
1407 >,
1408 fidl::encoding::DefaultFuchsiaResourceDialect,
1409 &mut self.buffer_collection_token,
1410 decoder,
1411 offset + 4,
1412 _depth
1413 )?;
1414 Ok(())
1415 }
1416 }
1417
1418 impl fidl::encoding::ResourceTypeMarker for ImagePipe2AddBufferCollectionRequest {
1419 type Borrowed<'a> = &'a mut Self;
1420 fn take_or_borrow<'a>(
1421 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1422 ) -> Self::Borrowed<'a> {
1423 value
1424 }
1425 }
1426
1427 unsafe impl fidl::encoding::TypeMarker for ImagePipe2AddBufferCollectionRequest {
1428 type Owned = Self;
1429
1430 #[inline(always)]
1431 fn inline_align(_context: fidl::encoding::Context) -> usize {
1432 4
1433 }
1434
1435 #[inline(always)]
1436 fn inline_size(_context: fidl::encoding::Context) -> usize {
1437 8
1438 }
1439 }
1440
1441 unsafe impl
1442 fidl::encoding::Encode<
1443 ImagePipe2AddBufferCollectionRequest,
1444 fidl::encoding::DefaultFuchsiaResourceDialect,
1445 > for &mut ImagePipe2AddBufferCollectionRequest
1446 {
1447 #[inline]
1448 unsafe fn encode(
1449 self,
1450 encoder: &mut fidl::encoding::Encoder<
1451 '_,
1452 fidl::encoding::DefaultFuchsiaResourceDialect,
1453 >,
1454 offset: usize,
1455 _depth: fidl::encoding::Depth,
1456 ) -> fidl::Result<()> {
1457 encoder.debug_check_bounds::<ImagePipe2AddBufferCollectionRequest>(offset);
1458 fidl::encoding::Encode::<
1460 ImagePipe2AddBufferCollectionRequest,
1461 fidl::encoding::DefaultFuchsiaResourceDialect,
1462 >::encode(
1463 (
1464 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.buffer_collection_id),
1465 <fidl::encoding::Endpoint<
1466 fidl::endpoints::ClientEnd<
1467 fidl_fuchsia_sysmem::BufferCollectionTokenMarker,
1468 >,
1469 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1470 &mut self.buffer_collection_token,
1471 ),
1472 ),
1473 encoder,
1474 offset,
1475 _depth,
1476 )
1477 }
1478 }
1479 unsafe impl<
1480 T0: fidl::encoding::Encode<u32, fidl::encoding::DefaultFuchsiaResourceDialect>,
1481 T1: fidl::encoding::Encode<
1482 fidl::encoding::Endpoint<
1483 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem::BufferCollectionTokenMarker>,
1484 >,
1485 fidl::encoding::DefaultFuchsiaResourceDialect,
1486 >,
1487 >
1488 fidl::encoding::Encode<
1489 ImagePipe2AddBufferCollectionRequest,
1490 fidl::encoding::DefaultFuchsiaResourceDialect,
1491 > for (T0, T1)
1492 {
1493 #[inline]
1494 unsafe fn encode(
1495 self,
1496 encoder: &mut fidl::encoding::Encoder<
1497 '_,
1498 fidl::encoding::DefaultFuchsiaResourceDialect,
1499 >,
1500 offset: usize,
1501 depth: fidl::encoding::Depth,
1502 ) -> fidl::Result<()> {
1503 encoder.debug_check_bounds::<ImagePipe2AddBufferCollectionRequest>(offset);
1504 self.0.encode(encoder, offset + 0, depth)?;
1508 self.1.encode(encoder, offset + 4, depth)?;
1509 Ok(())
1510 }
1511 }
1512
1513 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1514 for ImagePipe2AddBufferCollectionRequest
1515 {
1516 #[inline(always)]
1517 fn new_empty() -> Self {
1518 Self {
1519 buffer_collection_id: fidl::new_empty!(
1520 u32,
1521 fidl::encoding::DefaultFuchsiaResourceDialect
1522 ),
1523 buffer_collection_token: fidl::new_empty!(
1524 fidl::encoding::Endpoint<
1525 fidl::endpoints::ClientEnd<
1526 fidl_fuchsia_sysmem::BufferCollectionTokenMarker,
1527 >,
1528 >,
1529 fidl::encoding::DefaultFuchsiaResourceDialect
1530 ),
1531 }
1532 }
1533
1534 #[inline]
1535 unsafe fn decode(
1536 &mut self,
1537 decoder: &mut fidl::encoding::Decoder<
1538 '_,
1539 fidl::encoding::DefaultFuchsiaResourceDialect,
1540 >,
1541 offset: usize,
1542 _depth: fidl::encoding::Depth,
1543 ) -> fidl::Result<()> {
1544 decoder.debug_check_bounds::<Self>(offset);
1545 fidl::decode!(
1547 u32,
1548 fidl::encoding::DefaultFuchsiaResourceDialect,
1549 &mut self.buffer_collection_id,
1550 decoder,
1551 offset + 0,
1552 _depth
1553 )?;
1554 fidl::decode!(
1555 fidl::encoding::Endpoint<
1556 fidl::endpoints::ClientEnd<fidl_fuchsia_sysmem::BufferCollectionTokenMarker>,
1557 >,
1558 fidl::encoding::DefaultFuchsiaResourceDialect,
1559 &mut self.buffer_collection_token,
1560 decoder,
1561 offset + 4,
1562 _depth
1563 )?;
1564 Ok(())
1565 }
1566 }
1567
1568 impl fidl::encoding::ResourceTypeMarker for ImagePipe2PresentImageRequest {
1569 type Borrowed<'a> = &'a mut Self;
1570 fn take_or_borrow<'a>(
1571 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1572 ) -> Self::Borrowed<'a> {
1573 value
1574 }
1575 }
1576
1577 unsafe impl fidl::encoding::TypeMarker for ImagePipe2PresentImageRequest {
1578 type Owned = Self;
1579
1580 #[inline(always)]
1581 fn inline_align(_context: fidl::encoding::Context) -> usize {
1582 8
1583 }
1584
1585 #[inline(always)]
1586 fn inline_size(_context: fidl::encoding::Context) -> usize {
1587 48
1588 }
1589 }
1590
1591 unsafe impl
1592 fidl::encoding::Encode<
1593 ImagePipe2PresentImageRequest,
1594 fidl::encoding::DefaultFuchsiaResourceDialect,
1595 > for &mut ImagePipe2PresentImageRequest
1596 {
1597 #[inline]
1598 unsafe fn encode(
1599 self,
1600 encoder: &mut fidl::encoding::Encoder<
1601 '_,
1602 fidl::encoding::DefaultFuchsiaResourceDialect,
1603 >,
1604 offset: usize,
1605 _depth: fidl::encoding::Depth,
1606 ) -> fidl::Result<()> {
1607 encoder.debug_check_bounds::<ImagePipe2PresentImageRequest>(offset);
1608 fidl::encoding::Encode::<
1610 ImagePipe2PresentImageRequest,
1611 fidl::encoding::DefaultFuchsiaResourceDialect,
1612 >::encode(
1613 (
1614 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.image_id),
1615 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.presentation_time),
1616 <fidl::encoding::Vector<
1617 fidl::encoding::HandleType<
1618 fidl::Event,
1619 { fidl::ObjectType::EVENT.into_raw() },
1620 2147483648,
1621 >,
1622 16,
1623 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1624 &mut self.acquire_fences,
1625 ),
1626 <fidl::encoding::Vector<
1627 fidl::encoding::HandleType<
1628 fidl::Event,
1629 { fidl::ObjectType::EVENT.into_raw() },
1630 2147483648,
1631 >,
1632 16,
1633 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1634 &mut self.release_fences,
1635 ),
1636 ),
1637 encoder,
1638 offset,
1639 _depth,
1640 )
1641 }
1642 }
1643 unsafe impl<
1644 T0: fidl::encoding::Encode<u32, fidl::encoding::DefaultFuchsiaResourceDialect>,
1645 T1: fidl::encoding::Encode<u64, fidl::encoding::DefaultFuchsiaResourceDialect>,
1646 T2: fidl::encoding::Encode<
1647 fidl::encoding::Vector<
1648 fidl::encoding::HandleType<
1649 fidl::Event,
1650 { fidl::ObjectType::EVENT.into_raw() },
1651 2147483648,
1652 >,
1653 16,
1654 >,
1655 fidl::encoding::DefaultFuchsiaResourceDialect,
1656 >,
1657 T3: fidl::encoding::Encode<
1658 fidl::encoding::Vector<
1659 fidl::encoding::HandleType<
1660 fidl::Event,
1661 { fidl::ObjectType::EVENT.into_raw() },
1662 2147483648,
1663 >,
1664 16,
1665 >,
1666 fidl::encoding::DefaultFuchsiaResourceDialect,
1667 >,
1668 >
1669 fidl::encoding::Encode<
1670 ImagePipe2PresentImageRequest,
1671 fidl::encoding::DefaultFuchsiaResourceDialect,
1672 > for (T0, T1, T2, T3)
1673 {
1674 #[inline]
1675 unsafe fn encode(
1676 self,
1677 encoder: &mut fidl::encoding::Encoder<
1678 '_,
1679 fidl::encoding::DefaultFuchsiaResourceDialect,
1680 >,
1681 offset: usize,
1682 depth: fidl::encoding::Depth,
1683 ) -> fidl::Result<()> {
1684 encoder.debug_check_bounds::<ImagePipe2PresentImageRequest>(offset);
1685 unsafe {
1688 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1689 (ptr as *mut u64).write_unaligned(0);
1690 }
1691 self.0.encode(encoder, offset + 0, depth)?;
1693 self.1.encode(encoder, offset + 8, depth)?;
1694 self.2.encode(encoder, offset + 16, depth)?;
1695 self.3.encode(encoder, offset + 32, depth)?;
1696 Ok(())
1697 }
1698 }
1699
1700 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1701 for ImagePipe2PresentImageRequest
1702 {
1703 #[inline(always)]
1704 fn new_empty() -> Self {
1705 Self {
1706 image_id: fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect),
1707 presentation_time: fidl::new_empty!(
1708 u64,
1709 fidl::encoding::DefaultFuchsiaResourceDialect
1710 ),
1711 acquire_fences: fidl::new_empty!(
1712 fidl::encoding::Vector<
1713 fidl::encoding::HandleType<
1714 fidl::Event,
1715 { fidl::ObjectType::EVENT.into_raw() },
1716 2147483648,
1717 >,
1718 16,
1719 >,
1720 fidl::encoding::DefaultFuchsiaResourceDialect
1721 ),
1722 release_fences: fidl::new_empty!(
1723 fidl::encoding::Vector<
1724 fidl::encoding::HandleType<
1725 fidl::Event,
1726 { fidl::ObjectType::EVENT.into_raw() },
1727 2147483648,
1728 >,
1729 16,
1730 >,
1731 fidl::encoding::DefaultFuchsiaResourceDialect
1732 ),
1733 }
1734 }
1735
1736 #[inline]
1737 unsafe fn decode(
1738 &mut self,
1739 decoder: &mut fidl::encoding::Decoder<
1740 '_,
1741 fidl::encoding::DefaultFuchsiaResourceDialect,
1742 >,
1743 offset: usize,
1744 _depth: fidl::encoding::Depth,
1745 ) -> fidl::Result<()> {
1746 decoder.debug_check_bounds::<Self>(offset);
1747 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1749 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1750 let mask = 0xffffffff00000000u64;
1751 let maskedval = padval & mask;
1752 if maskedval != 0 {
1753 return Err(fidl::Error::NonZeroPadding {
1754 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1755 });
1756 }
1757 fidl::decode!(
1758 u32,
1759 fidl::encoding::DefaultFuchsiaResourceDialect,
1760 &mut self.image_id,
1761 decoder,
1762 offset + 0,
1763 _depth
1764 )?;
1765 fidl::decode!(
1766 u64,
1767 fidl::encoding::DefaultFuchsiaResourceDialect,
1768 &mut self.presentation_time,
1769 decoder,
1770 offset + 8,
1771 _depth
1772 )?;
1773 fidl::decode!(
1774 fidl::encoding::Vector<
1775 fidl::encoding::HandleType<
1776 fidl::Event,
1777 { fidl::ObjectType::EVENT.into_raw() },
1778 2147483648,
1779 >,
1780 16,
1781 >,
1782 fidl::encoding::DefaultFuchsiaResourceDialect,
1783 &mut self.acquire_fences,
1784 decoder,
1785 offset + 16,
1786 _depth
1787 )?;
1788 fidl::decode!(
1789 fidl::encoding::Vector<
1790 fidl::encoding::HandleType<
1791 fidl::Event,
1792 { fidl::ObjectType::EVENT.into_raw() },
1793 2147483648,
1794 >,
1795 16,
1796 >,
1797 fidl::encoding::DefaultFuchsiaResourceDialect,
1798 &mut self.release_fences,
1799 decoder,
1800 offset + 32,
1801 _depth
1802 )?;
1803 Ok(())
1804 }
1805 }
1806}