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