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)]
550#[repr(C)]
551pub struct DebugUtilsSetPowerStateResponse {
552 pub time_in_ns: u64,
554}
555
556impl fidl::Persistable for DebugUtilsSetPowerStateResponse {}
557
558#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
559pub struct DeviceQueryRequest {
560 pub query_id: QueryId,
561}
562
563impl fidl::Persistable for DeviceQueryRequest {}
564
565#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
566#[repr(C)]
567pub struct DiagnosticDeviceDumpStateRequest {
568 pub dump_type: u32,
569}
570
571impl fidl::Persistable for DiagnosticDeviceDumpStateRequest {}
572
573#[derive(Clone, Debug, PartialEq)]
574pub struct IcdLoaderDeviceGetIcdListResponse {
575 pub icd_list: Vec<IcdInfo>,
576}
577
578impl fidl::Persistable for IcdLoaderDeviceGetIcdListResponse {}
579
580#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
581pub struct PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {
582 pub pool_id: u64,
583 pub offsets: Vec<BufferRange>,
584}
585
586impl fidl::Persistable for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {}
587
588#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
589pub struct PrimaryBufferRangeOp2Request {
590 pub op: BufferOp,
591 pub range: BufferRange,
592}
593
594impl fidl::Persistable for PrimaryBufferRangeOp2Request {}
595
596#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
597pub struct PrimaryClearPerformanceCountersRequest {
598 pub counters: Vec<u64>,
599}
600
601impl fidl::Persistable for PrimaryClearPerformanceCountersRequest {}
602
603#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
604pub struct PrimaryCreateContext2Request {
605 pub context_id: u32,
606 pub priority: Priority,
607}
608
609impl fidl::Persistable for PrimaryCreateContext2Request {}
610
611#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
612#[repr(C)]
613pub struct PrimaryCreateContextRequest {
614 pub context_id: u32,
615}
616
617impl fidl::Persistable for PrimaryCreateContextRequest {}
618
619#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
620#[repr(C)]
621pub struct PrimaryDestroyContextRequest {
622 pub context_id: u32,
623}
624
625impl fidl::Persistable for PrimaryDestroyContextRequest {}
626
627#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
628#[repr(C)]
629pub struct PrimaryDumpPerformanceCountersRequest {
630 pub pool_id: u64,
631 pub trigger_id: u32,
632}
633
634impl fidl::Persistable for PrimaryDumpPerformanceCountersRequest {}
635
636#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
637pub struct PrimaryEnablePerformanceCountersRequest {
638 pub counters: Vec<u64>,
639}
640
641impl fidl::Persistable for PrimaryEnablePerformanceCountersRequest {}
642
643#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
644pub struct PrimaryExecuteCommandRequest {
645 pub context_id: u32,
646 pub resources: Vec<BufferRange>,
647 pub command_buffers: Vec<CommandBuffer>,
648 pub wait_semaphores: Vec<u64>,
649 pub signal_semaphores: Vec<u64>,
650 pub flags: CommandBufferFlags,
651}
652
653impl fidl::Persistable for PrimaryExecuteCommandRequest {}
654
655#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
656pub struct PrimaryExecuteImmediateCommandsRequest {
657 pub context_id: u32,
658 pub command_data: Vec<u8>,
659 pub semaphores: Vec<u64>,
660}
661
662impl fidl::Persistable for PrimaryExecuteImmediateCommandsRequest {}
663
664#[derive(Clone, Debug, PartialEq)]
665pub struct PrimaryExecuteInlineCommandsRequest {
666 pub context_id: u32,
667 pub commands: Vec<InlineCommand>,
668}
669
670impl fidl::Persistable for PrimaryExecuteInlineCommandsRequest {}
671
672#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
673pub struct PrimaryIsPerformanceCounterAccessAllowedResponse {
674 pub enabled: bool,
675}
676
677impl fidl::Persistable for PrimaryIsPerformanceCounterAccessAllowedResponse {}
678
679#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
680#[repr(C)]
681pub struct PrimaryOnNotifyMemoryImportedRequest {
682 pub bytes: u64,
683}
684
685impl fidl::Persistable for PrimaryOnNotifyMemoryImportedRequest {}
686
687#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
688#[repr(C)]
689pub struct PrimaryOnNotifyMessagesConsumedRequest {
690 pub count: u64,
691}
692
693impl fidl::Persistable for PrimaryOnNotifyMessagesConsumedRequest {}
694
695#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
696pub struct PrimaryReleaseObjectRequest {
697 pub object_id: u64,
698 pub object_type: ObjectType,
699}
700
701impl fidl::Persistable for PrimaryReleaseObjectRequest {}
702
703#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
704#[repr(C)]
705pub struct PrimaryReleasePerformanceCounterBufferPoolRequest {
706 pub pool_id: u64,
707}
708
709impl fidl::Persistable for PrimaryReleasePerformanceCounterBufferPoolRequest {}
710
711#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
712#[repr(C)]
713pub struct PrimaryRemovePerformanceCounterBufferFromPoolRequest {
714 pub pool_id: u64,
715 pub buffer_id: u64,
716}
717
718impl fidl::Persistable for PrimaryRemovePerformanceCounterBufferFromPoolRequest {}
719
720#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
721#[repr(C)]
722pub struct TestDevice2GetUnitTestStatusResponse {
723 pub status: i32,
724}
725
726impl fidl::Persistable for TestDevice2GetUnitTestStatusResponse {}
727
728#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
729#[repr(C)]
730pub struct TestDeviceGetUnitTestStatusResponse {
731 pub status: i32,
732}
733
734impl fidl::Persistable for TestDeviceGetUnitTestStatusResponse {}
735
736#[derive(Clone, Debug, Default, PartialEq)]
738pub struct IcdInfo {
739 pub component_url: Option<String>,
741 pub flags: Option<IcdFlags>,
743 #[doc(hidden)]
744 pub __source_breaking: fidl::marker::SourceBreaking,
745}
746
747impl fidl::Persistable for IcdInfo {}
748
749#[derive(Clone, Debug, Default, PartialEq)]
750pub struct InlineCommand {
751 pub data: Option<Vec<u8>>,
752 pub semaphores: Option<Vec<u64>>,
753 #[doc(hidden)]
754 pub __source_breaking: fidl::marker::SourceBreaking,
755}
756
757impl fidl::Persistable for InlineCommand {}
758
759#[derive(Clone, Debug, Default, PartialEq)]
760pub struct PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest {
761 pub trigger_id: Option<u32>,
763 pub buffer_id: Option<u64>,
765 pub buffer_offset: Option<u32>,
767 pub timestamp: Option<i64>,
769 pub flags: Option<ResultFlags>,
771 #[doc(hidden)]
772 pub __source_breaking: fidl::marker::SourceBreaking,
773}
774
775impl fidl::Persistable for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest {}
776
777#[derive(Clone, Debug, Default, PartialEq)]
778pub struct PowerElementProviderGetClockSpeedLevelRequest {
779 pub hz: Option<u64>,
781 pub allow_max: Option<bool>,
786 #[doc(hidden)]
787 pub __source_breaking: fidl::marker::SourceBreaking,
788}
789
790impl fidl::Persistable for PowerElementProviderGetClockSpeedLevelRequest {}
791
792#[derive(Clone, Debug, Default, PartialEq)]
793pub struct PowerElementProviderSetClockLimitRequest {
794 pub hz: Option<u64>,
796 #[doc(hidden)]
797 pub __source_breaking: fidl::marker::SourceBreaking,
798}
799
800impl fidl::Persistable for PowerElementProviderSetClockLimitRequest {}
801
802#[derive(Clone, Debug, Default, PartialEq)]
803pub struct PrimaryMapBufferRequest {
804 pub hw_va: Option<u64>,
806 pub range: Option<BufferRange>,
808 pub flags: Option<MapFlags>,
809 #[doc(hidden)]
810 pub __source_breaking: fidl::marker::SourceBreaking,
811}
812
813impl fidl::Persistable for PrimaryMapBufferRequest {}
814
815#[derive(Clone, Debug, Default, PartialEq)]
816pub struct PrimaryUnmapBufferRequest {
817 pub hw_va: Option<u64>,
819 pub buffer_id: Option<u64>,
821 #[doc(hidden)]
822 pub __source_breaking: fidl::marker::SourceBreaking,
823}
824
825impl fidl::Persistable for PrimaryUnmapBufferRequest {}
826
827pub mod combined_device_ordinals {
828 pub const QUERY: u64 = 0x627d4c6093b078e7;
829 pub const CONNECT2: u64 = 0x3a5b134714c67914;
830 pub const DUMP_STATE: u64 = 0x5420df493d4fa915;
831 pub const GET_ICD_LIST: u64 = 0x7673e76395008257;
832}
833
834pub mod debug_utils_ordinals {
835 pub const SET_POWER_STATE: u64 = 0x1db4f4bbbf7fb866;
836}
837
838pub mod dependency_injection_ordinals {
839 pub const SET_MEMORY_PRESSURE_PROVIDER: u64 = 0x5ef0be960d4b0f4c;
840}
841
842pub mod device_ordinals {
843 pub const QUERY: u64 = 0x627d4c6093b078e7;
844 pub const CONNECT2: u64 = 0x3a5b134714c67914;
845}
846
847pub mod diagnostic_device_ordinals {
848 pub const DUMP_STATE: u64 = 0x5420df493d4fa915;
849}
850
851pub mod icd_loader_device_ordinals {
852 pub const GET_ICD_LIST: u64 = 0x7673e76395008257;
853}
854
855pub mod notification_ordinals {}
856
857pub mod performance_counter_access_ordinals {
858 pub const GET_PERFORMANCE_COUNT_TOKEN: u64 = 0x48410470c5f00f92;
859}
860
861pub mod performance_counter_events_ordinals {
862 pub const ON_PERFORMANCE_COUNTER_READ_COMPLETED: u64 = 0x3f134926720d44d7;
863}
864
865pub mod power_element_provider_ordinals {
866 pub const GET_POWER_GOALS: u64 = 0x2ff49ddffb0e07c0;
867 pub const GET_CLOCK_SPEED_LEVEL: u64 = 0x5315a9bc44a9c53c;
868 pub const SET_CLOCK_LIMIT: u64 = 0x614bf25c3a1571b4;
869}
870
871pub mod primary_ordinals {
872 pub const IMPORT_OBJECT: u64 = 0x5f5a247abb1d9354;
873 pub const RELEASE_OBJECT: u64 = 0x4a65d5885da5e88f;
874 pub const CREATE_CONTEXT: u64 = 0x5a9a91c8b88b5da4;
875 pub const CREATE_CONTEXT2: u64 = 0x5f7e3a5137e758f6;
876 pub const DESTROY_CONTEXT: u64 = 0x26b626e6be162ef0;
877 pub const EXECUTE_COMMAND: u64 = 0xf2799643aadb0db;
878 pub const EXECUTE_IMMEDIATE_COMMANDS: u64 = 0x3d7e0dcdbfd4b61f;
879 pub const EXECUTE_INLINE_COMMANDS: u64 = 0x766d5c86f35468a6;
880 pub const FLUSH: u64 = 0x54ccb5572d886039;
881 pub const MAP_BUFFER: u64 = 0x56baa5d2092c8e33;
882 pub const UNMAP_BUFFER: u64 = 0x305188ebd8bcd95c;
883 pub const BUFFER_RANGE_OP2: u64 = 0x4175c8dfef355396;
884 pub const ENABLE_FLOW_CONTROL: u64 = 0x8b5e68f3ee0b22e;
885 pub const ON_NOTIFY_MESSAGES_CONSUMED: u64 = 0x5e8dd0b0b753ac43;
886 pub const ON_NOTIFY_MEMORY_IMPORTED: u64 = 0x50524b7a3503aba6;
887 pub const ENABLE_PERFORMANCE_COUNTER_ACCESS: u64 = 0x51b369ac16588831;
888 pub const IS_PERFORMANCE_COUNTER_ACCESS_ALLOWED: u64 = 0x1933b70c06cc5702;
889 pub const ENABLE_PERFORMANCE_COUNTERS: u64 = 0x52c4db74b601aaa7;
890 pub const CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: u64 = 0x48ccf6519bbbc638;
891 pub const RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: u64 = 0x18374c4b3ef0b4da;
892 pub const ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: u64 = 0x1f7889571111386b;
893 pub const REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: u64 = 0xbf1275f5a36258e;
894 pub const DUMP_PERFORMANCE_COUNTERS: u64 = 0x250b29340be28807;
895 pub const CLEAR_PERFORMANCE_COUNTERS: u64 = 0x236831822eff741a;
896}
897
898pub mod test_device_ordinals {
899 pub const QUERY: u64 = 0x627d4c6093b078e7;
900 pub const CONNECT2: u64 = 0x3a5b134714c67914;
901 pub const DUMP_STATE: u64 = 0x5420df493d4fa915;
902 pub const GET_ICD_LIST: u64 = 0x7673e76395008257;
903 pub const GET_UNIT_TEST_STATUS: u64 = 0x3ebcd9c409c248f1;
904}
905
906pub mod test_device2_ordinals {
907 pub const GET_UNIT_TEST_STATUS: u64 = 0x5be45b0f097813b2;
908}
909
910mod internal {
911 use super::*;
912 unsafe impl fidl::encoding::TypeMarker for CommandBufferFlags {
913 type Owned = Self;
914
915 #[inline(always)]
916 fn inline_align(_context: fidl::encoding::Context) -> usize {
917 8
918 }
919
920 #[inline(always)]
921 fn inline_size(_context: fidl::encoding::Context) -> usize {
922 8
923 }
924 }
925
926 impl fidl::encoding::ValueTypeMarker for CommandBufferFlags {
927 type Borrowed<'a> = Self;
928 #[inline(always)]
929 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
930 *value
931 }
932 }
933
934 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
935 for CommandBufferFlags
936 {
937 #[inline]
938 unsafe fn encode(
939 self,
940 encoder: &mut fidl::encoding::Encoder<'_, D>,
941 offset: usize,
942 _depth: fidl::encoding::Depth,
943 ) -> fidl::Result<()> {
944 encoder.debug_check_bounds::<Self>(offset);
945 encoder.write_num(self.bits(), offset);
946 Ok(())
947 }
948 }
949
950 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommandBufferFlags {
951 #[inline(always)]
952 fn new_empty() -> Self {
953 Self::empty()
954 }
955
956 #[inline]
957 unsafe fn decode(
958 &mut self,
959 decoder: &mut fidl::encoding::Decoder<'_, D>,
960 offset: usize,
961 _depth: fidl::encoding::Depth,
962 ) -> fidl::Result<()> {
963 decoder.debug_check_bounds::<Self>(offset);
964 let prim = decoder.read_num::<u64>(offset);
965 *self = Self::from_bits_allow_unknown(prim);
966 Ok(())
967 }
968 }
969 unsafe impl fidl::encoding::TypeMarker for IcdFlags {
970 type Owned = Self;
971
972 #[inline(always)]
973 fn inline_align(_context: fidl::encoding::Context) -> usize {
974 4
975 }
976
977 #[inline(always)]
978 fn inline_size(_context: fidl::encoding::Context) -> usize {
979 4
980 }
981 }
982
983 impl fidl::encoding::ValueTypeMarker for IcdFlags {
984 type Borrowed<'a> = Self;
985 #[inline(always)]
986 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
987 *value
988 }
989 }
990
991 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for IcdFlags {
992 #[inline]
993 unsafe fn encode(
994 self,
995 encoder: &mut fidl::encoding::Encoder<'_, D>,
996 offset: usize,
997 _depth: fidl::encoding::Depth,
998 ) -> fidl::Result<()> {
999 encoder.debug_check_bounds::<Self>(offset);
1000 encoder.write_num(self.bits(), offset);
1001 Ok(())
1002 }
1003 }
1004
1005 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IcdFlags {
1006 #[inline(always)]
1007 fn new_empty() -> Self {
1008 Self::empty()
1009 }
1010
1011 #[inline]
1012 unsafe fn decode(
1013 &mut self,
1014 decoder: &mut fidl::encoding::Decoder<'_, D>,
1015 offset: usize,
1016 _depth: fidl::encoding::Depth,
1017 ) -> fidl::Result<()> {
1018 decoder.debug_check_bounds::<Self>(offset);
1019 let prim = decoder.read_num::<u32>(offset);
1020 *self = Self::from_bits_allow_unknown(prim);
1021 Ok(())
1022 }
1023 }
1024 unsafe impl fidl::encoding::TypeMarker for ImportFlags {
1025 type Owned = Self;
1026
1027 #[inline(always)]
1028 fn inline_align(_context: fidl::encoding::Context) -> usize {
1029 8
1030 }
1031
1032 #[inline(always)]
1033 fn inline_size(_context: fidl::encoding::Context) -> usize {
1034 8
1035 }
1036 }
1037
1038 impl fidl::encoding::ValueTypeMarker for ImportFlags {
1039 type Borrowed<'a> = Self;
1040 #[inline(always)]
1041 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1042 *value
1043 }
1044 }
1045
1046 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ImportFlags {
1047 #[inline]
1048 unsafe fn encode(
1049 self,
1050 encoder: &mut fidl::encoding::Encoder<'_, D>,
1051 offset: usize,
1052 _depth: fidl::encoding::Depth,
1053 ) -> fidl::Result<()> {
1054 encoder.debug_check_bounds::<Self>(offset);
1055 encoder.write_num(self.bits(), offset);
1056 Ok(())
1057 }
1058 }
1059
1060 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ImportFlags {
1061 #[inline(always)]
1062 fn new_empty() -> Self {
1063 Self::empty()
1064 }
1065
1066 #[inline]
1067 unsafe fn decode(
1068 &mut self,
1069 decoder: &mut fidl::encoding::Decoder<'_, D>,
1070 offset: usize,
1071 _depth: fidl::encoding::Depth,
1072 ) -> fidl::Result<()> {
1073 decoder.debug_check_bounds::<Self>(offset);
1074 let prim = decoder.read_num::<u64>(offset);
1075 *self = Self::from_bits_allow_unknown(prim);
1076 Ok(())
1077 }
1078 }
1079 unsafe impl fidl::encoding::TypeMarker for MapFlags {
1080 type Owned = Self;
1081
1082 #[inline(always)]
1083 fn inline_align(_context: fidl::encoding::Context) -> usize {
1084 8
1085 }
1086
1087 #[inline(always)]
1088 fn inline_size(_context: fidl::encoding::Context) -> usize {
1089 8
1090 }
1091 }
1092
1093 impl fidl::encoding::ValueTypeMarker for MapFlags {
1094 type Borrowed<'a> = Self;
1095 #[inline(always)]
1096 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1097 *value
1098 }
1099 }
1100
1101 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MapFlags {
1102 #[inline]
1103 unsafe fn encode(
1104 self,
1105 encoder: &mut fidl::encoding::Encoder<'_, D>,
1106 offset: usize,
1107 _depth: fidl::encoding::Depth,
1108 ) -> fidl::Result<()> {
1109 encoder.debug_check_bounds::<Self>(offset);
1110 encoder.write_num(self.bits(), offset);
1111 Ok(())
1112 }
1113 }
1114
1115 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MapFlags {
1116 #[inline(always)]
1117 fn new_empty() -> Self {
1118 Self::empty()
1119 }
1120
1121 #[inline]
1122 unsafe fn decode(
1123 &mut self,
1124 decoder: &mut fidl::encoding::Decoder<'_, D>,
1125 offset: usize,
1126 _depth: fidl::encoding::Depth,
1127 ) -> fidl::Result<()> {
1128 decoder.debug_check_bounds::<Self>(offset);
1129 let prim = decoder.read_num::<u64>(offset);
1130 *self = Self::from_bits_allow_unknown(prim);
1131 Ok(())
1132 }
1133 }
1134 unsafe impl fidl::encoding::TypeMarker for ResultFlags {
1135 type Owned = Self;
1136
1137 #[inline(always)]
1138 fn inline_align(_context: fidl::encoding::Context) -> usize {
1139 4
1140 }
1141
1142 #[inline(always)]
1143 fn inline_size(_context: fidl::encoding::Context) -> usize {
1144 4
1145 }
1146 }
1147
1148 impl fidl::encoding::ValueTypeMarker for ResultFlags {
1149 type Borrowed<'a> = Self;
1150 #[inline(always)]
1151 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1152 *value
1153 }
1154 }
1155
1156 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ResultFlags {
1157 #[inline]
1158 unsafe fn encode(
1159 self,
1160 encoder: &mut fidl::encoding::Encoder<'_, D>,
1161 offset: usize,
1162 _depth: fidl::encoding::Depth,
1163 ) -> fidl::Result<()> {
1164 encoder.debug_check_bounds::<Self>(offset);
1165 encoder.write_num(self.bits(), offset);
1166 Ok(())
1167 }
1168 }
1169
1170 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResultFlags {
1171 #[inline(always)]
1172 fn new_empty() -> Self {
1173 Self::empty()
1174 }
1175
1176 #[inline]
1177 unsafe fn decode(
1178 &mut self,
1179 decoder: &mut fidl::encoding::Decoder<'_, D>,
1180 offset: usize,
1181 _depth: fidl::encoding::Depth,
1182 ) -> fidl::Result<()> {
1183 decoder.debug_check_bounds::<Self>(offset);
1184 let prim = decoder.read_num::<u32>(offset);
1185 *self = Self::from_bits_allow_unknown(prim);
1186 Ok(())
1187 }
1188 }
1189 unsafe impl fidl::encoding::TypeMarker for BufferOp {
1190 type Owned = Self;
1191
1192 #[inline(always)]
1193 fn inline_align(_context: fidl::encoding::Context) -> usize {
1194 std::mem::align_of::<u32>()
1195 }
1196
1197 #[inline(always)]
1198 fn inline_size(_context: fidl::encoding::Context) -> usize {
1199 std::mem::size_of::<u32>()
1200 }
1201
1202 #[inline(always)]
1203 fn encode_is_copy() -> bool {
1204 false
1205 }
1206
1207 #[inline(always)]
1208 fn decode_is_copy() -> bool {
1209 false
1210 }
1211 }
1212
1213 impl fidl::encoding::ValueTypeMarker for BufferOp {
1214 type Borrowed<'a> = Self;
1215 #[inline(always)]
1216 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1217 *value
1218 }
1219 }
1220
1221 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BufferOp {
1222 #[inline]
1223 unsafe fn encode(
1224 self,
1225 encoder: &mut fidl::encoding::Encoder<'_, D>,
1226 offset: usize,
1227 _depth: fidl::encoding::Depth,
1228 ) -> fidl::Result<()> {
1229 encoder.debug_check_bounds::<Self>(offset);
1230 encoder.write_num(self.into_primitive(), offset);
1231 Ok(())
1232 }
1233 }
1234
1235 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BufferOp {
1236 #[inline(always)]
1237 fn new_empty() -> Self {
1238 Self::unknown()
1239 }
1240
1241 #[inline]
1242 unsafe fn decode(
1243 &mut self,
1244 decoder: &mut fidl::encoding::Decoder<'_, D>,
1245 offset: usize,
1246 _depth: fidl::encoding::Depth,
1247 ) -> fidl::Result<()> {
1248 decoder.debug_check_bounds::<Self>(offset);
1249 let prim = decoder.read_num::<u32>(offset);
1250
1251 *self = Self::from_primitive_allow_unknown(prim);
1252 Ok(())
1253 }
1254 }
1255 unsafe impl fidl::encoding::TypeMarker for ObjectType {
1256 type Owned = Self;
1257
1258 #[inline(always)]
1259 fn inline_align(_context: fidl::encoding::Context) -> usize {
1260 std::mem::align_of::<u32>()
1261 }
1262
1263 #[inline(always)]
1264 fn inline_size(_context: fidl::encoding::Context) -> usize {
1265 std::mem::size_of::<u32>()
1266 }
1267
1268 #[inline(always)]
1269 fn encode_is_copy() -> bool {
1270 false
1271 }
1272
1273 #[inline(always)]
1274 fn decode_is_copy() -> bool {
1275 false
1276 }
1277 }
1278
1279 impl fidl::encoding::ValueTypeMarker for ObjectType {
1280 type Borrowed<'a> = Self;
1281 #[inline(always)]
1282 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1283 *value
1284 }
1285 }
1286
1287 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ObjectType {
1288 #[inline]
1289 unsafe fn encode(
1290 self,
1291 encoder: &mut fidl::encoding::Encoder<'_, D>,
1292 offset: usize,
1293 _depth: fidl::encoding::Depth,
1294 ) -> fidl::Result<()> {
1295 encoder.debug_check_bounds::<Self>(offset);
1296 encoder.write_num(self.into_primitive(), offset);
1297 Ok(())
1298 }
1299 }
1300
1301 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ObjectType {
1302 #[inline(always)]
1303 fn new_empty() -> Self {
1304 Self::unknown()
1305 }
1306
1307 #[inline]
1308 unsafe fn decode(
1309 &mut self,
1310 decoder: &mut fidl::encoding::Decoder<'_, D>,
1311 offset: usize,
1312 _depth: fidl::encoding::Depth,
1313 ) -> fidl::Result<()> {
1314 decoder.debug_check_bounds::<Self>(offset);
1315 let prim = decoder.read_num::<u32>(offset);
1316
1317 *self = Self::from_primitive_allow_unknown(prim);
1318 Ok(())
1319 }
1320 }
1321 unsafe impl fidl::encoding::TypeMarker for PowerGoalType {
1322 type Owned = Self;
1323
1324 #[inline(always)]
1325 fn inline_align(_context: fidl::encoding::Context) -> usize {
1326 std::mem::align_of::<u64>()
1327 }
1328
1329 #[inline(always)]
1330 fn inline_size(_context: fidl::encoding::Context) -> usize {
1331 std::mem::size_of::<u64>()
1332 }
1333
1334 #[inline(always)]
1335 fn encode_is_copy() -> bool {
1336 false
1337 }
1338
1339 #[inline(always)]
1340 fn decode_is_copy() -> bool {
1341 false
1342 }
1343 }
1344
1345 impl fidl::encoding::ValueTypeMarker for PowerGoalType {
1346 type Borrowed<'a> = Self;
1347 #[inline(always)]
1348 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1349 *value
1350 }
1351 }
1352
1353 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerGoalType {
1354 #[inline]
1355 unsafe fn encode(
1356 self,
1357 encoder: &mut fidl::encoding::Encoder<'_, D>,
1358 offset: usize,
1359 _depth: fidl::encoding::Depth,
1360 ) -> fidl::Result<()> {
1361 encoder.debug_check_bounds::<Self>(offset);
1362 encoder.write_num(self.into_primitive(), offset);
1363 Ok(())
1364 }
1365 }
1366
1367 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerGoalType {
1368 #[inline(always)]
1369 fn new_empty() -> Self {
1370 Self::unknown()
1371 }
1372
1373 #[inline]
1374 unsafe fn decode(
1375 &mut self,
1376 decoder: &mut fidl::encoding::Decoder<'_, D>,
1377 offset: usize,
1378 _depth: fidl::encoding::Depth,
1379 ) -> fidl::Result<()> {
1380 decoder.debug_check_bounds::<Self>(offset);
1381 let prim = decoder.read_num::<u64>(offset);
1382
1383 *self = Self::from_primitive_allow_unknown(prim);
1384 Ok(())
1385 }
1386 }
1387 unsafe impl fidl::encoding::TypeMarker for Priority {
1388 type Owned = Self;
1389
1390 #[inline(always)]
1391 fn inline_align(_context: fidl::encoding::Context) -> usize {
1392 std::mem::align_of::<u64>()
1393 }
1394
1395 #[inline(always)]
1396 fn inline_size(_context: fidl::encoding::Context) -> usize {
1397 std::mem::size_of::<u64>()
1398 }
1399
1400 #[inline(always)]
1401 fn encode_is_copy() -> bool {
1402 false
1403 }
1404
1405 #[inline(always)]
1406 fn decode_is_copy() -> bool {
1407 false
1408 }
1409 }
1410
1411 impl fidl::encoding::ValueTypeMarker for Priority {
1412 type Borrowed<'a> = Self;
1413 #[inline(always)]
1414 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1415 *value
1416 }
1417 }
1418
1419 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Priority {
1420 #[inline]
1421 unsafe fn encode(
1422 self,
1423 encoder: &mut fidl::encoding::Encoder<'_, D>,
1424 offset: usize,
1425 _depth: fidl::encoding::Depth,
1426 ) -> fidl::Result<()> {
1427 encoder.debug_check_bounds::<Self>(offset);
1428 encoder.write_num(self.into_primitive(), offset);
1429 Ok(())
1430 }
1431 }
1432
1433 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Priority {
1434 #[inline(always)]
1435 fn new_empty() -> Self {
1436 Self::unknown()
1437 }
1438
1439 #[inline]
1440 unsafe fn decode(
1441 &mut self,
1442 decoder: &mut fidl::encoding::Decoder<'_, D>,
1443 offset: usize,
1444 _depth: fidl::encoding::Depth,
1445 ) -> fidl::Result<()> {
1446 decoder.debug_check_bounds::<Self>(offset);
1447 let prim = decoder.read_num::<u64>(offset);
1448
1449 *self = Self::from_primitive_allow_unknown(prim);
1450 Ok(())
1451 }
1452 }
1453 unsafe impl fidl::encoding::TypeMarker for QueryId {
1454 type Owned = Self;
1455
1456 #[inline(always)]
1457 fn inline_align(_context: fidl::encoding::Context) -> usize {
1458 std::mem::align_of::<u64>()
1459 }
1460
1461 #[inline(always)]
1462 fn inline_size(_context: fidl::encoding::Context) -> usize {
1463 std::mem::size_of::<u64>()
1464 }
1465
1466 #[inline(always)]
1467 fn encode_is_copy() -> bool {
1468 false
1469 }
1470
1471 #[inline(always)]
1472 fn decode_is_copy() -> bool {
1473 false
1474 }
1475 }
1476
1477 impl fidl::encoding::ValueTypeMarker for QueryId {
1478 type Borrowed<'a> = Self;
1479 #[inline(always)]
1480 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1481 *value
1482 }
1483 }
1484
1485 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for QueryId {
1486 #[inline]
1487 unsafe fn encode(
1488 self,
1489 encoder: &mut fidl::encoding::Encoder<'_, D>,
1490 offset: usize,
1491 _depth: fidl::encoding::Depth,
1492 ) -> fidl::Result<()> {
1493 encoder.debug_check_bounds::<Self>(offset);
1494 encoder.write_num(self.into_primitive(), offset);
1495 Ok(())
1496 }
1497 }
1498
1499 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for QueryId {
1500 #[inline(always)]
1501 fn new_empty() -> Self {
1502 Self::unknown()
1503 }
1504
1505 #[inline]
1506 unsafe fn decode(
1507 &mut self,
1508 decoder: &mut fidl::encoding::Decoder<'_, D>,
1509 offset: usize,
1510 _depth: fidl::encoding::Depth,
1511 ) -> fidl::Result<()> {
1512 decoder.debug_check_bounds::<Self>(offset);
1513 let prim = decoder.read_num::<u64>(offset);
1514
1515 *self = Self::from_primitive_allow_unknown(prim);
1516 Ok(())
1517 }
1518 }
1519
1520 impl fidl::encoding::ValueTypeMarker for BufferRange {
1521 type Borrowed<'a> = &'a Self;
1522 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1523 value
1524 }
1525 }
1526
1527 unsafe impl fidl::encoding::TypeMarker for BufferRange {
1528 type Owned = Self;
1529
1530 #[inline(always)]
1531 fn inline_align(_context: fidl::encoding::Context) -> usize {
1532 8
1533 }
1534
1535 #[inline(always)]
1536 fn inline_size(_context: fidl::encoding::Context) -> usize {
1537 24
1538 }
1539 #[inline(always)]
1540 fn encode_is_copy() -> bool {
1541 true
1542 }
1543
1544 #[inline(always)]
1545 fn decode_is_copy() -> bool {
1546 true
1547 }
1548 }
1549
1550 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BufferRange, D>
1551 for &BufferRange
1552 {
1553 #[inline]
1554 unsafe fn encode(
1555 self,
1556 encoder: &mut fidl::encoding::Encoder<'_, D>,
1557 offset: usize,
1558 _depth: fidl::encoding::Depth,
1559 ) -> fidl::Result<()> {
1560 encoder.debug_check_bounds::<BufferRange>(offset);
1561 unsafe {
1562 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1564 (buf_ptr as *mut BufferRange).write_unaligned((self as *const BufferRange).read());
1565 }
1568 Ok(())
1569 }
1570 }
1571 unsafe impl<
1572 D: fidl::encoding::ResourceDialect,
1573 T0: fidl::encoding::Encode<u64, D>,
1574 T1: fidl::encoding::Encode<u64, D>,
1575 T2: fidl::encoding::Encode<u64, D>,
1576 > fidl::encoding::Encode<BufferRange, D> for (T0, T1, T2)
1577 {
1578 #[inline]
1579 unsafe fn encode(
1580 self,
1581 encoder: &mut fidl::encoding::Encoder<'_, D>,
1582 offset: usize,
1583 depth: fidl::encoding::Depth,
1584 ) -> fidl::Result<()> {
1585 encoder.debug_check_bounds::<BufferRange>(offset);
1586 self.0.encode(encoder, offset + 0, depth)?;
1590 self.1.encode(encoder, offset + 8, depth)?;
1591 self.2.encode(encoder, offset + 16, depth)?;
1592 Ok(())
1593 }
1594 }
1595
1596 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BufferRange {
1597 #[inline(always)]
1598 fn new_empty() -> Self {
1599 Self {
1600 buffer_id: fidl::new_empty!(u64, D),
1601 offset: fidl::new_empty!(u64, D),
1602 size: fidl::new_empty!(u64, D),
1603 }
1604 }
1605
1606 #[inline]
1607 unsafe fn decode(
1608 &mut self,
1609 decoder: &mut fidl::encoding::Decoder<'_, D>,
1610 offset: usize,
1611 _depth: fidl::encoding::Depth,
1612 ) -> fidl::Result<()> {
1613 decoder.debug_check_bounds::<Self>(offset);
1614 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1615 unsafe {
1618 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 24);
1619 }
1620 Ok(())
1621 }
1622 }
1623
1624 impl fidl::encoding::ValueTypeMarker for CommandBuffer {
1625 type Borrowed<'a> = &'a Self;
1626 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1627 value
1628 }
1629 }
1630
1631 unsafe impl fidl::encoding::TypeMarker for CommandBuffer {
1632 type Owned = Self;
1633
1634 #[inline(always)]
1635 fn inline_align(_context: fidl::encoding::Context) -> usize {
1636 8
1637 }
1638
1639 #[inline(always)]
1640 fn inline_size(_context: fidl::encoding::Context) -> usize {
1641 16
1642 }
1643 }
1644
1645 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CommandBuffer, D>
1646 for &CommandBuffer
1647 {
1648 #[inline]
1649 unsafe fn encode(
1650 self,
1651 encoder: &mut fidl::encoding::Encoder<'_, D>,
1652 offset: usize,
1653 _depth: fidl::encoding::Depth,
1654 ) -> fidl::Result<()> {
1655 encoder.debug_check_bounds::<CommandBuffer>(offset);
1656 unsafe {
1657 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1659 (buf_ptr as *mut CommandBuffer)
1660 .write_unaligned((self as *const CommandBuffer).read());
1661 let padding_ptr = buf_ptr.offset(0) as *mut u64;
1664 let padding_mask = 0xffffffff00000000u64;
1665 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1666 }
1667 Ok(())
1668 }
1669 }
1670 unsafe impl<
1671 D: fidl::encoding::ResourceDialect,
1672 T0: fidl::encoding::Encode<u32, D>,
1673 T1: fidl::encoding::Encode<u64, D>,
1674 > fidl::encoding::Encode<CommandBuffer, D> for (T0, T1)
1675 {
1676 #[inline]
1677 unsafe fn encode(
1678 self,
1679 encoder: &mut fidl::encoding::Encoder<'_, D>,
1680 offset: usize,
1681 depth: fidl::encoding::Depth,
1682 ) -> fidl::Result<()> {
1683 encoder.debug_check_bounds::<CommandBuffer>(offset);
1684 unsafe {
1687 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1688 (ptr as *mut u64).write_unaligned(0);
1689 }
1690 self.0.encode(encoder, offset + 0, depth)?;
1692 self.1.encode(encoder, offset + 8, depth)?;
1693 Ok(())
1694 }
1695 }
1696
1697 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommandBuffer {
1698 #[inline(always)]
1699 fn new_empty() -> Self {
1700 Self {
1701 resource_index: fidl::new_empty!(u32, D),
1702 start_offset: fidl::new_empty!(u64, D),
1703 }
1704 }
1705
1706 #[inline]
1707 unsafe fn decode(
1708 &mut self,
1709 decoder: &mut fidl::encoding::Decoder<'_, D>,
1710 offset: usize,
1711 _depth: fidl::encoding::Depth,
1712 ) -> fidl::Result<()> {
1713 decoder.debug_check_bounds::<Self>(offset);
1714 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1715 let ptr = unsafe { buf_ptr.offset(0) };
1717 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1718 let mask = 0xffffffff00000000u64;
1719 let maskedval = padval & mask;
1720 if maskedval != 0 {
1721 return Err(fidl::Error::NonZeroPadding {
1722 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1723 });
1724 }
1725 unsafe {
1727 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1728 }
1729 Ok(())
1730 }
1731 }
1732
1733 impl fidl::encoding::ValueTypeMarker for DebugUtilsSetPowerStateRequest {
1734 type Borrowed<'a> = &'a Self;
1735 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1736 value
1737 }
1738 }
1739
1740 unsafe impl fidl::encoding::TypeMarker for DebugUtilsSetPowerStateRequest {
1741 type Owned = Self;
1742
1743 #[inline(always)]
1744 fn inline_align(_context: fidl::encoding::Context) -> usize {
1745 8
1746 }
1747
1748 #[inline(always)]
1749 fn inline_size(_context: fidl::encoding::Context) -> usize {
1750 8
1751 }
1752 #[inline(always)]
1753 fn encode_is_copy() -> bool {
1754 true
1755 }
1756
1757 #[inline(always)]
1758 fn decode_is_copy() -> bool {
1759 true
1760 }
1761 }
1762
1763 unsafe impl<D: fidl::encoding::ResourceDialect>
1764 fidl::encoding::Encode<DebugUtilsSetPowerStateRequest, D>
1765 for &DebugUtilsSetPowerStateRequest
1766 {
1767 #[inline]
1768 unsafe fn encode(
1769 self,
1770 encoder: &mut fidl::encoding::Encoder<'_, D>,
1771 offset: usize,
1772 _depth: fidl::encoding::Depth,
1773 ) -> fidl::Result<()> {
1774 encoder.debug_check_bounds::<DebugUtilsSetPowerStateRequest>(offset);
1775 unsafe {
1776 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1778 (buf_ptr as *mut DebugUtilsSetPowerStateRequest)
1779 .write_unaligned((self as *const DebugUtilsSetPowerStateRequest).read());
1780 }
1783 Ok(())
1784 }
1785 }
1786 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1787 fidl::encoding::Encode<DebugUtilsSetPowerStateRequest, D> for (T0,)
1788 {
1789 #[inline]
1790 unsafe fn encode(
1791 self,
1792 encoder: &mut fidl::encoding::Encoder<'_, D>,
1793 offset: usize,
1794 depth: fidl::encoding::Depth,
1795 ) -> fidl::Result<()> {
1796 encoder.debug_check_bounds::<DebugUtilsSetPowerStateRequest>(offset);
1797 self.0.encode(encoder, offset + 0, depth)?;
1801 Ok(())
1802 }
1803 }
1804
1805 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1806 for DebugUtilsSetPowerStateRequest
1807 {
1808 #[inline(always)]
1809 fn new_empty() -> Self {
1810 Self { power_state: fidl::new_empty!(i64, D) }
1811 }
1812
1813 #[inline]
1814 unsafe fn decode(
1815 &mut self,
1816 decoder: &mut fidl::encoding::Decoder<'_, D>,
1817 offset: usize,
1818 _depth: fidl::encoding::Depth,
1819 ) -> fidl::Result<()> {
1820 decoder.debug_check_bounds::<Self>(offset);
1821 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1822 unsafe {
1825 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1826 }
1827 Ok(())
1828 }
1829 }
1830
1831 impl fidl::encoding::ValueTypeMarker for DebugUtilsSetPowerStateResponse {
1832 type Borrowed<'a> = &'a Self;
1833 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1834 value
1835 }
1836 }
1837
1838 unsafe impl fidl::encoding::TypeMarker for DebugUtilsSetPowerStateResponse {
1839 type Owned = Self;
1840
1841 #[inline(always)]
1842 fn inline_align(_context: fidl::encoding::Context) -> usize {
1843 8
1844 }
1845
1846 #[inline(always)]
1847 fn inline_size(_context: fidl::encoding::Context) -> usize {
1848 8
1849 }
1850 #[inline(always)]
1851 fn encode_is_copy() -> bool {
1852 true
1853 }
1854
1855 #[inline(always)]
1856 fn decode_is_copy() -> bool {
1857 true
1858 }
1859 }
1860
1861 unsafe impl<D: fidl::encoding::ResourceDialect>
1862 fidl::encoding::Encode<DebugUtilsSetPowerStateResponse, D>
1863 for &DebugUtilsSetPowerStateResponse
1864 {
1865 #[inline]
1866 unsafe fn encode(
1867 self,
1868 encoder: &mut fidl::encoding::Encoder<'_, D>,
1869 offset: usize,
1870 _depth: fidl::encoding::Depth,
1871 ) -> fidl::Result<()> {
1872 encoder.debug_check_bounds::<DebugUtilsSetPowerStateResponse>(offset);
1873 unsafe {
1874 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1876 (buf_ptr as *mut DebugUtilsSetPowerStateResponse)
1877 .write_unaligned((self as *const DebugUtilsSetPowerStateResponse).read());
1878 }
1881 Ok(())
1882 }
1883 }
1884 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1885 fidl::encoding::Encode<DebugUtilsSetPowerStateResponse, D> for (T0,)
1886 {
1887 #[inline]
1888 unsafe fn encode(
1889 self,
1890 encoder: &mut fidl::encoding::Encoder<'_, D>,
1891 offset: usize,
1892 depth: fidl::encoding::Depth,
1893 ) -> fidl::Result<()> {
1894 encoder.debug_check_bounds::<DebugUtilsSetPowerStateResponse>(offset);
1895 self.0.encode(encoder, offset + 0, depth)?;
1899 Ok(())
1900 }
1901 }
1902
1903 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1904 for DebugUtilsSetPowerStateResponse
1905 {
1906 #[inline(always)]
1907 fn new_empty() -> Self {
1908 Self { time_in_ns: fidl::new_empty!(u64, D) }
1909 }
1910
1911 #[inline]
1912 unsafe fn decode(
1913 &mut self,
1914 decoder: &mut fidl::encoding::Decoder<'_, D>,
1915 offset: usize,
1916 _depth: fidl::encoding::Depth,
1917 ) -> fidl::Result<()> {
1918 decoder.debug_check_bounds::<Self>(offset);
1919 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1920 unsafe {
1923 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1924 }
1925 Ok(())
1926 }
1927 }
1928
1929 impl fidl::encoding::ValueTypeMarker for DeviceQueryRequest {
1930 type Borrowed<'a> = &'a Self;
1931 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1932 value
1933 }
1934 }
1935
1936 unsafe impl fidl::encoding::TypeMarker for DeviceQueryRequest {
1937 type Owned = Self;
1938
1939 #[inline(always)]
1940 fn inline_align(_context: fidl::encoding::Context) -> usize {
1941 8
1942 }
1943
1944 #[inline(always)]
1945 fn inline_size(_context: fidl::encoding::Context) -> usize {
1946 8
1947 }
1948 }
1949
1950 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceQueryRequest, D>
1951 for &DeviceQueryRequest
1952 {
1953 #[inline]
1954 unsafe fn encode(
1955 self,
1956 encoder: &mut fidl::encoding::Encoder<'_, D>,
1957 offset: usize,
1958 _depth: fidl::encoding::Depth,
1959 ) -> fidl::Result<()> {
1960 encoder.debug_check_bounds::<DeviceQueryRequest>(offset);
1961 fidl::encoding::Encode::<DeviceQueryRequest, D>::encode(
1963 (<QueryId as fidl::encoding::ValueTypeMarker>::borrow(&self.query_id),),
1964 encoder,
1965 offset,
1966 _depth,
1967 )
1968 }
1969 }
1970 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<QueryId, D>>
1971 fidl::encoding::Encode<DeviceQueryRequest, D> for (T0,)
1972 {
1973 #[inline]
1974 unsafe fn encode(
1975 self,
1976 encoder: &mut fidl::encoding::Encoder<'_, D>,
1977 offset: usize,
1978 depth: fidl::encoding::Depth,
1979 ) -> fidl::Result<()> {
1980 encoder.debug_check_bounds::<DeviceQueryRequest>(offset);
1981 self.0.encode(encoder, offset + 0, depth)?;
1985 Ok(())
1986 }
1987 }
1988
1989 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceQueryRequest {
1990 #[inline(always)]
1991 fn new_empty() -> Self {
1992 Self { query_id: fidl::new_empty!(QueryId, D) }
1993 }
1994
1995 #[inline]
1996 unsafe fn decode(
1997 &mut self,
1998 decoder: &mut fidl::encoding::Decoder<'_, D>,
1999 offset: usize,
2000 _depth: fidl::encoding::Depth,
2001 ) -> fidl::Result<()> {
2002 decoder.debug_check_bounds::<Self>(offset);
2003 fidl::decode!(QueryId, D, &mut self.query_id, decoder, offset + 0, _depth)?;
2005 Ok(())
2006 }
2007 }
2008
2009 impl fidl::encoding::ValueTypeMarker for DiagnosticDeviceDumpStateRequest {
2010 type Borrowed<'a> = &'a Self;
2011 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2012 value
2013 }
2014 }
2015
2016 unsafe impl fidl::encoding::TypeMarker for DiagnosticDeviceDumpStateRequest {
2017 type Owned = Self;
2018
2019 #[inline(always)]
2020 fn inline_align(_context: fidl::encoding::Context) -> usize {
2021 4
2022 }
2023
2024 #[inline(always)]
2025 fn inline_size(_context: fidl::encoding::Context) -> usize {
2026 4
2027 }
2028 #[inline(always)]
2029 fn encode_is_copy() -> bool {
2030 true
2031 }
2032
2033 #[inline(always)]
2034 fn decode_is_copy() -> bool {
2035 true
2036 }
2037 }
2038
2039 unsafe impl<D: fidl::encoding::ResourceDialect>
2040 fidl::encoding::Encode<DiagnosticDeviceDumpStateRequest, D>
2041 for &DiagnosticDeviceDumpStateRequest
2042 {
2043 #[inline]
2044 unsafe fn encode(
2045 self,
2046 encoder: &mut fidl::encoding::Encoder<'_, D>,
2047 offset: usize,
2048 _depth: fidl::encoding::Depth,
2049 ) -> fidl::Result<()> {
2050 encoder.debug_check_bounds::<DiagnosticDeviceDumpStateRequest>(offset);
2051 unsafe {
2052 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2054 (buf_ptr as *mut DiagnosticDeviceDumpStateRequest)
2055 .write_unaligned((self as *const DiagnosticDeviceDumpStateRequest).read());
2056 }
2059 Ok(())
2060 }
2061 }
2062 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
2063 fidl::encoding::Encode<DiagnosticDeviceDumpStateRequest, D> for (T0,)
2064 {
2065 #[inline]
2066 unsafe fn encode(
2067 self,
2068 encoder: &mut fidl::encoding::Encoder<'_, D>,
2069 offset: usize,
2070 depth: fidl::encoding::Depth,
2071 ) -> fidl::Result<()> {
2072 encoder.debug_check_bounds::<DiagnosticDeviceDumpStateRequest>(offset);
2073 self.0.encode(encoder, offset + 0, depth)?;
2077 Ok(())
2078 }
2079 }
2080
2081 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2082 for DiagnosticDeviceDumpStateRequest
2083 {
2084 #[inline(always)]
2085 fn new_empty() -> Self {
2086 Self { dump_type: fidl::new_empty!(u32, D) }
2087 }
2088
2089 #[inline]
2090 unsafe fn decode(
2091 &mut self,
2092 decoder: &mut fidl::encoding::Decoder<'_, D>,
2093 offset: usize,
2094 _depth: fidl::encoding::Depth,
2095 ) -> fidl::Result<()> {
2096 decoder.debug_check_bounds::<Self>(offset);
2097 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2098 unsafe {
2101 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2102 }
2103 Ok(())
2104 }
2105 }
2106
2107 impl fidl::encoding::ValueTypeMarker for IcdLoaderDeviceGetIcdListResponse {
2108 type Borrowed<'a> = &'a Self;
2109 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2110 value
2111 }
2112 }
2113
2114 unsafe impl fidl::encoding::TypeMarker for IcdLoaderDeviceGetIcdListResponse {
2115 type Owned = Self;
2116
2117 #[inline(always)]
2118 fn inline_align(_context: fidl::encoding::Context) -> usize {
2119 8
2120 }
2121
2122 #[inline(always)]
2123 fn inline_size(_context: fidl::encoding::Context) -> usize {
2124 16
2125 }
2126 }
2127
2128 unsafe impl<D: fidl::encoding::ResourceDialect>
2129 fidl::encoding::Encode<IcdLoaderDeviceGetIcdListResponse, D>
2130 for &IcdLoaderDeviceGetIcdListResponse
2131 {
2132 #[inline]
2133 unsafe fn encode(
2134 self,
2135 encoder: &mut fidl::encoding::Encoder<'_, D>,
2136 offset: usize,
2137 _depth: fidl::encoding::Depth,
2138 ) -> fidl::Result<()> {
2139 encoder.debug_check_bounds::<IcdLoaderDeviceGetIcdListResponse>(offset);
2140 fidl::encoding::Encode::<IcdLoaderDeviceGetIcdListResponse, D>::encode(
2142 (<fidl::encoding::Vector<IcdInfo, 8> as fidl::encoding::ValueTypeMarker>::borrow(
2143 &self.icd_list,
2144 ),),
2145 encoder,
2146 offset,
2147 _depth,
2148 )
2149 }
2150 }
2151 unsafe impl<
2152 D: fidl::encoding::ResourceDialect,
2153 T0: fidl::encoding::Encode<fidl::encoding::Vector<IcdInfo, 8>, D>,
2154 > fidl::encoding::Encode<IcdLoaderDeviceGetIcdListResponse, D> for (T0,)
2155 {
2156 #[inline]
2157 unsafe fn encode(
2158 self,
2159 encoder: &mut fidl::encoding::Encoder<'_, D>,
2160 offset: usize,
2161 depth: fidl::encoding::Depth,
2162 ) -> fidl::Result<()> {
2163 encoder.debug_check_bounds::<IcdLoaderDeviceGetIcdListResponse>(offset);
2164 self.0.encode(encoder, offset + 0, depth)?;
2168 Ok(())
2169 }
2170 }
2171
2172 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2173 for IcdLoaderDeviceGetIcdListResponse
2174 {
2175 #[inline(always)]
2176 fn new_empty() -> Self {
2177 Self { icd_list: fidl::new_empty!(fidl::encoding::Vector<IcdInfo, 8>, D) }
2178 }
2179
2180 #[inline]
2181 unsafe fn decode(
2182 &mut self,
2183 decoder: &mut fidl::encoding::Decoder<'_, D>,
2184 offset: usize,
2185 _depth: fidl::encoding::Depth,
2186 ) -> fidl::Result<()> {
2187 decoder.debug_check_bounds::<Self>(offset);
2188 fidl::decode!(fidl::encoding::Vector<IcdInfo, 8>, D, &mut self.icd_list, decoder, offset + 0, _depth)?;
2190 Ok(())
2191 }
2192 }
2193
2194 impl fidl::encoding::ValueTypeMarker for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {
2195 type Borrowed<'a> = &'a Self;
2196 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2197 value
2198 }
2199 }
2200
2201 unsafe impl fidl::encoding::TypeMarker for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest {
2202 type Owned = Self;
2203
2204 #[inline(always)]
2205 fn inline_align(_context: fidl::encoding::Context) -> usize {
2206 8
2207 }
2208
2209 #[inline(always)]
2210 fn inline_size(_context: fidl::encoding::Context) -> usize {
2211 24
2212 }
2213 }
2214
2215 unsafe impl<D: fidl::encoding::ResourceDialect>
2216 fidl::encoding::Encode<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest, D>
2217 for &PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest
2218 {
2219 #[inline]
2220 unsafe fn encode(
2221 self,
2222 encoder: &mut fidl::encoding::Encoder<'_, D>,
2223 offset: usize,
2224 _depth: fidl::encoding::Depth,
2225 ) -> fidl::Result<()> {
2226 encoder.debug_check_bounds::<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest>(
2227 offset,
2228 );
2229 fidl::encoding::Encode::<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest, D>::encode(
2231 (
2232 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.pool_id),
2233 <fidl::encoding::Vector<BufferRange, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.offsets),
2234 ),
2235 encoder, offset, _depth
2236 )
2237 }
2238 }
2239 unsafe impl<
2240 D: fidl::encoding::ResourceDialect,
2241 T0: fidl::encoding::Encode<u64, D>,
2242 T1: fidl::encoding::Encode<fidl::encoding::Vector<BufferRange, 64>, D>,
2243 > fidl::encoding::Encode<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest, D>
2244 for (T0, T1)
2245 {
2246 #[inline]
2247 unsafe fn encode(
2248 self,
2249 encoder: &mut fidl::encoding::Encoder<'_, D>,
2250 offset: usize,
2251 depth: fidl::encoding::Depth,
2252 ) -> fidl::Result<()> {
2253 encoder.debug_check_bounds::<PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest>(
2254 offset,
2255 );
2256 self.0.encode(encoder, offset + 0, depth)?;
2260 self.1.encode(encoder, offset + 8, depth)?;
2261 Ok(())
2262 }
2263 }
2264
2265 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2266 for PrimaryAddPerformanceCounterBufferOffsetsToPoolRequest
2267 {
2268 #[inline(always)]
2269 fn new_empty() -> Self {
2270 Self {
2271 pool_id: fidl::new_empty!(u64, D),
2272 offsets: fidl::new_empty!(fidl::encoding::Vector<BufferRange, 64>, D),
2273 }
2274 }
2275
2276 #[inline]
2277 unsafe fn decode(
2278 &mut self,
2279 decoder: &mut fidl::encoding::Decoder<'_, D>,
2280 offset: usize,
2281 _depth: fidl::encoding::Depth,
2282 ) -> fidl::Result<()> {
2283 decoder.debug_check_bounds::<Self>(offset);
2284 fidl::decode!(u64, D, &mut self.pool_id, decoder, offset + 0, _depth)?;
2286 fidl::decode!(fidl::encoding::Vector<BufferRange, 64>, D, &mut self.offsets, decoder, offset + 8, _depth)?;
2287 Ok(())
2288 }
2289 }
2290
2291 impl fidl::encoding::ValueTypeMarker for PrimaryBufferRangeOp2Request {
2292 type Borrowed<'a> = &'a Self;
2293 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2294 value
2295 }
2296 }
2297
2298 unsafe impl fidl::encoding::TypeMarker for PrimaryBufferRangeOp2Request {
2299 type Owned = Self;
2300
2301 #[inline(always)]
2302 fn inline_align(_context: fidl::encoding::Context) -> usize {
2303 8
2304 }
2305
2306 #[inline(always)]
2307 fn inline_size(_context: fidl::encoding::Context) -> usize {
2308 32
2309 }
2310 }
2311
2312 unsafe impl<D: fidl::encoding::ResourceDialect>
2313 fidl::encoding::Encode<PrimaryBufferRangeOp2Request, D> for &PrimaryBufferRangeOp2Request
2314 {
2315 #[inline]
2316 unsafe fn encode(
2317 self,
2318 encoder: &mut fidl::encoding::Encoder<'_, D>,
2319 offset: usize,
2320 _depth: fidl::encoding::Depth,
2321 ) -> fidl::Result<()> {
2322 encoder.debug_check_bounds::<PrimaryBufferRangeOp2Request>(offset);
2323 fidl::encoding::Encode::<PrimaryBufferRangeOp2Request, D>::encode(
2325 (
2326 <BufferOp as fidl::encoding::ValueTypeMarker>::borrow(&self.op),
2327 <BufferRange as fidl::encoding::ValueTypeMarker>::borrow(&self.range),
2328 ),
2329 encoder,
2330 offset,
2331 _depth,
2332 )
2333 }
2334 }
2335 unsafe impl<
2336 D: fidl::encoding::ResourceDialect,
2337 T0: fidl::encoding::Encode<BufferOp, D>,
2338 T1: fidl::encoding::Encode<BufferRange, D>,
2339 > fidl::encoding::Encode<PrimaryBufferRangeOp2Request, D> for (T0, T1)
2340 {
2341 #[inline]
2342 unsafe fn encode(
2343 self,
2344 encoder: &mut fidl::encoding::Encoder<'_, D>,
2345 offset: usize,
2346 depth: fidl::encoding::Depth,
2347 ) -> fidl::Result<()> {
2348 encoder.debug_check_bounds::<PrimaryBufferRangeOp2Request>(offset);
2349 unsafe {
2352 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2353 (ptr as *mut u64).write_unaligned(0);
2354 }
2355 self.0.encode(encoder, offset + 0, depth)?;
2357 self.1.encode(encoder, offset + 8, depth)?;
2358 Ok(())
2359 }
2360 }
2361
2362 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2363 for PrimaryBufferRangeOp2Request
2364 {
2365 #[inline(always)]
2366 fn new_empty() -> Self {
2367 Self { op: fidl::new_empty!(BufferOp, D), range: fidl::new_empty!(BufferRange, D) }
2368 }
2369
2370 #[inline]
2371 unsafe fn decode(
2372 &mut self,
2373 decoder: &mut fidl::encoding::Decoder<'_, D>,
2374 offset: usize,
2375 _depth: fidl::encoding::Depth,
2376 ) -> fidl::Result<()> {
2377 decoder.debug_check_bounds::<Self>(offset);
2378 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2380 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2381 let mask = 0xffffffff00000000u64;
2382 let maskedval = padval & mask;
2383 if maskedval != 0 {
2384 return Err(fidl::Error::NonZeroPadding {
2385 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2386 });
2387 }
2388 fidl::decode!(BufferOp, D, &mut self.op, decoder, offset + 0, _depth)?;
2389 fidl::decode!(BufferRange, D, &mut self.range, decoder, offset + 8, _depth)?;
2390 Ok(())
2391 }
2392 }
2393
2394 impl fidl::encoding::ValueTypeMarker for PrimaryClearPerformanceCountersRequest {
2395 type Borrowed<'a> = &'a Self;
2396 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2397 value
2398 }
2399 }
2400
2401 unsafe impl fidl::encoding::TypeMarker for PrimaryClearPerformanceCountersRequest {
2402 type Owned = Self;
2403
2404 #[inline(always)]
2405 fn inline_align(_context: fidl::encoding::Context) -> usize {
2406 8
2407 }
2408
2409 #[inline(always)]
2410 fn inline_size(_context: fidl::encoding::Context) -> usize {
2411 16
2412 }
2413 }
2414
2415 unsafe impl<D: fidl::encoding::ResourceDialect>
2416 fidl::encoding::Encode<PrimaryClearPerformanceCountersRequest, D>
2417 for &PrimaryClearPerformanceCountersRequest
2418 {
2419 #[inline]
2420 unsafe fn encode(
2421 self,
2422 encoder: &mut fidl::encoding::Encoder<'_, D>,
2423 offset: usize,
2424 _depth: fidl::encoding::Depth,
2425 ) -> fidl::Result<()> {
2426 encoder.debug_check_bounds::<PrimaryClearPerformanceCountersRequest>(offset);
2427 fidl::encoding::Encode::<PrimaryClearPerformanceCountersRequest, D>::encode(
2429 (<fidl::encoding::Vector<u64, 64> as fidl::encoding::ValueTypeMarker>::borrow(
2430 &self.counters,
2431 ),),
2432 encoder,
2433 offset,
2434 _depth,
2435 )
2436 }
2437 }
2438 unsafe impl<
2439 D: fidl::encoding::ResourceDialect,
2440 T0: fidl::encoding::Encode<fidl::encoding::Vector<u64, 64>, D>,
2441 > fidl::encoding::Encode<PrimaryClearPerformanceCountersRequest, D> for (T0,)
2442 {
2443 #[inline]
2444 unsafe fn encode(
2445 self,
2446 encoder: &mut fidl::encoding::Encoder<'_, D>,
2447 offset: usize,
2448 depth: fidl::encoding::Depth,
2449 ) -> fidl::Result<()> {
2450 encoder.debug_check_bounds::<PrimaryClearPerformanceCountersRequest>(offset);
2451 self.0.encode(encoder, offset + 0, depth)?;
2455 Ok(())
2456 }
2457 }
2458
2459 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2460 for PrimaryClearPerformanceCountersRequest
2461 {
2462 #[inline(always)]
2463 fn new_empty() -> Self {
2464 Self { counters: fidl::new_empty!(fidl::encoding::Vector<u64, 64>, D) }
2465 }
2466
2467 #[inline]
2468 unsafe fn decode(
2469 &mut self,
2470 decoder: &mut fidl::encoding::Decoder<'_, D>,
2471 offset: usize,
2472 _depth: fidl::encoding::Depth,
2473 ) -> fidl::Result<()> {
2474 decoder.debug_check_bounds::<Self>(offset);
2475 fidl::decode!(fidl::encoding::Vector<u64, 64>, D, &mut self.counters, decoder, offset + 0, _depth)?;
2477 Ok(())
2478 }
2479 }
2480
2481 impl fidl::encoding::ValueTypeMarker for PrimaryCreateContext2Request {
2482 type Borrowed<'a> = &'a Self;
2483 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2484 value
2485 }
2486 }
2487
2488 unsafe impl fidl::encoding::TypeMarker for PrimaryCreateContext2Request {
2489 type Owned = Self;
2490
2491 #[inline(always)]
2492 fn inline_align(_context: fidl::encoding::Context) -> usize {
2493 8
2494 }
2495
2496 #[inline(always)]
2497 fn inline_size(_context: fidl::encoding::Context) -> usize {
2498 16
2499 }
2500 }
2501
2502 unsafe impl<D: fidl::encoding::ResourceDialect>
2503 fidl::encoding::Encode<PrimaryCreateContext2Request, D> for &PrimaryCreateContext2Request
2504 {
2505 #[inline]
2506 unsafe fn encode(
2507 self,
2508 encoder: &mut fidl::encoding::Encoder<'_, D>,
2509 offset: usize,
2510 _depth: fidl::encoding::Depth,
2511 ) -> fidl::Result<()> {
2512 encoder.debug_check_bounds::<PrimaryCreateContext2Request>(offset);
2513 fidl::encoding::Encode::<PrimaryCreateContext2Request, D>::encode(
2515 (
2516 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
2517 <Priority as fidl::encoding::ValueTypeMarker>::borrow(&self.priority),
2518 ),
2519 encoder,
2520 offset,
2521 _depth,
2522 )
2523 }
2524 }
2525 unsafe impl<
2526 D: fidl::encoding::ResourceDialect,
2527 T0: fidl::encoding::Encode<u32, D>,
2528 T1: fidl::encoding::Encode<Priority, D>,
2529 > fidl::encoding::Encode<PrimaryCreateContext2Request, D> for (T0, T1)
2530 {
2531 #[inline]
2532 unsafe fn encode(
2533 self,
2534 encoder: &mut fidl::encoding::Encoder<'_, D>,
2535 offset: usize,
2536 depth: fidl::encoding::Depth,
2537 ) -> fidl::Result<()> {
2538 encoder.debug_check_bounds::<PrimaryCreateContext2Request>(offset);
2539 unsafe {
2542 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2543 (ptr as *mut u64).write_unaligned(0);
2544 }
2545 self.0.encode(encoder, offset + 0, depth)?;
2547 self.1.encode(encoder, offset + 8, depth)?;
2548 Ok(())
2549 }
2550 }
2551
2552 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2553 for PrimaryCreateContext2Request
2554 {
2555 #[inline(always)]
2556 fn new_empty() -> Self {
2557 Self { context_id: fidl::new_empty!(u32, D), priority: fidl::new_empty!(Priority, D) }
2558 }
2559
2560 #[inline]
2561 unsafe fn decode(
2562 &mut self,
2563 decoder: &mut fidl::encoding::Decoder<'_, D>,
2564 offset: usize,
2565 _depth: fidl::encoding::Depth,
2566 ) -> fidl::Result<()> {
2567 decoder.debug_check_bounds::<Self>(offset);
2568 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2570 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2571 let mask = 0xffffffff00000000u64;
2572 let maskedval = padval & mask;
2573 if maskedval != 0 {
2574 return Err(fidl::Error::NonZeroPadding {
2575 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2576 });
2577 }
2578 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
2579 fidl::decode!(Priority, D, &mut self.priority, decoder, offset + 8, _depth)?;
2580 Ok(())
2581 }
2582 }
2583
2584 impl fidl::encoding::ValueTypeMarker for PrimaryCreateContextRequest {
2585 type Borrowed<'a> = &'a Self;
2586 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2587 value
2588 }
2589 }
2590
2591 unsafe impl fidl::encoding::TypeMarker for PrimaryCreateContextRequest {
2592 type Owned = Self;
2593
2594 #[inline(always)]
2595 fn inline_align(_context: fidl::encoding::Context) -> usize {
2596 4
2597 }
2598
2599 #[inline(always)]
2600 fn inline_size(_context: fidl::encoding::Context) -> usize {
2601 4
2602 }
2603 #[inline(always)]
2604 fn encode_is_copy() -> bool {
2605 true
2606 }
2607
2608 #[inline(always)]
2609 fn decode_is_copy() -> bool {
2610 true
2611 }
2612 }
2613
2614 unsafe impl<D: fidl::encoding::ResourceDialect>
2615 fidl::encoding::Encode<PrimaryCreateContextRequest, D> for &PrimaryCreateContextRequest
2616 {
2617 #[inline]
2618 unsafe fn encode(
2619 self,
2620 encoder: &mut fidl::encoding::Encoder<'_, D>,
2621 offset: usize,
2622 _depth: fidl::encoding::Depth,
2623 ) -> fidl::Result<()> {
2624 encoder.debug_check_bounds::<PrimaryCreateContextRequest>(offset);
2625 unsafe {
2626 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2628 (buf_ptr as *mut PrimaryCreateContextRequest)
2629 .write_unaligned((self as *const PrimaryCreateContextRequest).read());
2630 }
2633 Ok(())
2634 }
2635 }
2636 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
2637 fidl::encoding::Encode<PrimaryCreateContextRequest, D> for (T0,)
2638 {
2639 #[inline]
2640 unsafe fn encode(
2641 self,
2642 encoder: &mut fidl::encoding::Encoder<'_, D>,
2643 offset: usize,
2644 depth: fidl::encoding::Depth,
2645 ) -> fidl::Result<()> {
2646 encoder.debug_check_bounds::<PrimaryCreateContextRequest>(offset);
2647 self.0.encode(encoder, offset + 0, depth)?;
2651 Ok(())
2652 }
2653 }
2654
2655 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2656 for PrimaryCreateContextRequest
2657 {
2658 #[inline(always)]
2659 fn new_empty() -> Self {
2660 Self { context_id: fidl::new_empty!(u32, D) }
2661 }
2662
2663 #[inline]
2664 unsafe fn decode(
2665 &mut self,
2666 decoder: &mut fidl::encoding::Decoder<'_, D>,
2667 offset: usize,
2668 _depth: fidl::encoding::Depth,
2669 ) -> fidl::Result<()> {
2670 decoder.debug_check_bounds::<Self>(offset);
2671 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2672 unsafe {
2675 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2676 }
2677 Ok(())
2678 }
2679 }
2680
2681 impl fidl::encoding::ValueTypeMarker for PrimaryDestroyContextRequest {
2682 type Borrowed<'a> = &'a Self;
2683 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2684 value
2685 }
2686 }
2687
2688 unsafe impl fidl::encoding::TypeMarker for PrimaryDestroyContextRequest {
2689 type Owned = Self;
2690
2691 #[inline(always)]
2692 fn inline_align(_context: fidl::encoding::Context) -> usize {
2693 4
2694 }
2695
2696 #[inline(always)]
2697 fn inline_size(_context: fidl::encoding::Context) -> usize {
2698 4
2699 }
2700 #[inline(always)]
2701 fn encode_is_copy() -> bool {
2702 true
2703 }
2704
2705 #[inline(always)]
2706 fn decode_is_copy() -> bool {
2707 true
2708 }
2709 }
2710
2711 unsafe impl<D: fidl::encoding::ResourceDialect>
2712 fidl::encoding::Encode<PrimaryDestroyContextRequest, D> for &PrimaryDestroyContextRequest
2713 {
2714 #[inline]
2715 unsafe fn encode(
2716 self,
2717 encoder: &mut fidl::encoding::Encoder<'_, D>,
2718 offset: usize,
2719 _depth: fidl::encoding::Depth,
2720 ) -> fidl::Result<()> {
2721 encoder.debug_check_bounds::<PrimaryDestroyContextRequest>(offset);
2722 unsafe {
2723 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2725 (buf_ptr as *mut PrimaryDestroyContextRequest)
2726 .write_unaligned((self as *const PrimaryDestroyContextRequest).read());
2727 }
2730 Ok(())
2731 }
2732 }
2733 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
2734 fidl::encoding::Encode<PrimaryDestroyContextRequest, D> for (T0,)
2735 {
2736 #[inline]
2737 unsafe fn encode(
2738 self,
2739 encoder: &mut fidl::encoding::Encoder<'_, D>,
2740 offset: usize,
2741 depth: fidl::encoding::Depth,
2742 ) -> fidl::Result<()> {
2743 encoder.debug_check_bounds::<PrimaryDestroyContextRequest>(offset);
2744 self.0.encode(encoder, offset + 0, depth)?;
2748 Ok(())
2749 }
2750 }
2751
2752 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2753 for PrimaryDestroyContextRequest
2754 {
2755 #[inline(always)]
2756 fn new_empty() -> Self {
2757 Self { context_id: fidl::new_empty!(u32, D) }
2758 }
2759
2760 #[inline]
2761 unsafe fn decode(
2762 &mut self,
2763 decoder: &mut fidl::encoding::Decoder<'_, D>,
2764 offset: usize,
2765 _depth: fidl::encoding::Depth,
2766 ) -> fidl::Result<()> {
2767 decoder.debug_check_bounds::<Self>(offset);
2768 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2769 unsafe {
2772 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2773 }
2774 Ok(())
2775 }
2776 }
2777
2778 impl fidl::encoding::ValueTypeMarker for PrimaryDumpPerformanceCountersRequest {
2779 type Borrowed<'a> = &'a Self;
2780 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2781 value
2782 }
2783 }
2784
2785 unsafe impl fidl::encoding::TypeMarker for PrimaryDumpPerformanceCountersRequest {
2786 type Owned = Self;
2787
2788 #[inline(always)]
2789 fn inline_align(_context: fidl::encoding::Context) -> usize {
2790 8
2791 }
2792
2793 #[inline(always)]
2794 fn inline_size(_context: fidl::encoding::Context) -> usize {
2795 16
2796 }
2797 }
2798
2799 unsafe impl<D: fidl::encoding::ResourceDialect>
2800 fidl::encoding::Encode<PrimaryDumpPerformanceCountersRequest, D>
2801 for &PrimaryDumpPerformanceCountersRequest
2802 {
2803 #[inline]
2804 unsafe fn encode(
2805 self,
2806 encoder: &mut fidl::encoding::Encoder<'_, D>,
2807 offset: usize,
2808 _depth: fidl::encoding::Depth,
2809 ) -> fidl::Result<()> {
2810 encoder.debug_check_bounds::<PrimaryDumpPerformanceCountersRequest>(offset);
2811 unsafe {
2812 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2814 (buf_ptr as *mut PrimaryDumpPerformanceCountersRequest)
2815 .write_unaligned((self as *const PrimaryDumpPerformanceCountersRequest).read());
2816 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2819 let padding_mask = 0xffffffff00000000u64;
2820 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2821 }
2822 Ok(())
2823 }
2824 }
2825 unsafe impl<
2826 D: fidl::encoding::ResourceDialect,
2827 T0: fidl::encoding::Encode<u64, D>,
2828 T1: fidl::encoding::Encode<u32, D>,
2829 > fidl::encoding::Encode<PrimaryDumpPerformanceCountersRequest, D> for (T0, T1)
2830 {
2831 #[inline]
2832 unsafe fn encode(
2833 self,
2834 encoder: &mut fidl::encoding::Encoder<'_, D>,
2835 offset: usize,
2836 depth: fidl::encoding::Depth,
2837 ) -> fidl::Result<()> {
2838 encoder.debug_check_bounds::<PrimaryDumpPerformanceCountersRequest>(offset);
2839 unsafe {
2842 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2843 (ptr as *mut u64).write_unaligned(0);
2844 }
2845 self.0.encode(encoder, offset + 0, depth)?;
2847 self.1.encode(encoder, offset + 8, depth)?;
2848 Ok(())
2849 }
2850 }
2851
2852 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2853 for PrimaryDumpPerformanceCountersRequest
2854 {
2855 #[inline(always)]
2856 fn new_empty() -> Self {
2857 Self { pool_id: fidl::new_empty!(u64, D), trigger_id: fidl::new_empty!(u32, D) }
2858 }
2859
2860 #[inline]
2861 unsafe fn decode(
2862 &mut self,
2863 decoder: &mut fidl::encoding::Decoder<'_, D>,
2864 offset: usize,
2865 _depth: fidl::encoding::Depth,
2866 ) -> fidl::Result<()> {
2867 decoder.debug_check_bounds::<Self>(offset);
2868 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2869 let ptr = unsafe { buf_ptr.offset(8) };
2871 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2872 let mask = 0xffffffff00000000u64;
2873 let maskedval = padval & mask;
2874 if maskedval != 0 {
2875 return Err(fidl::Error::NonZeroPadding {
2876 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2877 });
2878 }
2879 unsafe {
2881 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2882 }
2883 Ok(())
2884 }
2885 }
2886
2887 impl fidl::encoding::ValueTypeMarker for PrimaryEnablePerformanceCountersRequest {
2888 type Borrowed<'a> = &'a Self;
2889 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2890 value
2891 }
2892 }
2893
2894 unsafe impl fidl::encoding::TypeMarker for PrimaryEnablePerformanceCountersRequest {
2895 type Owned = Self;
2896
2897 #[inline(always)]
2898 fn inline_align(_context: fidl::encoding::Context) -> usize {
2899 8
2900 }
2901
2902 #[inline(always)]
2903 fn inline_size(_context: fidl::encoding::Context) -> usize {
2904 16
2905 }
2906 }
2907
2908 unsafe impl<D: fidl::encoding::ResourceDialect>
2909 fidl::encoding::Encode<PrimaryEnablePerformanceCountersRequest, D>
2910 for &PrimaryEnablePerformanceCountersRequest
2911 {
2912 #[inline]
2913 unsafe fn encode(
2914 self,
2915 encoder: &mut fidl::encoding::Encoder<'_, D>,
2916 offset: usize,
2917 _depth: fidl::encoding::Depth,
2918 ) -> fidl::Result<()> {
2919 encoder.debug_check_bounds::<PrimaryEnablePerformanceCountersRequest>(offset);
2920 fidl::encoding::Encode::<PrimaryEnablePerformanceCountersRequest, D>::encode(
2922 (<fidl::encoding::Vector<u64, 64> as fidl::encoding::ValueTypeMarker>::borrow(
2923 &self.counters,
2924 ),),
2925 encoder,
2926 offset,
2927 _depth,
2928 )
2929 }
2930 }
2931 unsafe impl<
2932 D: fidl::encoding::ResourceDialect,
2933 T0: fidl::encoding::Encode<fidl::encoding::Vector<u64, 64>, D>,
2934 > fidl::encoding::Encode<PrimaryEnablePerformanceCountersRequest, D> for (T0,)
2935 {
2936 #[inline]
2937 unsafe fn encode(
2938 self,
2939 encoder: &mut fidl::encoding::Encoder<'_, D>,
2940 offset: usize,
2941 depth: fidl::encoding::Depth,
2942 ) -> fidl::Result<()> {
2943 encoder.debug_check_bounds::<PrimaryEnablePerformanceCountersRequest>(offset);
2944 self.0.encode(encoder, offset + 0, depth)?;
2948 Ok(())
2949 }
2950 }
2951
2952 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2953 for PrimaryEnablePerformanceCountersRequest
2954 {
2955 #[inline(always)]
2956 fn new_empty() -> Self {
2957 Self { counters: fidl::new_empty!(fidl::encoding::Vector<u64, 64>, D) }
2958 }
2959
2960 #[inline]
2961 unsafe fn decode(
2962 &mut self,
2963 decoder: &mut fidl::encoding::Decoder<'_, D>,
2964 offset: usize,
2965 _depth: fidl::encoding::Depth,
2966 ) -> fidl::Result<()> {
2967 decoder.debug_check_bounds::<Self>(offset);
2968 fidl::decode!(fidl::encoding::Vector<u64, 64>, D, &mut self.counters, decoder, offset + 0, _depth)?;
2970 Ok(())
2971 }
2972 }
2973
2974 impl fidl::encoding::ValueTypeMarker for PrimaryExecuteCommandRequest {
2975 type Borrowed<'a> = &'a Self;
2976 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2977 value
2978 }
2979 }
2980
2981 unsafe impl fidl::encoding::TypeMarker for PrimaryExecuteCommandRequest {
2982 type Owned = Self;
2983
2984 #[inline(always)]
2985 fn inline_align(_context: fidl::encoding::Context) -> usize {
2986 8
2987 }
2988
2989 #[inline(always)]
2990 fn inline_size(_context: fidl::encoding::Context) -> usize {
2991 80
2992 }
2993 }
2994
2995 unsafe impl<D: fidl::encoding::ResourceDialect>
2996 fidl::encoding::Encode<PrimaryExecuteCommandRequest, D> for &PrimaryExecuteCommandRequest
2997 {
2998 #[inline]
2999 unsafe fn encode(
3000 self,
3001 encoder: &mut fidl::encoding::Encoder<'_, D>,
3002 offset: usize,
3003 _depth: fidl::encoding::Depth,
3004 ) -> fidl::Result<()> {
3005 encoder.debug_check_bounds::<PrimaryExecuteCommandRequest>(offset);
3006 fidl::encoding::Encode::<PrimaryExecuteCommandRequest, D>::encode(
3008 (
3009 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
3010 <fidl::encoding::UnboundedVector<BufferRange> as fidl::encoding::ValueTypeMarker>::borrow(&self.resources),
3011 <fidl::encoding::UnboundedVector<CommandBuffer> as fidl::encoding::ValueTypeMarker>::borrow(&self.command_buffers),
3012 <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.wait_semaphores),
3013 <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.signal_semaphores),
3014 <CommandBufferFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.flags),
3015 ),
3016 encoder, offset, _depth
3017 )
3018 }
3019 }
3020 unsafe impl<
3021 D: fidl::encoding::ResourceDialect,
3022 T0: fidl::encoding::Encode<u32, D>,
3023 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<BufferRange>, D>,
3024 T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<CommandBuffer>, D>,
3025 T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
3026 T4: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
3027 T5: fidl::encoding::Encode<CommandBufferFlags, D>,
3028 > fidl::encoding::Encode<PrimaryExecuteCommandRequest, D> for (T0, T1, T2, T3, T4, T5)
3029 {
3030 #[inline]
3031 unsafe fn encode(
3032 self,
3033 encoder: &mut fidl::encoding::Encoder<'_, D>,
3034 offset: usize,
3035 depth: fidl::encoding::Depth,
3036 ) -> fidl::Result<()> {
3037 encoder.debug_check_bounds::<PrimaryExecuteCommandRequest>(offset);
3038 unsafe {
3041 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3042 (ptr as *mut u64).write_unaligned(0);
3043 }
3044 self.0.encode(encoder, offset + 0, depth)?;
3046 self.1.encode(encoder, offset + 8, depth)?;
3047 self.2.encode(encoder, offset + 24, depth)?;
3048 self.3.encode(encoder, offset + 40, depth)?;
3049 self.4.encode(encoder, offset + 56, depth)?;
3050 self.5.encode(encoder, offset + 72, depth)?;
3051 Ok(())
3052 }
3053 }
3054
3055 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3056 for PrimaryExecuteCommandRequest
3057 {
3058 #[inline(always)]
3059 fn new_empty() -> Self {
3060 Self {
3061 context_id: fidl::new_empty!(u32, D),
3062 resources: fidl::new_empty!(fidl::encoding::UnboundedVector<BufferRange>, D),
3063 command_buffers: fidl::new_empty!(
3064 fidl::encoding::UnboundedVector<CommandBuffer>,
3065 D
3066 ),
3067 wait_semaphores: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D),
3068 signal_semaphores: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D),
3069 flags: fidl::new_empty!(CommandBufferFlags, D),
3070 }
3071 }
3072
3073 #[inline]
3074 unsafe fn decode(
3075 &mut self,
3076 decoder: &mut fidl::encoding::Decoder<'_, D>,
3077 offset: usize,
3078 _depth: fidl::encoding::Depth,
3079 ) -> fidl::Result<()> {
3080 decoder.debug_check_bounds::<Self>(offset);
3081 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3083 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3084 let mask = 0xffffffff00000000u64;
3085 let maskedval = padval & mask;
3086 if maskedval != 0 {
3087 return Err(fidl::Error::NonZeroPadding {
3088 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3089 });
3090 }
3091 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
3092 fidl::decode!(
3093 fidl::encoding::UnboundedVector<BufferRange>,
3094 D,
3095 &mut self.resources,
3096 decoder,
3097 offset + 8,
3098 _depth
3099 )?;
3100 fidl::decode!(
3101 fidl::encoding::UnboundedVector<CommandBuffer>,
3102 D,
3103 &mut self.command_buffers,
3104 decoder,
3105 offset + 24,
3106 _depth
3107 )?;
3108 fidl::decode!(
3109 fidl::encoding::UnboundedVector<u64>,
3110 D,
3111 &mut self.wait_semaphores,
3112 decoder,
3113 offset + 40,
3114 _depth
3115 )?;
3116 fidl::decode!(
3117 fidl::encoding::UnboundedVector<u64>,
3118 D,
3119 &mut self.signal_semaphores,
3120 decoder,
3121 offset + 56,
3122 _depth
3123 )?;
3124 fidl::decode!(CommandBufferFlags, D, &mut self.flags, decoder, offset + 72, _depth)?;
3125 Ok(())
3126 }
3127 }
3128
3129 impl fidl::encoding::ValueTypeMarker for PrimaryExecuteImmediateCommandsRequest {
3130 type Borrowed<'a> = &'a Self;
3131 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3132 value
3133 }
3134 }
3135
3136 unsafe impl fidl::encoding::TypeMarker for PrimaryExecuteImmediateCommandsRequest {
3137 type Owned = Self;
3138
3139 #[inline(always)]
3140 fn inline_align(_context: fidl::encoding::Context) -> usize {
3141 8
3142 }
3143
3144 #[inline(always)]
3145 fn inline_size(_context: fidl::encoding::Context) -> usize {
3146 40
3147 }
3148 }
3149
3150 unsafe impl<D: fidl::encoding::ResourceDialect>
3151 fidl::encoding::Encode<PrimaryExecuteImmediateCommandsRequest, D>
3152 for &PrimaryExecuteImmediateCommandsRequest
3153 {
3154 #[inline]
3155 unsafe fn encode(
3156 self,
3157 encoder: &mut fidl::encoding::Encoder<'_, D>,
3158 offset: usize,
3159 _depth: fidl::encoding::Depth,
3160 ) -> fidl::Result<()> {
3161 encoder.debug_check_bounds::<PrimaryExecuteImmediateCommandsRequest>(offset);
3162 fidl::encoding::Encode::<PrimaryExecuteImmediateCommandsRequest, D>::encode(
3164 (
3165 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
3166 <fidl::encoding::Vector<u8, 2048> as fidl::encoding::ValueTypeMarker>::borrow(&self.command_data),
3167 <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.semaphores),
3168 ),
3169 encoder, offset, _depth
3170 )
3171 }
3172 }
3173 unsafe impl<
3174 D: fidl::encoding::ResourceDialect,
3175 T0: fidl::encoding::Encode<u32, D>,
3176 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 2048>, D>,
3177 T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
3178 > fidl::encoding::Encode<PrimaryExecuteImmediateCommandsRequest, D> for (T0, T1, T2)
3179 {
3180 #[inline]
3181 unsafe fn encode(
3182 self,
3183 encoder: &mut fidl::encoding::Encoder<'_, D>,
3184 offset: usize,
3185 depth: fidl::encoding::Depth,
3186 ) -> fidl::Result<()> {
3187 encoder.debug_check_bounds::<PrimaryExecuteImmediateCommandsRequest>(offset);
3188 unsafe {
3191 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3192 (ptr as *mut u64).write_unaligned(0);
3193 }
3194 self.0.encode(encoder, offset + 0, depth)?;
3196 self.1.encode(encoder, offset + 8, depth)?;
3197 self.2.encode(encoder, offset + 24, depth)?;
3198 Ok(())
3199 }
3200 }
3201
3202 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3203 for PrimaryExecuteImmediateCommandsRequest
3204 {
3205 #[inline(always)]
3206 fn new_empty() -> Self {
3207 Self {
3208 context_id: fidl::new_empty!(u32, D),
3209 command_data: fidl::new_empty!(fidl::encoding::Vector<u8, 2048>, D),
3210 semaphores: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D),
3211 }
3212 }
3213
3214 #[inline]
3215 unsafe fn decode(
3216 &mut self,
3217 decoder: &mut fidl::encoding::Decoder<'_, D>,
3218 offset: usize,
3219 _depth: fidl::encoding::Depth,
3220 ) -> fidl::Result<()> {
3221 decoder.debug_check_bounds::<Self>(offset);
3222 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3224 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3225 let mask = 0xffffffff00000000u64;
3226 let maskedval = padval & mask;
3227 if maskedval != 0 {
3228 return Err(fidl::Error::NonZeroPadding {
3229 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3230 });
3231 }
3232 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
3233 fidl::decode!(fidl::encoding::Vector<u8, 2048>, D, &mut self.command_data, decoder, offset + 8, _depth)?;
3234 fidl::decode!(
3235 fidl::encoding::UnboundedVector<u64>,
3236 D,
3237 &mut self.semaphores,
3238 decoder,
3239 offset + 24,
3240 _depth
3241 )?;
3242 Ok(())
3243 }
3244 }
3245
3246 impl fidl::encoding::ValueTypeMarker for PrimaryExecuteInlineCommandsRequest {
3247 type Borrowed<'a> = &'a Self;
3248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3249 value
3250 }
3251 }
3252
3253 unsafe impl fidl::encoding::TypeMarker for PrimaryExecuteInlineCommandsRequest {
3254 type Owned = Self;
3255
3256 #[inline(always)]
3257 fn inline_align(_context: fidl::encoding::Context) -> usize {
3258 8
3259 }
3260
3261 #[inline(always)]
3262 fn inline_size(_context: fidl::encoding::Context) -> usize {
3263 24
3264 }
3265 }
3266
3267 unsafe impl<D: fidl::encoding::ResourceDialect>
3268 fidl::encoding::Encode<PrimaryExecuteInlineCommandsRequest, D>
3269 for &PrimaryExecuteInlineCommandsRequest
3270 {
3271 #[inline]
3272 unsafe fn encode(
3273 self,
3274 encoder: &mut fidl::encoding::Encoder<'_, D>,
3275 offset: usize,
3276 _depth: fidl::encoding::Depth,
3277 ) -> fidl::Result<()> {
3278 encoder.debug_check_bounds::<PrimaryExecuteInlineCommandsRequest>(offset);
3279 fidl::encoding::Encode::<PrimaryExecuteInlineCommandsRequest, D>::encode(
3281 (
3282 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.context_id),
3283 <fidl::encoding::UnboundedVector<InlineCommand> as fidl::encoding::ValueTypeMarker>::borrow(&self.commands),
3284 ),
3285 encoder, offset, _depth
3286 )
3287 }
3288 }
3289 unsafe impl<
3290 D: fidl::encoding::ResourceDialect,
3291 T0: fidl::encoding::Encode<u32, D>,
3292 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<InlineCommand>, D>,
3293 > fidl::encoding::Encode<PrimaryExecuteInlineCommandsRequest, D> for (T0, T1)
3294 {
3295 #[inline]
3296 unsafe fn encode(
3297 self,
3298 encoder: &mut fidl::encoding::Encoder<'_, D>,
3299 offset: usize,
3300 depth: fidl::encoding::Depth,
3301 ) -> fidl::Result<()> {
3302 encoder.debug_check_bounds::<PrimaryExecuteInlineCommandsRequest>(offset);
3303 unsafe {
3306 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3307 (ptr as *mut u64).write_unaligned(0);
3308 }
3309 self.0.encode(encoder, offset + 0, depth)?;
3311 self.1.encode(encoder, offset + 8, depth)?;
3312 Ok(())
3313 }
3314 }
3315
3316 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3317 for PrimaryExecuteInlineCommandsRequest
3318 {
3319 #[inline(always)]
3320 fn new_empty() -> Self {
3321 Self {
3322 context_id: fidl::new_empty!(u32, D),
3323 commands: fidl::new_empty!(fidl::encoding::UnboundedVector<InlineCommand>, D),
3324 }
3325 }
3326
3327 #[inline]
3328 unsafe fn decode(
3329 &mut self,
3330 decoder: &mut fidl::encoding::Decoder<'_, D>,
3331 offset: usize,
3332 _depth: fidl::encoding::Depth,
3333 ) -> fidl::Result<()> {
3334 decoder.debug_check_bounds::<Self>(offset);
3335 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3337 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3338 let mask = 0xffffffff00000000u64;
3339 let maskedval = padval & mask;
3340 if maskedval != 0 {
3341 return Err(fidl::Error::NonZeroPadding {
3342 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3343 });
3344 }
3345 fidl::decode!(u32, D, &mut self.context_id, decoder, offset + 0, _depth)?;
3346 fidl::decode!(
3347 fidl::encoding::UnboundedVector<InlineCommand>,
3348 D,
3349 &mut self.commands,
3350 decoder,
3351 offset + 8,
3352 _depth
3353 )?;
3354 Ok(())
3355 }
3356 }
3357
3358 impl fidl::encoding::ValueTypeMarker for PrimaryIsPerformanceCounterAccessAllowedResponse {
3359 type Borrowed<'a> = &'a Self;
3360 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3361 value
3362 }
3363 }
3364
3365 unsafe impl fidl::encoding::TypeMarker for PrimaryIsPerformanceCounterAccessAllowedResponse {
3366 type Owned = Self;
3367
3368 #[inline(always)]
3369 fn inline_align(_context: fidl::encoding::Context) -> usize {
3370 1
3371 }
3372
3373 #[inline(always)]
3374 fn inline_size(_context: fidl::encoding::Context) -> usize {
3375 1
3376 }
3377 }
3378
3379 unsafe impl<D: fidl::encoding::ResourceDialect>
3380 fidl::encoding::Encode<PrimaryIsPerformanceCounterAccessAllowedResponse, D>
3381 for &PrimaryIsPerformanceCounterAccessAllowedResponse
3382 {
3383 #[inline]
3384 unsafe fn encode(
3385 self,
3386 encoder: &mut fidl::encoding::Encoder<'_, D>,
3387 offset: usize,
3388 _depth: fidl::encoding::Depth,
3389 ) -> fidl::Result<()> {
3390 encoder.debug_check_bounds::<PrimaryIsPerformanceCounterAccessAllowedResponse>(offset);
3391 fidl::encoding::Encode::<PrimaryIsPerformanceCounterAccessAllowedResponse, D>::encode(
3393 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
3394 encoder,
3395 offset,
3396 _depth,
3397 )
3398 }
3399 }
3400 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
3401 fidl::encoding::Encode<PrimaryIsPerformanceCounterAccessAllowedResponse, D> for (T0,)
3402 {
3403 #[inline]
3404 unsafe fn encode(
3405 self,
3406 encoder: &mut fidl::encoding::Encoder<'_, D>,
3407 offset: usize,
3408 depth: fidl::encoding::Depth,
3409 ) -> fidl::Result<()> {
3410 encoder.debug_check_bounds::<PrimaryIsPerformanceCounterAccessAllowedResponse>(offset);
3411 self.0.encode(encoder, offset + 0, depth)?;
3415 Ok(())
3416 }
3417 }
3418
3419 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3420 for PrimaryIsPerformanceCounterAccessAllowedResponse
3421 {
3422 #[inline(always)]
3423 fn new_empty() -> Self {
3424 Self { enabled: fidl::new_empty!(bool, D) }
3425 }
3426
3427 #[inline]
3428 unsafe fn decode(
3429 &mut self,
3430 decoder: &mut fidl::encoding::Decoder<'_, D>,
3431 offset: usize,
3432 _depth: fidl::encoding::Depth,
3433 ) -> fidl::Result<()> {
3434 decoder.debug_check_bounds::<Self>(offset);
3435 fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
3437 Ok(())
3438 }
3439 }
3440
3441 impl fidl::encoding::ValueTypeMarker for PrimaryOnNotifyMemoryImportedRequest {
3442 type Borrowed<'a> = &'a Self;
3443 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3444 value
3445 }
3446 }
3447
3448 unsafe impl fidl::encoding::TypeMarker for PrimaryOnNotifyMemoryImportedRequest {
3449 type Owned = Self;
3450
3451 #[inline(always)]
3452 fn inline_align(_context: fidl::encoding::Context) -> usize {
3453 8
3454 }
3455
3456 #[inline(always)]
3457 fn inline_size(_context: fidl::encoding::Context) -> usize {
3458 8
3459 }
3460 #[inline(always)]
3461 fn encode_is_copy() -> bool {
3462 true
3463 }
3464
3465 #[inline(always)]
3466 fn decode_is_copy() -> bool {
3467 true
3468 }
3469 }
3470
3471 unsafe impl<D: fidl::encoding::ResourceDialect>
3472 fidl::encoding::Encode<PrimaryOnNotifyMemoryImportedRequest, D>
3473 for &PrimaryOnNotifyMemoryImportedRequest
3474 {
3475 #[inline]
3476 unsafe fn encode(
3477 self,
3478 encoder: &mut fidl::encoding::Encoder<'_, D>,
3479 offset: usize,
3480 _depth: fidl::encoding::Depth,
3481 ) -> fidl::Result<()> {
3482 encoder.debug_check_bounds::<PrimaryOnNotifyMemoryImportedRequest>(offset);
3483 unsafe {
3484 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3486 (buf_ptr as *mut PrimaryOnNotifyMemoryImportedRequest)
3487 .write_unaligned((self as *const PrimaryOnNotifyMemoryImportedRequest).read());
3488 }
3491 Ok(())
3492 }
3493 }
3494 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3495 fidl::encoding::Encode<PrimaryOnNotifyMemoryImportedRequest, D> for (T0,)
3496 {
3497 #[inline]
3498 unsafe fn encode(
3499 self,
3500 encoder: &mut fidl::encoding::Encoder<'_, D>,
3501 offset: usize,
3502 depth: fidl::encoding::Depth,
3503 ) -> fidl::Result<()> {
3504 encoder.debug_check_bounds::<PrimaryOnNotifyMemoryImportedRequest>(offset);
3505 self.0.encode(encoder, offset + 0, depth)?;
3509 Ok(())
3510 }
3511 }
3512
3513 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3514 for PrimaryOnNotifyMemoryImportedRequest
3515 {
3516 #[inline(always)]
3517 fn new_empty() -> Self {
3518 Self { bytes: fidl::new_empty!(u64, D) }
3519 }
3520
3521 #[inline]
3522 unsafe fn decode(
3523 &mut self,
3524 decoder: &mut fidl::encoding::Decoder<'_, D>,
3525 offset: usize,
3526 _depth: fidl::encoding::Depth,
3527 ) -> fidl::Result<()> {
3528 decoder.debug_check_bounds::<Self>(offset);
3529 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3530 unsafe {
3533 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3534 }
3535 Ok(())
3536 }
3537 }
3538
3539 impl fidl::encoding::ValueTypeMarker for PrimaryOnNotifyMessagesConsumedRequest {
3540 type Borrowed<'a> = &'a Self;
3541 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3542 value
3543 }
3544 }
3545
3546 unsafe impl fidl::encoding::TypeMarker for PrimaryOnNotifyMessagesConsumedRequest {
3547 type Owned = Self;
3548
3549 #[inline(always)]
3550 fn inline_align(_context: fidl::encoding::Context) -> usize {
3551 8
3552 }
3553
3554 #[inline(always)]
3555 fn inline_size(_context: fidl::encoding::Context) -> usize {
3556 8
3557 }
3558 #[inline(always)]
3559 fn encode_is_copy() -> bool {
3560 true
3561 }
3562
3563 #[inline(always)]
3564 fn decode_is_copy() -> bool {
3565 true
3566 }
3567 }
3568
3569 unsafe impl<D: fidl::encoding::ResourceDialect>
3570 fidl::encoding::Encode<PrimaryOnNotifyMessagesConsumedRequest, D>
3571 for &PrimaryOnNotifyMessagesConsumedRequest
3572 {
3573 #[inline]
3574 unsafe fn encode(
3575 self,
3576 encoder: &mut fidl::encoding::Encoder<'_, D>,
3577 offset: usize,
3578 _depth: fidl::encoding::Depth,
3579 ) -> fidl::Result<()> {
3580 encoder.debug_check_bounds::<PrimaryOnNotifyMessagesConsumedRequest>(offset);
3581 unsafe {
3582 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3584 (buf_ptr as *mut PrimaryOnNotifyMessagesConsumedRequest).write_unaligned(
3585 (self as *const PrimaryOnNotifyMessagesConsumedRequest).read(),
3586 );
3587 }
3590 Ok(())
3591 }
3592 }
3593 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3594 fidl::encoding::Encode<PrimaryOnNotifyMessagesConsumedRequest, D> for (T0,)
3595 {
3596 #[inline]
3597 unsafe fn encode(
3598 self,
3599 encoder: &mut fidl::encoding::Encoder<'_, D>,
3600 offset: usize,
3601 depth: fidl::encoding::Depth,
3602 ) -> fidl::Result<()> {
3603 encoder.debug_check_bounds::<PrimaryOnNotifyMessagesConsumedRequest>(offset);
3604 self.0.encode(encoder, offset + 0, depth)?;
3608 Ok(())
3609 }
3610 }
3611
3612 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3613 for PrimaryOnNotifyMessagesConsumedRequest
3614 {
3615 #[inline(always)]
3616 fn new_empty() -> Self {
3617 Self { count: fidl::new_empty!(u64, D) }
3618 }
3619
3620 #[inline]
3621 unsafe fn decode(
3622 &mut self,
3623 decoder: &mut fidl::encoding::Decoder<'_, D>,
3624 offset: usize,
3625 _depth: fidl::encoding::Depth,
3626 ) -> fidl::Result<()> {
3627 decoder.debug_check_bounds::<Self>(offset);
3628 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3629 unsafe {
3632 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3633 }
3634 Ok(())
3635 }
3636 }
3637
3638 impl fidl::encoding::ValueTypeMarker for PrimaryReleaseObjectRequest {
3639 type Borrowed<'a> = &'a Self;
3640 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3641 value
3642 }
3643 }
3644
3645 unsafe impl fidl::encoding::TypeMarker for PrimaryReleaseObjectRequest {
3646 type Owned = Self;
3647
3648 #[inline(always)]
3649 fn inline_align(_context: fidl::encoding::Context) -> usize {
3650 8
3651 }
3652
3653 #[inline(always)]
3654 fn inline_size(_context: fidl::encoding::Context) -> usize {
3655 16
3656 }
3657 }
3658
3659 unsafe impl<D: fidl::encoding::ResourceDialect>
3660 fidl::encoding::Encode<PrimaryReleaseObjectRequest, D> for &PrimaryReleaseObjectRequest
3661 {
3662 #[inline]
3663 unsafe fn encode(
3664 self,
3665 encoder: &mut fidl::encoding::Encoder<'_, D>,
3666 offset: usize,
3667 _depth: fidl::encoding::Depth,
3668 ) -> fidl::Result<()> {
3669 encoder.debug_check_bounds::<PrimaryReleaseObjectRequest>(offset);
3670 fidl::encoding::Encode::<PrimaryReleaseObjectRequest, D>::encode(
3672 (
3673 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.object_id),
3674 <ObjectType as fidl::encoding::ValueTypeMarker>::borrow(&self.object_type),
3675 ),
3676 encoder,
3677 offset,
3678 _depth,
3679 )
3680 }
3681 }
3682 unsafe impl<
3683 D: fidl::encoding::ResourceDialect,
3684 T0: fidl::encoding::Encode<u64, D>,
3685 T1: fidl::encoding::Encode<ObjectType, D>,
3686 > fidl::encoding::Encode<PrimaryReleaseObjectRequest, D> for (T0, T1)
3687 {
3688 #[inline]
3689 unsafe fn encode(
3690 self,
3691 encoder: &mut fidl::encoding::Encoder<'_, D>,
3692 offset: usize,
3693 depth: fidl::encoding::Depth,
3694 ) -> fidl::Result<()> {
3695 encoder.debug_check_bounds::<PrimaryReleaseObjectRequest>(offset);
3696 unsafe {
3699 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3700 (ptr as *mut u64).write_unaligned(0);
3701 }
3702 self.0.encode(encoder, offset + 0, depth)?;
3704 self.1.encode(encoder, offset + 8, depth)?;
3705 Ok(())
3706 }
3707 }
3708
3709 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3710 for PrimaryReleaseObjectRequest
3711 {
3712 #[inline(always)]
3713 fn new_empty() -> Self {
3714 Self {
3715 object_id: fidl::new_empty!(u64, D),
3716 object_type: fidl::new_empty!(ObjectType, D),
3717 }
3718 }
3719
3720 #[inline]
3721 unsafe fn decode(
3722 &mut self,
3723 decoder: &mut fidl::encoding::Decoder<'_, D>,
3724 offset: usize,
3725 _depth: fidl::encoding::Depth,
3726 ) -> fidl::Result<()> {
3727 decoder.debug_check_bounds::<Self>(offset);
3728 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3730 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3731 let mask = 0xffffffff00000000u64;
3732 let maskedval = padval & mask;
3733 if maskedval != 0 {
3734 return Err(fidl::Error::NonZeroPadding {
3735 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3736 });
3737 }
3738 fidl::decode!(u64, D, &mut self.object_id, decoder, offset + 0, _depth)?;
3739 fidl::decode!(ObjectType, D, &mut self.object_type, decoder, offset + 8, _depth)?;
3740 Ok(())
3741 }
3742 }
3743
3744 impl fidl::encoding::ValueTypeMarker for PrimaryReleasePerformanceCounterBufferPoolRequest {
3745 type Borrowed<'a> = &'a Self;
3746 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3747 value
3748 }
3749 }
3750
3751 unsafe impl fidl::encoding::TypeMarker for PrimaryReleasePerformanceCounterBufferPoolRequest {
3752 type Owned = Self;
3753
3754 #[inline(always)]
3755 fn inline_align(_context: fidl::encoding::Context) -> usize {
3756 8
3757 }
3758
3759 #[inline(always)]
3760 fn inline_size(_context: fidl::encoding::Context) -> usize {
3761 8
3762 }
3763 #[inline(always)]
3764 fn encode_is_copy() -> bool {
3765 true
3766 }
3767
3768 #[inline(always)]
3769 fn decode_is_copy() -> bool {
3770 true
3771 }
3772 }
3773
3774 unsafe impl<D: fidl::encoding::ResourceDialect>
3775 fidl::encoding::Encode<PrimaryReleasePerformanceCounterBufferPoolRequest, D>
3776 for &PrimaryReleasePerformanceCounterBufferPoolRequest
3777 {
3778 #[inline]
3779 unsafe fn encode(
3780 self,
3781 encoder: &mut fidl::encoding::Encoder<'_, D>,
3782 offset: usize,
3783 _depth: fidl::encoding::Depth,
3784 ) -> fidl::Result<()> {
3785 encoder.debug_check_bounds::<PrimaryReleasePerformanceCounterBufferPoolRequest>(offset);
3786 unsafe {
3787 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3789 (buf_ptr as *mut PrimaryReleasePerformanceCounterBufferPoolRequest)
3790 .write_unaligned(
3791 (self as *const PrimaryReleasePerformanceCounterBufferPoolRequest).read(),
3792 );
3793 }
3796 Ok(())
3797 }
3798 }
3799 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3800 fidl::encoding::Encode<PrimaryReleasePerformanceCounterBufferPoolRequest, D> for (T0,)
3801 {
3802 #[inline]
3803 unsafe fn encode(
3804 self,
3805 encoder: &mut fidl::encoding::Encoder<'_, D>,
3806 offset: usize,
3807 depth: fidl::encoding::Depth,
3808 ) -> fidl::Result<()> {
3809 encoder.debug_check_bounds::<PrimaryReleasePerformanceCounterBufferPoolRequest>(offset);
3810 self.0.encode(encoder, offset + 0, depth)?;
3814 Ok(())
3815 }
3816 }
3817
3818 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3819 for PrimaryReleasePerformanceCounterBufferPoolRequest
3820 {
3821 #[inline(always)]
3822 fn new_empty() -> Self {
3823 Self { pool_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, 8);
3839 }
3840 Ok(())
3841 }
3842 }
3843
3844 impl fidl::encoding::ValueTypeMarker for PrimaryRemovePerformanceCounterBufferFromPoolRequest {
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 PrimaryRemovePerformanceCounterBufferFromPoolRequest {
3852 type Owned = Self;
3853
3854 #[inline(always)]
3855 fn inline_align(_context: fidl::encoding::Context) -> usize {
3856 8
3857 }
3858
3859 #[inline(always)]
3860 fn inline_size(_context: fidl::encoding::Context) -> usize {
3861 16
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<PrimaryRemovePerformanceCounterBufferFromPoolRequest, D>
3876 for &PrimaryRemovePerformanceCounterBufferFromPoolRequest
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
3886 .debug_check_bounds::<PrimaryRemovePerformanceCounterBufferFromPoolRequest>(offset);
3887 unsafe {
3888 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3890 (buf_ptr as *mut PrimaryRemovePerformanceCounterBufferFromPoolRequest)
3891 .write_unaligned(
3892 (self as *const PrimaryRemovePerformanceCounterBufferFromPoolRequest)
3893 .read(),
3894 );
3895 }
3898 Ok(())
3899 }
3900 }
3901 unsafe impl<
3902 D: fidl::encoding::ResourceDialect,
3903 T0: fidl::encoding::Encode<u64, D>,
3904 T1: fidl::encoding::Encode<u64, D>,
3905 > fidl::encoding::Encode<PrimaryRemovePerformanceCounterBufferFromPoolRequest, D> for (T0, T1)
3906 {
3907 #[inline]
3908 unsafe fn encode(
3909 self,
3910 encoder: &mut fidl::encoding::Encoder<'_, D>,
3911 offset: usize,
3912 depth: fidl::encoding::Depth,
3913 ) -> fidl::Result<()> {
3914 encoder
3915 .debug_check_bounds::<PrimaryRemovePerformanceCounterBufferFromPoolRequest>(offset);
3916 self.0.encode(encoder, offset + 0, depth)?;
3920 self.1.encode(encoder, offset + 8, depth)?;
3921 Ok(())
3922 }
3923 }
3924
3925 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3926 for PrimaryRemovePerformanceCounterBufferFromPoolRequest
3927 {
3928 #[inline(always)]
3929 fn new_empty() -> Self {
3930 Self { pool_id: fidl::new_empty!(u64, D), buffer_id: fidl::new_empty!(u64, D) }
3931 }
3932
3933 #[inline]
3934 unsafe fn decode(
3935 &mut self,
3936 decoder: &mut fidl::encoding::Decoder<'_, D>,
3937 offset: usize,
3938 _depth: fidl::encoding::Depth,
3939 ) -> fidl::Result<()> {
3940 decoder.debug_check_bounds::<Self>(offset);
3941 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3942 unsafe {
3945 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
3946 }
3947 Ok(())
3948 }
3949 }
3950
3951 impl fidl::encoding::ValueTypeMarker for TestDevice2GetUnitTestStatusResponse {
3952 type Borrowed<'a> = &'a Self;
3953 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3954 value
3955 }
3956 }
3957
3958 unsafe impl fidl::encoding::TypeMarker for TestDevice2GetUnitTestStatusResponse {
3959 type Owned = Self;
3960
3961 #[inline(always)]
3962 fn inline_align(_context: fidl::encoding::Context) -> usize {
3963 4
3964 }
3965
3966 #[inline(always)]
3967 fn inline_size(_context: fidl::encoding::Context) -> usize {
3968 4
3969 }
3970 #[inline(always)]
3971 fn encode_is_copy() -> bool {
3972 true
3973 }
3974
3975 #[inline(always)]
3976 fn decode_is_copy() -> bool {
3977 true
3978 }
3979 }
3980
3981 unsafe impl<D: fidl::encoding::ResourceDialect>
3982 fidl::encoding::Encode<TestDevice2GetUnitTestStatusResponse, D>
3983 for &TestDevice2GetUnitTestStatusResponse
3984 {
3985 #[inline]
3986 unsafe fn encode(
3987 self,
3988 encoder: &mut fidl::encoding::Encoder<'_, D>,
3989 offset: usize,
3990 _depth: fidl::encoding::Depth,
3991 ) -> fidl::Result<()> {
3992 encoder.debug_check_bounds::<TestDevice2GetUnitTestStatusResponse>(offset);
3993 unsafe {
3994 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3996 (buf_ptr as *mut TestDevice2GetUnitTestStatusResponse)
3997 .write_unaligned((self as *const TestDevice2GetUnitTestStatusResponse).read());
3998 }
4001 Ok(())
4002 }
4003 }
4004 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
4005 fidl::encoding::Encode<TestDevice2GetUnitTestStatusResponse, D> for (T0,)
4006 {
4007 #[inline]
4008 unsafe fn encode(
4009 self,
4010 encoder: &mut fidl::encoding::Encoder<'_, D>,
4011 offset: usize,
4012 depth: fidl::encoding::Depth,
4013 ) -> fidl::Result<()> {
4014 encoder.debug_check_bounds::<TestDevice2GetUnitTestStatusResponse>(offset);
4015 self.0.encode(encoder, offset + 0, depth)?;
4019 Ok(())
4020 }
4021 }
4022
4023 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4024 for TestDevice2GetUnitTestStatusResponse
4025 {
4026 #[inline(always)]
4027 fn new_empty() -> Self {
4028 Self { status: fidl::new_empty!(i32, D) }
4029 }
4030
4031 #[inline]
4032 unsafe fn decode(
4033 &mut self,
4034 decoder: &mut fidl::encoding::Decoder<'_, D>,
4035 offset: usize,
4036 _depth: fidl::encoding::Depth,
4037 ) -> fidl::Result<()> {
4038 decoder.debug_check_bounds::<Self>(offset);
4039 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4040 unsafe {
4043 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
4044 }
4045 Ok(())
4046 }
4047 }
4048
4049 impl fidl::encoding::ValueTypeMarker for TestDeviceGetUnitTestStatusResponse {
4050 type Borrowed<'a> = &'a Self;
4051 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4052 value
4053 }
4054 }
4055
4056 unsafe impl fidl::encoding::TypeMarker for TestDeviceGetUnitTestStatusResponse {
4057 type Owned = Self;
4058
4059 #[inline(always)]
4060 fn inline_align(_context: fidl::encoding::Context) -> usize {
4061 4
4062 }
4063
4064 #[inline(always)]
4065 fn inline_size(_context: fidl::encoding::Context) -> usize {
4066 4
4067 }
4068 #[inline(always)]
4069 fn encode_is_copy() -> bool {
4070 true
4071 }
4072
4073 #[inline(always)]
4074 fn decode_is_copy() -> bool {
4075 true
4076 }
4077 }
4078
4079 unsafe impl<D: fidl::encoding::ResourceDialect>
4080 fidl::encoding::Encode<TestDeviceGetUnitTestStatusResponse, D>
4081 for &TestDeviceGetUnitTestStatusResponse
4082 {
4083 #[inline]
4084 unsafe fn encode(
4085 self,
4086 encoder: &mut fidl::encoding::Encoder<'_, D>,
4087 offset: usize,
4088 _depth: fidl::encoding::Depth,
4089 ) -> fidl::Result<()> {
4090 encoder.debug_check_bounds::<TestDeviceGetUnitTestStatusResponse>(offset);
4091 unsafe {
4092 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4094 (buf_ptr as *mut TestDeviceGetUnitTestStatusResponse)
4095 .write_unaligned((self as *const TestDeviceGetUnitTestStatusResponse).read());
4096 }
4099 Ok(())
4100 }
4101 }
4102 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
4103 fidl::encoding::Encode<TestDeviceGetUnitTestStatusResponse, D> for (T0,)
4104 {
4105 #[inline]
4106 unsafe fn encode(
4107 self,
4108 encoder: &mut fidl::encoding::Encoder<'_, D>,
4109 offset: usize,
4110 depth: fidl::encoding::Depth,
4111 ) -> fidl::Result<()> {
4112 encoder.debug_check_bounds::<TestDeviceGetUnitTestStatusResponse>(offset);
4113 self.0.encode(encoder, offset + 0, depth)?;
4117 Ok(())
4118 }
4119 }
4120
4121 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4122 for TestDeviceGetUnitTestStatusResponse
4123 {
4124 #[inline(always)]
4125 fn new_empty() -> Self {
4126 Self { status: fidl::new_empty!(i32, D) }
4127 }
4128
4129 #[inline]
4130 unsafe fn decode(
4131 &mut self,
4132 decoder: &mut fidl::encoding::Decoder<'_, D>,
4133 offset: usize,
4134 _depth: fidl::encoding::Depth,
4135 ) -> fidl::Result<()> {
4136 decoder.debug_check_bounds::<Self>(offset);
4137 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4138 unsafe {
4141 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
4142 }
4143 Ok(())
4144 }
4145 }
4146
4147 impl IcdInfo {
4148 #[inline(always)]
4149 fn max_ordinal_present(&self) -> u64 {
4150 if let Some(_) = self.flags {
4151 return 2;
4152 }
4153 if let Some(_) = self.component_url {
4154 return 1;
4155 }
4156 0
4157 }
4158 }
4159
4160 impl fidl::encoding::ValueTypeMarker for IcdInfo {
4161 type Borrowed<'a> = &'a Self;
4162 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4163 value
4164 }
4165 }
4166
4167 unsafe impl fidl::encoding::TypeMarker for IcdInfo {
4168 type Owned = Self;
4169
4170 #[inline(always)]
4171 fn inline_align(_context: fidl::encoding::Context) -> usize {
4172 8
4173 }
4174
4175 #[inline(always)]
4176 fn inline_size(_context: fidl::encoding::Context) -> usize {
4177 16
4178 }
4179 }
4180
4181 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IcdInfo, D> for &IcdInfo {
4182 unsafe fn encode(
4183 self,
4184 encoder: &mut fidl::encoding::Encoder<'_, D>,
4185 offset: usize,
4186 mut depth: fidl::encoding::Depth,
4187 ) -> fidl::Result<()> {
4188 encoder.debug_check_bounds::<IcdInfo>(offset);
4189 let max_ordinal: u64 = self.max_ordinal_present();
4191 encoder.write_num(max_ordinal, offset);
4192 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4193 if max_ordinal == 0 {
4195 return Ok(());
4196 }
4197 depth.increment()?;
4198 let envelope_size = 8;
4199 let bytes_len = max_ordinal as usize * envelope_size;
4200 #[allow(unused_variables)]
4201 let offset = encoder.out_of_line_offset(bytes_len);
4202 let mut _prev_end_offset: usize = 0;
4203 if 1 > max_ordinal {
4204 return Ok(());
4205 }
4206
4207 let cur_offset: usize = (1 - 1) * envelope_size;
4210
4211 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4213
4214 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4219 self.component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4220 encoder, offset + cur_offset, depth
4221 )?;
4222
4223 _prev_end_offset = cur_offset + envelope_size;
4224 if 2 > max_ordinal {
4225 return Ok(());
4226 }
4227
4228 let cur_offset: usize = (2 - 1) * envelope_size;
4231
4232 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4234
4235 fidl::encoding::encode_in_envelope_optional::<IcdFlags, D>(
4240 self.flags.as_ref().map(<IcdFlags as fidl::encoding::ValueTypeMarker>::borrow),
4241 encoder,
4242 offset + cur_offset,
4243 depth,
4244 )?;
4245
4246 _prev_end_offset = cur_offset + envelope_size;
4247
4248 Ok(())
4249 }
4250 }
4251
4252 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IcdInfo {
4253 #[inline(always)]
4254 fn new_empty() -> Self {
4255 Self::default()
4256 }
4257
4258 unsafe fn decode(
4259 &mut self,
4260 decoder: &mut fidl::encoding::Decoder<'_, D>,
4261 offset: usize,
4262 mut depth: fidl::encoding::Depth,
4263 ) -> fidl::Result<()> {
4264 decoder.debug_check_bounds::<Self>(offset);
4265 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4266 None => return Err(fidl::Error::NotNullable),
4267 Some(len) => len,
4268 };
4269 if len == 0 {
4271 return Ok(());
4272 };
4273 depth.increment()?;
4274 let envelope_size = 8;
4275 let bytes_len = len * envelope_size;
4276 let offset = decoder.out_of_line_offset(bytes_len)?;
4277 let mut _next_ordinal_to_read = 0;
4279 let mut next_offset = offset;
4280 let end_offset = offset + bytes_len;
4281 _next_ordinal_to_read += 1;
4282 if next_offset >= end_offset {
4283 return Ok(());
4284 }
4285
4286 while _next_ordinal_to_read < 1 {
4288 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4289 _next_ordinal_to_read += 1;
4290 next_offset += envelope_size;
4291 }
4292
4293 let next_out_of_line = decoder.next_out_of_line();
4294 let handles_before = decoder.remaining_handles();
4295 if let Some((inlined, num_bytes, num_handles)) =
4296 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4297 {
4298 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4299 if inlined != (member_inline_size <= 4) {
4300 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4301 }
4302 let inner_offset;
4303 let mut inner_depth = depth.clone();
4304 if inlined {
4305 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4306 inner_offset = next_offset;
4307 } else {
4308 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4309 inner_depth.increment()?;
4310 }
4311 let val_ref = self.component_url.get_or_insert_with(|| {
4312 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4313 });
4314 fidl::decode!(
4315 fidl::encoding::BoundedString<4096>,
4316 D,
4317 val_ref,
4318 decoder,
4319 inner_offset,
4320 inner_depth
4321 )?;
4322 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4323 {
4324 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4325 }
4326 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4327 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4328 }
4329 }
4330
4331 next_offset += envelope_size;
4332 _next_ordinal_to_read += 1;
4333 if next_offset >= end_offset {
4334 return Ok(());
4335 }
4336
4337 while _next_ordinal_to_read < 2 {
4339 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4340 _next_ordinal_to_read += 1;
4341 next_offset += envelope_size;
4342 }
4343
4344 let next_out_of_line = decoder.next_out_of_line();
4345 let handles_before = decoder.remaining_handles();
4346 if let Some((inlined, num_bytes, num_handles)) =
4347 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4348 {
4349 let member_inline_size =
4350 <IcdFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4351 if inlined != (member_inline_size <= 4) {
4352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4353 }
4354 let inner_offset;
4355 let mut inner_depth = depth.clone();
4356 if inlined {
4357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4358 inner_offset = next_offset;
4359 } else {
4360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4361 inner_depth.increment()?;
4362 }
4363 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(IcdFlags, D));
4364 fidl::decode!(IcdFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
4365 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4366 {
4367 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4368 }
4369 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4370 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4371 }
4372 }
4373
4374 next_offset += envelope_size;
4375
4376 while next_offset < end_offset {
4378 _next_ordinal_to_read += 1;
4379 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4380 next_offset += envelope_size;
4381 }
4382
4383 Ok(())
4384 }
4385 }
4386
4387 impl InlineCommand {
4388 #[inline(always)]
4389 fn max_ordinal_present(&self) -> u64 {
4390 if let Some(_) = self.semaphores {
4391 return 2;
4392 }
4393 if let Some(_) = self.data {
4394 return 1;
4395 }
4396 0
4397 }
4398 }
4399
4400 impl fidl::encoding::ValueTypeMarker for InlineCommand {
4401 type Borrowed<'a> = &'a Self;
4402 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4403 value
4404 }
4405 }
4406
4407 unsafe impl fidl::encoding::TypeMarker for InlineCommand {
4408 type Owned = Self;
4409
4410 #[inline(always)]
4411 fn inline_align(_context: fidl::encoding::Context) -> usize {
4412 8
4413 }
4414
4415 #[inline(always)]
4416 fn inline_size(_context: fidl::encoding::Context) -> usize {
4417 16
4418 }
4419 }
4420
4421 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InlineCommand, D>
4422 for &InlineCommand
4423 {
4424 unsafe fn encode(
4425 self,
4426 encoder: &mut fidl::encoding::Encoder<'_, D>,
4427 offset: usize,
4428 mut depth: fidl::encoding::Depth,
4429 ) -> fidl::Result<()> {
4430 encoder.debug_check_bounds::<InlineCommand>(offset);
4431 let max_ordinal: u64 = self.max_ordinal_present();
4433 encoder.write_num(max_ordinal, offset);
4434 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4435 if max_ordinal == 0 {
4437 return Ok(());
4438 }
4439 depth.increment()?;
4440 let envelope_size = 8;
4441 let bytes_len = max_ordinal as usize * envelope_size;
4442 #[allow(unused_variables)]
4443 let offset = encoder.out_of_line_offset(bytes_len);
4444 let mut _prev_end_offset: usize = 0;
4445 if 1 > max_ordinal {
4446 return Ok(());
4447 }
4448
4449 let cur_offset: usize = (1 - 1) * envelope_size;
4452
4453 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4455
4456 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4461 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4462 encoder, offset + cur_offset, depth
4463 )?;
4464
4465 _prev_end_offset = cur_offset + envelope_size;
4466 if 2 > max_ordinal {
4467 return Ok(());
4468 }
4469
4470 let cur_offset: usize = (2 - 1) * envelope_size;
4473
4474 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4476
4477 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
4482 self.semaphores.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
4483 encoder, offset + cur_offset, depth
4484 )?;
4485
4486 _prev_end_offset = cur_offset + envelope_size;
4487
4488 Ok(())
4489 }
4490 }
4491
4492 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InlineCommand {
4493 #[inline(always)]
4494 fn new_empty() -> Self {
4495 Self::default()
4496 }
4497
4498 unsafe fn decode(
4499 &mut self,
4500 decoder: &mut fidl::encoding::Decoder<'_, D>,
4501 offset: usize,
4502 mut depth: fidl::encoding::Depth,
4503 ) -> fidl::Result<()> {
4504 decoder.debug_check_bounds::<Self>(offset);
4505 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4506 None => return Err(fidl::Error::NotNullable),
4507 Some(len) => len,
4508 };
4509 if len == 0 {
4511 return Ok(());
4512 };
4513 depth.increment()?;
4514 let envelope_size = 8;
4515 let bytes_len = len * envelope_size;
4516 let offset = decoder.out_of_line_offset(bytes_len)?;
4517 let mut _next_ordinal_to_read = 0;
4519 let mut next_offset = offset;
4520 let end_offset = offset + bytes_len;
4521 _next_ordinal_to_read += 1;
4522 if next_offset >= end_offset {
4523 return Ok(());
4524 }
4525
4526 while _next_ordinal_to_read < 1 {
4528 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4529 _next_ordinal_to_read += 1;
4530 next_offset += envelope_size;
4531 }
4532
4533 let next_out_of_line = decoder.next_out_of_line();
4534 let handles_before = decoder.remaining_handles();
4535 if let Some((inlined, num_bytes, num_handles)) =
4536 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4537 {
4538 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4539 if inlined != (member_inline_size <= 4) {
4540 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4541 }
4542 let inner_offset;
4543 let mut inner_depth = depth.clone();
4544 if inlined {
4545 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4546 inner_offset = next_offset;
4547 } else {
4548 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4549 inner_depth.increment()?;
4550 }
4551 let val_ref = self.data.get_or_insert_with(|| {
4552 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4553 });
4554 fidl::decode!(
4555 fidl::encoding::UnboundedVector<u8>,
4556 D,
4557 val_ref,
4558 decoder,
4559 inner_offset,
4560 inner_depth
4561 )?;
4562 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4563 {
4564 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4565 }
4566 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4567 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4568 }
4569 }
4570
4571 next_offset += envelope_size;
4572 _next_ordinal_to_read += 1;
4573 if next_offset >= end_offset {
4574 return Ok(());
4575 }
4576
4577 while _next_ordinal_to_read < 2 {
4579 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4580 _next_ordinal_to_read += 1;
4581 next_offset += envelope_size;
4582 }
4583
4584 let next_out_of_line = decoder.next_out_of_line();
4585 let handles_before = decoder.remaining_handles();
4586 if let Some((inlined, num_bytes, num_handles)) =
4587 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4588 {
4589 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4590 if inlined != (member_inline_size <= 4) {
4591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4592 }
4593 let inner_offset;
4594 let mut inner_depth = depth.clone();
4595 if inlined {
4596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4597 inner_offset = next_offset;
4598 } else {
4599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4600 inner_depth.increment()?;
4601 }
4602 let val_ref = self.semaphores.get_or_insert_with(|| {
4603 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
4604 });
4605 fidl::decode!(
4606 fidl::encoding::UnboundedVector<u64>,
4607 D,
4608 val_ref,
4609 decoder,
4610 inner_offset,
4611 inner_depth
4612 )?;
4613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4614 {
4615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4616 }
4617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4619 }
4620 }
4621
4622 next_offset += envelope_size;
4623
4624 while next_offset < end_offset {
4626 _next_ordinal_to_read += 1;
4627 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4628 next_offset += envelope_size;
4629 }
4630
4631 Ok(())
4632 }
4633 }
4634
4635 impl PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest {
4636 #[inline(always)]
4637 fn max_ordinal_present(&self) -> u64 {
4638 if let Some(_) = self.flags {
4639 return 5;
4640 }
4641 if let Some(_) = self.timestamp {
4642 return 4;
4643 }
4644 if let Some(_) = self.buffer_offset {
4645 return 3;
4646 }
4647 if let Some(_) = self.buffer_id {
4648 return 2;
4649 }
4650 if let Some(_) = self.trigger_id {
4651 return 1;
4652 }
4653 0
4654 }
4655 }
4656
4657 impl fidl::encoding::ValueTypeMarker
4658 for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4659 {
4660 type Borrowed<'a> = &'a Self;
4661 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4662 value
4663 }
4664 }
4665
4666 unsafe impl fidl::encoding::TypeMarker
4667 for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4668 {
4669 type Owned = Self;
4670
4671 #[inline(always)]
4672 fn inline_align(_context: fidl::encoding::Context) -> usize {
4673 8
4674 }
4675
4676 #[inline(always)]
4677 fn inline_size(_context: fidl::encoding::Context) -> usize {
4678 16
4679 }
4680 }
4681
4682 unsafe impl<D: fidl::encoding::ResourceDialect>
4683 fidl::encoding::Encode<PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest, D>
4684 for &PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4685 {
4686 unsafe fn encode(
4687 self,
4688 encoder: &mut fidl::encoding::Encoder<'_, D>,
4689 offset: usize,
4690 mut depth: fidl::encoding::Depth,
4691 ) -> fidl::Result<()> {
4692 encoder.debug_check_bounds::<PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest>(offset);
4693 let max_ordinal: u64 = self.max_ordinal_present();
4695 encoder.write_num(max_ordinal, offset);
4696 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4697 if max_ordinal == 0 {
4699 return Ok(());
4700 }
4701 depth.increment()?;
4702 let envelope_size = 8;
4703 let bytes_len = max_ordinal as usize * envelope_size;
4704 #[allow(unused_variables)]
4705 let offset = encoder.out_of_line_offset(bytes_len);
4706 let mut _prev_end_offset: usize = 0;
4707 if 1 > max_ordinal {
4708 return Ok(());
4709 }
4710
4711 let cur_offset: usize = (1 - 1) * envelope_size;
4714
4715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4717
4718 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4723 self.trigger_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4724 encoder,
4725 offset + cur_offset,
4726 depth,
4727 )?;
4728
4729 _prev_end_offset = cur_offset + envelope_size;
4730 if 2 > max_ordinal {
4731 return Ok(());
4732 }
4733
4734 let cur_offset: usize = (2 - 1) * envelope_size;
4737
4738 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4740
4741 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4746 self.buffer_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4747 encoder,
4748 offset + cur_offset,
4749 depth,
4750 )?;
4751
4752 _prev_end_offset = cur_offset + envelope_size;
4753 if 3 > max_ordinal {
4754 return Ok(());
4755 }
4756
4757 let cur_offset: usize = (3 - 1) * envelope_size;
4760
4761 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4763
4764 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4769 self.buffer_offset.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4770 encoder,
4771 offset + cur_offset,
4772 depth,
4773 )?;
4774
4775 _prev_end_offset = cur_offset + envelope_size;
4776 if 4 > max_ordinal {
4777 return Ok(());
4778 }
4779
4780 let cur_offset: usize = (4 - 1) * envelope_size;
4783
4784 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4786
4787 fidl::encoding::encode_in_envelope_optional::<i64, D>(
4792 self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4793 encoder,
4794 offset + cur_offset,
4795 depth,
4796 )?;
4797
4798 _prev_end_offset = cur_offset + envelope_size;
4799 if 5 > max_ordinal {
4800 return Ok(());
4801 }
4802
4803 let cur_offset: usize = (5 - 1) * envelope_size;
4806
4807 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4809
4810 fidl::encoding::encode_in_envelope_optional::<ResultFlags, D>(
4815 self.flags.as_ref().map(<ResultFlags as fidl::encoding::ValueTypeMarker>::borrow),
4816 encoder,
4817 offset + cur_offset,
4818 depth,
4819 )?;
4820
4821 _prev_end_offset = cur_offset + envelope_size;
4822
4823 Ok(())
4824 }
4825 }
4826
4827 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4828 for PerformanceCounterEventsOnPerformanceCounterReadCompletedRequest
4829 {
4830 #[inline(always)]
4831 fn new_empty() -> Self {
4832 Self::default()
4833 }
4834
4835 unsafe fn decode(
4836 &mut self,
4837 decoder: &mut fidl::encoding::Decoder<'_, D>,
4838 offset: usize,
4839 mut depth: fidl::encoding::Depth,
4840 ) -> fidl::Result<()> {
4841 decoder.debug_check_bounds::<Self>(offset);
4842 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4843 None => return Err(fidl::Error::NotNullable),
4844 Some(len) => len,
4845 };
4846 if len == 0 {
4848 return Ok(());
4849 };
4850 depth.increment()?;
4851 let envelope_size = 8;
4852 let bytes_len = len * envelope_size;
4853 let offset = decoder.out_of_line_offset(bytes_len)?;
4854 let mut _next_ordinal_to_read = 0;
4856 let mut next_offset = offset;
4857 let end_offset = offset + bytes_len;
4858 _next_ordinal_to_read += 1;
4859 if next_offset >= end_offset {
4860 return Ok(());
4861 }
4862
4863 while _next_ordinal_to_read < 1 {
4865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4866 _next_ordinal_to_read += 1;
4867 next_offset += envelope_size;
4868 }
4869
4870 let next_out_of_line = decoder.next_out_of_line();
4871 let handles_before = decoder.remaining_handles();
4872 if let Some((inlined, num_bytes, num_handles)) =
4873 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4874 {
4875 let member_inline_size =
4876 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4877 if inlined != (member_inline_size <= 4) {
4878 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4879 }
4880 let inner_offset;
4881 let mut inner_depth = depth.clone();
4882 if inlined {
4883 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4884 inner_offset = next_offset;
4885 } else {
4886 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4887 inner_depth.increment()?;
4888 }
4889 let val_ref = self.trigger_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
4890 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4891 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4892 {
4893 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4894 }
4895 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4896 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4897 }
4898 }
4899
4900 next_offset += envelope_size;
4901 _next_ordinal_to_read += 1;
4902 if next_offset >= end_offset {
4903 return Ok(());
4904 }
4905
4906 while _next_ordinal_to_read < 2 {
4908 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4909 _next_ordinal_to_read += 1;
4910 next_offset += envelope_size;
4911 }
4912
4913 let next_out_of_line = decoder.next_out_of_line();
4914 let handles_before = decoder.remaining_handles();
4915 if let Some((inlined, num_bytes, num_handles)) =
4916 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4917 {
4918 let member_inline_size =
4919 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4920 if inlined != (member_inline_size <= 4) {
4921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4922 }
4923 let inner_offset;
4924 let mut inner_depth = depth.clone();
4925 if inlined {
4926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4927 inner_offset = next_offset;
4928 } else {
4929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4930 inner_depth.increment()?;
4931 }
4932 let val_ref = self.buffer_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4933 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4934 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4935 {
4936 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4937 }
4938 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4939 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4940 }
4941 }
4942
4943 next_offset += envelope_size;
4944 _next_ordinal_to_read += 1;
4945 if next_offset >= end_offset {
4946 return Ok(());
4947 }
4948
4949 while _next_ordinal_to_read < 3 {
4951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4952 _next_ordinal_to_read += 1;
4953 next_offset += envelope_size;
4954 }
4955
4956 let next_out_of_line = decoder.next_out_of_line();
4957 let handles_before = decoder.remaining_handles();
4958 if let Some((inlined, num_bytes, num_handles)) =
4959 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4960 {
4961 let member_inline_size =
4962 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4963 if inlined != (member_inline_size <= 4) {
4964 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4965 }
4966 let inner_offset;
4967 let mut inner_depth = depth.clone();
4968 if inlined {
4969 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4970 inner_offset = next_offset;
4971 } else {
4972 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4973 inner_depth.increment()?;
4974 }
4975 let val_ref = self.buffer_offset.get_or_insert_with(|| fidl::new_empty!(u32, D));
4976 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4977 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4978 {
4979 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4980 }
4981 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4982 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4983 }
4984 }
4985
4986 next_offset += envelope_size;
4987 _next_ordinal_to_read += 1;
4988 if next_offset >= end_offset {
4989 return Ok(());
4990 }
4991
4992 while _next_ordinal_to_read < 4 {
4994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4995 _next_ordinal_to_read += 1;
4996 next_offset += envelope_size;
4997 }
4998
4999 let next_out_of_line = decoder.next_out_of_line();
5000 let handles_before = decoder.remaining_handles();
5001 if let Some((inlined, num_bytes, num_handles)) =
5002 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5003 {
5004 let member_inline_size =
5005 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5006 if inlined != (member_inline_size <= 4) {
5007 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5008 }
5009 let inner_offset;
5010 let mut inner_depth = depth.clone();
5011 if inlined {
5012 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5013 inner_offset = next_offset;
5014 } else {
5015 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5016 inner_depth.increment()?;
5017 }
5018 let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
5019 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5020 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5021 {
5022 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5023 }
5024 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5025 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5026 }
5027 }
5028
5029 next_offset += envelope_size;
5030 _next_ordinal_to_read += 1;
5031 if next_offset >= end_offset {
5032 return Ok(());
5033 }
5034
5035 while _next_ordinal_to_read < 5 {
5037 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5038 _next_ordinal_to_read += 1;
5039 next_offset += envelope_size;
5040 }
5041
5042 let next_out_of_line = decoder.next_out_of_line();
5043 let handles_before = decoder.remaining_handles();
5044 if let Some((inlined, num_bytes, num_handles)) =
5045 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5046 {
5047 let member_inline_size =
5048 <ResultFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5049 if inlined != (member_inline_size <= 4) {
5050 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5051 }
5052 let inner_offset;
5053 let mut inner_depth = depth.clone();
5054 if inlined {
5055 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5056 inner_offset = next_offset;
5057 } else {
5058 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5059 inner_depth.increment()?;
5060 }
5061 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(ResultFlags, D));
5062 fidl::decode!(ResultFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
5063 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5064 {
5065 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5066 }
5067 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5068 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5069 }
5070 }
5071
5072 next_offset += envelope_size;
5073
5074 while next_offset < end_offset {
5076 _next_ordinal_to_read += 1;
5077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5078 next_offset += envelope_size;
5079 }
5080
5081 Ok(())
5082 }
5083 }
5084
5085 impl PowerElementProviderGetClockSpeedLevelRequest {
5086 #[inline(always)]
5087 fn max_ordinal_present(&self) -> u64 {
5088 if let Some(_) = self.allow_max {
5089 return 2;
5090 }
5091 if let Some(_) = self.hz {
5092 return 1;
5093 }
5094 0
5095 }
5096 }
5097
5098 impl fidl::encoding::ValueTypeMarker for PowerElementProviderGetClockSpeedLevelRequest {
5099 type Borrowed<'a> = &'a Self;
5100 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5101 value
5102 }
5103 }
5104
5105 unsafe impl fidl::encoding::TypeMarker for PowerElementProviderGetClockSpeedLevelRequest {
5106 type Owned = Self;
5107
5108 #[inline(always)]
5109 fn inline_align(_context: fidl::encoding::Context) -> usize {
5110 8
5111 }
5112
5113 #[inline(always)]
5114 fn inline_size(_context: fidl::encoding::Context) -> usize {
5115 16
5116 }
5117 }
5118
5119 unsafe impl<D: fidl::encoding::ResourceDialect>
5120 fidl::encoding::Encode<PowerElementProviderGetClockSpeedLevelRequest, D>
5121 for &PowerElementProviderGetClockSpeedLevelRequest
5122 {
5123 unsafe fn encode(
5124 self,
5125 encoder: &mut fidl::encoding::Encoder<'_, D>,
5126 offset: usize,
5127 mut depth: fidl::encoding::Depth,
5128 ) -> fidl::Result<()> {
5129 encoder.debug_check_bounds::<PowerElementProviderGetClockSpeedLevelRequest>(offset);
5130 let max_ordinal: u64 = self.max_ordinal_present();
5132 encoder.write_num(max_ordinal, offset);
5133 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5134 if max_ordinal == 0 {
5136 return Ok(());
5137 }
5138 depth.increment()?;
5139 let envelope_size = 8;
5140 let bytes_len = max_ordinal as usize * envelope_size;
5141 #[allow(unused_variables)]
5142 let offset = encoder.out_of_line_offset(bytes_len);
5143 let mut _prev_end_offset: usize = 0;
5144 if 1 > max_ordinal {
5145 return Ok(());
5146 }
5147
5148 let cur_offset: usize = (1 - 1) * envelope_size;
5151
5152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5154
5155 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5160 self.hz.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5161 encoder,
5162 offset + cur_offset,
5163 depth,
5164 )?;
5165
5166 _prev_end_offset = cur_offset + envelope_size;
5167 if 2 > max_ordinal {
5168 return Ok(());
5169 }
5170
5171 let cur_offset: usize = (2 - 1) * envelope_size;
5174
5175 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5177
5178 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5183 self.allow_max.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5184 encoder,
5185 offset + cur_offset,
5186 depth,
5187 )?;
5188
5189 _prev_end_offset = cur_offset + envelope_size;
5190
5191 Ok(())
5192 }
5193 }
5194
5195 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5196 for PowerElementProviderGetClockSpeedLevelRequest
5197 {
5198 #[inline(always)]
5199 fn new_empty() -> Self {
5200 Self::default()
5201 }
5202
5203 unsafe fn decode(
5204 &mut self,
5205 decoder: &mut fidl::encoding::Decoder<'_, D>,
5206 offset: usize,
5207 mut depth: fidl::encoding::Depth,
5208 ) -> fidl::Result<()> {
5209 decoder.debug_check_bounds::<Self>(offset);
5210 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5211 None => return Err(fidl::Error::NotNullable),
5212 Some(len) => len,
5213 };
5214 if len == 0 {
5216 return Ok(());
5217 };
5218 depth.increment()?;
5219 let envelope_size = 8;
5220 let bytes_len = len * envelope_size;
5221 let offset = decoder.out_of_line_offset(bytes_len)?;
5222 let mut _next_ordinal_to_read = 0;
5224 let mut next_offset = offset;
5225 let end_offset = offset + bytes_len;
5226 _next_ordinal_to_read += 1;
5227 if next_offset >= end_offset {
5228 return Ok(());
5229 }
5230
5231 while _next_ordinal_to_read < 1 {
5233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5234 _next_ordinal_to_read += 1;
5235 next_offset += envelope_size;
5236 }
5237
5238 let next_out_of_line = decoder.next_out_of_line();
5239 let handles_before = decoder.remaining_handles();
5240 if let Some((inlined, num_bytes, num_handles)) =
5241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5242 {
5243 let member_inline_size =
5244 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5245 if inlined != (member_inline_size <= 4) {
5246 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5247 }
5248 let inner_offset;
5249 let mut inner_depth = depth.clone();
5250 if inlined {
5251 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5252 inner_offset = next_offset;
5253 } else {
5254 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5255 inner_depth.increment()?;
5256 }
5257 let val_ref = self.hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5258 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5259 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5260 {
5261 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5262 }
5263 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5264 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5265 }
5266 }
5267
5268 next_offset += envelope_size;
5269 _next_ordinal_to_read += 1;
5270 if next_offset >= end_offset {
5271 return Ok(());
5272 }
5273
5274 while _next_ordinal_to_read < 2 {
5276 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5277 _next_ordinal_to_read += 1;
5278 next_offset += envelope_size;
5279 }
5280
5281 let next_out_of_line = decoder.next_out_of_line();
5282 let handles_before = decoder.remaining_handles();
5283 if let Some((inlined, num_bytes, num_handles)) =
5284 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5285 {
5286 let member_inline_size =
5287 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5288 if inlined != (member_inline_size <= 4) {
5289 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5290 }
5291 let inner_offset;
5292 let mut inner_depth = depth.clone();
5293 if inlined {
5294 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5295 inner_offset = next_offset;
5296 } else {
5297 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5298 inner_depth.increment()?;
5299 }
5300 let val_ref = self.allow_max.get_or_insert_with(|| fidl::new_empty!(bool, D));
5301 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5302 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5303 {
5304 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5305 }
5306 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5307 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5308 }
5309 }
5310
5311 next_offset += envelope_size;
5312
5313 while next_offset < end_offset {
5315 _next_ordinal_to_read += 1;
5316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5317 next_offset += envelope_size;
5318 }
5319
5320 Ok(())
5321 }
5322 }
5323
5324 impl PowerElementProviderSetClockLimitRequest {
5325 #[inline(always)]
5326 fn max_ordinal_present(&self) -> u64 {
5327 if let Some(_) = self.hz {
5328 return 1;
5329 }
5330 0
5331 }
5332 }
5333
5334 impl fidl::encoding::ValueTypeMarker for PowerElementProviderSetClockLimitRequest {
5335 type Borrowed<'a> = &'a Self;
5336 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5337 value
5338 }
5339 }
5340
5341 unsafe impl fidl::encoding::TypeMarker for PowerElementProviderSetClockLimitRequest {
5342 type Owned = Self;
5343
5344 #[inline(always)]
5345 fn inline_align(_context: fidl::encoding::Context) -> usize {
5346 8
5347 }
5348
5349 #[inline(always)]
5350 fn inline_size(_context: fidl::encoding::Context) -> usize {
5351 16
5352 }
5353 }
5354
5355 unsafe impl<D: fidl::encoding::ResourceDialect>
5356 fidl::encoding::Encode<PowerElementProviderSetClockLimitRequest, D>
5357 for &PowerElementProviderSetClockLimitRequest
5358 {
5359 unsafe fn encode(
5360 self,
5361 encoder: &mut fidl::encoding::Encoder<'_, D>,
5362 offset: usize,
5363 mut depth: fidl::encoding::Depth,
5364 ) -> fidl::Result<()> {
5365 encoder.debug_check_bounds::<PowerElementProviderSetClockLimitRequest>(offset);
5366 let max_ordinal: u64 = self.max_ordinal_present();
5368 encoder.write_num(max_ordinal, offset);
5369 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5370 if max_ordinal == 0 {
5372 return Ok(());
5373 }
5374 depth.increment()?;
5375 let envelope_size = 8;
5376 let bytes_len = max_ordinal as usize * envelope_size;
5377 #[allow(unused_variables)]
5378 let offset = encoder.out_of_line_offset(bytes_len);
5379 let mut _prev_end_offset: usize = 0;
5380 if 1 > max_ordinal {
5381 return Ok(());
5382 }
5383
5384 let cur_offset: usize = (1 - 1) * envelope_size;
5387
5388 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5390
5391 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5396 self.hz.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5397 encoder,
5398 offset + cur_offset,
5399 depth,
5400 )?;
5401
5402 _prev_end_offset = cur_offset + envelope_size;
5403
5404 Ok(())
5405 }
5406 }
5407
5408 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5409 for PowerElementProviderSetClockLimitRequest
5410 {
5411 #[inline(always)]
5412 fn new_empty() -> Self {
5413 Self::default()
5414 }
5415
5416 unsafe fn decode(
5417 &mut self,
5418 decoder: &mut fidl::encoding::Decoder<'_, D>,
5419 offset: usize,
5420 mut depth: fidl::encoding::Depth,
5421 ) -> fidl::Result<()> {
5422 decoder.debug_check_bounds::<Self>(offset);
5423 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5424 None => return Err(fidl::Error::NotNullable),
5425 Some(len) => len,
5426 };
5427 if len == 0 {
5429 return Ok(());
5430 };
5431 depth.increment()?;
5432 let envelope_size = 8;
5433 let bytes_len = len * envelope_size;
5434 let offset = decoder.out_of_line_offset(bytes_len)?;
5435 let mut _next_ordinal_to_read = 0;
5437 let mut next_offset = offset;
5438 let end_offset = offset + bytes_len;
5439 _next_ordinal_to_read += 1;
5440 if next_offset >= end_offset {
5441 return Ok(());
5442 }
5443
5444 while _next_ordinal_to_read < 1 {
5446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5447 _next_ordinal_to_read += 1;
5448 next_offset += envelope_size;
5449 }
5450
5451 let next_out_of_line = decoder.next_out_of_line();
5452 let handles_before = decoder.remaining_handles();
5453 if let Some((inlined, num_bytes, num_handles)) =
5454 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5455 {
5456 let member_inline_size =
5457 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5458 if inlined != (member_inline_size <= 4) {
5459 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5460 }
5461 let inner_offset;
5462 let mut inner_depth = depth.clone();
5463 if inlined {
5464 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5465 inner_offset = next_offset;
5466 } else {
5467 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5468 inner_depth.increment()?;
5469 }
5470 let val_ref = self.hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5471 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5472 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5473 {
5474 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5475 }
5476 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5477 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5478 }
5479 }
5480
5481 next_offset += envelope_size;
5482
5483 while next_offset < end_offset {
5485 _next_ordinal_to_read += 1;
5486 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5487 next_offset += envelope_size;
5488 }
5489
5490 Ok(())
5491 }
5492 }
5493
5494 impl PrimaryMapBufferRequest {
5495 #[inline(always)]
5496 fn max_ordinal_present(&self) -> u64 {
5497 if let Some(_) = self.flags {
5498 return 3;
5499 }
5500 if let Some(_) = self.range {
5501 return 2;
5502 }
5503 if let Some(_) = self.hw_va {
5504 return 1;
5505 }
5506 0
5507 }
5508 }
5509
5510 impl fidl::encoding::ValueTypeMarker for PrimaryMapBufferRequest {
5511 type Borrowed<'a> = &'a Self;
5512 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5513 value
5514 }
5515 }
5516
5517 unsafe impl fidl::encoding::TypeMarker for PrimaryMapBufferRequest {
5518 type Owned = Self;
5519
5520 #[inline(always)]
5521 fn inline_align(_context: fidl::encoding::Context) -> usize {
5522 8
5523 }
5524
5525 #[inline(always)]
5526 fn inline_size(_context: fidl::encoding::Context) -> usize {
5527 16
5528 }
5529 }
5530
5531 unsafe impl<D: fidl::encoding::ResourceDialect>
5532 fidl::encoding::Encode<PrimaryMapBufferRequest, D> for &PrimaryMapBufferRequest
5533 {
5534 unsafe fn encode(
5535 self,
5536 encoder: &mut fidl::encoding::Encoder<'_, D>,
5537 offset: usize,
5538 mut depth: fidl::encoding::Depth,
5539 ) -> fidl::Result<()> {
5540 encoder.debug_check_bounds::<PrimaryMapBufferRequest>(offset);
5541 let max_ordinal: u64 = self.max_ordinal_present();
5543 encoder.write_num(max_ordinal, offset);
5544 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5545 if max_ordinal == 0 {
5547 return Ok(());
5548 }
5549 depth.increment()?;
5550 let envelope_size = 8;
5551 let bytes_len = max_ordinal as usize * envelope_size;
5552 #[allow(unused_variables)]
5553 let offset = encoder.out_of_line_offset(bytes_len);
5554 let mut _prev_end_offset: usize = 0;
5555 if 1 > max_ordinal {
5556 return Ok(());
5557 }
5558
5559 let cur_offset: usize = (1 - 1) * envelope_size;
5562
5563 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5565
5566 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5571 self.hw_va.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5572 encoder,
5573 offset + cur_offset,
5574 depth,
5575 )?;
5576
5577 _prev_end_offset = cur_offset + envelope_size;
5578 if 2 > max_ordinal {
5579 return Ok(());
5580 }
5581
5582 let cur_offset: usize = (2 - 1) * envelope_size;
5585
5586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5588
5589 fidl::encoding::encode_in_envelope_optional::<BufferRange, D>(
5594 self.range.as_ref().map(<BufferRange as fidl::encoding::ValueTypeMarker>::borrow),
5595 encoder,
5596 offset + cur_offset,
5597 depth,
5598 )?;
5599
5600 _prev_end_offset = cur_offset + envelope_size;
5601 if 3 > max_ordinal {
5602 return Ok(());
5603 }
5604
5605 let cur_offset: usize = (3 - 1) * envelope_size;
5608
5609 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5611
5612 fidl::encoding::encode_in_envelope_optional::<MapFlags, D>(
5617 self.flags.as_ref().map(<MapFlags as fidl::encoding::ValueTypeMarker>::borrow),
5618 encoder,
5619 offset + cur_offset,
5620 depth,
5621 )?;
5622
5623 _prev_end_offset = cur_offset + envelope_size;
5624
5625 Ok(())
5626 }
5627 }
5628
5629 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5630 for PrimaryMapBufferRequest
5631 {
5632 #[inline(always)]
5633 fn new_empty() -> Self {
5634 Self::default()
5635 }
5636
5637 unsafe fn decode(
5638 &mut self,
5639 decoder: &mut fidl::encoding::Decoder<'_, D>,
5640 offset: usize,
5641 mut depth: fidl::encoding::Depth,
5642 ) -> fidl::Result<()> {
5643 decoder.debug_check_bounds::<Self>(offset);
5644 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5645 None => return Err(fidl::Error::NotNullable),
5646 Some(len) => len,
5647 };
5648 if len == 0 {
5650 return Ok(());
5651 };
5652 depth.increment()?;
5653 let envelope_size = 8;
5654 let bytes_len = len * envelope_size;
5655 let offset = decoder.out_of_line_offset(bytes_len)?;
5656 let mut _next_ordinal_to_read = 0;
5658 let mut next_offset = offset;
5659 let end_offset = offset + bytes_len;
5660 _next_ordinal_to_read += 1;
5661 if next_offset >= end_offset {
5662 return Ok(());
5663 }
5664
5665 while _next_ordinal_to_read < 1 {
5667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5668 _next_ordinal_to_read += 1;
5669 next_offset += envelope_size;
5670 }
5671
5672 let next_out_of_line = decoder.next_out_of_line();
5673 let handles_before = decoder.remaining_handles();
5674 if let Some((inlined, num_bytes, num_handles)) =
5675 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5676 {
5677 let member_inline_size =
5678 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5679 if inlined != (member_inline_size <= 4) {
5680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5681 }
5682 let inner_offset;
5683 let mut inner_depth = depth.clone();
5684 if inlined {
5685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5686 inner_offset = next_offset;
5687 } else {
5688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5689 inner_depth.increment()?;
5690 }
5691 let val_ref = self.hw_va.get_or_insert_with(|| fidl::new_empty!(u64, D));
5692 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5693 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5694 {
5695 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5696 }
5697 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5698 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5699 }
5700 }
5701
5702 next_offset += envelope_size;
5703 _next_ordinal_to_read += 1;
5704 if next_offset >= end_offset {
5705 return Ok(());
5706 }
5707
5708 while _next_ordinal_to_read < 2 {
5710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5711 _next_ordinal_to_read += 1;
5712 next_offset += envelope_size;
5713 }
5714
5715 let next_out_of_line = decoder.next_out_of_line();
5716 let handles_before = decoder.remaining_handles();
5717 if let Some((inlined, num_bytes, num_handles)) =
5718 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5719 {
5720 let member_inline_size =
5721 <BufferRange as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5722 if inlined != (member_inline_size <= 4) {
5723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5724 }
5725 let inner_offset;
5726 let mut inner_depth = depth.clone();
5727 if inlined {
5728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5729 inner_offset = next_offset;
5730 } else {
5731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5732 inner_depth.increment()?;
5733 }
5734 let val_ref = self.range.get_or_insert_with(|| fidl::new_empty!(BufferRange, D));
5735 fidl::decode!(BufferRange, D, val_ref, decoder, inner_offset, inner_depth)?;
5736 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5737 {
5738 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5739 }
5740 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5741 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5742 }
5743 }
5744
5745 next_offset += envelope_size;
5746 _next_ordinal_to_read += 1;
5747 if next_offset >= end_offset {
5748 return Ok(());
5749 }
5750
5751 while _next_ordinal_to_read < 3 {
5753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5754 _next_ordinal_to_read += 1;
5755 next_offset += envelope_size;
5756 }
5757
5758 let next_out_of_line = decoder.next_out_of_line();
5759 let handles_before = decoder.remaining_handles();
5760 if let Some((inlined, num_bytes, num_handles)) =
5761 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5762 {
5763 let member_inline_size =
5764 <MapFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5765 if inlined != (member_inline_size <= 4) {
5766 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5767 }
5768 let inner_offset;
5769 let mut inner_depth = depth.clone();
5770 if inlined {
5771 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5772 inner_offset = next_offset;
5773 } else {
5774 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5775 inner_depth.increment()?;
5776 }
5777 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(MapFlags, D));
5778 fidl::decode!(MapFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
5779 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5780 {
5781 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5782 }
5783 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5784 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5785 }
5786 }
5787
5788 next_offset += envelope_size;
5789
5790 while next_offset < end_offset {
5792 _next_ordinal_to_read += 1;
5793 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5794 next_offset += envelope_size;
5795 }
5796
5797 Ok(())
5798 }
5799 }
5800
5801 impl PrimaryUnmapBufferRequest {
5802 #[inline(always)]
5803 fn max_ordinal_present(&self) -> u64 {
5804 if let Some(_) = self.buffer_id {
5805 return 2;
5806 }
5807 if let Some(_) = self.hw_va {
5808 return 1;
5809 }
5810 0
5811 }
5812 }
5813
5814 impl fidl::encoding::ValueTypeMarker for PrimaryUnmapBufferRequest {
5815 type Borrowed<'a> = &'a Self;
5816 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5817 value
5818 }
5819 }
5820
5821 unsafe impl fidl::encoding::TypeMarker for PrimaryUnmapBufferRequest {
5822 type Owned = Self;
5823
5824 #[inline(always)]
5825 fn inline_align(_context: fidl::encoding::Context) -> usize {
5826 8
5827 }
5828
5829 #[inline(always)]
5830 fn inline_size(_context: fidl::encoding::Context) -> usize {
5831 16
5832 }
5833 }
5834
5835 unsafe impl<D: fidl::encoding::ResourceDialect>
5836 fidl::encoding::Encode<PrimaryUnmapBufferRequest, D> for &PrimaryUnmapBufferRequest
5837 {
5838 unsafe fn encode(
5839 self,
5840 encoder: &mut fidl::encoding::Encoder<'_, D>,
5841 offset: usize,
5842 mut depth: fidl::encoding::Depth,
5843 ) -> fidl::Result<()> {
5844 encoder.debug_check_bounds::<PrimaryUnmapBufferRequest>(offset);
5845 let max_ordinal: u64 = self.max_ordinal_present();
5847 encoder.write_num(max_ordinal, offset);
5848 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5849 if max_ordinal == 0 {
5851 return Ok(());
5852 }
5853 depth.increment()?;
5854 let envelope_size = 8;
5855 let bytes_len = max_ordinal as usize * envelope_size;
5856 #[allow(unused_variables)]
5857 let offset = encoder.out_of_line_offset(bytes_len);
5858 let mut _prev_end_offset: usize = 0;
5859 if 1 > max_ordinal {
5860 return Ok(());
5861 }
5862
5863 let cur_offset: usize = (1 - 1) * envelope_size;
5866
5867 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5869
5870 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5875 self.hw_va.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5876 encoder,
5877 offset + cur_offset,
5878 depth,
5879 )?;
5880
5881 _prev_end_offset = cur_offset + envelope_size;
5882 if 2 > max_ordinal {
5883 return Ok(());
5884 }
5885
5886 let cur_offset: usize = (2 - 1) * envelope_size;
5889
5890 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5892
5893 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5898 self.buffer_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5899 encoder,
5900 offset + cur_offset,
5901 depth,
5902 )?;
5903
5904 _prev_end_offset = cur_offset + envelope_size;
5905
5906 Ok(())
5907 }
5908 }
5909
5910 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5911 for PrimaryUnmapBufferRequest
5912 {
5913 #[inline(always)]
5914 fn new_empty() -> Self {
5915 Self::default()
5916 }
5917
5918 unsafe fn decode(
5919 &mut self,
5920 decoder: &mut fidl::encoding::Decoder<'_, D>,
5921 offset: usize,
5922 mut depth: fidl::encoding::Depth,
5923 ) -> fidl::Result<()> {
5924 decoder.debug_check_bounds::<Self>(offset);
5925 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5926 None => return Err(fidl::Error::NotNullable),
5927 Some(len) => len,
5928 };
5929 if len == 0 {
5931 return Ok(());
5932 };
5933 depth.increment()?;
5934 let envelope_size = 8;
5935 let bytes_len = len * envelope_size;
5936 let offset = decoder.out_of_line_offset(bytes_len)?;
5937 let mut _next_ordinal_to_read = 0;
5939 let mut next_offset = offset;
5940 let end_offset = offset + bytes_len;
5941 _next_ordinal_to_read += 1;
5942 if next_offset >= end_offset {
5943 return Ok(());
5944 }
5945
5946 while _next_ordinal_to_read < 1 {
5948 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5949 _next_ordinal_to_read += 1;
5950 next_offset += envelope_size;
5951 }
5952
5953 let next_out_of_line = decoder.next_out_of_line();
5954 let handles_before = decoder.remaining_handles();
5955 if let Some((inlined, num_bytes, num_handles)) =
5956 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5957 {
5958 let member_inline_size =
5959 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5960 if inlined != (member_inline_size <= 4) {
5961 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5962 }
5963 let inner_offset;
5964 let mut inner_depth = depth.clone();
5965 if inlined {
5966 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5967 inner_offset = next_offset;
5968 } else {
5969 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5970 inner_depth.increment()?;
5971 }
5972 let val_ref = self.hw_va.get_or_insert_with(|| fidl::new_empty!(u64, D));
5973 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5975 {
5976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5977 }
5978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5980 }
5981 }
5982
5983 next_offset += envelope_size;
5984 _next_ordinal_to_read += 1;
5985 if next_offset >= end_offset {
5986 return Ok(());
5987 }
5988
5989 while _next_ordinal_to_read < 2 {
5991 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5992 _next_ordinal_to_read += 1;
5993 next_offset += envelope_size;
5994 }
5995
5996 let next_out_of_line = decoder.next_out_of_line();
5997 let handles_before = decoder.remaining_handles();
5998 if let Some((inlined, num_bytes, num_handles)) =
5999 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6000 {
6001 let member_inline_size =
6002 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6003 if inlined != (member_inline_size <= 4) {
6004 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6005 }
6006 let inner_offset;
6007 let mut inner_depth = depth.clone();
6008 if inlined {
6009 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6010 inner_offset = next_offset;
6011 } else {
6012 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6013 inner_depth.increment()?;
6014 }
6015 let val_ref = self.buffer_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
6016 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6018 {
6019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6020 }
6021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6023 }
6024 }
6025
6026 next_offset += envelope_size;
6027
6028 while next_offset < end_offset {
6030 _next_ordinal_to_read += 1;
6031 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6032 next_offset += envelope_size;
6033 }
6034
6035 Ok(())
6036 }
6037 }
6038}