1use gfxd_sys::settings::{gfxd_f3d, gfxd_f3db, gfxd_f3dex, gfxd_f3dex2, gfxd_f3dexb, gfxd_ucode_t};
5
6#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
8#[allow(missing_docs)]
9pub enum Microcode {
10 F3d,
11 F3db,
12 F3dex,
13 F3dexb,
14 F3dex2,
15}
16
17impl Microcode {
18 #[must_use]
20 pub fn from_name(name: &str) -> Option<Self> {
21 match name {
22 "f3d" => Some(Self::F3d),
23 "f3db" => Some(Self::F3db),
24 "f3dex" => Some(Self::F3dex),
25 "f3dexb" => Some(Self::F3dexb),
26 "f3dex2" => Some(Self::F3dex2),
27 _ => None,
28 }
29 }
30}
31
32impl Microcode {
33 pub(crate) fn to_microcode_ptr(self) -> gfxd_ucode_t {
34 match self {
35 Microcode::F3d => unsafe { gfxd_f3d },
36 Microcode::F3db => unsafe { gfxd_f3db },
37 Microcode::F3dex => unsafe { gfxd_f3dex },
38 Microcode::F3dexb => unsafe { gfxd_f3dexb },
39 Microcode::F3dex2 => unsafe { gfxd_f3dex2 },
40 }
41 }
42}