1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub type ContextId = u32;
12
13pub type ObjectId = u64;
14
15pub type PerformanceCounterPoolId = u64;
20
21pub type PerformanceCounterSet = Vec<u64>;
24
25pub type PerformanceCounterTriggerId = u32;
26
27pub const MAX_ICD_COUNT: u64 = 8;
29
30pub const MAX_IMMEDIATE_COMMANDS_DATA_SIZE: u32 = 2048;
32
33pub const MAX_INLINE_COMMANDS_DATA_SIZE: u32 = 2048;
35
36bitflags! {
37 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
38 pub struct CommandBufferFlags: u64 {
39 const VENDOR_FLAG_0 = 65536;
41 }
42}
43
44impl CommandBufferFlags {
45 #[inline(always)]
46 pub fn from_bits_allow_unknown(bits: u64) -> Self {
47 Self::from_bits_retain(bits)
48 }
49
50 #[inline(always)]
51 pub fn has_unknown_bits(&self) -> bool {
52 self.get_unknown_bits() != 0
53 }
54
55 #[inline(always)]
56 pub fn get_unknown_bits(&self) -> u64 {
57 self.bits() & !Self::all().bits()
58 }
59}
60
61bitflags! {
62 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
63 pub struct IcdFlags: u32 {
64 const SUPPORTS_VULKAN = 1;
65 const SUPPORTS_OPENCL = 2;
66 const SUPPORTS_MEDIA_CODEC_FACTORY = 4;
67 }
68}
69
70impl IcdFlags {
71 #[inline(always)]
72 pub fn from_bits_allow_unknown(bits: u32) -> Self {
73 Self::from_bits_retain(bits)
74 }
75
76 #[inline(always)]
77 pub fn has_unknown_bits(&self) -> bool {
78 self.get_unknown_bits() != 0
79 }
80
81 #[inline(always)]
82 pub fn get_unknown_bits(&self) -> u32 {
83 self.bits() & !Self::all().bits()
84 }
85}
86
87bitflags! {
88 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
89 pub struct ImportFlags: u64 {
90 const SEMAPHORE_ONE_SHOT = 1;
91 }
92}
93
94impl ImportFlags {
95 #[inline(always)]
96 pub fn from_bits_allow_unknown(bits: u64) -> Self {
97 Self::from_bits_retain(bits)
98 }
99
100 #[inline(always)]
101 pub fn has_unknown_bits(&self) -> bool {
102 self.get_unknown_bits() != 0
103 }
104
105 #[inline(always)]
106 pub fn get_unknown_bits(&self) -> u64 {
107 self.bits() & !Self::all().bits()
108 }
109}
110
111bitflags! {
112 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
113 pub struct MapFlags: u64 {
114 const READ = 1;
115 const WRITE = 2;
116 const EXECUTE = 4;
117 const GROWABLE = 8;
120 const VENDOR_FLAG_0 = 65536;
122 }
123}
124
125impl MapFlags {
126 #[inline(always)]
127 pub fn from_bits_allow_unknown(bits: u64) -> Self {
128 Self::from_bits_retain(bits)
129 }
130
131 #[inline(always)]
132 pub fn has_unknown_bits(&self) -> bool {
133 self.get_unknown_bits() != 0
134 }
135
136 #[inline(always)]
137 pub fn get_unknown_bits(&self) -> u64 {
138 self.bits() & !Self::all().bits()
139 }
140}
141
142bitflags! {
143 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
144 pub struct ResultFlags: u32 {
145 const DISCONTINUITY = 1;
148 }
149}
150
151impl ResultFlags {
152 #[inline(always)]
153 pub fn from_bits_allow_unknown(bits: u32) -> Self {
154 Self::from_bits_retain(bits)
155 }
156
157 #[inline(always)]
158 pub fn has_unknown_bits(&self) -> bool {
159 self.get_unknown_bits() != 0
160 }
161
162 #[inline(always)]
163 pub fn get_unknown_bits(&self) -> u32 {
164 self.bits() & !Self::all().bits()
165 }
166}
167
168#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
169pub enum BufferOp {
170 PopulateTables,
174 DepopulateTables,
177 #[doc(hidden)]
178 __SourceBreaking { unknown_ordinal: u32 },
179}
180
181#[macro_export]
183macro_rules! BufferOpUnknown {
184 () => {
185 _
186 };
187}
188
189impl BufferOp {
190 #[inline]
191 pub fn from_primitive(prim: u32) -> Option<Self> {
192 match prim {
193 1 => Some(Self::PopulateTables),
194 2 => Some(Self::DepopulateTables),
195 _ => None,
196 }
197 }
198
199 #[inline]
200 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
201 match prim {
202 1 => Self::PopulateTables,
203 2 => Self::DepopulateTables,
204 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
205 }
206 }
207
208 #[inline]
209 pub fn unknown() -> Self {
210 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
211 }
212
213 #[inline]
214 pub const fn into_primitive(self) -> u32 {
215 match self {
216 Self::PopulateTables => 1,
217 Self::DepopulateTables => 2,
218 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
219 }
220 }
221
222 #[inline]
223 pub fn is_unknown(&self) -> bool {
224 match self {
225 Self::__SourceBreaking { unknown_ordinal: _ } => true,
226 _ => false,
227 }
228 }
229}
230
231#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
232pub enum ObjectType {
233 Buffer,
235 Semaphore,
237 #[doc(hidden)]
238 __SourceBreaking { unknown_ordinal: u32 },
239}
240
241#[macro_export]
243macro_rules! ObjectTypeUnknown {
244 () => {
245 _
246 };
247}
248
249impl ObjectType {
250 #[inline]
251 pub fn from_primitive(prim: u32) -> Option<Self> {
252 match prim {
253 11 => Some(Self::Buffer),
254 12 => Some(Self::Semaphore),
255 _ => None,
256 }
257 }
258
259 #[inline]
260 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
261 match prim {
262 11 => Self::Buffer,
263 12 => Self::Semaphore,
264 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
265 }
266 }
267
268 #[inline]
269 pub fn unknown() -> Self {
270 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
271 }
272
273 #[inline]
274 pub const fn into_primitive(self) -> u32 {
275 match self {
276 Self::Buffer => 11,
277 Self::Semaphore => 12,
278 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
279 }
280 }
281
282 #[inline]
283 pub fn is_unknown(&self) -> bool {
284 match self {
285 Self::__SourceBreaking { unknown_ordinal: _ } => true,
286 _ => false,
287 }
288 }
289}
290
291#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
293pub enum PowerGoalType {
294 OnReadyForWork,
296 HighPerformance,
298 SustainedPerformance,
301 #[doc(hidden)]
302 __SourceBreaking { unknown_ordinal: u64 },
303}
304
305#[macro_export]
307macro_rules! PowerGoalTypeUnknown {
308 () => {
309 _
310 };
311}
312
313impl PowerGoalType {
314 #[inline]
315 pub fn from_primitive(prim: u64) -> Option<Self> {
316 match prim {
317 1 => Some(Self::OnReadyForWork),
318 2 => Some(Self::HighPerformance),
319 3 => Some(Self::SustainedPerformance),
320 _ => None,
321 }
322 }
323
324 #[inline]
325 pub fn from_primitive_allow_unknown(prim: u64) -> Self {
326 match prim {
327 1 => Self::OnReadyForWork,
328 2 => Self::HighPerformance,
329 3 => Self::SustainedPerformance,
330 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
331 }
332 }
333
334 #[inline]
335 pub fn unknown() -> Self {
336 Self::__SourceBreaking { unknown_ordinal: 0xffffffffffffffff }
337 }
338
339 #[inline]
340 pub const fn into_primitive(self) -> u64 {
341 match self {
342 Self::OnReadyForWork => 1,
343 Self::HighPerformance => 2,
344 Self::SustainedPerformance => 3,
345 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
346 }
347 }
348
349 #[inline]
350 pub fn is_unknown(&self) -> bool {
351 match self {
352 Self::__SourceBreaking { unknown_ordinal: _ } => true,
353 _ => false,
354 }
355 }
356}
357
358#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
363pub enum Priority {
364 Low,
365 Medium,
366 High,
367 Realtime,
368 #[doc(hidden)]
369 __SourceBreaking {
370 unknown_ordinal: u64,
371 },
372}
373
374#[macro_export]
376macro_rules! PriorityUnknown {
377 () => {
378 _
379 };
380}
381
382impl Priority {
383 #[inline]
384 pub fn from_primitive(prim: u64) -> Option<Self> {
385 match prim {
386 128 => Some(Self::Low),
387 256 => Some(Self::Medium),
388 512 => Some(Self::High),
389 1024 => Some(Self::Realtime),
390 _ => None,
391 }
392 }
393
394 #[inline]
395 pub fn from_primitive_allow_unknown(prim: u64) -> Self {
396 match prim {
397 128 => Self::Low,
398 256 => Self::Medium,
399 512 => Self::High,
400 1024 => Self::Realtime,
401 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
402 }
403 }
404
405 #[inline]
406 pub fn unknown() -> Self {
407 Self::__SourceBreaking { unknown_ordinal: 0xffffffffffffffff }
408 }
409
410 #[inline]
411 pub const fn into_primitive(self) -> u64 {
412 match self {
413 Self::Low => 128,
414 Self::Medium => 256,
415 Self::High => 512,
416 Self::Realtime => 1024,
417 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
418 }
419 }
420
421 #[inline]
422 pub fn is_unknown(&self) -> bool {
423 match self {
424 Self::__SourceBreaking { unknown_ordinal: _ } => true,
425 _ => false,
426 }
427 }
428}
429
430#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
433pub enum QueryId {
434 VendorId,
437 DeviceId,
439 VendorVersion,
441 IsTotalTimeSupported,
443 MaximumInflightParams,
445 MagmaQueryTotalTime,
448 VendorQuery0,
450 #[doc(hidden)]
451 __SourceBreaking { unknown_ordinal: u64 },
452}
453
454#[macro_export]
456macro_rules! QueryIdUnknown {
457 () => {
458 _
459 };
460}
461
462impl QueryId {
463 #[inline]
464 pub fn from_primitive(prim: u64) -> Option<Self> {
465 match prim {
466 0 => Some(Self::VendorId),
467 1 => Some(Self::DeviceId),
468 2 => Some(Self::VendorVersion),
469 3 => Some(Self::IsTotalTimeSupported),
470 5 => Some(Self::MaximumInflightParams),
471 500 => Some(Self::MagmaQueryTotalTime),
472 10000 => Some(Self::VendorQuery0),
473 _ => None,
474 }
475 }
476
477 #[inline]
478 pub fn from_primitive_allow_unknown(prim: u64) -> Self {
479 match prim {
480 0 => Self::VendorId,
481 1 => Self::DeviceId,
482 2 => Self::VendorVersion,
483 3 => Self::IsTotalTimeSupported,
484 5 => Self::MaximumInflightParams,
485 500 => Self::MagmaQueryTotalTime,
486 10000 => Self::VendorQuery0,
487 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
488 }
489 }
490
491 #[inline]
492 pub fn unknown() -> Self {
493 Self::__SourceBreaking { unknown_ordinal: 0xffffffffffffffff }
494 }
495
496 #[inline]
497 pub const fn into_primitive(self) -> u64 {
498 match self {
499 Self::VendorId => 0,
500 Self::DeviceId => 1,
501 Self::VendorVersion => 2,
502 Self::IsTotalTimeSupported => 3,
503 Self::MaximumInflightParams => 5,
504 Self::MagmaQueryTotalTime => 500,
505 Self::VendorQuery0 => 10000,
506 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
507 }
508 }
509
510 #[inline]
511 pub fn is_unknown(&self) -> bool {
512 match self {
513 Self::__SourceBreaking { unknown_ordinal: _ } => true,
514 _ => false,
515 }
516 }
517}
518
519#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
520#[repr(C)]
521pub struct BufferRange {
522 pub buffer_id: u64,
523 pub offset: u64,
524 pub size: u64,
525}
526
527impl fidl::Persistable for BufferRange {}
528
529#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
531#[repr(C)]
532pub struct CommandBuffer {
533 pub resource_index: u32,
535 pub start_offset: u64,
537}
538
539impl fidl::Persistable for CommandBuffer {}
540
541#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
542#[repr(C)]
543pub struct DebugUtilsSetPowerStateRequest {
544 pub power_state: i64,
545}
546
547impl fidl::Persistable for DebugUtilsSetPowerStateRequest {}
548
549#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
550pub struct DeviceQueryRequest {
551 pub query_id: QueryId,
552}
553
554impl fidl::Persistable for DeviceQueryRequest {}
555
556#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
557#[repr(C)]
558pub struct DiagnosticDeviceDumpStateRequest {
559 pub dump_type: u32,
560}
561
562impl fidl::Persistable for DiagnosticDeviceDumpStateRequest {}
563
564#[derive(Clone, Debug, PartialEq)]
565pub struct IcdLoaderDeviceGetIcdListResponse {
566 pub icd_list: Vec<IcdInfo>,
567}
568
569impl fidl::Persistable for IcdLoaderDeviceGetIcdListResponse {}
570
571#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
572pub struct PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {
573 pub pool_id: u64,
574 pub offsets: Vec<BufferRange>,
575}
576
577impl fidl::Persistable for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {}
578
579#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
580pub struct PrimaryBufferRangeOp2Request {
581 pub op: BufferOp,
582 pub range: BufferRange,
583}
584
585impl fidl::Persistable for PrimaryBufferRangeOp2Request {}
586
587#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
588pub struct PrimaryClearPerformanceCountersRequest {
589 pub counters: Vec<u64>,
590}
591
592impl fidl::Persistable for PrimaryClearPerformanceCountersRequest {}
593
594#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
595pub struct PrimaryCreateContext2Request {
596 pub context_id: u32,
597 pub priority: Priority,
598}
599
600impl fidl::Persistable for PrimaryCreateContext2Request {}
601
602#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
603#[repr(C)]
604pub struct PrimaryCreateContextRequest {
605 pub context_id: u32,
606}
607
608impl fidl::Persistable for PrimaryCreateContextRequest {}
609
610#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
611#[repr(C)]
612pub struct PrimaryDestroyContextRequest {
613 pub context_id: u32,
614}
615
616impl fidl::Persistable for PrimaryDestroyContextRequest {}
617
618#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
619#[repr(C)]
620pub struct PrimaryDumpPerformanceCountersRequest {
621 pub pool_id: u64,
622 pub trigger_id: u32,
623}
624
625impl fidl::Persistable for PrimaryDumpPerformanceCountersRequest {}
626
627#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
628pub struct PrimaryEnablePerformanceCountersRequest {
629 pub counters: Vec<u64>,
630}
631
632impl fidl::Persistable for PrimaryEnablePerformanceCountersRequest {}
633
634#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
635pub struct PrimaryExecuteCommandRequest {
636 pub context_id: u32,
637 pub resources: Vec<BufferRange>,
638 pub command_buffers: Vec<CommandBuffer>,
639 pub wait_semaphores: Vec<u64>,
640 pub signal_semaphores: Vec<u64>,
641 pub flags: CommandBufferFlags,
642}
643
644impl fidl::Persistable for PrimaryExecuteCommandRequest {}
645
646#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
647pub struct PrimaryExecuteImmediateCommandsRequest {
648 pub context_id: u32,
649 pub command_data: Vec<u8>,
650 pub semaphores: Vec<u64>,
651}
652
653impl fidl::Persistable for PrimaryExecuteImmediateCommandsRequest {}
654
655#[derive(Clone, Debug, PartialEq)]
656pub struct PrimaryExecuteInlineCommandsRequest {
657 pub context_id: u32,
658 pub commands: Vec<InlineCommand>,
659}
660
661impl fidl::Persistable for PrimaryExecuteInlineCommandsRequest {}
662
663#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
664pub struct PrimaryIsPerformanceCounterAccessAllowedResponse {
665 pub enabled: bool,
666}
667
668impl fidl::Persistable for PrimaryIsPerformanceCounterAccessAllowedResponse {}
669
670#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
671#[repr(C)]
672pub struct PrimaryOnNotifyMemoryImportedRequest {
673 pub bytes: u64,
674}
675
676impl fidl::Persistable for PrimaryOnNotifyMemoryImportedRequest {}
677
678#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
679#[repr(C)]
680pub struct PrimaryOnNotifyMessagesConsumedRequest {
681 pub count: u64,
682}
683
684impl fidl::Persistable for PrimaryOnNotifyMessagesConsumedRequest {}
685
686#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
687pub struct PrimaryReleaseObjectRequest {
688 pub object_id: u64,
689 pub object_type: ObjectType,
690}
691
692impl fidl::Persistable for PrimaryReleaseObjectRequest {}
693
694#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
695#[repr(C)]
696pub struct PrimaryReleasePerformanceCounterBufferPoolRequest {
697 pub pool_id: u64,
698}
699
700impl fidl::Persistable for PrimaryReleasePerformanceCounterBufferPoolRequest {}
701
702#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
703#[repr(C)]
704pub struct PrimaryRemovePerformanceCounterBufferFromPoolRequest {
705 pub pool_id: u64,
706 pub buffer_id: u64,
707}
708
709impl fidl::Persistable for PrimaryRemovePerformanceCounterBufferFromPoolRequest {}
710
711#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
712#[repr(C)]
713pub struct TestDevice2GetUnitTestStatusResponse {
714 pub status: i32,
715}
716
717impl fidl::Persistable for TestDevice2GetUnitTestStatusResponse {}
718
719#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
720#[repr(C)]
721pub struct TestDeviceGetUnitTestStatusResponse {
722 pub status: i32,
723}
724
725impl fidl::Persistable for TestDeviceGetUnitTestStatusResponse {}
726
727#[derive(Clone, Debug, Default, PartialEq)]
729pub struct IcdInfo {
730 pub component_url: Option<String>,
732 pub flags: Option<IcdFlags>,
734 #[doc(hidden)]
735 pub __source_breaking: fidl::marker::SourceBreaking,
736}
737
738impl fidl::Persistable for IcdInfo {}
739
740#[derive(Clone, Debug, Default, PartialEq)]
741pub struct InlineCommand {
742 pub data: Option<Vec<u8>>,
743 pub semaphores: Option<Vec<u64>>,
744 #[doc(hidden)]
745 pub __source_breaking: fidl::marker::SourceBreaking,
746}
747
748impl fidl::Persistable for InlineCommand {}
749
750#[derive(Clone, Debug, Default, PartialEq)]
751pub struct PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest {
752 pub trigger_id: Option<u32>,
754 pub buffer_id: Option<u64>,
756 pub buffer_offset: Option<u32>,
758 pub timestamp: Option<i64>,
760 pub flags: Option<ResultFlags>,
762 #[doc(hidden)]
763 pub __source_breaking: fidl::marker::SourceBreaking,
764}
765
766impl fidl::Persistable for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest {}
767
768#[derive(Clone, Debug, Default, PartialEq)]
769pub struct PowerElementProviderGetClockSpeedLevelRequest {
770 pub hz: Option<u64>,
772 pub allow_max: Option<bool>,
777 #[doc(hidden)]
778 pub __source_breaking: fidl::marker::SourceBreaking,
779}
780
781impl fidl::Persistable for PowerElementProviderGetClockSpeedLevelRequest {}
782
783#[derive(Clone, Debug, Default, PartialEq)]
784pub struct PowerElementProviderSetClockLimitRequest {
785 pub hz: Option<u64>,
787 #[doc(hidden)]
788 pub __source_breaking: fidl::marker::SourceBreaking,
789}
790
791impl fidl::Persistable for PowerElementProviderSetClockLimitRequest {}
792
793#[derive(Clone, Debug, Default, PartialEq)]
794pub struct PrimaryMapBufferRequest {
795 pub hw_va: Option<u64>,
797 pub range: Option<BufferRange>,
799 pub flags: Option<MapFlags>,
800 #[doc(hidden)]
801 pub __source_breaking: fidl::marker::SourceBreaking,
802}
803
804impl fidl::Persistable for PrimaryMapBufferRequest {}
805
806#[derive(Clone, Debug, Default, PartialEq)]
807pub struct PrimaryUnmapBufferRequest {
808 pub hw_va: Option<u64>,
810 pub buffer_id: Option<u64>,
812 #[doc(hidden)]
813 pub __source_breaking: fidl::marker::SourceBreaking,
814}
815
816impl fidl::Persistable for PrimaryUnmapBufferRequest {}
817
818pub mod combined_device_ordinals {
819 pub const QUERY: u64 = 0x627d4c6093b078e7;
820 pub const CONNECT2: u64 = 0x3a5b134714c67914;
821 pub const DUMP_STATE: u64 = 0x5420df493d4fa915;
822 pub const GET_ICD_LIST: u64 = 0x7673e76395008257;
823}
824
825pub mod debug_utils_ordinals {
826 pub const SET_POWER_STATE: u64 = 0x1db4f4bbbf7fb866;
827}
828
829pub mod dependency_injection_ordinals {
830 pub const SET_MEMORY_PRESSURE_PROVIDER: u64 = 0x5ef0be960d4b0f4c;
831}
832
833pub mod device_ordinals {
834 pub const QUERY: u64 = 0x627d4c6093b078e7;
835 pub const CONNECT2: u64 = 0x3a5b134714c67914;
836}
837
838pub mod diagnostic_device_ordinals {
839 pub const DUMP_STATE: u64 = 0x5420df493d4fa915;
840}
841
842pub mod icd_loader_device_ordinals {
843 pub const GET_ICD_LIST: u64 = 0x7673e76395008257;
844}
845
846pub mod notification_ordinals {}
847
848pub mod performance_counter_access_ordinals {
849 pub const GET_PERFORMANCE_COUNT_TOKEN: u64 = 0x48410470c5f00f92;
850}
851
852pub mod performance_counter_events_ordinals {
853 pub const ON_PERFORMANCE_COUNTER_READ_COMPLETED: u64 = 0x3f134926720d44d7;
854}
855
856pub mod power_element_provider_ordinals {
857 pub const GET_POWER_GOALS: u64 = 0x2ff49ddffb0e07c0;
858 pub const GET_CLOCK_SPEED_LEVEL: u64 = 0x5315a9bc44a9c53c;
859 pub const SET_CLOCK_LIMIT: u64 = 0x614bf25c3a1571b4;
860}
861
862pub mod primary_ordinals {
863 pub const IMPORT_OBJECT: u64 = 0x5f5a247abb1d9354;
864 pub const RELEASE_OBJECT: u64 = 0x4a65d5885da5e88f;
865 pub const CREATE_CONTEXT: u64 = 0x5a9a91c8b88b5da4;
866 pub const CREATE_CONTEXT2: u64 = 0x5f7e3a5137e758f6;
867 pub const DESTROY_CONTEXT: u64 = 0x26b626e6be162ef0;
868 pub const EXECUTE_COMMAND: u64 = 0xf2799643aadb0db;
869 pub const EXECUTE_IMMEDIATE_COMMANDS: u64 = 0x3d7e0dcdbfd4b61f;
870 pub const EXECUTE_INLINE_COMMANDS: u64 = 0x766d5c86f35468a6;
871 pub const FLUSH: u64 = 0x54ccb5572d886039;
872 pub const MAP_BUFFER: u64 = 0x56baa5d2092c8e33;
873 pub const UNMAP_BUFFER: u64 = 0x305188ebd8bcd95c;
874 pub const BUFFER_RANGE_OP2: u64 = 0x4175c8dfef355396;
875 pub const ENABLE_FLOW_CONTROL: u64 = 0x8b5e68f3ee0b22e;
876 pub const ON_NOTIFY_MESSAGES_CONSUMED: u64 = 0x5e8dd0b0b753ac43;
877 pub const ON_NOTIFY_MEMORY_IMPORTED: u64 = 0x50524b7a3503aba6;
878 pub const ENABLE_PERFORMANCE_COUNTER_ACCESS: u64 = 0x51b369ac16588831;
879 pub const IS_PERFORMANCE_COUNTER_ACCESS_ALLOWED: u64 = 0x1933b70c06cc5702;
880 pub const ENABLE_PERFORMANCE_COUNTERS: u64 = 0x52c4db74b601aaa7;
881 pub const CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: u64 = 0x48ccf6519bbbc638;
882 pub const RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: u64 = 0x18374c4b3ef0b4da;
883 pub const ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: u64 = 0x1f7889571111386b;
884 pub const REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: u64 = 0xbf1275f5a36258e;
885 pub const DUMP_PERFORMANCE_COUNTERS: u64 = 0x250b29340be28807;
886 pub const CLEAR_PERFORMANCE_COUNTERS: u64 = 0x236831822eff741a;
887}
888
889pub mod test_device_ordinals {
890 pub const QUERY: u64 = 0x627d4c6093b078e7;
891 pub const CONNECT2: u64 = 0x3a5b134714c67914;
892 pub const DUMP_STATE: u64 = 0x5420df493d4fa915;
893 pub const GET_ICD_LIST: u64 = 0x7673e76395008257;
894 pub const GET_UNIT_TEST_STATUS: u64 = 0x3ebcd9c409c248f1;
895}
896
897pub mod test_device2_ordinals {
898 pub const GET_UNIT_TEST_STATUS: u64 = 0x5be45b0f097813b2;
899}
900
901mod internal {
902 use super::*;
903 unsafe impl fidl::encoding::TypeMarker for CommandBufferFlags {
904 type Owned = Self;
905
906 #[inline(always)]
907 fn inline_align(_context: fidl::encoding::Context) -> usize {
908 8
909 }
910
911 #[inline(always)]
912 fn inline_size(_context: fidl::encoding::Context) -> usize {
913 8
914 }
915 }
916
917 impl fidl::encoding::ValueTypeMarker for CommandBufferFlags {
918 type Borrowed<'a> = Self;
919 #[inline(always)]
920 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
921 *value
922 }
923 }
924
925 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
926 for CommandBufferFlags
927 {
928 #[inline]
929 unsafe fn encode(
930 self,
931 encoder: &mut fidl::encoding::Encoder<'_, D>,
932 offset: usize,
933 _depth: fidl::encoding::Depth,
934 ) -> fidl::Result<()> {
935 encoder.debug_check_bounds::<Self>(offset);
936 encoder.write_num(self.bits(), offset);
937 Ok(())
938 }
939 }
940
941 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommandBufferFlags {
942 #[inline(always)]
943 fn new_empty() -> Self {
944 Self::empty()
945 }
946
947 #[inline]
948 unsafe fn decode(
949 &mut self,
950 decoder: &mut fidl::encoding::Decoder<'_, D>,
951 offset: usize,
952 _depth: fidl::encoding::Depth,
953 ) -> fidl::Result<()> {
954 decoder.debug_check_bounds::<Self>(offset);
955 let prim = decoder.read_num::<u64>(offset);
956 *self = Self::from_bits_allow_unknown(prim);
957 Ok(())
958 }
959 }
960 unsafe impl fidl::encoding::TypeMarker for IcdFlags {
961 type Owned = Self;
962
963 #[inline(always)]
964 fn inline_align(_context: fidl::encoding::Context) -> usize {
965 4
966 }
967
968 #[inline(always)]
969 fn inline_size(_context: fidl::encoding::Context) -> usize {
970 4
971 }
972 }
973
974 impl fidl::encoding::ValueTypeMarker for IcdFlags {
975 type Borrowed<'a> = Self;
976 #[inline(always)]
977 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
978 *value
979 }
980 }
981
982 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for IcdFlags {
983 #[inline]
984 unsafe fn encode(
985 self,
986 encoder: &mut fidl::encoding::Encoder<'_, D>,
987 offset: usize,
988 _depth: fidl::encoding::Depth,
989 ) -> fidl::Result<()> {
990 encoder.debug_check_bounds::<Self>(offset);
991 encoder.write_num(self.bits(), offset);
992 Ok(())
993 }
994 }
995
996 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IcdFlags {
997 #[inline(always)]
998 fn new_empty() -> Self {
999 Self::empty()
1000 }
1001
1002 #[inline]
1003 unsafe fn decode(
1004 &mut self,
1005 decoder: &mut fidl::encoding::Decoder<'_, D>,
1006 offset: usize,
1007 _depth: fidl::encoding::Depth,
1008 ) -> fidl::Result<()> {
1009 decoder.debug_check_bounds::<Self>(offset);
1010 let prim = decoder.read_num::<u32>(offset);
1011 *self = Self::from_bits_allow_unknown(prim);
1012 Ok(())
1013 }
1014 }
1015 unsafe impl fidl::encoding::TypeMarker for ImportFlags {
1016 type Owned = Self;
1017
1018 #[inline(always)]
1019 fn inline_align(_context: fidl::encoding::Context) -> usize {
1020 8
1021 }
1022
1023 #[inline(always)]
1024 fn inline_size(_context: fidl::encoding::Context) -> usize {
1025 8
1026 }
1027 }
1028
1029 impl fidl::encoding::ValueTypeMarker for ImportFlags {
1030 type Borrowed<'a> = Self;
1031 #[inline(always)]
1032 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1033 *value
1034 }
1035 }
1036
1037 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ImportFlags {
1038 #[inline]
1039 unsafe fn encode(
1040 self,
1041 encoder: &mut fidl::encoding::Encoder<'_, D>,
1042 offset: usize,
1043 _depth: fidl::encoding::Depth,
1044 ) -> fidl::Result<()> {
1045 encoder.debug_check_bounds::<Self>(offset);
1046 encoder.write_num(self.bits(), offset);
1047 Ok(())
1048 }
1049 }
1050
1051 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ImportFlags {
1052 #[inline(always)]
1053 fn new_empty() -> Self {
1054 Self::empty()
1055 }
1056
1057 #[inline]
1058 unsafe fn decode(
1059 &mut self,
1060 decoder: &mut fidl::encoding::Decoder<'_, D>,
1061 offset: usize,
1062 _depth: fidl::encoding::Depth,
1063 ) -> fidl::Result<()> {
1064 decoder.debug_check_bounds::<Self>(offset);
1065 let prim = decoder.read_num::<u64>(offset);
1066 *self = Self::from_bits_allow_unknown(prim);
1067 Ok(())
1068 }
1069 }
1070 unsafe impl fidl::encoding::TypeMarker for MapFlags {
1071 type Owned = Self;
1072
1073 #[inline(always)]
1074 fn inline_align(_context: fidl::encoding::Context) -> usize {
1075 8
1076 }
1077
1078 #[inline(always)]
1079 fn inline_size(_context: fidl::encoding::Context) -> usize {
1080 8
1081 }
1082 }
1083
1084 impl fidl::encoding::ValueTypeMarker for MapFlags {
1085 type Borrowed<'a> = Self;
1086 #[inline(always)]
1087 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1088 *value
1089 }
1090 }
1091
1092 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MapFlags {
1093 #[inline]
1094 unsafe fn encode(
1095 self,
1096 encoder: &mut fidl::encoding::Encoder<'_, D>,
1097 offset: usize,
1098 _depth: fidl::encoding::Depth,
1099 ) -> fidl::Result<()> {
1100 encoder.debug_check_bounds::<Self>(offset);
1101 encoder.write_num(self.bits(), offset);
1102 Ok(())
1103 }
1104 }
1105
1106 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MapFlags {
1107 #[inline(always)]
1108 fn new_empty() -> Self {
1109 Self::empty()
1110 }
1111
1112 #[inline]
1113 unsafe fn decode(
1114 &mut self,
1115 decoder: &mut fidl::encoding::Decoder<'_, D>,
1116 offset: usize,
1117 _depth: fidl::encoding::Depth,
1118 ) -> fidl::Result<()> {
1119 decoder.debug_check_bounds::<Self>(offset);
1120 let prim = decoder.read_num::<u64>(offset);
1121 *self = Self::from_bits_allow_unknown(prim);
1122 Ok(())
1123 }
1124 }
1125 unsafe impl fidl::encoding::TypeMarker for ResultFlags {
1126 type Owned = Self;
1127
1128 #[inline(always)]
1129 fn inline_align(_context: fidl::encoding::Context) -> usize {
1130 4
1131 }
1132
1133 #[inline(always)]
1134 fn inline_size(_context: fidl::encoding::Context) -> usize {
1135 4
1136 }
1137 }
1138
1139 impl fidl::encoding::ValueTypeMarker for ResultFlags {
1140 type Borrowed<'a> = Self;
1141 #[inline(always)]
1142 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1143 *value
1144 }
1145 }
1146
1147 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ResultFlags {
1148 #[inline]
1149 unsafe fn encode(
1150 self,
1151 encoder: &mut fidl::encoding::Encoder<'_, D>,
1152 offset: usize,
1153 _depth: fidl::encoding::Depth,
1154 ) -> fidl::Result<()> {
1155 encoder.debug_check_bounds::<Self>(offset);
1156 encoder.write_num(self.bits(), offset);
1157 Ok(())
1158 }
1159 }
1160
1161 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResultFlags {
1162 #[inline(always)]
1163 fn new_empty() -> Self {
1164 Self::empty()
1165 }
1166
1167 #[inline]
1168 unsafe fn decode(
1169 &mut self,
1170 decoder: &mut fidl::encoding::Decoder<'_, D>,
1171 offset: usize,
1172 _depth: fidl::encoding::Depth,
1173 ) -> fidl::Result<()> {
1174 decoder.debug_check_bounds::<Self>(offset);
1175 let prim = decoder.read_num::<u32>(offset);
1176 *self = Self::from_bits_allow_unknown(prim);
1177 Ok(())
1178 }
1179 }
1180 unsafe impl fidl::encoding::TypeMarker for BufferOp {
1181 type Owned = Self;
1182
1183 #[inline(always)]
1184 fn inline_align(_context: fidl::encoding::Context) -> usize {
1185 std::mem::align_of::<u32>()
1186 }
1187
1188 #[inline(always)]
1189 fn inline_size(_context: fidl::encoding::Context) -> usize {
1190 std::mem::size_of::<u32>()
1191 }
1192
1193 #[inline(always)]
1194 fn encode_is_copy() -> bool {
1195 false
1196 }
1197
1198 #[inline(always)]
1199 fn decode_is_copy() -> bool {
1200 false
1201 }
1202 }
1203
1204 impl fidl::encoding::ValueTypeMarker for BufferOp {
1205 type Borrowed<'a> = Self;
1206 #[inline(always)]
1207 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1208 *value
1209 }
1210 }
1211
1212 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BufferOp {
1213 #[inline]
1214 unsafe fn encode(
1215 self,
1216 encoder: &mut fidl::encoding::Encoder<'_, D>,
1217 offset: usize,
1218 _depth: fidl::encoding::Depth,
1219 ) -> fidl::Result<()> {
1220 encoder.debug_check_bounds::<Self>(offset);
1221 encoder.write_num(self.into_primitive(), offset);
1222 Ok(())
1223 }
1224 }
1225
1226 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BufferOp {
1227 #[inline(always)]
1228 fn new_empty() -> Self {
1229 Self::unknown()
1230 }
1231
1232 #[inline]
1233 unsafe fn decode(
1234 &mut self,
1235 decoder: &mut fidl::encoding::Decoder<'_, D>,
1236 offset: usize,
1237 _depth: fidl::encoding::Depth,
1238 ) -> fidl::Result<()> {
1239 decoder.debug_check_bounds::<Self>(offset);
1240 let prim = decoder.read_num::<u32>(offset);
1241
1242 *self = Self::from_primitive_allow_unknown(prim);
1243 Ok(())
1244 }
1245 }
1246 unsafe impl fidl::encoding::TypeMarker for ObjectType {
1247 type Owned = Self;
1248
1249 #[inline(always)]
1250 fn inline_align(_context: fidl::encoding::Context) -> usize {
1251 std::mem::align_of::<u32>()
1252 }
1253
1254 #[inline(always)]
1255 fn inline_size(_context: fidl::encoding::Context) -> usize {
1256 std::mem::size_of::<u32>()
1257 }
1258
1259 #[inline(always)]
1260 fn encode_is_copy() -> bool {
1261 false
1262 }
1263
1264 #[inline(always)]
1265 fn decode_is_copy() -> bool {
1266 false
1267 }
1268 }
1269
1270 impl fidl::encoding::ValueTypeMarker for ObjectType {
1271 type Borrowed<'a> = Self;
1272 #[inline(always)]
1273 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1274 *value
1275 }
1276 }
1277
1278 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ObjectType {
1279 #[inline]
1280 unsafe fn encode(
1281 self,
1282 encoder: &mut fidl::encoding::Encoder<'_, D>,
1283 offset: usize,
1284 _depth: fidl::encoding::Depth,
1285 ) -> fidl::Result<()> {
1286 encoder.debug_check_bounds::<Self>(offset);
1287 encoder.write_num(self.into_primitive(), offset);
1288 Ok(())
1289 }
1290 }
1291
1292 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ObjectType {
1293 #[inline(always)]
1294 fn new_empty() -> Self {
1295 Self::unknown()
1296 }
1297
1298 #[inline]
1299 unsafe fn decode(
1300 &mut self,
1301 decoder: &mut fidl::encoding::Decoder<'_, D>,
1302 offset: usize,
1303 _depth: fidl::encoding::Depth,
1304 ) -> fidl::Result<()> {
1305 decoder.debug_check_bounds::<Self>(offset);
1306 let prim = decoder.read_num::<u32>(offset);
1307
1308 *self = Self::from_primitive_allow_unknown(prim);
1309 Ok(())
1310 }
1311 }
1312 unsafe impl fidl::encoding::TypeMarker for PowerGoalType {
1313 type Owned = Self;
1314
1315 #[inline(always)]
1316 fn inline_align(_context: fidl::encoding::Context) -> usize {
1317 std::mem::align_of::<u64>()
1318 }
1319
1320 #[inline(always)]
1321 fn inline_size(_context: fidl::encoding::Context) -> usize {
1322 std::mem::size_of::<u64>()
1323 }
1324
1325 #[inline(always)]
1326 fn encode_is_copy() -> bool {
1327 false
1328 }
1329
1330 #[inline(always)]
1331 fn decode_is_copy() -> bool {
1332 false
1333 }
1334 }
1335
1336 impl fidl::encoding::ValueTypeMarker for PowerGoalType {
1337 type Borrowed<'a> = Self;
1338 #[inline(always)]
1339 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1340 *value
1341 }
1342 }
1343
1344 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerGoalType {
1345 #[inline]
1346 unsafe fn encode(
1347 self,
1348 encoder: &mut fidl::encoding::Encoder<'_, D>,
1349 offset: usize,
1350 _depth: fidl::encoding::Depth,
1351 ) -> fidl::Result<()> {
1352 encoder.debug_check_bounds::<Self>(offset);
1353 encoder.write_num(self.into_primitive(), offset);
1354 Ok(())
1355 }
1356 }
1357
1358 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerGoalType {
1359 #[inline(always)]
1360 fn new_empty() -> Self {
1361 Self::unknown()
1362 }
1363
1364 #[inline]
1365 unsafe fn decode(
1366 &mut self,
1367 decoder: &mut fidl::encoding::Decoder<'_, D>,
1368 offset: usize,
1369 _depth: fidl::encoding::Depth,
1370 ) -> fidl::Result<()> {
1371 decoder.debug_check_bounds::<Self>(offset);
1372 let prim = decoder.read_num::<u64>(offset);
1373
1374 *self = Self::from_primitive_allow_unknown(prim);
1375 Ok(())
1376 }
1377 }
1378 unsafe impl fidl::encoding::TypeMarker for Priority {
1379 type Owned = Self;
1380
1381 #[inline(always)]
1382 fn inline_align(_context: fidl::encoding::Context) -> usize {
1383 std::mem::align_of::<u64>()
1384 }
1385
1386 #[inline(always)]
1387 fn inline_size(_context: fidl::encoding::Context) -> usize {
1388 std::mem::size_of::<u64>()
1389 }
1390
1391 #[inline(always)]
1392 fn encode_is_copy() -> bool {
1393 false
1394 }
1395
1396 #[inline(always)]
1397 fn decode_is_copy() -> bool {
1398 false
1399 }
1400 }
1401
1402 impl fidl::encoding::ValueTypeMarker for Priority {
1403 type Borrowed<'a> = Self;
1404 #[inline(always)]
1405 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1406 *value
1407 }
1408 }
1409
1410 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Priority {
1411 #[inline]
1412 unsafe fn encode(
1413 self,
1414 encoder: &mut fidl::encoding::Encoder<'_, D>,
1415 offset: usize,
1416 _depth: fidl::encoding::Depth,
1417 ) -> fidl::Result<()> {
1418 encoder.debug_check_bounds::<Self>(offset);
1419 encoder.write_num(self.into_primitive(), offset);
1420 Ok(())
1421 }
1422 }
1423
1424 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Priority {
1425 #[inline(always)]
1426 fn new_empty() -> Self {
1427 Self::unknown()
1428 }
1429
1430 #[inline]
1431 unsafe fn decode(
1432 &mut self,
1433 decoder: &mut fidl::encoding::Decoder<'_, D>,
1434 offset: usize,
1435 _depth: fidl::encoding::Depth,
1436 ) -> fidl::Result<()> {
1437 decoder.debug_check_bounds::<Self>(offset);
1438 let prim = decoder.read_num::<u64>(offset);
1439
1440 *self = Self::from_primitive_allow_unknown(prim);
1441 Ok(())
1442 }
1443 }
1444 unsafe impl fidl::encoding::TypeMarker for QueryId {
1445 type Owned = Self;
1446
1447 #[inline(always)]
1448 fn inline_align(_context: fidl::encoding::Context) -> usize {
1449 std::mem::align_of::<u64>()
1450 }
1451
1452 #[inline(always)]
1453 fn inline_size(_context: fidl::encoding::Context) -> usize {
1454 std::mem::size_of::<u64>()
1455 }
1456
1457 #[inline(always)]
1458 fn encode_is_copy() -> bool {
1459 false
1460 }
1461
1462 #[inline(always)]
1463 fn decode_is_copy() -> bool {
1464 false
1465 }
1466 }
1467
1468 impl fidl::encoding::ValueTypeMarker for QueryId {
1469 type Borrowed<'a> = Self;
1470 #[inline(always)]
1471 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1472 *value
1473 }
1474 }
1475
1476 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for QueryId {
1477 #[inline]
1478 unsafe fn encode(
1479 self,
1480 encoder: &mut fidl::encoding::Encoder<'_, D>,
1481 offset: usize,
1482 _depth: fidl::encoding::Depth,
1483 ) -> fidl::Result<()> {
1484 encoder.debug_check_bounds::<Self>(offset);
1485 encoder.write_num(self.into_primitive(), offset);
1486 Ok(())
1487 }
1488 }
1489
1490 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for QueryId {
1491 #[inline(always)]
1492 fn new_empty() -> Self {
1493 Self::unknown()
1494 }
1495
1496 #[inline]
1497 unsafe fn decode(
1498 &mut self,
1499 decoder: &mut fidl::encoding::Decoder<'_, D>,
1500 offset: usize,
1501 _depth: fidl::encoding::Depth,
1502 ) -> fidl::Result<()> {
1503 decoder.debug_check_bounds::<Self>(offset);
1504 let prim = decoder.read_num::<u64>(offset);
1505
1506 *self = Self::from_primitive_allow_unknown(prim);
1507 Ok(())
1508 }
1509 }
1510
1511 impl fidl::encoding::ValueTypeMarker for BufferRange {
1512 type Borrowed<'a> = &'a Self;
1513 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1514 value
1515 }
1516 }
1517
1518 unsafe impl fidl::encoding::TypeMarker for BufferRange {
1519 type Owned = Self;
1520
1521 #[inline(always)]
1522 fn inline_align(_context: fidl::encoding::Context) -> usize {
1523 8
1524 }
1525
1526 #[inline(always)]
1527 fn inline_size(_context: fidl::encoding::Context) -> usize {
1528 24
1529 }
1530 #[inline(always)]
1531 fn encode_is_copy() -> bool {
1532 true
1533 }
1534
1535 #[inline(always)]
1536 fn decode_is_copy() -> bool {
1537 true
1538 }
1539 }
1540
1541 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BufferRange, D>
1542 for &BufferRange
1543 {
1544 #[inline]
1545 unsafe fn encode(
1546 self,
1547 encoder: &mut fidl::encoding::Encoder<'_, D>,
1548 offset: usize,
1549 _depth: fidl::encoding::Depth,
1550 ) -> fidl::Result<()> {
1551 encoder.debug_check_bounds::<BufferRange>(offset);
1552 unsafe {
1553 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1555 (buf_ptr as *mut BufferRange).write_unaligned((self as *const BufferRange).read());
1556 }
1559 Ok(())
1560 }
1561 }
1562 unsafe impl<
1563 D: fidl::encoding::ResourceDialect,
1564 T0: fidl::encoding::Encode<u64, D>,
1565 T1: fidl::encoding::Encode<u64, D>,
1566 T2: fidl::encoding::Encode<u64, D>,
1567 > fidl::encoding::Encode<BufferRange, D> for (T0, T1, T2)
1568 {
1569 #[inline]
1570 unsafe fn encode(
1571 self,
1572 encoder: &mut fidl::encoding::Encoder<'_, D>,
1573 offset: usize,
1574 depth: fidl::encoding::Depth,
1575 ) -> fidl::Result<()> {
1576 encoder.debug_check_bounds::<BufferRange>(offset);
1577 self.0.encode(encoder, offset + 0, depth)?;
1581 self.1.encode(encoder, offset + 8, depth)?;
1582 self.2.encode(encoder, offset + 16, depth)?;
1583 Ok(())
1584 }
1585 }
1586
1587 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BufferRange {
1588 #[inline(always)]
1589 fn new_empty() -> Self {
1590 Self {
1591 buffer_id: fidl::new_empty!(u64, D),
1592 offset: fidl::new_empty!(u64, D),
1593 size: fidl::new_empty!(u64, D),
1594 }
1595 }
1596
1597 #[inline]
1598 unsafe fn decode(
1599 &mut self,
1600 decoder: &mut fidl::encoding::Decoder<'_, D>,
1601 offset: usize,
1602 _depth: fidl::encoding::Depth,
1603 ) -> fidl::Result<()> {
1604 decoder.debug_check_bounds::<Self>(offset);
1605 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1606 unsafe {
1609 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 24);
1610 }
1611 Ok(())
1612 }
1613 }
1614
1615 impl fidl::encoding::ValueTypeMarker for CommandBuffer {
1616 type Borrowed<'a> = &'a Self;
1617 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1618 value
1619 }
1620 }
1621
1622 unsafe impl fidl::encoding::TypeMarker for CommandBuffer {
1623 type Owned = Self;
1624
1625 #[inline(always)]
1626 fn inline_align(_context: fidl::encoding::Context) -> usize {
1627 8
1628 }
1629
1630 #[inline(always)]
1631 fn inline_size(_context: fidl::encoding::Context) -> usize {
1632 16
1633 }
1634 }
1635
1636 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CommandBuffer, D>
1637 for &CommandBuffer
1638 {
1639 #[inline]
1640 unsafe fn encode(
1641 self,
1642 encoder: &mut fidl::encoding::Encoder<'_, D>,
1643 offset: usize,
1644 _depth: fidl::encoding::Depth,
1645 ) -> fidl::Result<()> {
1646 encoder.debug_check_bounds::<CommandBuffer>(offset);
1647 unsafe {
1648 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1650 (buf_ptr as *mut CommandBuffer)
1651 .write_unaligned((self as *const CommandBuffer).read());
1652 let padding_ptr = buf_ptr.offset(0) as *mut u64;
1655 let padding_mask = 0xffffffff00000000u64;
1656 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1657 }
1658 Ok(())
1659 }
1660 }
1661 unsafe impl<
1662 D: fidl::encoding::ResourceDialect,
1663 T0: fidl::encoding::Encode<u32, D>,
1664 T1: fidl::encoding::Encode<u64, D>,
1665 > fidl::encoding::Encode<CommandBuffer, D> for (T0, T1)
1666 {
1667 #[inline]
1668 unsafe fn encode(
1669 self,
1670 encoder: &mut fidl::encoding::Encoder<'_, D>,
1671 offset: usize,
1672 depth: fidl::encoding::Depth,
1673 ) -> fidl::Result<()> {
1674 encoder.debug_check_bounds::<CommandBuffer>(offset);
1675 unsafe {
1678 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1679 (ptr as *mut u64).write_unaligned(0);
1680 }
1681 self.0.encode(encoder, offset + 0, depth)?;
1683 self.1.encode(encoder, offset + 8, depth)?;
1684 Ok(())
1685 }
1686 }
1687
1688 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommandBuffer {
1689 #[inline(always)]
1690 fn new_empty() -> Self {
1691 Self {
1692 resource_index: fidl::new_empty!(u32, D),
1693 start_offset: fidl::new_empty!(u64, D),
1694 }
1695 }
1696
1697 #[inline]
1698 unsafe fn decode(
1699 &mut self,
1700 decoder: &mut fidl::encoding::Decoder<'_, D>,
1701 offset: usize,
1702 _depth: fidl::encoding::Depth,
1703 ) -> fidl::Result<()> {
1704 decoder.debug_check_bounds::<Self>(offset);
1705 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1706 let ptr = unsafe { buf_ptr.offset(0) };
1708 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1709 let mask = 0xffffffff00000000u64;
1710 let maskedval = padval & mask;
1711 if maskedval != 0 {
1712 return Err(fidl::Error::NonZeroPadding {
1713 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1714 });
1715 }
1716 unsafe {
1718 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1719 }
1720 Ok(())
1721 }
1722 }
1723
1724 impl fidl::encoding::ValueTypeMarker for DebugUtilsSetPowerStateRequest {
1725 type Borrowed<'a> = &'a Self;
1726 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1727 value
1728 }
1729 }
1730
1731 unsafe impl fidl::encoding::TypeMarker for DebugUtilsSetPowerStateRequest {
1732 type Owned = Self;
1733
1734 #[inline(always)]
1735 fn inline_align(_context: fidl::encoding::Context) -> usize {
1736 8
1737 }
1738
1739 #[inline(always)]
1740 fn inline_size(_context: fidl::encoding::Context) -> usize {
1741 8
1742 }
1743 #[inline(always)]
1744 fn encode_is_copy() -> bool {
1745 true
1746 }
1747
1748 #[inline(always)]
1749 fn decode_is_copy() -> bool {
1750 true
1751 }
1752 }
1753
1754 unsafe impl<D: fidl::encoding::ResourceDialect>
1755 fidl::encoding::Encode<DebugUtilsSetPowerStateRequest, D>
1756 for &DebugUtilsSetPowerStateRequest
1757 {
1758 #[inline]
1759 unsafe fn encode(
1760 self,
1761 encoder: &mut fidl::encoding::Encoder<'_, D>,
1762 offset: usize,
1763 _depth: fidl::encoding::Depth,
1764 ) -> fidl::Result<()> {
1765 encoder.debug_check_bounds::<DebugUtilsSetPowerStateRequest>(offset);
1766 unsafe {
1767 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1769 (buf_ptr as *mut DebugUtilsSetPowerStateRequest)
1770 .write_unaligned((self as *const DebugUtilsSetPowerStateRequest).read());
1771 }
1774 Ok(())
1775 }
1776 }
1777 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1778 fidl::encoding::Encode<DebugUtilsSetPowerStateRequest, D> for (T0,)
1779 {
1780 #[inline]
1781 unsafe fn encode(
1782 self,
1783 encoder: &mut fidl::encoding::Encoder<'_, D>,
1784 offset: usize,
1785 depth: fidl::encoding::Depth,
1786 ) -> fidl::Result<()> {
1787 encoder.debug_check_bounds::<DebugUtilsSetPowerStateRequest>(offset);
1788 self.0.encode(encoder, offset + 0, depth)?;
1792 Ok(())
1793 }
1794 }
1795
1796 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1797 for DebugUtilsSetPowerStateRequest
1798 {
1799 #[inline(always)]
1800 fn new_empty() -> Self {
1801 Self { power_state: fidl::new_empty!(i64, D) }
1802 }
1803
1804 #[inline]
1805 unsafe fn decode(
1806 &mut self,
1807 decoder: &mut fidl::encoding::Decoder<'_, D>,
1808 offset: usize,
1809 _depth: fidl::encoding::Depth,
1810 ) -> fidl::Result<()> {
1811 decoder.debug_check_bounds::<Self>(offset);
1812 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1813 unsafe {
1816 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1817 }
1818 Ok(())
1819 }
1820 }
1821
1822 impl fidl::encoding::ValueTypeMarker for DeviceQueryRequest {
1823 type Borrowed<'a> = &'a Self;
1824 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1825 value
1826 }
1827 }
1828
1829 unsafe impl fidl::encoding::TypeMarker for DeviceQueryRequest {
1830 type Owned = Self;
1831
1832 #[inline(always)]
1833 fn inline_align(_context: fidl::encoding::Context) -> usize {
1834 8
1835 }
1836
1837 #[inline(always)]
1838 fn inline_size(_context: fidl::encoding::Context) -> usize {
1839 8
1840 }
1841 }
1842
1843 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceQueryRequest, D>
1844 for &DeviceQueryRequest
1845 {
1846 #[inline]
1847 unsafe fn encode(
1848 self,
1849 encoder: &mut fidl::encoding::Encoder<'_, D>,
1850 offset: usize,
1851 _depth: fidl::encoding::Depth,
1852 ) -> fidl::Result<()> {
1853 encoder.debug_check_bounds::<DeviceQueryRequest>(offset);
1854 fidl::encoding::Encode::<DeviceQueryRequest, D>::encode(
1856 (<QueryId as fidl::encoding::ValueTypeMarker>::borrow(&self.query_id),),
1857 encoder,
1858 offset,
1859 _depth,
1860 )
1861 }
1862 }
1863 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<QueryId, D>>
1864 fidl::encoding::Encode<DeviceQueryRequest, D> for (T0,)
1865 {
1866 #[inline]
1867 unsafe fn encode(
1868 self,
1869 encoder: &mut fidl::encoding::Encoder<'_, D>,
1870 offset: usize,
1871 depth: fidl::encoding::Depth,
1872 ) -> fidl::Result<()> {
1873 encoder.debug_check_bounds::<DeviceQueryRequest>(offset);
1874 self.0.encode(encoder, offset + 0, depth)?;
1878 Ok(())
1879 }
1880 }
1881
1882 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceQueryRequest {
1883 #[inline(always)]
1884 fn new_empty() -> Self {
1885 Self { query_id: fidl::new_empty!(QueryId, D) }
1886 }
1887
1888 #[inline]
1889 unsafe fn decode(
1890 &mut self,
1891 decoder: &mut fidl::encoding::Decoder<'_, D>,
1892 offset: usize,
1893 _depth: fidl::encoding::Depth,
1894 ) -> fidl::Result<()> {
1895 decoder.debug_check_bounds::<Self>(offset);
1896 fidl::decode!(QueryId, D, &mut self.query_id, decoder, offset + 0, _depth)?;
1898 Ok(())
1899 }
1900 }
1901
1902 impl fidl::encoding::ValueTypeMarker for DiagnosticDeviceDumpStateRequest {
1903 type Borrowed<'a> = &'a Self;
1904 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1905 value
1906 }
1907 }
1908
1909 unsafe impl fidl::encoding::TypeMarker for DiagnosticDeviceDumpStateRequest {
1910 type Owned = Self;
1911
1912 #[inline(always)]
1913 fn inline_align(_context: fidl::encoding::Context) -> usize {
1914 4
1915 }
1916
1917 #[inline(always)]
1918 fn inline_size(_context: fidl::encoding::Context) -> usize {
1919 4
1920 }
1921 #[inline(always)]
1922 fn encode_is_copy() -> bool {
1923 true
1924 }
1925
1926 #[inline(always)]
1927 fn decode_is_copy() -> bool {
1928 true
1929 }
1930 }
1931
1932 unsafe impl<D: fidl::encoding::ResourceDialect>
1933 fidl::encoding::Encode<DiagnosticDeviceDumpStateRequest, D>
1934 for &DiagnosticDeviceDumpStateRequest
1935 {
1936 #[inline]
1937 unsafe fn encode(
1938 self,
1939 encoder: &mut fidl::encoding::Encoder<'_, D>,
1940 offset: usize,
1941 _depth: fidl::encoding::Depth,
1942 ) -> fidl::Result<()> {
1943 encoder.debug_check_bounds::<DiagnosticDeviceDumpStateRequest>(offset);
1944 unsafe {
1945 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1947 (buf_ptr as *mut DiagnosticDeviceDumpStateRequest)
1948 .write_unaligned((self as *const DiagnosticDeviceDumpStateRequest).read());
1949 }
1952 Ok(())
1953 }
1954 }
1955 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1956 fidl::encoding::Encode<DiagnosticDeviceDumpStateRequest, D> for (T0,)
1957 {
1958 #[inline]
1959 unsafe fn encode(
1960 self,
1961 encoder: &mut fidl::encoding::Encoder<'_, D>,
1962 offset: usize,
1963 depth: fidl::encoding::Depth,
1964 ) -> fidl::Result<()> {
1965 encoder.debug_check_bounds::<DiagnosticDeviceDumpStateRequest>(offset);
1966 self.0.encode(encoder, offset + 0, depth)?;
1970 Ok(())
1971 }
1972 }
1973
1974 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1975 for DiagnosticDeviceDumpStateRequest
1976 {
1977 #[inline(always)]
1978 fn new_empty() -> Self {
1979 Self { dump_type: fidl::new_empty!(u32, D) }
1980 }
1981
1982 #[inline]
1983 unsafe fn decode(
1984 &mut self,
1985 decoder: &mut fidl::encoding::Decoder<'_, D>,
1986 offset: usize,
1987 _depth: fidl::encoding::Depth,
1988 ) -> fidl::Result<()> {
1989 decoder.debug_check_bounds::<Self>(offset);
1990 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1991 unsafe {
1994 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1995 }
1996 Ok(())
1997 }
1998 }
1999
2000 impl fidl::encoding::ValueTypeMarker for IcdLoaderDeviceGetIcdListResponse {
2001 type Borrowed<'a> = &'a Self;
2002 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2003 value
2004 }
2005 }
2006
2007 unsafe impl fidl::encoding::TypeMarker for IcdLoaderDeviceGetIcdListResponse {
2008 type Owned = Self;
2009
2010 #[inline(always)]
2011 fn inline_align(_context: fidl::encoding::Context) -> usize {
2012 8
2013 }
2014
2015 #[inline(always)]
2016 fn inline_size(_context: fidl::encoding::Context) -> usize {
2017 16
2018 }
2019 }
2020
2021 unsafe impl<D: fidl::encoding::ResourceDialect>
2022 fidl::encoding::Encode<IcdLoaderDeviceGetIcdListResponse, D>
2023 for &IcdLoaderDeviceGetIcdListResponse
2024 {
2025 #[inline]
2026 unsafe fn encode(
2027 self,
2028 encoder: &mut fidl::encoding::Encoder<'_, D>,
2029 offset: usize,
2030 _depth: fidl::encoding::Depth,
2031 ) -> fidl::Result<()> {
2032 encoder.debug_check_bounds::<IcdLoaderDeviceGetIcdListResponse>(offset);
2033 fidl::encoding::Encode::<IcdLoaderDeviceGetIcdListResponse, D>::encode(
2035 (<fidl::encoding::Vector<IcdInfo, 8> as fidl::encoding::ValueTypeMarker>::borrow(
2036 &self.icd_list,
2037 ),),
2038 encoder,
2039 offset,
2040 _depth,
2041 )
2042 }
2043 }
2044 unsafe impl<
2045 D: fidl::encoding::ResourceDialect,
2046 T0: fidl::encoding::Encode<fidl::encoding::Vector<IcdInfo, 8>, D>,
2047 > fidl::encoding::Encode<IcdLoaderDeviceGetIcdListResponse, D> for (T0,)
2048 {
2049 #[inline]
2050 unsafe fn encode(
2051 self,
2052 encoder: &mut fidl::encoding::Encoder<'_, D>,
2053 offset: usize,
2054 depth: fidl::encoding::Depth,
2055 ) -> fidl::Result<()> {
2056 encoder.debug_check_bounds::<IcdLoaderDeviceGetIcdListResponse>(offset);
2057 self.0.encode(encoder, offset + 0, depth)?;
2061 Ok(())
2062 }
2063 }
2064
2065 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2066 for IcdLoaderDeviceGetIcdListResponse
2067 {
2068 #[inline(always)]
2069 fn new_empty() -> Self {
2070 Self { icd_list: fidl::new_empty!(fidl::encoding::Vector<IcdInfo, 8>, D) }
2071 }
2072
2073 #[inline]
2074 unsafe fn decode(
2075 &mut self,
2076 decoder: &mut fidl::encoding::Decoder<'_, D>,
2077 offset: usize,
2078 _depth: fidl::encoding::Depth,
2079 ) -> fidl::Result<()> {
2080 decoder.debug_check_bounds::<Self>(offset);
2081 fidl::decode!(fidl::encoding::Vector<IcdInfo, 8>, D, &mut self.icd_list, decoder, offset + 0, _depth)?;
2083 Ok(())
2084 }
2085 }
2086
2087 impl fidl::encoding::ValueTypeMarker for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {
2088 type Borrowed<'a> = &'a Self;
2089 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2090 value
2091 }
2092 }
2093
2094 unsafe impl fidl::encoding::TypeMarker for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {
2095 type Owned = Self;
2096
2097 #[inline(always)]
2098 fn inline_align(_context: fidl::encoding::Context) -> usize {
2099 8
2100 }
2101
2102 #[inline(always)]
2103 fn inline_size(_context: fidl::encoding::Context) -> usize {
2104 24
2105 }
2106 }
2107
2108 unsafe impl<D: fidl::encoding::ResourceDialect>
2109 fidl::encoding::Encode<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest, D>
2110 for &PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest
2111 {
2112 #[inline]
2113 unsafe fn encode(
2114 self,
2115 encoder: &mut fidl::encoding::Encoder<'_, D>,
2116 offset: usize,
2117 _depth: fidl::encoding::Depth,
2118 ) -> fidl::Result<()> {
2119 encoder.debug_check_bounds::<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest>(
2120 offset,
2121 );
2122 fidl::encoding::Encode::<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest, D>::encode(
2124 (
2125 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.pool_id),
2126 <fidl::encoding::Vector<BufferRange, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.offsets),
2127 ),
2128 encoder, offset, _depth
2129 )
2130 }
2131 }
2132 unsafe impl<
2133 D: fidl::encoding::ResourceDialect,
2134 T0: fidl::encoding::Encode<u64, D>,
2135 T1: fidl::encoding::Encode<fidl::encoding::Vector<BufferRange, 64>, D>,
2136 > fidl::encoding::Encode<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest, D>
2137 for (T0, T1)
2138 {
2139 #[inline]
2140 unsafe fn encode(
2141 self,
2142 encoder: &mut fidl::encoding::Encoder<'_, D>,
2143 offset: usize,
2144 depth: fidl::encoding::Depth,
2145 ) -> fidl::Result<()> {
2146 encoder.debug_check_bounds::<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest>(
2147 offset,
2148 );
2149 self.0.encode(encoder, offset + 0, depth)?;
2153 self.1.encode(encoder, offset + 8, depth)?;
2154 Ok(())
2155 }
2156 }
2157
2158 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2159 for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest
2160 {
2161 #[inline(always)]
2162 fn new_empty() -> Self {
2163 Self {
2164 pool_id: fidl::new_empty!(u64, D),
2165 offsets: fidl::new_empty!(fidl::encoding::Vector<BufferRange, 64>, D),
2166 }
2167 }
2168
2169 #[inline]
2170 unsafe fn decode(
2171 &mut self,
2172 decoder: &mut fidl::encoding::Decoder<'_, D>,
2173 offset: usize,
2174 _depth: fidl::encoding::Depth,
2175 ) -> fidl::Result<()> {
2176 decoder.debug_check_bounds::<Self>(offset);
2177 fidl::decode!(u64, D, &mut self.pool_id, decoder, offset + 0, _depth)?;
2179 fidl::decode!(fidl::encoding::Vector<BufferRange, 64>, D, &mut self.offsets, decoder, offset + 8, _depth)?;
2180 Ok(())
2181 }
2182 }
2183
2184 impl fidl::encoding::ValueTypeMarker for PrimaryBufferRangeOp2Request {
2185 type Borrowed<'a> = &'a Self;
2186 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2187 value
2188 }
2189 }
2190
2191 unsafe impl fidl::encoding::TypeMarker for PrimaryBufferRangeOp2Request {
2192 type Owned = Self;
2193
2194 #[inline(always)]
2195 fn inline_align(_context: fidl::encoding::Context) -> usize {
2196 8
2197 }
2198
2199 #[inline(always)]
2200 fn inline_size(_context: fidl::encoding::Context) -> usize {
2201 32
2202 }
2203 }
2204
2205 unsafe impl<D: fidl::encoding::ResourceDialect>
2206 fidl::encoding::Encode<PrimaryBufferRangeOp2Request, D> for &PrimaryBufferRangeOp2Request
2207 {
2208 #[inline]
2209 unsafe fn encode(
2210 self,
2211 encoder: &mut fidl::encoding::Encoder<'_, D>,
2212 offset: usize,
2213 _depth: fidl::encoding::Depth,
2214 ) -> fidl::Result<()> {
2215 encoder.debug_check_bounds::<PrimaryBufferRangeOp2Request>(offset);
2216 fidl::encoding::Encode::<PrimaryBufferRangeOp2Request, D>::encode(
2218 (
2219 <BufferOp as fidl::encoding::ValueTypeMarker>::borrow(&self.op),
2220 <BufferRange as fidl::encoding::ValueTypeMarker>::borrow(&self.range),
2221 ),
2222 encoder,
2223 offset,
2224 _depth,
2225 )
2226 }
2227 }
2228 unsafe impl<
2229 D: fidl::encoding::ResourceDialect,
2230 T0: fidl::encoding::Encode<BufferOp, D>,
2231 T1: fidl::encoding::Encode<BufferRange, D>,
2232 > fidl::encoding::Encode<PrimaryBufferRangeOp2Request, D> for (T0, T1)
2233 {
2234 #[inline]
2235 unsafe fn encode(
2236 self,
2237 encoder: &mut fidl::encoding::Encoder<'_, D>,
2238 offset: usize,
2239 depth: fidl::encoding::Depth,
2240 ) -> fidl::Result<()> {
2241 encoder.debug_check_bounds::<PrimaryBufferRangeOp2Request>(offset);
2242 unsafe {
2245 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2246 (ptr as *mut u64).write_unaligned(0);
2247 }
2248 self.0.encode(encoder, offset + 0, depth)?;
2250 self.1.encode(encoder, offset + 8, depth)?;
2251 Ok(())
2252 }
2253 }
2254
2255 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2256 for PrimaryBufferRangeOp2Request
2257 {
2258 #[inline(always)]
2259 fn new_empty() -> Self {
2260 Self { op: fidl::new_empty!(BufferOp, D), range: fidl::new_empty!(BufferRange, D) }
2261 }
2262
2263 #[inline]
2264 unsafe fn decode(
2265 &mut self,
2266 decoder: &mut fidl::encoding::Decoder<'_, D>,
2267 offset: usize,
2268 _depth: fidl::encoding::Depth,
2269 ) -> fidl::Result<()> {
2270 decoder.debug_check_bounds::<Self>(offset);
2271 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2273 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2274 let mask = 0xffffffff00000000u64;
2275 let maskedval = padval & mask;
2276 if maskedval != 0 {
2277 return Err(fidl::Error::NonZeroPadding {
2278 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2279 });
2280 }
2281 fidl::decode!(BufferOp, D, &mut self.op, decoder, offset + 0, _depth)?;
2282 fidl::decode!(BufferRange, D, &mut self.range, decoder, offset + 8, _depth)?;
2283 Ok(())
2284 }
2285 }
2286
2287 impl fidl::encoding::ValueTypeMarker for PrimaryClearPerformanceCountersRequest {
2288 type Borrowed<'a> = &'a Self;
2289 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2290 value
2291 }
2292 }
2293
2294 unsafe impl fidl::encoding::TypeMarker for PrimaryClearPerformanceCountersRequest {
2295 type Owned = Self;
2296
2297 #[inline(always)]
2298 fn inline_align(_context: fidl::encoding::Context) -> usize {
2299 8
2300 }
2301
2302 #[inline(always)]
2303 fn inline_size(_context: fidl::encoding::Context) -> usize {
2304 16
2305 }
2306 }
2307
2308 unsafe impl<D: fidl::encoding::ResourceDialect>
2309 fidl::encoding::Encode<PrimaryClearPerformanceCountersRequest, D>
2310 for &PrimaryClearPerformanceCountersRequest
2311 {
2312 #[inline]
2313 unsafe fn encode(
2314 self,
2315 encoder: &mut fidl::encoding::Encoder<'_, D>,
2316 offset: usize,
2317 _depth: fidl::encoding::Depth,
2318 ) -> fidl::Result<()> {
2319 encoder.debug_check_bounds::<PrimaryClearPerformanceCountersRequest>(offset);
2320 fidl::encoding::Encode::<PrimaryClearPerformanceCountersRequest, D>::encode(
2322 (<fidl::encoding::Vector<u64, 64> as fidl::encoding::ValueTypeMarker>::borrow(
2323 &self.counters,
2324 ),),
2325 encoder,
2326 offset,
2327 _depth,
2328 )
2329 }
2330 }
2331 unsafe impl<
2332 D: fidl::encoding::ResourceDialect,
2333 T0: fidl::encoding::Encode<fidl::encoding::Vector<u64, 64>, D>,
2334 > fidl::encoding::Encode<PrimaryClearPerformanceCountersRequest, D> for (T0,)
2335 {
2336 #[inline]
2337 unsafe fn encode(
2338 self,
2339 encoder: &mut fidl::encoding::Encoder<'_, D>,
2340 offset: usize,
2341 depth: fidl::encoding::Depth,
2342 ) -> fidl::Result<()> {
2343 encoder.debug_check_bounds::<PrimaryClearPerformanceCountersRequest>(offset);
2344 self.0.encode(encoder, offset + 0, depth)?;
2348 Ok(())
2349 }
2350 }
2351
2352 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2353 for PrimaryClearPerformanceCountersRequest
2354 {
2355 #[inline(always)]
2356 fn new_empty() -> Self {
2357 Self { counters: fidl::new_empty!(fidl::encoding::Vector<u64, 64>, D) }
2358 }
2359
2360 #[inline]
2361 unsafe fn decode(
2362 &mut self,
2363 decoder: &mut fidl::encoding::Decoder<'_, D>,
2364 offset: usize,
2365 _depth: fidl::encoding::Depth,
2366 ) -> fidl::Result<()> {
2367 decoder.debug_check_bounds::<Self>(offset);
2368 fidl::decode!(fidl::encoding::Vector<u64, 64>, D, &mut self.counters, decoder, offset + 0, _depth)?;
2370 Ok(())
2371 }
2372 }
2373
2374 impl fidl::encoding::ValueTypeMarker for PrimaryCreateContext2Request {
2375 type Borrowed<'a> = &'a Self;
2376 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2377 value
2378 }
2379 }
2380
2381 unsafe impl fidl::encoding::TypeMarker for PrimaryCreateContext2Request {
2382 type Owned = Self;
2383
2384 #[inline(always)]
2385 fn inline_align(_context: fidl::encoding::Context) -> usize {
2386 8
2387 }
2388
2389 #[inline(always)]
2390 fn inline_size(_context: fidl::encoding::Context) -> usize {
2391 16
2392 }
2393 }
2394
2395 unsafe impl<D: fidl::encoding::ResourceDialect>
2396 fidl::encoding::Encode<PrimaryCreateContext2Request, D> for &PrimaryCreateContext2Request
2397 {
2398 #[inline]
2399 unsafe fn encode(
2400 self,
2401 encoder: &mut fidl::encoding::Encoder<'_, D>,
2402 offset: usize,
2403 _depth: fidl::encoding::Depth,
2404 ) -> fidl::Result<()> {
2405 encoder.debug_check_bounds::<PrimaryCreateContext2Request>(offset);
2406 fidl::encoding::Encode::<PrimaryCreateContext2Request, D>::encode(
2408 (
2409 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
2410 <Priority as fidl::encoding::ValueTypeMarker>::borrow(&self.priority),
2411 ),
2412 encoder,
2413 offset,
2414 _depth,
2415 )
2416 }
2417 }
2418 unsafe impl<
2419 D: fidl::encoding::ResourceDialect,
2420 T0: fidl::encoding::Encode<u32, D>,
2421 T1: fidl::encoding::Encode<Priority, D>,
2422 > fidl::encoding::Encode<PrimaryCreateContext2Request, D> for (T0, T1)
2423 {
2424 #[inline]
2425 unsafe fn encode(
2426 self,
2427 encoder: &mut fidl::encoding::Encoder<'_, D>,
2428 offset: usize,
2429 depth: fidl::encoding::Depth,
2430 ) -> fidl::Result<()> {
2431 encoder.debug_check_bounds::<PrimaryCreateContext2Request>(offset);
2432 unsafe {
2435 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2436 (ptr as *mut u64).write_unaligned(0);
2437 }
2438 self.0.encode(encoder, offset + 0, depth)?;
2440 self.1.encode(encoder, offset + 8, depth)?;
2441 Ok(())
2442 }
2443 }
2444
2445 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2446 for PrimaryCreateContext2Request
2447 {
2448 #[inline(always)]
2449 fn new_empty() -> Self {
2450 Self { context_id: fidl::new_empty!(u32, D), priority: fidl::new_empty!(Priority, D) }
2451 }
2452
2453 #[inline]
2454 unsafe fn decode(
2455 &mut self,
2456 decoder: &mut fidl::encoding::Decoder<'_, D>,
2457 offset: usize,
2458 _depth: fidl::encoding::Depth,
2459 ) -> fidl::Result<()> {
2460 decoder.debug_check_bounds::<Self>(offset);
2461 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2463 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2464 let mask = 0xffffffff00000000u64;
2465 let maskedval = padval & mask;
2466 if maskedval != 0 {
2467 return Err(fidl::Error::NonZeroPadding {
2468 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2469 });
2470 }
2471 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
2472 fidl::decode!(Priority, D, &mut self.priority, decoder, offset + 8, _depth)?;
2473 Ok(())
2474 }
2475 }
2476
2477 impl fidl::encoding::ValueTypeMarker for PrimaryCreateContextRequest {
2478 type Borrowed<'a> = &'a Self;
2479 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2480 value
2481 }
2482 }
2483
2484 unsafe impl fidl::encoding::TypeMarker for PrimaryCreateContextRequest {
2485 type Owned = Self;
2486
2487 #[inline(always)]
2488 fn inline_align(_context: fidl::encoding::Context) -> usize {
2489 4
2490 }
2491
2492 #[inline(always)]
2493 fn inline_size(_context: fidl::encoding::Context) -> usize {
2494 4
2495 }
2496 #[inline(always)]
2497 fn encode_is_copy() -> bool {
2498 true
2499 }
2500
2501 #[inline(always)]
2502 fn decode_is_copy() -> bool {
2503 true
2504 }
2505 }
2506
2507 unsafe impl<D: fidl::encoding::ResourceDialect>
2508 fidl::encoding::Encode<PrimaryCreateContextRequest, D> for &PrimaryCreateContextRequest
2509 {
2510 #[inline]
2511 unsafe fn encode(
2512 self,
2513 encoder: &mut fidl::encoding::Encoder<'_, D>,
2514 offset: usize,
2515 _depth: fidl::encoding::Depth,
2516 ) -> fidl::Result<()> {
2517 encoder.debug_check_bounds::<PrimaryCreateContextRequest>(offset);
2518 unsafe {
2519 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2521 (buf_ptr as *mut PrimaryCreateContextRequest)
2522 .write_unaligned((self as *const PrimaryCreateContextRequest).read());
2523 }
2526 Ok(())
2527 }
2528 }
2529 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
2530 fidl::encoding::Encode<PrimaryCreateContextRequest, D> for (T0,)
2531 {
2532 #[inline]
2533 unsafe fn encode(
2534 self,
2535 encoder: &mut fidl::encoding::Encoder<'_, D>,
2536 offset: usize,
2537 depth: fidl::encoding::Depth,
2538 ) -> fidl::Result<()> {
2539 encoder.debug_check_bounds::<PrimaryCreateContextRequest>(offset);
2540 self.0.encode(encoder, offset + 0, depth)?;
2544 Ok(())
2545 }
2546 }
2547
2548 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2549 for PrimaryCreateContextRequest
2550 {
2551 #[inline(always)]
2552 fn new_empty() -> Self {
2553 Self { context_id: fidl::new_empty!(u32, D) }
2554 }
2555
2556 #[inline]
2557 unsafe fn decode(
2558 &mut self,
2559 decoder: &mut fidl::encoding::Decoder<'_, D>,
2560 offset: usize,
2561 _depth: fidl::encoding::Depth,
2562 ) -> fidl::Result<()> {
2563 decoder.debug_check_bounds::<Self>(offset);
2564 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2565 unsafe {
2568 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2569 }
2570 Ok(())
2571 }
2572 }
2573
2574 impl fidl::encoding::ValueTypeMarker for PrimaryDestroyContextRequest {
2575 type Borrowed<'a> = &'a Self;
2576 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2577 value
2578 }
2579 }
2580
2581 unsafe impl fidl::encoding::TypeMarker for PrimaryDestroyContextRequest {
2582 type Owned = Self;
2583
2584 #[inline(always)]
2585 fn inline_align(_context: fidl::encoding::Context) -> usize {
2586 4
2587 }
2588
2589 #[inline(always)]
2590 fn inline_size(_context: fidl::encoding::Context) -> usize {
2591 4
2592 }
2593 #[inline(always)]
2594 fn encode_is_copy() -> bool {
2595 true
2596 }
2597
2598 #[inline(always)]
2599 fn decode_is_copy() -> bool {
2600 true
2601 }
2602 }
2603
2604 unsafe impl<D: fidl::encoding::ResourceDialect>
2605 fidl::encoding::Encode<PrimaryDestroyContextRequest, D> for &PrimaryDestroyContextRequest
2606 {
2607 #[inline]
2608 unsafe fn encode(
2609 self,
2610 encoder: &mut fidl::encoding::Encoder<'_, D>,
2611 offset: usize,
2612 _depth: fidl::encoding::Depth,
2613 ) -> fidl::Result<()> {
2614 encoder.debug_check_bounds::<PrimaryDestroyContextRequest>(offset);
2615 unsafe {
2616 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2618 (buf_ptr as *mut PrimaryDestroyContextRequest)
2619 .write_unaligned((self as *const PrimaryDestroyContextRequest).read());
2620 }
2623 Ok(())
2624 }
2625 }
2626 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
2627 fidl::encoding::Encode<PrimaryDestroyContextRequest, D> for (T0,)
2628 {
2629 #[inline]
2630 unsafe fn encode(
2631 self,
2632 encoder: &mut fidl::encoding::Encoder<'_, D>,
2633 offset: usize,
2634 depth: fidl::encoding::Depth,
2635 ) -> fidl::Result<()> {
2636 encoder.debug_check_bounds::<PrimaryDestroyContextRequest>(offset);
2637 self.0.encode(encoder, offset + 0, depth)?;
2641 Ok(())
2642 }
2643 }
2644
2645 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2646 for PrimaryDestroyContextRequest
2647 {
2648 #[inline(always)]
2649 fn new_empty() -> Self {
2650 Self { context_id: fidl::new_empty!(u32, D) }
2651 }
2652
2653 #[inline]
2654 unsafe fn decode(
2655 &mut self,
2656 decoder: &mut fidl::encoding::Decoder<'_, D>,
2657 offset: usize,
2658 _depth: fidl::encoding::Depth,
2659 ) -> fidl::Result<()> {
2660 decoder.debug_check_bounds::<Self>(offset);
2661 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2662 unsafe {
2665 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2666 }
2667 Ok(())
2668 }
2669 }
2670
2671 impl fidl::encoding::ValueTypeMarker for PrimaryDumpPerformanceCountersRequest {
2672 type Borrowed<'a> = &'a Self;
2673 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2674 value
2675 }
2676 }
2677
2678 unsafe impl fidl::encoding::TypeMarker for PrimaryDumpPerformanceCountersRequest {
2679 type Owned = Self;
2680
2681 #[inline(always)]
2682 fn inline_align(_context: fidl::encoding::Context) -> usize {
2683 8
2684 }
2685
2686 #[inline(always)]
2687 fn inline_size(_context: fidl::encoding::Context) -> usize {
2688 16
2689 }
2690 }
2691
2692 unsafe impl<D: fidl::encoding::ResourceDialect>
2693 fidl::encoding::Encode<PrimaryDumpPerformanceCountersRequest, D>
2694 for &PrimaryDumpPerformanceCountersRequest
2695 {
2696 #[inline]
2697 unsafe fn encode(
2698 self,
2699 encoder: &mut fidl::encoding::Encoder<'_, D>,
2700 offset: usize,
2701 _depth: fidl::encoding::Depth,
2702 ) -> fidl::Result<()> {
2703 encoder.debug_check_bounds::<PrimaryDumpPerformanceCountersRequest>(offset);
2704 unsafe {
2705 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2707 (buf_ptr as *mut PrimaryDumpPerformanceCountersRequest)
2708 .write_unaligned((self as *const PrimaryDumpPerformanceCountersRequest).read());
2709 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2712 let padding_mask = 0xffffffff00000000u64;
2713 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2714 }
2715 Ok(())
2716 }
2717 }
2718 unsafe impl<
2719 D: fidl::encoding::ResourceDialect,
2720 T0: fidl::encoding::Encode<u64, D>,
2721 T1: fidl::encoding::Encode<u32, D>,
2722 > fidl::encoding::Encode<PrimaryDumpPerformanceCountersRequest, D> for (T0, T1)
2723 {
2724 #[inline]
2725 unsafe fn encode(
2726 self,
2727 encoder: &mut fidl::encoding::Encoder<'_, D>,
2728 offset: usize,
2729 depth: fidl::encoding::Depth,
2730 ) -> fidl::Result<()> {
2731 encoder.debug_check_bounds::<PrimaryDumpPerformanceCountersRequest>(offset);
2732 unsafe {
2735 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2736 (ptr as *mut u64).write_unaligned(0);
2737 }
2738 self.0.encode(encoder, offset + 0, depth)?;
2740 self.1.encode(encoder, offset + 8, depth)?;
2741 Ok(())
2742 }
2743 }
2744
2745 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2746 for PrimaryDumpPerformanceCountersRequest
2747 {
2748 #[inline(always)]
2749 fn new_empty() -> Self {
2750 Self { pool_id: fidl::new_empty!(u64, D), trigger_id: fidl::new_empty!(u32, D) }
2751 }
2752
2753 #[inline]
2754 unsafe fn decode(
2755 &mut self,
2756 decoder: &mut fidl::encoding::Decoder<'_, D>,
2757 offset: usize,
2758 _depth: fidl::encoding::Depth,
2759 ) -> fidl::Result<()> {
2760 decoder.debug_check_bounds::<Self>(offset);
2761 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2762 let ptr = unsafe { buf_ptr.offset(8) };
2764 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2765 let mask = 0xffffffff00000000u64;
2766 let maskedval = padval & mask;
2767 if maskedval != 0 {
2768 return Err(fidl::Error::NonZeroPadding {
2769 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2770 });
2771 }
2772 unsafe {
2774 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2775 }
2776 Ok(())
2777 }
2778 }
2779
2780 impl fidl::encoding::ValueTypeMarker for PrimaryEnablePerformanceCountersRequest {
2781 type Borrowed<'a> = &'a Self;
2782 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2783 value
2784 }
2785 }
2786
2787 unsafe impl fidl::encoding::TypeMarker for PrimaryEnablePerformanceCountersRequest {
2788 type Owned = Self;
2789
2790 #[inline(always)]
2791 fn inline_align(_context: fidl::encoding::Context) -> usize {
2792 8
2793 }
2794
2795 #[inline(always)]
2796 fn inline_size(_context: fidl::encoding::Context) -> usize {
2797 16
2798 }
2799 }
2800
2801 unsafe impl<D: fidl::encoding::ResourceDialect>
2802 fidl::encoding::Encode<PrimaryEnablePerformanceCountersRequest, D>
2803 for &PrimaryEnablePerformanceCountersRequest
2804 {
2805 #[inline]
2806 unsafe fn encode(
2807 self,
2808 encoder: &mut fidl::encoding::Encoder<'_, D>,
2809 offset: usize,
2810 _depth: fidl::encoding::Depth,
2811 ) -> fidl::Result<()> {
2812 encoder.debug_check_bounds::<PrimaryEnablePerformanceCountersRequest>(offset);
2813 fidl::encoding::Encode::<PrimaryEnablePerformanceCountersRequest, D>::encode(
2815 (<fidl::encoding::Vector<u64, 64> as fidl::encoding::ValueTypeMarker>::borrow(
2816 &self.counters,
2817 ),),
2818 encoder,
2819 offset,
2820 _depth,
2821 )
2822 }
2823 }
2824 unsafe impl<
2825 D: fidl::encoding::ResourceDialect,
2826 T0: fidl::encoding::Encode<fidl::encoding::Vector<u64, 64>, D>,
2827 > fidl::encoding::Encode<PrimaryEnablePerformanceCountersRequest, D> for (T0,)
2828 {
2829 #[inline]
2830 unsafe fn encode(
2831 self,
2832 encoder: &mut fidl::encoding::Encoder<'_, D>,
2833 offset: usize,
2834 depth: fidl::encoding::Depth,
2835 ) -> fidl::Result<()> {
2836 encoder.debug_check_bounds::<PrimaryEnablePerformanceCountersRequest>(offset);
2837 self.0.encode(encoder, offset + 0, depth)?;
2841 Ok(())
2842 }
2843 }
2844
2845 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2846 for PrimaryEnablePerformanceCountersRequest
2847 {
2848 #[inline(always)]
2849 fn new_empty() -> Self {
2850 Self { counters: fidl::new_empty!(fidl::encoding::Vector<u64, 64>, D) }
2851 }
2852
2853 #[inline]
2854 unsafe fn decode(
2855 &mut self,
2856 decoder: &mut fidl::encoding::Decoder<'_, D>,
2857 offset: usize,
2858 _depth: fidl::encoding::Depth,
2859 ) -> fidl::Result<()> {
2860 decoder.debug_check_bounds::<Self>(offset);
2861 fidl::decode!(fidl::encoding::Vector<u64, 64>, D, &mut self.counters, decoder, offset + 0, _depth)?;
2863 Ok(())
2864 }
2865 }
2866
2867 impl fidl::encoding::ValueTypeMarker for PrimaryExecuteCommandRequest {
2868 type Borrowed<'a> = &'a Self;
2869 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2870 value
2871 }
2872 }
2873
2874 unsafe impl fidl::encoding::TypeMarker for PrimaryExecuteCommandRequest {
2875 type Owned = Self;
2876
2877 #[inline(always)]
2878 fn inline_align(_context: fidl::encoding::Context) -> usize {
2879 8
2880 }
2881
2882 #[inline(always)]
2883 fn inline_size(_context: fidl::encoding::Context) -> usize {
2884 80
2885 }
2886 }
2887
2888 unsafe impl<D: fidl::encoding::ResourceDialect>
2889 fidl::encoding::Encode<PrimaryExecuteCommandRequest, D> for &PrimaryExecuteCommandRequest
2890 {
2891 #[inline]
2892 unsafe fn encode(
2893 self,
2894 encoder: &mut fidl::encoding::Encoder<'_, D>,
2895 offset: usize,
2896 _depth: fidl::encoding::Depth,
2897 ) -> fidl::Result<()> {
2898 encoder.debug_check_bounds::<PrimaryExecuteCommandRequest>(offset);
2899 fidl::encoding::Encode::<PrimaryExecuteCommandRequest, D>::encode(
2901 (
2902 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
2903 <fidl::encoding::UnboundedVector<BufferRange> as fidl::encoding::ValueTypeMarker>::borrow(&self.resources),
2904 <fidl::encoding::UnboundedVector<CommandBuffer> as fidl::encoding::ValueTypeMarker>::borrow(&self.command_buffers),
2905 <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.wait_semaphores),
2906 <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.signal_semaphores),
2907 <CommandBufferFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.flags),
2908 ),
2909 encoder, offset, _depth
2910 )
2911 }
2912 }
2913 unsafe impl<
2914 D: fidl::encoding::ResourceDialect,
2915 T0: fidl::encoding::Encode<u32, D>,
2916 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<BufferRange>, D>,
2917 T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<CommandBuffer>, D>,
2918 T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2919 T4: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2920 T5: fidl::encoding::Encode<CommandBufferFlags, D>,
2921 > fidl::encoding::Encode<PrimaryExecuteCommandRequest, D> for (T0, T1, T2, T3, T4, T5)
2922 {
2923 #[inline]
2924 unsafe fn encode(
2925 self,
2926 encoder: &mut fidl::encoding::Encoder<'_, D>,
2927 offset: usize,
2928 depth: fidl::encoding::Depth,
2929 ) -> fidl::Result<()> {
2930 encoder.debug_check_bounds::<PrimaryExecuteCommandRequest>(offset);
2931 unsafe {
2934 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2935 (ptr as *mut u64).write_unaligned(0);
2936 }
2937 self.0.encode(encoder, offset + 0, depth)?;
2939 self.1.encode(encoder, offset + 8, depth)?;
2940 self.2.encode(encoder, offset + 24, depth)?;
2941 self.3.encode(encoder, offset + 40, depth)?;
2942 self.4.encode(encoder, offset + 56, depth)?;
2943 self.5.encode(encoder, offset + 72, depth)?;
2944 Ok(())
2945 }
2946 }
2947
2948 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2949 for PrimaryExecuteCommandRequest
2950 {
2951 #[inline(always)]
2952 fn new_empty() -> Self {
2953 Self {
2954 context_id: fidl::new_empty!(u32, D),
2955 resources: fidl::new_empty!(fidl::encoding::UnboundedVector<BufferRange>, D),
2956 command_buffers: fidl::new_empty!(
2957 fidl::encoding::UnboundedVector<CommandBuffer>,
2958 D
2959 ),
2960 wait_semaphores: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D),
2961 signal_semaphores: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D),
2962 flags: fidl::new_empty!(CommandBufferFlags, D),
2963 }
2964 }
2965
2966 #[inline]
2967 unsafe fn decode(
2968 &mut self,
2969 decoder: &mut fidl::encoding::Decoder<'_, D>,
2970 offset: usize,
2971 _depth: fidl::encoding::Depth,
2972 ) -> fidl::Result<()> {
2973 decoder.debug_check_bounds::<Self>(offset);
2974 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2976 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2977 let mask = 0xffffffff00000000u64;
2978 let maskedval = padval & mask;
2979 if maskedval != 0 {
2980 return Err(fidl::Error::NonZeroPadding {
2981 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2982 });
2983 }
2984 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
2985 fidl::decode!(
2986 fidl::encoding::UnboundedVector<BufferRange>,
2987 D,
2988 &mut self.resources,
2989 decoder,
2990 offset + 8,
2991 _depth
2992 )?;
2993 fidl::decode!(
2994 fidl::encoding::UnboundedVector<CommandBuffer>,
2995 D,
2996 &mut self.command_buffers,
2997 decoder,
2998 offset + 24,
2999 _depth
3000 )?;
3001 fidl::decode!(
3002 fidl::encoding::UnboundedVector<u64>,
3003 D,
3004 &mut self.wait_semaphores,
3005 decoder,
3006 offset + 40,
3007 _depth
3008 )?;
3009 fidl::decode!(
3010 fidl::encoding::UnboundedVector<u64>,
3011 D,
3012 &mut self.signal_semaphores,
3013 decoder,
3014 offset + 56,
3015 _depth
3016 )?;
3017 fidl::decode!(CommandBufferFlags, D, &mut self.flags, decoder, offset + 72, _depth)?;
3018 Ok(())
3019 }
3020 }
3021
3022 impl fidl::encoding::ValueTypeMarker for PrimaryExecuteImmediateCommandsRequest {
3023 type Borrowed<'a> = &'a Self;
3024 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3025 value
3026 }
3027 }
3028
3029 unsafe impl fidl::encoding::TypeMarker for PrimaryExecuteImmediateCommandsRequest {
3030 type Owned = Self;
3031
3032 #[inline(always)]
3033 fn inline_align(_context: fidl::encoding::Context) -> usize {
3034 8
3035 }
3036
3037 #[inline(always)]
3038 fn inline_size(_context: fidl::encoding::Context) -> usize {
3039 40
3040 }
3041 }
3042
3043 unsafe impl<D: fidl::encoding::ResourceDialect>
3044 fidl::encoding::Encode<PrimaryExecuteImmediateCommandsRequest, D>
3045 for &PrimaryExecuteImmediateCommandsRequest
3046 {
3047 #[inline]
3048 unsafe fn encode(
3049 self,
3050 encoder: &mut fidl::encoding::Encoder<'_, D>,
3051 offset: usize,
3052 _depth: fidl::encoding::Depth,
3053 ) -> fidl::Result<()> {
3054 encoder.debug_check_bounds::<PrimaryExecuteImmediateCommandsRequest>(offset);
3055 fidl::encoding::Encode::<PrimaryExecuteImmediateCommandsRequest, D>::encode(
3057 (
3058 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
3059 <fidl::encoding::Vector<u8, 2048> as fidl::encoding::ValueTypeMarker>::borrow(&self.command_data),
3060 <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.semaphores),
3061 ),
3062 encoder, offset, _depth
3063 )
3064 }
3065 }
3066 unsafe impl<
3067 D: fidl::encoding::ResourceDialect,
3068 T0: fidl::encoding::Encode<u32, D>,
3069 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 2048>, D>,
3070 T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
3071 > fidl::encoding::Encode<PrimaryExecuteImmediateCommandsRequest, D> for (T0, T1, T2)
3072 {
3073 #[inline]
3074 unsafe fn encode(
3075 self,
3076 encoder: &mut fidl::encoding::Encoder<'_, D>,
3077 offset: usize,
3078 depth: fidl::encoding::Depth,
3079 ) -> fidl::Result<()> {
3080 encoder.debug_check_bounds::<PrimaryExecuteImmediateCommandsRequest>(offset);
3081 unsafe {
3084 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3085 (ptr as *mut u64).write_unaligned(0);
3086 }
3087 self.0.encode(encoder, offset + 0, depth)?;
3089 self.1.encode(encoder, offset + 8, depth)?;
3090 self.2.encode(encoder, offset + 24, depth)?;
3091 Ok(())
3092 }
3093 }
3094
3095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3096 for PrimaryExecuteImmediateCommandsRequest
3097 {
3098 #[inline(always)]
3099 fn new_empty() -> Self {
3100 Self {
3101 context_id: fidl::new_empty!(u32, D),
3102 command_data: fidl::new_empty!(fidl::encoding::Vector<u8, 2048>, D),
3103 semaphores: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D),
3104 }
3105 }
3106
3107 #[inline]
3108 unsafe fn decode(
3109 &mut self,
3110 decoder: &mut fidl::encoding::Decoder<'_, D>,
3111 offset: usize,
3112 _depth: fidl::encoding::Depth,
3113 ) -> fidl::Result<()> {
3114 decoder.debug_check_bounds::<Self>(offset);
3115 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3117 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3118 let mask = 0xffffffff00000000u64;
3119 let maskedval = padval & mask;
3120 if maskedval != 0 {
3121 return Err(fidl::Error::NonZeroPadding {
3122 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3123 });
3124 }
3125 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
3126 fidl::decode!(fidl::encoding::Vector<u8, 2048>, D, &mut self.command_data, decoder, offset + 8, _depth)?;
3127 fidl::decode!(
3128 fidl::encoding::UnboundedVector<u64>,
3129 D,
3130 &mut self.semaphores,
3131 decoder,
3132 offset + 24,
3133 _depth
3134 )?;
3135 Ok(())
3136 }
3137 }
3138
3139 impl fidl::encoding::ValueTypeMarker for PrimaryExecuteInlineCommandsRequest {
3140 type Borrowed<'a> = &'a Self;
3141 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3142 value
3143 }
3144 }
3145
3146 unsafe impl fidl::encoding::TypeMarker for PrimaryExecuteInlineCommandsRequest {
3147 type Owned = Self;
3148
3149 #[inline(always)]
3150 fn inline_align(_context: fidl::encoding::Context) -> usize {
3151 8
3152 }
3153
3154 #[inline(always)]
3155 fn inline_size(_context: fidl::encoding::Context) -> usize {
3156 24
3157 }
3158 }
3159
3160 unsafe impl<D: fidl::encoding::ResourceDialect>
3161 fidl::encoding::Encode<PrimaryExecuteInlineCommandsRequest, D>
3162 for &PrimaryExecuteInlineCommandsRequest
3163 {
3164 #[inline]
3165 unsafe fn encode(
3166 self,
3167 encoder: &mut fidl::encoding::Encoder<'_, D>,
3168 offset: usize,
3169 _depth: fidl::encoding::Depth,
3170 ) -> fidl::Result<()> {
3171 encoder.debug_check_bounds::<PrimaryExecuteInlineCommandsRequest>(offset);
3172 fidl::encoding::Encode::<PrimaryExecuteInlineCommandsRequest, D>::encode(
3174 (
3175 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
3176 <fidl::encoding::UnboundedVector<InlineCommand> as fidl::encoding::ValueTypeMarker>::borrow(&self.commands),
3177 ),
3178 encoder, offset, _depth
3179 )
3180 }
3181 }
3182 unsafe impl<
3183 D: fidl::encoding::ResourceDialect,
3184 T0: fidl::encoding::Encode<u32, D>,
3185 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<InlineCommand>, D>,
3186 > fidl::encoding::Encode<PrimaryExecuteInlineCommandsRequest, D> for (T0, T1)
3187 {
3188 #[inline]
3189 unsafe fn encode(
3190 self,
3191 encoder: &mut fidl::encoding::Encoder<'_, D>,
3192 offset: usize,
3193 depth: fidl::encoding::Depth,
3194 ) -> fidl::Result<()> {
3195 encoder.debug_check_bounds::<PrimaryExecuteInlineCommandsRequest>(offset);
3196 unsafe {
3199 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3200 (ptr as *mut u64).write_unaligned(0);
3201 }
3202 self.0.encode(encoder, offset + 0, depth)?;
3204 self.1.encode(encoder, offset + 8, depth)?;
3205 Ok(())
3206 }
3207 }
3208
3209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3210 for PrimaryExecuteInlineCommandsRequest
3211 {
3212 #[inline(always)]
3213 fn new_empty() -> Self {
3214 Self {
3215 context_id: fidl::new_empty!(u32, D),
3216 commands: fidl::new_empty!(fidl::encoding::UnboundedVector<InlineCommand>, D),
3217 }
3218 }
3219
3220 #[inline]
3221 unsafe fn decode(
3222 &mut self,
3223 decoder: &mut fidl::encoding::Decoder<'_, D>,
3224 offset: usize,
3225 _depth: fidl::encoding::Depth,
3226 ) -> fidl::Result<()> {
3227 decoder.debug_check_bounds::<Self>(offset);
3228 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3230 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3231 let mask = 0xffffffff00000000u64;
3232 let maskedval = padval & mask;
3233 if maskedval != 0 {
3234 return Err(fidl::Error::NonZeroPadding {
3235 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3236 });
3237 }
3238 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
3239 fidl::decode!(
3240 fidl::encoding::UnboundedVector<InlineCommand>,
3241 D,
3242 &mut self.commands,
3243 decoder,
3244 offset + 8,
3245 _depth
3246 )?;
3247 Ok(())
3248 }
3249 }
3250
3251 impl fidl::encoding::ValueTypeMarker for PrimaryIsPerformanceCounterAccessAllowedResponse {
3252 type Borrowed<'a> = &'a Self;
3253 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3254 value
3255 }
3256 }
3257
3258 unsafe impl fidl::encoding::TypeMarker for PrimaryIsPerformanceCounterAccessAllowedResponse {
3259 type Owned = Self;
3260
3261 #[inline(always)]
3262 fn inline_align(_context: fidl::encoding::Context) -> usize {
3263 1
3264 }
3265
3266 #[inline(always)]
3267 fn inline_size(_context: fidl::encoding::Context) -> usize {
3268 1
3269 }
3270 }
3271
3272 unsafe impl<D: fidl::encoding::ResourceDialect>
3273 fidl::encoding::Encode<PrimaryIsPerformanceCounterAccessAllowedResponse, D>
3274 for &PrimaryIsPerformanceCounterAccessAllowedResponse
3275 {
3276 #[inline]
3277 unsafe fn encode(
3278 self,
3279 encoder: &mut fidl::encoding::Encoder<'_, D>,
3280 offset: usize,
3281 _depth: fidl::encoding::Depth,
3282 ) -> fidl::Result<()> {
3283 encoder.debug_check_bounds::<PrimaryIsPerformanceCounterAccessAllowedResponse>(offset);
3284 fidl::encoding::Encode::<PrimaryIsPerformanceCounterAccessAllowedResponse, D>::encode(
3286 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
3287 encoder,
3288 offset,
3289 _depth,
3290 )
3291 }
3292 }
3293 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
3294 fidl::encoding::Encode<PrimaryIsPerformanceCounterAccessAllowedResponse, D> for (T0,)
3295 {
3296 #[inline]
3297 unsafe fn encode(
3298 self,
3299 encoder: &mut fidl::encoding::Encoder<'_, D>,
3300 offset: usize,
3301 depth: fidl::encoding::Depth,
3302 ) -> fidl::Result<()> {
3303 encoder.debug_check_bounds::<PrimaryIsPerformanceCounterAccessAllowedResponse>(offset);
3304 self.0.encode(encoder, offset + 0, depth)?;
3308 Ok(())
3309 }
3310 }
3311
3312 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3313 for PrimaryIsPerformanceCounterAccessAllowedResponse
3314 {
3315 #[inline(always)]
3316 fn new_empty() -> Self {
3317 Self { enabled: fidl::new_empty!(bool, D) }
3318 }
3319
3320 #[inline]
3321 unsafe fn decode(
3322 &mut self,
3323 decoder: &mut fidl::encoding::Decoder<'_, D>,
3324 offset: usize,
3325 _depth: fidl::encoding::Depth,
3326 ) -> fidl::Result<()> {
3327 decoder.debug_check_bounds::<Self>(offset);
3328 fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
3330 Ok(())
3331 }
3332 }
3333
3334 impl fidl::encoding::ValueTypeMarker for PrimaryOnNotifyMemoryImportedRequest {
3335 type Borrowed<'a> = &'a Self;
3336 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3337 value
3338 }
3339 }
3340
3341 unsafe impl fidl::encoding::TypeMarker for PrimaryOnNotifyMemoryImportedRequest {
3342 type Owned = Self;
3343
3344 #[inline(always)]
3345 fn inline_align(_context: fidl::encoding::Context) -> usize {
3346 8
3347 }
3348
3349 #[inline(always)]
3350 fn inline_size(_context: fidl::encoding::Context) -> usize {
3351 8
3352 }
3353 #[inline(always)]
3354 fn encode_is_copy() -> bool {
3355 true
3356 }
3357
3358 #[inline(always)]
3359 fn decode_is_copy() -> bool {
3360 true
3361 }
3362 }
3363
3364 unsafe impl<D: fidl::encoding::ResourceDialect>
3365 fidl::encoding::Encode<PrimaryOnNotifyMemoryImportedRequest, D>
3366 for &PrimaryOnNotifyMemoryImportedRequest
3367 {
3368 #[inline]
3369 unsafe fn encode(
3370 self,
3371 encoder: &mut fidl::encoding::Encoder<'_, D>,
3372 offset: usize,
3373 _depth: fidl::encoding::Depth,
3374 ) -> fidl::Result<()> {
3375 encoder.debug_check_bounds::<PrimaryOnNotifyMemoryImportedRequest>(offset);
3376 unsafe {
3377 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3379 (buf_ptr as *mut PrimaryOnNotifyMemoryImportedRequest)
3380 .write_unaligned((self as *const PrimaryOnNotifyMemoryImportedRequest).read());
3381 }
3384 Ok(())
3385 }
3386 }
3387 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3388 fidl::encoding::Encode<PrimaryOnNotifyMemoryImportedRequest, D> for (T0,)
3389 {
3390 #[inline]
3391 unsafe fn encode(
3392 self,
3393 encoder: &mut fidl::encoding::Encoder<'_, D>,
3394 offset: usize,
3395 depth: fidl::encoding::Depth,
3396 ) -> fidl::Result<()> {
3397 encoder.debug_check_bounds::<PrimaryOnNotifyMemoryImportedRequest>(offset);
3398 self.0.encode(encoder, offset + 0, depth)?;
3402 Ok(())
3403 }
3404 }
3405
3406 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3407 for PrimaryOnNotifyMemoryImportedRequest
3408 {
3409 #[inline(always)]
3410 fn new_empty() -> Self {
3411 Self { bytes: fidl::new_empty!(u64, D) }
3412 }
3413
3414 #[inline]
3415 unsafe fn decode(
3416 &mut self,
3417 decoder: &mut fidl::encoding::Decoder<'_, D>,
3418 offset: usize,
3419 _depth: fidl::encoding::Depth,
3420 ) -> fidl::Result<()> {
3421 decoder.debug_check_bounds::<Self>(offset);
3422 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3423 unsafe {
3426 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3427 }
3428 Ok(())
3429 }
3430 }
3431
3432 impl fidl::encoding::ValueTypeMarker for PrimaryOnNotifyMessagesConsumedRequest {
3433 type Borrowed<'a> = &'a Self;
3434 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3435 value
3436 }
3437 }
3438
3439 unsafe impl fidl::encoding::TypeMarker for PrimaryOnNotifyMessagesConsumedRequest {
3440 type Owned = Self;
3441
3442 #[inline(always)]
3443 fn inline_align(_context: fidl::encoding::Context) -> usize {
3444 8
3445 }
3446
3447 #[inline(always)]
3448 fn inline_size(_context: fidl::encoding::Context) -> usize {
3449 8
3450 }
3451 #[inline(always)]
3452 fn encode_is_copy() -> bool {
3453 true
3454 }
3455
3456 #[inline(always)]
3457 fn decode_is_copy() -> bool {
3458 true
3459 }
3460 }
3461
3462 unsafe impl<D: fidl::encoding::ResourceDialect>
3463 fidl::encoding::Encode<PrimaryOnNotifyMessagesConsumedRequest, D>
3464 for &PrimaryOnNotifyMessagesConsumedRequest
3465 {
3466 #[inline]
3467 unsafe fn encode(
3468 self,
3469 encoder: &mut fidl::encoding::Encoder<'_, D>,
3470 offset: usize,
3471 _depth: fidl::encoding::Depth,
3472 ) -> fidl::Result<()> {
3473 encoder.debug_check_bounds::<PrimaryOnNotifyMessagesConsumedRequest>(offset);
3474 unsafe {
3475 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3477 (buf_ptr as *mut PrimaryOnNotifyMessagesConsumedRequest).write_unaligned(
3478 (self as *const PrimaryOnNotifyMessagesConsumedRequest).read(),
3479 );
3480 }
3483 Ok(())
3484 }
3485 }
3486 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3487 fidl::encoding::Encode<PrimaryOnNotifyMessagesConsumedRequest, D> for (T0,)
3488 {
3489 #[inline]
3490 unsafe fn encode(
3491 self,
3492 encoder: &mut fidl::encoding::Encoder<'_, D>,
3493 offset: usize,
3494 depth: fidl::encoding::Depth,
3495 ) -> fidl::Result<()> {
3496 encoder.debug_check_bounds::<PrimaryOnNotifyMessagesConsumedRequest>(offset);
3497 self.0.encode(encoder, offset + 0, depth)?;
3501 Ok(())
3502 }
3503 }
3504
3505 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3506 for PrimaryOnNotifyMessagesConsumedRequest
3507 {
3508 #[inline(always)]
3509 fn new_empty() -> Self {
3510 Self { count: fidl::new_empty!(u64, D) }
3511 }
3512
3513 #[inline]
3514 unsafe fn decode(
3515 &mut self,
3516 decoder: &mut fidl::encoding::Decoder<'_, D>,
3517 offset: usize,
3518 _depth: fidl::encoding::Depth,
3519 ) -> fidl::Result<()> {
3520 decoder.debug_check_bounds::<Self>(offset);
3521 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3522 unsafe {
3525 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3526 }
3527 Ok(())
3528 }
3529 }
3530
3531 impl fidl::encoding::ValueTypeMarker for PrimaryReleaseObjectRequest {
3532 type Borrowed<'a> = &'a Self;
3533 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3534 value
3535 }
3536 }
3537
3538 unsafe impl fidl::encoding::TypeMarker for PrimaryReleaseObjectRequest {
3539 type Owned = Self;
3540
3541 #[inline(always)]
3542 fn inline_align(_context: fidl::encoding::Context) -> usize {
3543 8
3544 }
3545
3546 #[inline(always)]
3547 fn inline_size(_context: fidl::encoding::Context) -> usize {
3548 16
3549 }
3550 }
3551
3552 unsafe impl<D: fidl::encoding::ResourceDialect>
3553 fidl::encoding::Encode<PrimaryReleaseObjectRequest, D> for &PrimaryReleaseObjectRequest
3554 {
3555 #[inline]
3556 unsafe fn encode(
3557 self,
3558 encoder: &mut fidl::encoding::Encoder<'_, D>,
3559 offset: usize,
3560 _depth: fidl::encoding::Depth,
3561 ) -> fidl::Result<()> {
3562 encoder.debug_check_bounds::<PrimaryReleaseObjectRequest>(offset);
3563 fidl::encoding::Encode::<PrimaryReleaseObjectRequest, D>::encode(
3565 (
3566 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.object_id),
3567 <ObjectType as fidl::encoding::ValueTypeMarker>::borrow(&self.object_type),
3568 ),
3569 encoder,
3570 offset,
3571 _depth,
3572 )
3573 }
3574 }
3575 unsafe impl<
3576 D: fidl::encoding::ResourceDialect,
3577 T0: fidl::encoding::Encode<u64, D>,
3578 T1: fidl::encoding::Encode<ObjectType, D>,
3579 > fidl::encoding::Encode<PrimaryReleaseObjectRequest, D> for (T0, T1)
3580 {
3581 #[inline]
3582 unsafe fn encode(
3583 self,
3584 encoder: &mut fidl::encoding::Encoder<'_, D>,
3585 offset: usize,
3586 depth: fidl::encoding::Depth,
3587 ) -> fidl::Result<()> {
3588 encoder.debug_check_bounds::<PrimaryReleaseObjectRequest>(offset);
3589 unsafe {
3592 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3593 (ptr as *mut u64).write_unaligned(0);
3594 }
3595 self.0.encode(encoder, offset + 0, depth)?;
3597 self.1.encode(encoder, offset + 8, depth)?;
3598 Ok(())
3599 }
3600 }
3601
3602 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3603 for PrimaryReleaseObjectRequest
3604 {
3605 #[inline(always)]
3606 fn new_empty() -> Self {
3607 Self {
3608 object_id: fidl::new_empty!(u64, D),
3609 object_type: fidl::new_empty!(ObjectType, D),
3610 }
3611 }
3612
3613 #[inline]
3614 unsafe fn decode(
3615 &mut self,
3616 decoder: &mut fidl::encoding::Decoder<'_, D>,
3617 offset: usize,
3618 _depth: fidl::encoding::Depth,
3619 ) -> fidl::Result<()> {
3620 decoder.debug_check_bounds::<Self>(offset);
3621 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3623 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3624 let mask = 0xffffffff00000000u64;
3625 let maskedval = padval & mask;
3626 if maskedval != 0 {
3627 return Err(fidl::Error::NonZeroPadding {
3628 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3629 });
3630 }
3631 fidl::decode!(u64, D, &mut self.object_id, decoder, offset + 0, _depth)?;
3632 fidl::decode!(ObjectType, D, &mut self.object_type, decoder, offset + 8, _depth)?;
3633 Ok(())
3634 }
3635 }
3636
3637 impl fidl::encoding::ValueTypeMarker for PrimaryReleasePerformanceCounterBufferPoolRequest {
3638 type Borrowed<'a> = &'a Self;
3639 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3640 value
3641 }
3642 }
3643
3644 unsafe impl fidl::encoding::TypeMarker for PrimaryReleasePerformanceCounterBufferPoolRequest {
3645 type Owned = Self;
3646
3647 #[inline(always)]
3648 fn inline_align(_context: fidl::encoding::Context) -> usize {
3649 8
3650 }
3651
3652 #[inline(always)]
3653 fn inline_size(_context: fidl::encoding::Context) -> usize {
3654 8
3655 }
3656 #[inline(always)]
3657 fn encode_is_copy() -> bool {
3658 true
3659 }
3660
3661 #[inline(always)]
3662 fn decode_is_copy() -> bool {
3663 true
3664 }
3665 }
3666
3667 unsafe impl<D: fidl::encoding::ResourceDialect>
3668 fidl::encoding::Encode<PrimaryReleasePerformanceCounterBufferPoolRequest, D>
3669 for &PrimaryReleasePerformanceCounterBufferPoolRequest
3670 {
3671 #[inline]
3672 unsafe fn encode(
3673 self,
3674 encoder: &mut fidl::encoding::Encoder<'_, D>,
3675 offset: usize,
3676 _depth: fidl::encoding::Depth,
3677 ) -> fidl::Result<()> {
3678 encoder.debug_check_bounds::<PrimaryReleasePerformanceCounterBufferPoolRequest>(offset);
3679 unsafe {
3680 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3682 (buf_ptr as *mut PrimaryReleasePerformanceCounterBufferPoolRequest)
3683 .write_unaligned(
3684 (self as *const PrimaryReleasePerformanceCounterBufferPoolRequest).read(),
3685 );
3686 }
3689 Ok(())
3690 }
3691 }
3692 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3693 fidl::encoding::Encode<PrimaryReleasePerformanceCounterBufferPoolRequest, D> for (T0,)
3694 {
3695 #[inline]
3696 unsafe fn encode(
3697 self,
3698 encoder: &mut fidl::encoding::Encoder<'_, D>,
3699 offset: usize,
3700 depth: fidl::encoding::Depth,
3701 ) -> fidl::Result<()> {
3702 encoder.debug_check_bounds::<PrimaryReleasePerformanceCounterBufferPoolRequest>(offset);
3703 self.0.encode(encoder, offset + 0, depth)?;
3707 Ok(())
3708 }
3709 }
3710
3711 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3712 for PrimaryReleasePerformanceCounterBufferPoolRequest
3713 {
3714 #[inline(always)]
3715 fn new_empty() -> Self {
3716 Self { pool_id: fidl::new_empty!(u64, D) }
3717 }
3718
3719 #[inline]
3720 unsafe fn decode(
3721 &mut self,
3722 decoder: &mut fidl::encoding::Decoder<'_, D>,
3723 offset: usize,
3724 _depth: fidl::encoding::Depth,
3725 ) -> fidl::Result<()> {
3726 decoder.debug_check_bounds::<Self>(offset);
3727 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3728 unsafe {
3731 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3732 }
3733 Ok(())
3734 }
3735 }
3736
3737 impl fidl::encoding::ValueTypeMarker for PrimaryRemovePerformanceCounterBufferFromPoolRequest {
3738 type Borrowed<'a> = &'a Self;
3739 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3740 value
3741 }
3742 }
3743
3744 unsafe impl fidl::encoding::TypeMarker for PrimaryRemovePerformanceCounterBufferFromPoolRequest {
3745 type Owned = Self;
3746
3747 #[inline(always)]
3748 fn inline_align(_context: fidl::encoding::Context) -> usize {
3749 8
3750 }
3751
3752 #[inline(always)]
3753 fn inline_size(_context: fidl::encoding::Context) -> usize {
3754 16
3755 }
3756 #[inline(always)]
3757 fn encode_is_copy() -> bool {
3758 true
3759 }
3760
3761 #[inline(always)]
3762 fn decode_is_copy() -> bool {
3763 true
3764 }
3765 }
3766
3767 unsafe impl<D: fidl::encoding::ResourceDialect>
3768 fidl::encoding::Encode<PrimaryRemovePerformanceCounterBufferFromPoolRequest, D>
3769 for &PrimaryRemovePerformanceCounterBufferFromPoolRequest
3770 {
3771 #[inline]
3772 unsafe fn encode(
3773 self,
3774 encoder: &mut fidl::encoding::Encoder<'_, D>,
3775 offset: usize,
3776 _depth: fidl::encoding::Depth,
3777 ) -> fidl::Result<()> {
3778 encoder
3779 .debug_check_bounds::<PrimaryRemovePerformanceCounterBufferFromPoolRequest>(offset);
3780 unsafe {
3781 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3783 (buf_ptr as *mut PrimaryRemovePerformanceCounterBufferFromPoolRequest)
3784 .write_unaligned(
3785 (self as *const PrimaryRemovePerformanceCounterBufferFromPoolRequest)
3786 .read(),
3787 );
3788 }
3791 Ok(())
3792 }
3793 }
3794 unsafe impl<
3795 D: fidl::encoding::ResourceDialect,
3796 T0: fidl::encoding::Encode<u64, D>,
3797 T1: fidl::encoding::Encode<u64, D>,
3798 > fidl::encoding::Encode<PrimaryRemovePerformanceCounterBufferFromPoolRequest, D> for (T0, T1)
3799 {
3800 #[inline]
3801 unsafe fn encode(
3802 self,
3803 encoder: &mut fidl::encoding::Encoder<'_, D>,
3804 offset: usize,
3805 depth: fidl::encoding::Depth,
3806 ) -> fidl::Result<()> {
3807 encoder
3808 .debug_check_bounds::<PrimaryRemovePerformanceCounterBufferFromPoolRequest>(offset);
3809 self.0.encode(encoder, offset + 0, depth)?;
3813 self.1.encode(encoder, offset + 8, depth)?;
3814 Ok(())
3815 }
3816 }
3817
3818 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3819 for PrimaryRemovePerformanceCounterBufferFromPoolRequest
3820 {
3821 #[inline(always)]
3822 fn new_empty() -> Self {
3823 Self { pool_id: fidl::new_empty!(u64, D), buffer_id: fidl::new_empty!(u64, D) }
3824 }
3825
3826 #[inline]
3827 unsafe fn decode(
3828 &mut self,
3829 decoder: &mut fidl::encoding::Decoder<'_, D>,
3830 offset: usize,
3831 _depth: fidl::encoding::Depth,
3832 ) -> fidl::Result<()> {
3833 decoder.debug_check_bounds::<Self>(offset);
3834 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3835 unsafe {
3838 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
3839 }
3840 Ok(())
3841 }
3842 }
3843
3844 impl fidl::encoding::ValueTypeMarker for TestDevice2GetUnitTestStatusResponse {
3845 type Borrowed<'a> = &'a Self;
3846 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3847 value
3848 }
3849 }
3850
3851 unsafe impl fidl::encoding::TypeMarker for TestDevice2GetUnitTestStatusResponse {
3852 type Owned = Self;
3853
3854 #[inline(always)]
3855 fn inline_align(_context: fidl::encoding::Context) -> usize {
3856 4
3857 }
3858
3859 #[inline(always)]
3860 fn inline_size(_context: fidl::encoding::Context) -> usize {
3861 4
3862 }
3863 #[inline(always)]
3864 fn encode_is_copy() -> bool {
3865 true
3866 }
3867
3868 #[inline(always)]
3869 fn decode_is_copy() -> bool {
3870 true
3871 }
3872 }
3873
3874 unsafe impl<D: fidl::encoding::ResourceDialect>
3875 fidl::encoding::Encode<TestDevice2GetUnitTestStatusResponse, D>
3876 for &TestDevice2GetUnitTestStatusResponse
3877 {
3878 #[inline]
3879 unsafe fn encode(
3880 self,
3881 encoder: &mut fidl::encoding::Encoder<'_, D>,
3882 offset: usize,
3883 _depth: fidl::encoding::Depth,
3884 ) -> fidl::Result<()> {
3885 encoder.debug_check_bounds::<TestDevice2GetUnitTestStatusResponse>(offset);
3886 unsafe {
3887 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3889 (buf_ptr as *mut TestDevice2GetUnitTestStatusResponse)
3890 .write_unaligned((self as *const TestDevice2GetUnitTestStatusResponse).read());
3891 }
3894 Ok(())
3895 }
3896 }
3897 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3898 fidl::encoding::Encode<TestDevice2GetUnitTestStatusResponse, D> for (T0,)
3899 {
3900 #[inline]
3901 unsafe fn encode(
3902 self,
3903 encoder: &mut fidl::encoding::Encoder<'_, D>,
3904 offset: usize,
3905 depth: fidl::encoding::Depth,
3906 ) -> fidl::Result<()> {
3907 encoder.debug_check_bounds::<TestDevice2GetUnitTestStatusResponse>(offset);
3908 self.0.encode(encoder, offset + 0, depth)?;
3912 Ok(())
3913 }
3914 }
3915
3916 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3917 for TestDevice2GetUnitTestStatusResponse
3918 {
3919 #[inline(always)]
3920 fn new_empty() -> Self {
3921 Self { status: fidl::new_empty!(i32, D) }
3922 }
3923
3924 #[inline]
3925 unsafe fn decode(
3926 &mut self,
3927 decoder: &mut fidl::encoding::Decoder<'_, D>,
3928 offset: usize,
3929 _depth: fidl::encoding::Depth,
3930 ) -> fidl::Result<()> {
3931 decoder.debug_check_bounds::<Self>(offset);
3932 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3933 unsafe {
3936 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
3937 }
3938 Ok(())
3939 }
3940 }
3941
3942 impl fidl::encoding::ValueTypeMarker for TestDeviceGetUnitTestStatusResponse {
3943 type Borrowed<'a> = &'a Self;
3944 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3945 value
3946 }
3947 }
3948
3949 unsafe impl fidl::encoding::TypeMarker for TestDeviceGetUnitTestStatusResponse {
3950 type Owned = Self;
3951
3952 #[inline(always)]
3953 fn inline_align(_context: fidl::encoding::Context) -> usize {
3954 4
3955 }
3956
3957 #[inline(always)]
3958 fn inline_size(_context: fidl::encoding::Context) -> usize {
3959 4
3960 }
3961 #[inline(always)]
3962 fn encode_is_copy() -> bool {
3963 true
3964 }
3965
3966 #[inline(always)]
3967 fn decode_is_copy() -> bool {
3968 true
3969 }
3970 }
3971
3972 unsafe impl<D: fidl::encoding::ResourceDialect>
3973 fidl::encoding::Encode<TestDeviceGetUnitTestStatusResponse, D>
3974 for &TestDeviceGetUnitTestStatusResponse
3975 {
3976 #[inline]
3977 unsafe fn encode(
3978 self,
3979 encoder: &mut fidl::encoding::Encoder<'_, D>,
3980 offset: usize,
3981 _depth: fidl::encoding::Depth,
3982 ) -> fidl::Result<()> {
3983 encoder.debug_check_bounds::<TestDeviceGetUnitTestStatusResponse>(offset);
3984 unsafe {
3985 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3987 (buf_ptr as *mut TestDeviceGetUnitTestStatusResponse)
3988 .write_unaligned((self as *const TestDeviceGetUnitTestStatusResponse).read());
3989 }
3992 Ok(())
3993 }
3994 }
3995 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3996 fidl::encoding::Encode<TestDeviceGetUnitTestStatusResponse, D> for (T0,)
3997 {
3998 #[inline]
3999 unsafe fn encode(
4000 self,
4001 encoder: &mut fidl::encoding::Encoder<'_, D>,
4002 offset: usize,
4003 depth: fidl::encoding::Depth,
4004 ) -> fidl::Result<()> {
4005 encoder.debug_check_bounds::<TestDeviceGetUnitTestStatusResponse>(offset);
4006 self.0.encode(encoder, offset + 0, depth)?;
4010 Ok(())
4011 }
4012 }
4013
4014 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4015 for TestDeviceGetUnitTestStatusResponse
4016 {
4017 #[inline(always)]
4018 fn new_empty() -> Self {
4019 Self { status: fidl::new_empty!(i32, D) }
4020 }
4021
4022 #[inline]
4023 unsafe fn decode(
4024 &mut self,
4025 decoder: &mut fidl::encoding::Decoder<'_, D>,
4026 offset: usize,
4027 _depth: fidl::encoding::Depth,
4028 ) -> fidl::Result<()> {
4029 decoder.debug_check_bounds::<Self>(offset);
4030 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4031 unsafe {
4034 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
4035 }
4036 Ok(())
4037 }
4038 }
4039
4040 impl IcdInfo {
4041 #[inline(always)]
4042 fn max_ordinal_present(&self) -> u64 {
4043 if let Some(_) = self.flags {
4044 return 2;
4045 }
4046 if let Some(_) = self.component_url {
4047 return 1;
4048 }
4049 0
4050 }
4051 }
4052
4053 impl fidl::encoding::ValueTypeMarker for IcdInfo {
4054 type Borrowed<'a> = &'a Self;
4055 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4056 value
4057 }
4058 }
4059
4060 unsafe impl fidl::encoding::TypeMarker for IcdInfo {
4061 type Owned = Self;
4062
4063 #[inline(always)]
4064 fn inline_align(_context: fidl::encoding::Context) -> usize {
4065 8
4066 }
4067
4068 #[inline(always)]
4069 fn inline_size(_context: fidl::encoding::Context) -> usize {
4070 16
4071 }
4072 }
4073
4074 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IcdInfo, D> for &IcdInfo {
4075 unsafe fn encode(
4076 self,
4077 encoder: &mut fidl::encoding::Encoder<'_, D>,
4078 offset: usize,
4079 mut depth: fidl::encoding::Depth,
4080 ) -> fidl::Result<()> {
4081 encoder.debug_check_bounds::<IcdInfo>(offset);
4082 let max_ordinal: u64 = self.max_ordinal_present();
4084 encoder.write_num(max_ordinal, offset);
4085 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4086 if max_ordinal == 0 {
4088 return Ok(());
4089 }
4090 depth.increment()?;
4091 let envelope_size = 8;
4092 let bytes_len = max_ordinal as usize * envelope_size;
4093 #[allow(unused_variables)]
4094 let offset = encoder.out_of_line_offset(bytes_len);
4095 let mut _prev_end_offset: usize = 0;
4096 if 1 > max_ordinal {
4097 return Ok(());
4098 }
4099
4100 let cur_offset: usize = (1 - 1) * envelope_size;
4103
4104 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4106
4107 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4112 self.component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4113 encoder, offset + cur_offset, depth
4114 )?;
4115
4116 _prev_end_offset = cur_offset + envelope_size;
4117 if 2 > max_ordinal {
4118 return Ok(());
4119 }
4120
4121 let cur_offset: usize = (2 - 1) * envelope_size;
4124
4125 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4127
4128 fidl::encoding::encode_in_envelope_optional::<IcdFlags, D>(
4133 self.flags.as_ref().map(<IcdFlags as fidl::encoding::ValueTypeMarker>::borrow),
4134 encoder,
4135 offset + cur_offset,
4136 depth,
4137 )?;
4138
4139 _prev_end_offset = cur_offset + envelope_size;
4140
4141 Ok(())
4142 }
4143 }
4144
4145 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IcdInfo {
4146 #[inline(always)]
4147 fn new_empty() -> Self {
4148 Self::default()
4149 }
4150
4151 unsafe fn decode(
4152 &mut self,
4153 decoder: &mut fidl::encoding::Decoder<'_, D>,
4154 offset: usize,
4155 mut depth: fidl::encoding::Depth,
4156 ) -> fidl::Result<()> {
4157 decoder.debug_check_bounds::<Self>(offset);
4158 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4159 None => return Err(fidl::Error::NotNullable),
4160 Some(len) => len,
4161 };
4162 if len == 0 {
4164 return Ok(());
4165 };
4166 depth.increment()?;
4167 let envelope_size = 8;
4168 let bytes_len = len * envelope_size;
4169 let offset = decoder.out_of_line_offset(bytes_len)?;
4170 let mut _next_ordinal_to_read = 0;
4172 let mut next_offset = offset;
4173 let end_offset = offset + bytes_len;
4174 _next_ordinal_to_read += 1;
4175 if next_offset >= end_offset {
4176 return Ok(());
4177 }
4178
4179 while _next_ordinal_to_read < 1 {
4181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4182 _next_ordinal_to_read += 1;
4183 next_offset += envelope_size;
4184 }
4185
4186 let next_out_of_line = decoder.next_out_of_line();
4187 let handles_before = decoder.remaining_handles();
4188 if let Some((inlined, num_bytes, num_handles)) =
4189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4190 {
4191 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4192 if inlined != (member_inline_size <= 4) {
4193 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4194 }
4195 let inner_offset;
4196 let mut inner_depth = depth.clone();
4197 if inlined {
4198 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4199 inner_offset = next_offset;
4200 } else {
4201 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4202 inner_depth.increment()?;
4203 }
4204 let val_ref = self.component_url.get_or_insert_with(|| {
4205 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4206 });
4207 fidl::decode!(
4208 fidl::encoding::BoundedString<4096>,
4209 D,
4210 val_ref,
4211 decoder,
4212 inner_offset,
4213 inner_depth
4214 )?;
4215 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4216 {
4217 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4218 }
4219 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4220 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4221 }
4222 }
4223
4224 next_offset += envelope_size;
4225 _next_ordinal_to_read += 1;
4226 if next_offset >= end_offset {
4227 return Ok(());
4228 }
4229
4230 while _next_ordinal_to_read < 2 {
4232 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4233 _next_ordinal_to_read += 1;
4234 next_offset += envelope_size;
4235 }
4236
4237 let next_out_of_line = decoder.next_out_of_line();
4238 let handles_before = decoder.remaining_handles();
4239 if let Some((inlined, num_bytes, num_handles)) =
4240 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4241 {
4242 let member_inline_size =
4243 <IcdFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4244 if inlined != (member_inline_size <= 4) {
4245 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4246 }
4247 let inner_offset;
4248 let mut inner_depth = depth.clone();
4249 if inlined {
4250 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4251 inner_offset = next_offset;
4252 } else {
4253 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4254 inner_depth.increment()?;
4255 }
4256 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(IcdFlags, D));
4257 fidl::decode!(IcdFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
4258 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4259 {
4260 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4261 }
4262 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4263 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4264 }
4265 }
4266
4267 next_offset += envelope_size;
4268
4269 while next_offset < end_offset {
4271 _next_ordinal_to_read += 1;
4272 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4273 next_offset += envelope_size;
4274 }
4275
4276 Ok(())
4277 }
4278 }
4279
4280 impl InlineCommand {
4281 #[inline(always)]
4282 fn max_ordinal_present(&self) -> u64 {
4283 if let Some(_) = self.semaphores {
4284 return 2;
4285 }
4286 if let Some(_) = self.data {
4287 return 1;
4288 }
4289 0
4290 }
4291 }
4292
4293 impl fidl::encoding::ValueTypeMarker for InlineCommand {
4294 type Borrowed<'a> = &'a Self;
4295 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4296 value
4297 }
4298 }
4299
4300 unsafe impl fidl::encoding::TypeMarker for InlineCommand {
4301 type Owned = Self;
4302
4303 #[inline(always)]
4304 fn inline_align(_context: fidl::encoding::Context) -> usize {
4305 8
4306 }
4307
4308 #[inline(always)]
4309 fn inline_size(_context: fidl::encoding::Context) -> usize {
4310 16
4311 }
4312 }
4313
4314 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InlineCommand, D>
4315 for &InlineCommand
4316 {
4317 unsafe fn encode(
4318 self,
4319 encoder: &mut fidl::encoding::Encoder<'_, D>,
4320 offset: usize,
4321 mut depth: fidl::encoding::Depth,
4322 ) -> fidl::Result<()> {
4323 encoder.debug_check_bounds::<InlineCommand>(offset);
4324 let max_ordinal: u64 = self.max_ordinal_present();
4326 encoder.write_num(max_ordinal, offset);
4327 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4328 if max_ordinal == 0 {
4330 return Ok(());
4331 }
4332 depth.increment()?;
4333 let envelope_size = 8;
4334 let bytes_len = max_ordinal as usize * envelope_size;
4335 #[allow(unused_variables)]
4336 let offset = encoder.out_of_line_offset(bytes_len);
4337 let mut _prev_end_offset: usize = 0;
4338 if 1 > max_ordinal {
4339 return Ok(());
4340 }
4341
4342 let cur_offset: usize = (1 - 1) * envelope_size;
4345
4346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4348
4349 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4354 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4355 encoder, offset + cur_offset, depth
4356 )?;
4357
4358 _prev_end_offset = cur_offset + envelope_size;
4359 if 2 > max_ordinal {
4360 return Ok(());
4361 }
4362
4363 let cur_offset: usize = (2 - 1) * envelope_size;
4366
4367 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4369
4370 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
4375 self.semaphores.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
4376 encoder, offset + cur_offset, depth
4377 )?;
4378
4379 _prev_end_offset = cur_offset + envelope_size;
4380
4381 Ok(())
4382 }
4383 }
4384
4385 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InlineCommand {
4386 #[inline(always)]
4387 fn new_empty() -> Self {
4388 Self::default()
4389 }
4390
4391 unsafe fn decode(
4392 &mut self,
4393 decoder: &mut fidl::encoding::Decoder<'_, D>,
4394 offset: usize,
4395 mut depth: fidl::encoding::Depth,
4396 ) -> fidl::Result<()> {
4397 decoder.debug_check_bounds::<Self>(offset);
4398 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4399 None => return Err(fidl::Error::NotNullable),
4400 Some(len) => len,
4401 };
4402 if len == 0 {
4404 return Ok(());
4405 };
4406 depth.increment()?;
4407 let envelope_size = 8;
4408 let bytes_len = len * envelope_size;
4409 let offset = decoder.out_of_line_offset(bytes_len)?;
4410 let mut _next_ordinal_to_read = 0;
4412 let mut next_offset = offset;
4413 let end_offset = offset + bytes_len;
4414 _next_ordinal_to_read += 1;
4415 if next_offset >= end_offset {
4416 return Ok(());
4417 }
4418
4419 while _next_ordinal_to_read < 1 {
4421 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4422 _next_ordinal_to_read += 1;
4423 next_offset += envelope_size;
4424 }
4425
4426 let next_out_of_line = decoder.next_out_of_line();
4427 let handles_before = decoder.remaining_handles();
4428 if let Some((inlined, num_bytes, num_handles)) =
4429 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4430 {
4431 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4432 if inlined != (member_inline_size <= 4) {
4433 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4434 }
4435 let inner_offset;
4436 let mut inner_depth = depth.clone();
4437 if inlined {
4438 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4439 inner_offset = next_offset;
4440 } else {
4441 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4442 inner_depth.increment()?;
4443 }
4444 let val_ref = self.data.get_or_insert_with(|| {
4445 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4446 });
4447 fidl::decode!(
4448 fidl::encoding::UnboundedVector<u8>,
4449 D,
4450 val_ref,
4451 decoder,
4452 inner_offset,
4453 inner_depth
4454 )?;
4455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4456 {
4457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4458 }
4459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4461 }
4462 }
4463
4464 next_offset += envelope_size;
4465 _next_ordinal_to_read += 1;
4466 if next_offset >= end_offset {
4467 return Ok(());
4468 }
4469
4470 while _next_ordinal_to_read < 2 {
4472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4473 _next_ordinal_to_read += 1;
4474 next_offset += envelope_size;
4475 }
4476
4477 let next_out_of_line = decoder.next_out_of_line();
4478 let handles_before = decoder.remaining_handles();
4479 if let Some((inlined, num_bytes, num_handles)) =
4480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4481 {
4482 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4483 if inlined != (member_inline_size <= 4) {
4484 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4485 }
4486 let inner_offset;
4487 let mut inner_depth = depth.clone();
4488 if inlined {
4489 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4490 inner_offset = next_offset;
4491 } else {
4492 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4493 inner_depth.increment()?;
4494 }
4495 let val_ref = self.semaphores.get_or_insert_with(|| {
4496 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
4497 });
4498 fidl::decode!(
4499 fidl::encoding::UnboundedVector<u64>,
4500 D,
4501 val_ref,
4502 decoder,
4503 inner_offset,
4504 inner_depth
4505 )?;
4506 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4507 {
4508 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4509 }
4510 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4511 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4512 }
4513 }
4514
4515 next_offset += envelope_size;
4516
4517 while next_offset < end_offset {
4519 _next_ordinal_to_read += 1;
4520 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4521 next_offset += envelope_size;
4522 }
4523
4524 Ok(())
4525 }
4526 }
4527
4528 impl PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest {
4529 #[inline(always)]
4530 fn max_ordinal_present(&self) -> u64 {
4531 if let Some(_) = self.flags {
4532 return 5;
4533 }
4534 if let Some(_) = self.timestamp {
4535 return 4;
4536 }
4537 if let Some(_) = self.buffer_offset {
4538 return 3;
4539 }
4540 if let Some(_) = self.buffer_id {
4541 return 2;
4542 }
4543 if let Some(_) = self.trigger_id {
4544 return 1;
4545 }
4546 0
4547 }
4548 }
4549
4550 impl fidl::encoding::ValueTypeMarker
4551 for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4552 {
4553 type Borrowed<'a> = &'a Self;
4554 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4555 value
4556 }
4557 }
4558
4559 unsafe impl fidl::encoding::TypeMarker
4560 for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4561 {
4562 type Owned = Self;
4563
4564 #[inline(always)]
4565 fn inline_align(_context: fidl::encoding::Context) -> usize {
4566 8
4567 }
4568
4569 #[inline(always)]
4570 fn inline_size(_context: fidl::encoding::Context) -> usize {
4571 16
4572 }
4573 }
4574
4575 unsafe impl<D: fidl::encoding::ResourceDialect>
4576 fidl::encoding::Encode<PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest, D>
4577 for &PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4578 {
4579 unsafe fn encode(
4580 self,
4581 encoder: &mut fidl::encoding::Encoder<'_, D>,
4582 offset: usize,
4583 mut depth: fidl::encoding::Depth,
4584 ) -> fidl::Result<()> {
4585 encoder.debug_check_bounds::<PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest>(offset);
4586 let max_ordinal: u64 = self.max_ordinal_present();
4588 encoder.write_num(max_ordinal, offset);
4589 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4590 if max_ordinal == 0 {
4592 return Ok(());
4593 }
4594 depth.increment()?;
4595 let envelope_size = 8;
4596 let bytes_len = max_ordinal as usize * envelope_size;
4597 #[allow(unused_variables)]
4598 let offset = encoder.out_of_line_offset(bytes_len);
4599 let mut _prev_end_offset: usize = 0;
4600 if 1 > max_ordinal {
4601 return Ok(());
4602 }
4603
4604 let cur_offset: usize = (1 - 1) * envelope_size;
4607
4608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4610
4611 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4616 self.trigger_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4617 encoder,
4618 offset + cur_offset,
4619 depth,
4620 )?;
4621
4622 _prev_end_offset = cur_offset + envelope_size;
4623 if 2 > max_ordinal {
4624 return Ok(());
4625 }
4626
4627 let cur_offset: usize = (2 - 1) * envelope_size;
4630
4631 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4633
4634 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4639 self.buffer_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4640 encoder,
4641 offset + cur_offset,
4642 depth,
4643 )?;
4644
4645 _prev_end_offset = cur_offset + envelope_size;
4646 if 3 > max_ordinal {
4647 return Ok(());
4648 }
4649
4650 let cur_offset: usize = (3 - 1) * envelope_size;
4653
4654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4656
4657 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4662 self.buffer_offset.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4663 encoder,
4664 offset + cur_offset,
4665 depth,
4666 )?;
4667
4668 _prev_end_offset = cur_offset + envelope_size;
4669 if 4 > max_ordinal {
4670 return Ok(());
4671 }
4672
4673 let cur_offset: usize = (4 - 1) * envelope_size;
4676
4677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4679
4680 fidl::encoding::encode_in_envelope_optional::<i64, D>(
4685 self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4686 encoder,
4687 offset + cur_offset,
4688 depth,
4689 )?;
4690
4691 _prev_end_offset = cur_offset + envelope_size;
4692 if 5 > max_ordinal {
4693 return Ok(());
4694 }
4695
4696 let cur_offset: usize = (5 - 1) * envelope_size;
4699
4700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4702
4703 fidl::encoding::encode_in_envelope_optional::<ResultFlags, D>(
4708 self.flags.as_ref().map(<ResultFlags as fidl::encoding::ValueTypeMarker>::borrow),
4709 encoder,
4710 offset + cur_offset,
4711 depth,
4712 )?;
4713
4714 _prev_end_offset = cur_offset + envelope_size;
4715
4716 Ok(())
4717 }
4718 }
4719
4720 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4721 for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4722 {
4723 #[inline(always)]
4724 fn new_empty() -> Self {
4725 Self::default()
4726 }
4727
4728 unsafe fn decode(
4729 &mut self,
4730 decoder: &mut fidl::encoding::Decoder<'_, D>,
4731 offset: usize,
4732 mut depth: fidl::encoding::Depth,
4733 ) -> fidl::Result<()> {
4734 decoder.debug_check_bounds::<Self>(offset);
4735 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4736 None => return Err(fidl::Error::NotNullable),
4737 Some(len) => len,
4738 };
4739 if len == 0 {
4741 return Ok(());
4742 };
4743 depth.increment()?;
4744 let envelope_size = 8;
4745 let bytes_len = len * envelope_size;
4746 let offset = decoder.out_of_line_offset(bytes_len)?;
4747 let mut _next_ordinal_to_read = 0;
4749 let mut next_offset = offset;
4750 let end_offset = offset + bytes_len;
4751 _next_ordinal_to_read += 1;
4752 if next_offset >= end_offset {
4753 return Ok(());
4754 }
4755
4756 while _next_ordinal_to_read < 1 {
4758 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4759 _next_ordinal_to_read += 1;
4760 next_offset += envelope_size;
4761 }
4762
4763 let next_out_of_line = decoder.next_out_of_line();
4764 let handles_before = decoder.remaining_handles();
4765 if let Some((inlined, num_bytes, num_handles)) =
4766 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4767 {
4768 let member_inline_size =
4769 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4770 if inlined != (member_inline_size <= 4) {
4771 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4772 }
4773 let inner_offset;
4774 let mut inner_depth = depth.clone();
4775 if inlined {
4776 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4777 inner_offset = next_offset;
4778 } else {
4779 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4780 inner_depth.increment()?;
4781 }
4782 let val_ref = self.trigger_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
4783 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4784 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4785 {
4786 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4787 }
4788 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4789 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4790 }
4791 }
4792
4793 next_offset += envelope_size;
4794 _next_ordinal_to_read += 1;
4795 if next_offset >= end_offset {
4796 return Ok(());
4797 }
4798
4799 while _next_ordinal_to_read < 2 {
4801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4802 _next_ordinal_to_read += 1;
4803 next_offset += envelope_size;
4804 }
4805
4806 let next_out_of_line = decoder.next_out_of_line();
4807 let handles_before = decoder.remaining_handles();
4808 if let Some((inlined, num_bytes, num_handles)) =
4809 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4810 {
4811 let member_inline_size =
4812 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4813 if inlined != (member_inline_size <= 4) {
4814 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4815 }
4816 let inner_offset;
4817 let mut inner_depth = depth.clone();
4818 if inlined {
4819 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4820 inner_offset = next_offset;
4821 } else {
4822 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4823 inner_depth.increment()?;
4824 }
4825 let val_ref = self.buffer_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4826 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4828 {
4829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4830 }
4831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4833 }
4834 }
4835
4836 next_offset += envelope_size;
4837 _next_ordinal_to_read += 1;
4838 if next_offset >= end_offset {
4839 return Ok(());
4840 }
4841
4842 while _next_ordinal_to_read < 3 {
4844 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4845 _next_ordinal_to_read += 1;
4846 next_offset += envelope_size;
4847 }
4848
4849 let next_out_of_line = decoder.next_out_of_line();
4850 let handles_before = decoder.remaining_handles();
4851 if let Some((inlined, num_bytes, num_handles)) =
4852 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4853 {
4854 let member_inline_size =
4855 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4856 if inlined != (member_inline_size <= 4) {
4857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4858 }
4859 let inner_offset;
4860 let mut inner_depth = depth.clone();
4861 if inlined {
4862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4863 inner_offset = next_offset;
4864 } else {
4865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4866 inner_depth.increment()?;
4867 }
4868 let val_ref = self.buffer_offset.get_or_insert_with(|| fidl::new_empty!(u32, D));
4869 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4871 {
4872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4873 }
4874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4876 }
4877 }
4878
4879 next_offset += envelope_size;
4880 _next_ordinal_to_read += 1;
4881 if next_offset >= end_offset {
4882 return Ok(());
4883 }
4884
4885 while _next_ordinal_to_read < 4 {
4887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4888 _next_ordinal_to_read += 1;
4889 next_offset += envelope_size;
4890 }
4891
4892 let next_out_of_line = decoder.next_out_of_line();
4893 let handles_before = decoder.remaining_handles();
4894 if let Some((inlined, num_bytes, num_handles)) =
4895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4896 {
4897 let member_inline_size =
4898 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4899 if inlined != (member_inline_size <= 4) {
4900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4901 }
4902 let inner_offset;
4903 let mut inner_depth = depth.clone();
4904 if inlined {
4905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4906 inner_offset = next_offset;
4907 } else {
4908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4909 inner_depth.increment()?;
4910 }
4911 let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
4912 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
4913 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4914 {
4915 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4916 }
4917 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4918 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4919 }
4920 }
4921
4922 next_offset += envelope_size;
4923 _next_ordinal_to_read += 1;
4924 if next_offset >= end_offset {
4925 return Ok(());
4926 }
4927
4928 while _next_ordinal_to_read < 5 {
4930 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4931 _next_ordinal_to_read += 1;
4932 next_offset += envelope_size;
4933 }
4934
4935 let next_out_of_line = decoder.next_out_of_line();
4936 let handles_before = decoder.remaining_handles();
4937 if let Some((inlined, num_bytes, num_handles)) =
4938 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4939 {
4940 let member_inline_size =
4941 <ResultFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4942 if inlined != (member_inline_size <= 4) {
4943 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4944 }
4945 let inner_offset;
4946 let mut inner_depth = depth.clone();
4947 if inlined {
4948 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4949 inner_offset = next_offset;
4950 } else {
4951 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4952 inner_depth.increment()?;
4953 }
4954 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(ResultFlags, D));
4955 fidl::decode!(ResultFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
4956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4957 {
4958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4959 }
4960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4962 }
4963 }
4964
4965 next_offset += envelope_size;
4966
4967 while next_offset < end_offset {
4969 _next_ordinal_to_read += 1;
4970 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4971 next_offset += envelope_size;
4972 }
4973
4974 Ok(())
4975 }
4976 }
4977
4978 impl PowerElementProviderGetClockSpeedLevelRequest {
4979 #[inline(always)]
4980 fn max_ordinal_present(&self) -> u64 {
4981 if let Some(_) = self.allow_max {
4982 return 2;
4983 }
4984 if let Some(_) = self.hz {
4985 return 1;
4986 }
4987 0
4988 }
4989 }
4990
4991 impl fidl::encoding::ValueTypeMarker for PowerElementProviderGetClockSpeedLevelRequest {
4992 type Borrowed<'a> = &'a Self;
4993 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4994 value
4995 }
4996 }
4997
4998 unsafe impl fidl::encoding::TypeMarker for PowerElementProviderGetClockSpeedLevelRequest {
4999 type Owned = Self;
5000
5001 #[inline(always)]
5002 fn inline_align(_context: fidl::encoding::Context) -> usize {
5003 8
5004 }
5005
5006 #[inline(always)]
5007 fn inline_size(_context: fidl::encoding::Context) -> usize {
5008 16
5009 }
5010 }
5011
5012 unsafe impl<D: fidl::encoding::ResourceDialect>
5013 fidl::encoding::Encode<PowerElementProviderGetClockSpeedLevelRequest, D>
5014 for &PowerElementProviderGetClockSpeedLevelRequest
5015 {
5016 unsafe fn encode(
5017 self,
5018 encoder: &mut fidl::encoding::Encoder<'_, D>,
5019 offset: usize,
5020 mut depth: fidl::encoding::Depth,
5021 ) -> fidl::Result<()> {
5022 encoder.debug_check_bounds::<PowerElementProviderGetClockSpeedLevelRequest>(offset);
5023 let max_ordinal: u64 = self.max_ordinal_present();
5025 encoder.write_num(max_ordinal, offset);
5026 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5027 if max_ordinal == 0 {
5029 return Ok(());
5030 }
5031 depth.increment()?;
5032 let envelope_size = 8;
5033 let bytes_len = max_ordinal as usize * envelope_size;
5034 #[allow(unused_variables)]
5035 let offset = encoder.out_of_line_offset(bytes_len);
5036 let mut _prev_end_offset: usize = 0;
5037 if 1 > max_ordinal {
5038 return Ok(());
5039 }
5040
5041 let cur_offset: usize = (1 - 1) * envelope_size;
5044
5045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5047
5048 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5053 self.hz.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5054 encoder,
5055 offset + cur_offset,
5056 depth,
5057 )?;
5058
5059 _prev_end_offset = cur_offset + envelope_size;
5060 if 2 > max_ordinal {
5061 return Ok(());
5062 }
5063
5064 let cur_offset: usize = (2 - 1) * envelope_size;
5067
5068 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5070
5071 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5076 self.allow_max.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5077 encoder,
5078 offset + cur_offset,
5079 depth,
5080 )?;
5081
5082 _prev_end_offset = cur_offset + envelope_size;
5083
5084 Ok(())
5085 }
5086 }
5087
5088 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5089 for PowerElementProviderGetClockSpeedLevelRequest
5090 {
5091 #[inline(always)]
5092 fn new_empty() -> Self {
5093 Self::default()
5094 }
5095
5096 unsafe fn decode(
5097 &mut self,
5098 decoder: &mut fidl::encoding::Decoder<'_, D>,
5099 offset: usize,
5100 mut depth: fidl::encoding::Depth,
5101 ) -> fidl::Result<()> {
5102 decoder.debug_check_bounds::<Self>(offset);
5103 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5104 None => return Err(fidl::Error::NotNullable),
5105 Some(len) => len,
5106 };
5107 if len == 0 {
5109 return Ok(());
5110 };
5111 depth.increment()?;
5112 let envelope_size = 8;
5113 let bytes_len = len * envelope_size;
5114 let offset = decoder.out_of_line_offset(bytes_len)?;
5115 let mut _next_ordinal_to_read = 0;
5117 let mut next_offset = offset;
5118 let end_offset = offset + bytes_len;
5119 _next_ordinal_to_read += 1;
5120 if next_offset >= end_offset {
5121 return Ok(());
5122 }
5123
5124 while _next_ordinal_to_read < 1 {
5126 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5127 _next_ordinal_to_read += 1;
5128 next_offset += envelope_size;
5129 }
5130
5131 let next_out_of_line = decoder.next_out_of_line();
5132 let handles_before = decoder.remaining_handles();
5133 if let Some((inlined, num_bytes, num_handles)) =
5134 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5135 {
5136 let member_inline_size =
5137 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5138 if inlined != (member_inline_size <= 4) {
5139 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5140 }
5141 let inner_offset;
5142 let mut inner_depth = depth.clone();
5143 if inlined {
5144 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5145 inner_offset = next_offset;
5146 } else {
5147 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5148 inner_depth.increment()?;
5149 }
5150 let val_ref = self.hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5151 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5152 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5153 {
5154 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5155 }
5156 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5157 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5158 }
5159 }
5160
5161 next_offset += envelope_size;
5162 _next_ordinal_to_read += 1;
5163 if next_offset >= end_offset {
5164 return Ok(());
5165 }
5166
5167 while _next_ordinal_to_read < 2 {
5169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5170 _next_ordinal_to_read += 1;
5171 next_offset += envelope_size;
5172 }
5173
5174 let next_out_of_line = decoder.next_out_of_line();
5175 let handles_before = decoder.remaining_handles();
5176 if let Some((inlined, num_bytes, num_handles)) =
5177 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5178 {
5179 let member_inline_size =
5180 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5181 if inlined != (member_inline_size <= 4) {
5182 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5183 }
5184 let inner_offset;
5185 let mut inner_depth = depth.clone();
5186 if inlined {
5187 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5188 inner_offset = next_offset;
5189 } else {
5190 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5191 inner_depth.increment()?;
5192 }
5193 let val_ref = self.allow_max.get_or_insert_with(|| fidl::new_empty!(bool, D));
5194 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5195 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5196 {
5197 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5198 }
5199 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5200 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5201 }
5202 }
5203
5204 next_offset += envelope_size;
5205
5206 while next_offset < end_offset {
5208 _next_ordinal_to_read += 1;
5209 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5210 next_offset += envelope_size;
5211 }
5212
5213 Ok(())
5214 }
5215 }
5216
5217 impl PowerElementProviderSetClockLimitRequest {
5218 #[inline(always)]
5219 fn max_ordinal_present(&self) -> u64 {
5220 if let Some(_) = self.hz {
5221 return 1;
5222 }
5223 0
5224 }
5225 }
5226
5227 impl fidl::encoding::ValueTypeMarker for PowerElementProviderSetClockLimitRequest {
5228 type Borrowed<'a> = &'a Self;
5229 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5230 value
5231 }
5232 }
5233
5234 unsafe impl fidl::encoding::TypeMarker for PowerElementProviderSetClockLimitRequest {
5235 type Owned = Self;
5236
5237 #[inline(always)]
5238 fn inline_align(_context: fidl::encoding::Context) -> usize {
5239 8
5240 }
5241
5242 #[inline(always)]
5243 fn inline_size(_context: fidl::encoding::Context) -> usize {
5244 16
5245 }
5246 }
5247
5248 unsafe impl<D: fidl::encoding::ResourceDialect>
5249 fidl::encoding::Encode<PowerElementProviderSetClockLimitRequest, D>
5250 for &PowerElementProviderSetClockLimitRequest
5251 {
5252 unsafe fn encode(
5253 self,
5254 encoder: &mut fidl::encoding::Encoder<'_, D>,
5255 offset: usize,
5256 mut depth: fidl::encoding::Depth,
5257 ) -> fidl::Result<()> {
5258 encoder.debug_check_bounds::<PowerElementProviderSetClockLimitRequest>(offset);
5259 let max_ordinal: u64 = self.max_ordinal_present();
5261 encoder.write_num(max_ordinal, offset);
5262 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5263 if max_ordinal == 0 {
5265 return Ok(());
5266 }
5267 depth.increment()?;
5268 let envelope_size = 8;
5269 let bytes_len = max_ordinal as usize * envelope_size;
5270 #[allow(unused_variables)]
5271 let offset = encoder.out_of_line_offset(bytes_len);
5272 let mut _prev_end_offset: usize = 0;
5273 if 1 > max_ordinal {
5274 return Ok(());
5275 }
5276
5277 let cur_offset: usize = (1 - 1) * envelope_size;
5280
5281 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5283
5284 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5289 self.hz.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5290 encoder,
5291 offset + cur_offset,
5292 depth,
5293 )?;
5294
5295 _prev_end_offset = cur_offset + envelope_size;
5296
5297 Ok(())
5298 }
5299 }
5300
5301 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5302 for PowerElementProviderSetClockLimitRequest
5303 {
5304 #[inline(always)]
5305 fn new_empty() -> Self {
5306 Self::default()
5307 }
5308
5309 unsafe fn decode(
5310 &mut self,
5311 decoder: &mut fidl::encoding::Decoder<'_, D>,
5312 offset: usize,
5313 mut depth: fidl::encoding::Depth,
5314 ) -> fidl::Result<()> {
5315 decoder.debug_check_bounds::<Self>(offset);
5316 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5317 None => return Err(fidl::Error::NotNullable),
5318 Some(len) => len,
5319 };
5320 if len == 0 {
5322 return Ok(());
5323 };
5324 depth.increment()?;
5325 let envelope_size = 8;
5326 let bytes_len = len * envelope_size;
5327 let offset = decoder.out_of_line_offset(bytes_len)?;
5328 let mut _next_ordinal_to_read = 0;
5330 let mut next_offset = offset;
5331 let end_offset = offset + bytes_len;
5332 _next_ordinal_to_read += 1;
5333 if next_offset >= end_offset {
5334 return Ok(());
5335 }
5336
5337 while _next_ordinal_to_read < 1 {
5339 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5340 _next_ordinal_to_read += 1;
5341 next_offset += envelope_size;
5342 }
5343
5344 let next_out_of_line = decoder.next_out_of_line();
5345 let handles_before = decoder.remaining_handles();
5346 if let Some((inlined, num_bytes, num_handles)) =
5347 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5348 {
5349 let member_inline_size =
5350 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5351 if inlined != (member_inline_size <= 4) {
5352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5353 }
5354 let inner_offset;
5355 let mut inner_depth = depth.clone();
5356 if inlined {
5357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5358 inner_offset = next_offset;
5359 } else {
5360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5361 inner_depth.increment()?;
5362 }
5363 let val_ref = self.hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5364 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5365 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5366 {
5367 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5368 }
5369 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5370 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5371 }
5372 }
5373
5374 next_offset += envelope_size;
5375
5376 while next_offset < end_offset {
5378 _next_ordinal_to_read += 1;
5379 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5380 next_offset += envelope_size;
5381 }
5382
5383 Ok(())
5384 }
5385 }
5386
5387 impl PrimaryMapBufferRequest {
5388 #[inline(always)]
5389 fn max_ordinal_present(&self) -> u64 {
5390 if let Some(_) = self.flags {
5391 return 3;
5392 }
5393 if let Some(_) = self.range {
5394 return 2;
5395 }
5396 if let Some(_) = self.hw_va {
5397 return 1;
5398 }
5399 0
5400 }
5401 }
5402
5403 impl fidl::encoding::ValueTypeMarker for PrimaryMapBufferRequest {
5404 type Borrowed<'a> = &'a Self;
5405 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5406 value
5407 }
5408 }
5409
5410 unsafe impl fidl::encoding::TypeMarker for PrimaryMapBufferRequest {
5411 type Owned = Self;
5412
5413 #[inline(always)]
5414 fn inline_align(_context: fidl::encoding::Context) -> usize {
5415 8
5416 }
5417
5418 #[inline(always)]
5419 fn inline_size(_context: fidl::encoding::Context) -> usize {
5420 16
5421 }
5422 }
5423
5424 unsafe impl<D: fidl::encoding::ResourceDialect>
5425 fidl::encoding::Encode<PrimaryMapBufferRequest, D> for &PrimaryMapBufferRequest
5426 {
5427 unsafe fn encode(
5428 self,
5429 encoder: &mut fidl::encoding::Encoder<'_, D>,
5430 offset: usize,
5431 mut depth: fidl::encoding::Depth,
5432 ) -> fidl::Result<()> {
5433 encoder.debug_check_bounds::<PrimaryMapBufferRequest>(offset);
5434 let max_ordinal: u64 = self.max_ordinal_present();
5436 encoder.write_num(max_ordinal, offset);
5437 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5438 if max_ordinal == 0 {
5440 return Ok(());
5441 }
5442 depth.increment()?;
5443 let envelope_size = 8;
5444 let bytes_len = max_ordinal as usize * envelope_size;
5445 #[allow(unused_variables)]
5446 let offset = encoder.out_of_line_offset(bytes_len);
5447 let mut _prev_end_offset: usize = 0;
5448 if 1 > max_ordinal {
5449 return Ok(());
5450 }
5451
5452 let cur_offset: usize = (1 - 1) * envelope_size;
5455
5456 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5458
5459 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5464 self.hw_va.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5465 encoder,
5466 offset + cur_offset,
5467 depth,
5468 )?;
5469
5470 _prev_end_offset = cur_offset + envelope_size;
5471 if 2 > max_ordinal {
5472 return Ok(());
5473 }
5474
5475 let cur_offset: usize = (2 - 1) * envelope_size;
5478
5479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5481
5482 fidl::encoding::encode_in_envelope_optional::<BufferRange, D>(
5487 self.range.as_ref().map(<BufferRange as fidl::encoding::ValueTypeMarker>::borrow),
5488 encoder,
5489 offset + cur_offset,
5490 depth,
5491 )?;
5492
5493 _prev_end_offset = cur_offset + envelope_size;
5494 if 3 > max_ordinal {
5495 return Ok(());
5496 }
5497
5498 let cur_offset: usize = (3 - 1) * envelope_size;
5501
5502 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5504
5505 fidl::encoding::encode_in_envelope_optional::<MapFlags, D>(
5510 self.flags.as_ref().map(<MapFlags as fidl::encoding::ValueTypeMarker>::borrow),
5511 encoder,
5512 offset + cur_offset,
5513 depth,
5514 )?;
5515
5516 _prev_end_offset = cur_offset + envelope_size;
5517
5518 Ok(())
5519 }
5520 }
5521
5522 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5523 for PrimaryMapBufferRequest
5524 {
5525 #[inline(always)]
5526 fn new_empty() -> Self {
5527 Self::default()
5528 }
5529
5530 unsafe fn decode(
5531 &mut self,
5532 decoder: &mut fidl::encoding::Decoder<'_, D>,
5533 offset: usize,
5534 mut depth: fidl::encoding::Depth,
5535 ) -> fidl::Result<()> {
5536 decoder.debug_check_bounds::<Self>(offset);
5537 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5538 None => return Err(fidl::Error::NotNullable),
5539 Some(len) => len,
5540 };
5541 if len == 0 {
5543 return Ok(());
5544 };
5545 depth.increment()?;
5546 let envelope_size = 8;
5547 let bytes_len = len * envelope_size;
5548 let offset = decoder.out_of_line_offset(bytes_len)?;
5549 let mut _next_ordinal_to_read = 0;
5551 let mut next_offset = offset;
5552 let end_offset = offset + bytes_len;
5553 _next_ordinal_to_read += 1;
5554 if next_offset >= end_offset {
5555 return Ok(());
5556 }
5557
5558 while _next_ordinal_to_read < 1 {
5560 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5561 _next_ordinal_to_read += 1;
5562 next_offset += envelope_size;
5563 }
5564
5565 let next_out_of_line = decoder.next_out_of_line();
5566 let handles_before = decoder.remaining_handles();
5567 if let Some((inlined, num_bytes, num_handles)) =
5568 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5569 {
5570 let member_inline_size =
5571 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5572 if inlined != (member_inline_size <= 4) {
5573 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5574 }
5575 let inner_offset;
5576 let mut inner_depth = depth.clone();
5577 if inlined {
5578 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5579 inner_offset = next_offset;
5580 } else {
5581 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5582 inner_depth.increment()?;
5583 }
5584 let val_ref = self.hw_va.get_or_insert_with(|| fidl::new_empty!(u64, D));
5585 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5586 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5587 {
5588 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5589 }
5590 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5591 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5592 }
5593 }
5594
5595 next_offset += envelope_size;
5596 _next_ordinal_to_read += 1;
5597 if next_offset >= end_offset {
5598 return Ok(());
5599 }
5600
5601 while _next_ordinal_to_read < 2 {
5603 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5604 _next_ordinal_to_read += 1;
5605 next_offset += envelope_size;
5606 }
5607
5608 let next_out_of_line = decoder.next_out_of_line();
5609 let handles_before = decoder.remaining_handles();
5610 if let Some((inlined, num_bytes, num_handles)) =
5611 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5612 {
5613 let member_inline_size =
5614 <BufferRange as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5615 if inlined != (member_inline_size <= 4) {
5616 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5617 }
5618 let inner_offset;
5619 let mut inner_depth = depth.clone();
5620 if inlined {
5621 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5622 inner_offset = next_offset;
5623 } else {
5624 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5625 inner_depth.increment()?;
5626 }
5627 let val_ref = self.range.get_or_insert_with(|| fidl::new_empty!(BufferRange, D));
5628 fidl::decode!(BufferRange, D, val_ref, decoder, inner_offset, inner_depth)?;
5629 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5630 {
5631 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5632 }
5633 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5634 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5635 }
5636 }
5637
5638 next_offset += envelope_size;
5639 _next_ordinal_to_read += 1;
5640 if next_offset >= end_offset {
5641 return Ok(());
5642 }
5643
5644 while _next_ordinal_to_read < 3 {
5646 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5647 _next_ordinal_to_read += 1;
5648 next_offset += envelope_size;
5649 }
5650
5651 let next_out_of_line = decoder.next_out_of_line();
5652 let handles_before = decoder.remaining_handles();
5653 if let Some((inlined, num_bytes, num_handles)) =
5654 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5655 {
5656 let member_inline_size =
5657 <MapFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5658 if inlined != (member_inline_size <= 4) {
5659 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5660 }
5661 let inner_offset;
5662 let mut inner_depth = depth.clone();
5663 if inlined {
5664 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5665 inner_offset = next_offset;
5666 } else {
5667 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5668 inner_depth.increment()?;
5669 }
5670 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(MapFlags, D));
5671 fidl::decode!(MapFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
5672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5673 {
5674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5675 }
5676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5678 }
5679 }
5680
5681 next_offset += envelope_size;
5682
5683 while next_offset < end_offset {
5685 _next_ordinal_to_read += 1;
5686 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5687 next_offset += envelope_size;
5688 }
5689
5690 Ok(())
5691 }
5692 }
5693
5694 impl PrimaryUnmapBufferRequest {
5695 #[inline(always)]
5696 fn max_ordinal_present(&self) -> u64 {
5697 if let Some(_) = self.buffer_id {
5698 return 2;
5699 }
5700 if let Some(_) = self.hw_va {
5701 return 1;
5702 }
5703 0
5704 }
5705 }
5706
5707 impl fidl::encoding::ValueTypeMarker for PrimaryUnmapBufferRequest {
5708 type Borrowed<'a> = &'a Self;
5709 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5710 value
5711 }
5712 }
5713
5714 unsafe impl fidl::encoding::TypeMarker for PrimaryUnmapBufferRequest {
5715 type Owned = Self;
5716
5717 #[inline(always)]
5718 fn inline_align(_context: fidl::encoding::Context) -> usize {
5719 8
5720 }
5721
5722 #[inline(always)]
5723 fn inline_size(_context: fidl::encoding::Context) -> usize {
5724 16
5725 }
5726 }
5727
5728 unsafe impl<D: fidl::encoding::ResourceDialect>
5729 fidl::encoding::Encode<PrimaryUnmapBufferRequest, D> for &PrimaryUnmapBufferRequest
5730 {
5731 unsafe fn encode(
5732 self,
5733 encoder: &mut fidl::encoding::Encoder<'_, D>,
5734 offset: usize,
5735 mut depth: fidl::encoding::Depth,
5736 ) -> fidl::Result<()> {
5737 encoder.debug_check_bounds::<PrimaryUnmapBufferRequest>(offset);
5738 let max_ordinal: u64 = self.max_ordinal_present();
5740 encoder.write_num(max_ordinal, offset);
5741 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5742 if max_ordinal == 0 {
5744 return Ok(());
5745 }
5746 depth.increment()?;
5747 let envelope_size = 8;
5748 let bytes_len = max_ordinal as usize * envelope_size;
5749 #[allow(unused_variables)]
5750 let offset = encoder.out_of_line_offset(bytes_len);
5751 let mut _prev_end_offset: usize = 0;
5752 if 1 > max_ordinal {
5753 return Ok(());
5754 }
5755
5756 let cur_offset: usize = (1 - 1) * envelope_size;
5759
5760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5762
5763 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5768 self.hw_va.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5769 encoder,
5770 offset + cur_offset,
5771 depth,
5772 )?;
5773
5774 _prev_end_offset = cur_offset + envelope_size;
5775 if 2 > max_ordinal {
5776 return Ok(());
5777 }
5778
5779 let cur_offset: usize = (2 - 1) * envelope_size;
5782
5783 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5785
5786 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5791 self.buffer_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5792 encoder,
5793 offset + cur_offset,
5794 depth,
5795 )?;
5796
5797 _prev_end_offset = cur_offset + envelope_size;
5798
5799 Ok(())
5800 }
5801 }
5802
5803 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5804 for PrimaryUnmapBufferRequest
5805 {
5806 #[inline(always)]
5807 fn new_empty() -> Self {
5808 Self::default()
5809 }
5810
5811 unsafe fn decode(
5812 &mut self,
5813 decoder: &mut fidl::encoding::Decoder<'_, D>,
5814 offset: usize,
5815 mut depth: fidl::encoding::Depth,
5816 ) -> fidl::Result<()> {
5817 decoder.debug_check_bounds::<Self>(offset);
5818 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5819 None => return Err(fidl::Error::NotNullable),
5820 Some(len) => len,
5821 };
5822 if len == 0 {
5824 return Ok(());
5825 };
5826 depth.increment()?;
5827 let envelope_size = 8;
5828 let bytes_len = len * envelope_size;
5829 let offset = decoder.out_of_line_offset(bytes_len)?;
5830 let mut _next_ordinal_to_read = 0;
5832 let mut next_offset = offset;
5833 let end_offset = offset + bytes_len;
5834 _next_ordinal_to_read += 1;
5835 if next_offset >= end_offset {
5836 return Ok(());
5837 }
5838
5839 while _next_ordinal_to_read < 1 {
5841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5842 _next_ordinal_to_read += 1;
5843 next_offset += envelope_size;
5844 }
5845
5846 let next_out_of_line = decoder.next_out_of_line();
5847 let handles_before = decoder.remaining_handles();
5848 if let Some((inlined, num_bytes, num_handles)) =
5849 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5850 {
5851 let member_inline_size =
5852 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5853 if inlined != (member_inline_size <= 4) {
5854 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5855 }
5856 let inner_offset;
5857 let mut inner_depth = depth.clone();
5858 if inlined {
5859 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5860 inner_offset = next_offset;
5861 } else {
5862 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5863 inner_depth.increment()?;
5864 }
5865 let val_ref = self.hw_va.get_or_insert_with(|| fidl::new_empty!(u64, D));
5866 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5867 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5868 {
5869 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5870 }
5871 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5872 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5873 }
5874 }
5875
5876 next_offset += envelope_size;
5877 _next_ordinal_to_read += 1;
5878 if next_offset >= end_offset {
5879 return Ok(());
5880 }
5881
5882 while _next_ordinal_to_read < 2 {
5884 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5885 _next_ordinal_to_read += 1;
5886 next_offset += envelope_size;
5887 }
5888
5889 let next_out_of_line = decoder.next_out_of_line();
5890 let handles_before = decoder.remaining_handles();
5891 if let Some((inlined, num_bytes, num_handles)) =
5892 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5893 {
5894 let member_inline_size =
5895 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5896 if inlined != (member_inline_size <= 4) {
5897 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5898 }
5899 let inner_offset;
5900 let mut inner_depth = depth.clone();
5901 if inlined {
5902 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5903 inner_offset = next_offset;
5904 } else {
5905 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5906 inner_depth.increment()?;
5907 }
5908 let val_ref = self.buffer_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
5909 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5910 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5911 {
5912 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5913 }
5914 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5915 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5916 }
5917 }
5918
5919 next_offset += envelope_size;
5920
5921 while next_offset < end_offset {
5923 _next_ordinal_to_read += 1;
5924 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5925 next_offset += envelope_size;
5926 }
5927
5928 Ok(())
5929 }
5930 }
5931}