1use crate::error::NvmlError;
2use crate::ffi::bindings::*;
3#[cfg(feature = "serde")]
4use serde_derive::{Deserialize, Serialize};
5use wrapcenum_derive::EnumWrapper;
6
7#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
10#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11#[wrap(c_enum = "nvmlRestrictedAPI_enum")]
12pub enum Api {
13 #[wrap(c_variant = "NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS")]
20 ApplicationClocks,
21 #[wrap(c_variant = "NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS")]
25 AutoBoostedClocks,
26}
27
28#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
31#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
32#[wrap(c_enum = "nvmlClockType_enum")]
33pub enum Clock {
34 #[wrap(c_variant = "NVML_CLOCK_GRAPHICS")]
36 Graphics,
37 #[wrap(c_variant = "NVML_CLOCK_SM")]
41 SM,
42 #[wrap(c_variant = "NVML_CLOCK_MEM")]
44 Memory,
45 #[wrap(c_variant = "NVML_CLOCK_VIDEO")]
47 Video,
48}
49
50#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
53#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
54#[wrap(c_enum = "nvmlClockId_enum")]
55pub enum ClockId {
56 #[wrap(c_variant = "NVML_CLOCK_ID_CURRENT")]
58 Current,
59 #[wrap(c_variant = "NVML_CLOCK_ID_APP_CLOCK_TARGET")]
61 TargetAppClock,
62 #[wrap(c_variant = "NVML_CLOCK_ID_APP_CLOCK_DEFAULT")]
64 DefaultAppClock,
65 #[wrap(c_variant = "NVML_CLOCK_ID_CUSTOMER_BOOST_MAX")]
67 CustomerMaxBoost,
68}
69
70#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
73#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
74#[wrap(c_enum = "nvmlBrandType_enum")]
75pub enum Brand {
76 #[wrap(c_variant = "NVML_BRAND_UNKNOWN")]
77 Unknown,
78 #[wrap(c_variant = "NVML_BRAND_QUADRO")]
80 Quadro,
81 #[wrap(c_variant = "NVML_BRAND_TESLA")]
83 Tesla,
84 #[wrap(c_variant = "NVML_BRAND_NVS")]
86 NVS,
87 #[wrap(c_variant = "NVML_BRAND_GRID")]
91 GRID,
92 #[wrap(c_variant = "NVML_BRAND_GEFORCE")]
94 GeForce,
95 #[wrap(c_variant = "NVML_BRAND_TITAN")]
97 Titan,
98 #[wrap(c_variant = "NVML_BRAND_NVIDIA_VAPPS")]
100 VApps,
101 #[wrap(c_variant = "NVML_BRAND_NVIDIA_VPC")]
103 VPC,
104 #[wrap(c_variant = "NVML_BRAND_NVIDIA_VCS")]
106 VCS,
107 #[wrap(c_variant = "NVML_BRAND_NVIDIA_VWS")]
109 VWS,
110 #[wrap(c_variant = "NVML_BRAND_NVIDIA_CLOUD_GAMING")]
112 CloudGaming,
113 #[wrap(c_variant = "NVML_BRAND_NVIDIA_VGAMING")]
116 VGaming,
117 #[wrap(c_variant = "NVML_BRAND_QUADRO_RTX")]
119 QuadroRTX,
120 #[wrap(c_variant = "NVML_BRAND_NVIDIA_RTX")]
122 NvidiaRTX,
123 #[wrap(c_variant = "NVML_BRAND_NVIDIA")]
125 Nvidia,
126 #[wrap(c_variant = "NVML_BRAND_GEFORCE_RTX")]
128 GeForceRTX,
129 #[wrap(c_variant = "NVML_BRAND_TITAN_RTX")]
131 TitanRTX,
132}
133
134#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
142#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
143#[wrap(c_enum = "nvmlBridgeChipType_enum")]
144pub enum BridgeChip {
145 #[wrap(c_variant = "NVML_BRIDGE_CHIP_PLX")]
146 PLX,
147 #[wrap(c_variant = "NVML_BRIDGE_CHIP_BRO4")]
148 BRO4,
149}
150
151#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
154#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
155#[wrap(c_enum = "nvmlMemoryErrorType_enum")]
156pub enum MemoryError {
157 #[wrap(c_variant = "NVML_MEMORY_ERROR_TYPE_CORRECTED")]
164 Corrected,
165 #[wrap(c_variant = "NVML_MEMORY_ERROR_TYPE_UNCORRECTED")]
172 Uncorrected,
173}
174
175#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
186#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
187#[wrap(c_enum = "nvmlEccCounterType_enum")]
188pub enum EccCounter {
189 #[wrap(c_variant = "NVML_VOLATILE_ECC")]
191 Volatile,
192 #[wrap(c_variant = "NVML_AGGREGATE_ECC")]
195 Aggregate,
196}
197
198#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
201#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
202#[wrap(c_enum = "nvmlMemoryLocation_enum")]
203pub enum MemoryLocation {
204 #[wrap(c_variant = "NVML_MEMORY_LOCATION_L1_CACHE")]
206 L1Cache,
207 #[wrap(c_variant = "NVML_MEMORY_LOCATION_L2_CACHE")]
209 L2Cache,
210 #[wrap(c_variant = "NVML_MEMORY_LOCATION_DEVICE_MEMORY")]
212 Device,
213 #[wrap(c_variant = "NVML_MEMORY_LOCATION_REGISTER_FILE")]
215 RegisterFile,
216 #[wrap(c_variant = "NVML_MEMORY_LOCATION_TEXTURE_MEMORY")]
218 Texture,
219 #[wrap(c_variant = "NVML_MEMORY_LOCATION_TEXTURE_SHM")]
221 Shared,
222 #[wrap(c_variant = "NVML_MEMORY_LOCATION_CBU")]
223 Cbu,
224 #[wrap(c_variant = "NVML_MEMORY_LOCATION_SRAM")]
226 SRAM,
227}
228
229#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
232#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
233#[wrap(c_enum = "nvmlDriverModel_enum")]
234#[cfg(target_os = "windows")]
235pub enum DriverModel {
236 #[wrap(c_variant = "NVML_DRIVER_WDDM")]
238 WDDM,
239 #[wrap(c_variant = "NVML_DRIVER_WDM")]
241 WDM,
242}
243
244#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
252#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
253#[wrap(c_enum = "nvmlGom_enum")]
254pub enum OperationMode {
255 #[wrap(c_variant = "NVML_GOM_ALL_ON")]
257 AllOn,
258 #[wrap(c_variant = "NVML_GOM_COMPUTE")]
260 Compute,
261 #[wrap(c_variant = "NVML_GOM_LOW_DP")]
264 LowDP,
265}
266
267#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
270#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
271#[wrap(c_enum = "nvmlInforomObject_enum")]
272pub enum InfoRom {
273 #[wrap(c_variant = "NVML_INFOROM_OEM")]
275 OEM,
276 #[wrap(c_variant = "NVML_INFOROM_ECC")]
278 ECC,
279 #[wrap(c_variant = "NVML_INFOROM_POWER")]
281 Power,
282}
283
284#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
288#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
289#[wrap(c_enum = "nvmlPcieUtilCounter_enum")]
290pub enum PcieUtilCounter {
291 #[wrap(c_variant = "NVML_PCIE_UTIL_TX_BYTES")]
292 Send,
293 #[wrap(c_variant = "NVML_PCIE_UTIL_RX_BYTES")]
294 Receive,
295}
296
297#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
309#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
310#[wrap(c_enum = "nvmlPStates_enum")]
311pub enum PerformanceState {
312 #[wrap(c_variant = "NVML_PSTATE_0")]
314 Zero,
315 #[wrap(c_variant = "NVML_PSTATE_1")]
316 One,
317 #[wrap(c_variant = "NVML_PSTATE_2")]
318 Two,
319 #[wrap(c_variant = "NVML_PSTATE_3")]
320 Three,
321 #[wrap(c_variant = "NVML_PSTATE_4")]
322 Four,
323 #[wrap(c_variant = "NVML_PSTATE_5")]
324 Five,
325 #[wrap(c_variant = "NVML_PSTATE_6")]
326 Six,
327 #[wrap(c_variant = "NVML_PSTATE_7")]
328 Seven,
329 #[wrap(c_variant = "NVML_PSTATE_8")]
330 Eight,
331 #[wrap(c_variant = "NVML_PSTATE_9")]
332 Nine,
333 #[wrap(c_variant = "NVML_PSTATE_10")]
334 Ten,
335 #[wrap(c_variant = "NVML_PSTATE_11")]
336 Eleven,
337 #[wrap(c_variant = "NVML_PSTATE_12")]
338 Twelve,
339 #[wrap(c_variant = "NVML_PSTATE_13")]
340 Thirteen,
341 #[wrap(c_variant = "NVML_PSTATE_14")]
342 Fourteen,
343 #[wrap(c_variant = "NVML_PSTATE_15")]
345 Fifteen,
346 #[wrap(c_variant = "NVML_PSTATE_UNKNOWN")]
348 Unknown,
349}
350
351#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
354#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
355#[wrap(c_enum = "nvmlPageRetirementCause_enum")]
356pub enum RetirementCause {
357 #[wrap(c_variant = "NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS")]
359 MultipleSingleBitEccErrors,
360 #[wrap(c_variant = "NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR")]
362 DoubleBitEccError,
363}
364
365#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
368#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
369#[wrap(c_enum = "nvmlSamplingType_enum")]
370pub enum Sampling {
371 #[wrap(c_variant = "NVML_TOTAL_POWER_SAMPLES")]
373 Power,
374 #[wrap(c_variant = "NVML_GPU_UTILIZATION_SAMPLES")]
377 GpuUtilization,
378 #[wrap(c_variant = "NVML_MEMORY_UTILIZATION_SAMPLES")]
381 MemoryUtilization,
382 #[wrap(c_variant = "NVML_ENC_UTILIZATION_SAMPLES")]
384 EncoderUtilization,
385 #[wrap(c_variant = "NVML_DEC_UTILIZATION_SAMPLES")]
387 DecoderUtilization,
388 #[wrap(c_variant = "NVML_PROCESSOR_CLK_SAMPLES")]
390 ProcessorClock,
391 #[wrap(c_variant = "NVML_MEMORY_CLK_SAMPLES")]
393 MemoryClock,
394}
395
396#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
398#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
399#[wrap(c_enum = "nvmlTemperatureSensors_enum")]
400pub enum TemperatureSensor {
401 #[wrap(c_variant = "NVML_TEMPERATURE_GPU")]
403 Gpu,
404}
405
406#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
408#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
409#[wrap(c_enum = "nvmlTemperatureThresholds_enum")]
410pub enum TemperatureThreshold {
411 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_SHUTDOWN")]
413 Shutdown,
414 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_SLOWDOWN")]
416 Slowdown,
417 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_MEM_MAX")]
419 MemoryMax,
420 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_GPU_MAX")]
422 GpuMax,
423 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN")]
425 AcousticMin,
426 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR")]
428 AcousticCurr,
429 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX")]
431 AcousticMax,
432 #[wrap(c_variant = "NVML_TEMPERATURE_THRESHOLD_GPS_CURR")]
434 GpsCurr,
435}
436
437#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
440#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
441#[wrap(c_enum = "nvmlGpuLevel_enum")]
442pub enum TopologyLevel {
443 #[wrap(c_variant = "NVML_TOPOLOGY_INTERNAL")]
445 Internal,
446 #[wrap(c_variant = "NVML_TOPOLOGY_SINGLE")]
448 Single,
449 #[wrap(c_variant = "NVML_TOPOLOGY_MULTIPLE")]
451 Multiple,
452 #[wrap(c_variant = "NVML_TOPOLOGY_HOSTBRIDGE")]
454 HostBridge,
455 #[wrap(c_variant = "NVML_TOPOLOGY_NODE")]
462 Node,
463 #[wrap(c_variant = "NVML_TOPOLOGY_SYSTEM")]
465 System,
466}
467
468#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
471#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
472#[wrap(c_enum = "nvmlPerfPolicyType_enum")]
473pub enum PerformancePolicy {
474 #[wrap(c_variant = "NVML_PERF_POLICY_POWER")]
475 Power,
476 #[wrap(c_variant = "NVML_PERF_POLICY_THERMAL")]
477 Thermal,
478 #[wrap(c_variant = "NVML_PERF_POLICY_SYNC_BOOST")]
479 SyncBoost,
480 #[wrap(c_variant = "NVML_PERF_POLICY_BOARD_LIMIT")]
481 BoardLimit,
482 #[wrap(c_variant = "NVML_PERF_POLICY_LOW_UTILIZATION")]
483 LowUtilization,
484 #[wrap(c_variant = "NVML_PERF_POLICY_RELIABILITY")]
486 Reliability,
487
488 #[wrap(c_variant = "NVML_PERF_POLICY_TOTAL_APP_CLOCKS")]
490 TotalAppClocks,
491 #[wrap(c_variant = "NVML_PERF_POLICY_TOTAL_BASE_CLOCKS")]
493 TotalBaseClocks,
494}
495
496#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
501#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
502#[wrap(c_enum = "nvmlComputeMode_enum")]
503pub enum ComputeMode {
504 #[wrap(c_variant = "NVML_COMPUTEMODE_DEFAULT")]
506 Default,
507 #[wrap(c_variant = "NVML_COMPUTEMODE_EXCLUSIVE_THREAD")]
512 ExclusiveThread,
513 #[wrap(c_variant = "NVML_COMPUTEMODE_PROHIBITED")]
515 Prohibited,
516 #[wrap(c_variant = "NVML_COMPUTEMODE_EXCLUSIVE_PROCESS")]
518 ExclusiveProcess,
519}
520
521#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
524#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
525#[wrap(c_enum = "nvmlGpuP2PStatus_enum")]
526pub enum P2pStatus {
527 #[wrap(c_variant = "NVML_P2P_STATUS_OK")]
528 Ok,
529 #[wrap(c_variant = "NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED")]
530 ChipsetNotSupported,
531 #[wrap(c_variant = "NVML_P2P_STATUS_GPU_NOT_SUPPORTED")]
532 GpuNotSupported,
533 #[wrap(c_variant = "NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED")]
534 IohTopologyNotSupported,
535 #[wrap(c_variant = "NVML_P2P_STATUS_DISABLED_BY_REGKEY")]
536 DisabledByRegkey,
537 #[wrap(c_variant = "NVML_P2P_STATUS_NOT_SUPPORTED")]
538 NotSupported,
539 #[wrap(c_variant = "NVML_P2P_STATUS_UNKNOWN")]
540 Unknown,
541}
542
543#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
545#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
546#[wrap(c_enum = "nvmlGpuP2PCapsIndex_enum")]
547pub enum P2pCapabilitiesIndex {
548 #[wrap(c_variant = "NVML_P2P_CAPS_INDEX_READ")]
549 Read,
550 #[wrap(c_variant = "NVML_P2P_CAPS_INDEX_WRITE")]
551 Write,
552 #[wrap(c_variant = "NVML_P2P_CAPS_INDEX_NVLINK")]
553 NvLink,
554 #[wrap(c_variant = "NVML_P2P_CAPS_INDEX_ATOMICS")]
555 Atomics,
556 #[wrap(c_variant = "NVML_P2P_CAPS_INDEX_PROP")]
557 Prop,
558 #[wrap(c_variant = "NVML_P2P_CAPS_INDEX_UNKNOWN")]
559 Unknown,
560}
561
562#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
565#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
566#[wrap(c_enum = "nvmlValueType_enum")]
567pub enum SampleValueType {
568 #[wrap(c_variant = "NVML_VALUE_TYPE_DOUBLE")]
569 Double,
570 #[wrap(c_variant = "NVML_VALUE_TYPE_UNSIGNED_INT")]
571 UnsignedInt,
572 #[wrap(c_variant = "NVML_VALUE_TYPE_UNSIGNED_LONG")]
573 UnsignedLong,
574 #[wrap(c_variant = "NVML_VALUE_TYPE_UNSIGNED_LONG_LONG")]
575 UnsignedLongLong,
576 #[wrap(c_variant = "NVML_VALUE_TYPE_SIGNED_LONG_LONG")]
577 SignedLongLong,
578}
579
580#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
582#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
583#[wrap(c_enum = "nvmlEncoderQueryType_enum")]
584pub enum EncoderType {
585 #[wrap(c_variant = "NVML_ENCODER_QUERY_H264")]
586 H264,
587 #[wrap(c_variant = "NVML_ENCODER_QUERY_HEVC")]
588 HEVC,
589}
590
591#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
595#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
596#[wrap(c_enum = "nvmlFBCSessionType_enum")]
597pub enum FbcSessionType {
598 #[wrap(c_variant = "NVML_FBC_SESSION_TYPE_UNKNOWN")]
599 Unknown,
600 #[wrap(c_variant = "NVML_FBC_SESSION_TYPE_TOSYS")]
601 ToSys,
602 #[wrap(c_variant = "NVML_FBC_SESSION_TYPE_CUDA")]
603 Cuda,
604 #[wrap(c_variant = "NVML_FBC_SESSION_TYPE_VID")]
605 Vid,
606 #[wrap(c_variant = "NVML_FBC_SESSION_TYPE_HWENC")]
607 HwEnc,
608}
609
610#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
612#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
613#[wrap(c_enum = "nvmlDetachGpuState_enum")]
614pub enum DetachGpuState {
615 #[wrap(c_variant = "NVML_DETACH_GPU_KEEP")]
616 Keep,
617 #[wrap(c_variant = "NVML_DETACH_GPU_REMOVE")]
618 Remove,
619}
620
621#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
623#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
624#[wrap(c_enum = "nvmlPcieLinkState_enum")]
625pub enum PcieLinkState {
626 #[wrap(c_variant = "NVML_PCIE_LINK_KEEP")]
627 Keep,
628 #[wrap(c_variant = "NVML_PCIE_LINK_SHUT_DOWN")]
629 ShutDown,
630}
631
632#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
634#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
635#[wrap(c_enum = "nvmlClockLimitId_enum")]
636pub enum ClockLimitId {
637 #[wrap(c_variant = "NVML_CLOCK_LIMIT_ID_TDP")]
639 Tdp,
640 #[wrap(c_variant = "NVML_CLOCK_LIMIT_ID_UNLIMITED")]
642 Unlimited,
643}
644
645#[derive(EnumWrapper, Debug, Clone, Eq, PartialEq, Hash)]
646#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
647#[wrap(c_enum = "nvmlGpuVirtualizationMode")]
648pub enum GpuVirtualizationMode {
649 #[wrap(c_variant = "NVML_GPU_VIRTUALIZATION_MODE_NONE")]
651 Bare,
652 #[wrap(c_variant = "NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH")]
654 PassThrough,
655 #[wrap(c_variant = "NVML_GPU_VIRTUALIZATION_MODE_VGPU")]
657 Vgpu,
658 #[wrap(c_variant = "NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU")]
660 HostVgpu,
661 #[wrap(c_variant = "NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGA")]
663 HostVsga,
664}
665
666#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
669#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
670#[wrap(c_enum = "nvmlHostVgpuMode_enum")]
671pub enum HostVgpuMode {
672 #[wrap(c_variant = "NVML_HOST_VGPU_MODE_NON_SRIOV")]
674 NonSriov,
675 #[wrap(c_variant = "NVML_HOST_VGPU_MODE_SRIOV")]
677 Sriov,
678}
679
680#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
681#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
682#[wrap(c_enum = "nvmlDeviceVgpuCapability_enum")]
683pub enum VgpuCapability {
684 #[wrap(c_variant = "NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU")]
686 FractionalMultiVgpu,
687 #[wrap(c_variant = "NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES")]
689 HeterogeneousTimesliceProfiles,
690 #[wrap(c_variant = "NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES")]
692 HeterogeneousTimesliceSizes,
693 #[wrap(c_variant = "NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW")]
695 ReadDeviceBufferBw,
696 #[wrap(c_variant = "NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW")]
698 WriteDeviceBufferBw,
699}