1pub mod flags;
2pub mod limits;
3pub mod pipeline_state;
4
5#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Hash)]
8pub enum CursorIcon {
9 #[default]
10 Default,
11 ContextMenu,
12 Help,
13 Pointer,
14 Progress,
15 Wait,
16 Cell,
17 Crosshair,
18 Text,
19 VerticalText,
20 Alias,
21 Copy,
22 Move,
23 NoDrop,
24 NotAllowed,
25 Grab,
26 Grabbing,
27 EResize,
28 NResize,
29 NeResize,
30 NwResize,
31 SResize,
32 SeResize,
33 SwResize,
34 WResize,
35 EwResize,
36 NsResize,
37 NeswResize,
38 NwseResize,
39 ColResize,
40 RowResize,
41 AllScroll,
42 ZoomIn,
43 ZoomOut,
44 DndAsk,
45 AllResize,
46}
47
48impl From<CursorIcon> for winit::window::CursorIcon {
49 fn from(value: CursorIcon) -> Self {
50 match value {
51 CursorIcon::Default => Self::Default,
52 CursorIcon::ContextMenu => Self::ContextMenu,
53 CursorIcon::Help => Self::Help,
54 CursorIcon::Pointer => Self::Pointer,
55 CursorIcon::Progress => Self::Progress,
56 CursorIcon::Wait => Self::Wait,
57 CursorIcon::Cell => Self::Cell,
58 CursorIcon::Crosshair => Self::Crosshair,
59 CursorIcon::Text => Self::Text,
60 CursorIcon::VerticalText => Self::VerticalText,
61 CursorIcon::Alias => Self::Alias,
62 CursorIcon::Copy => Self::Copy,
63 CursorIcon::Move => Self::Move,
64 CursorIcon::NoDrop => Self::NoDrop,
65 CursorIcon::NotAllowed => Self::NotAllowed,
66 CursorIcon::Grab => Self::Grab,
67 CursorIcon::Grabbing => Self::Grabbing,
68 CursorIcon::EResize => Self::EResize,
69 CursorIcon::NResize => Self::NResize,
70 CursorIcon::NeResize => Self::NeResize,
71 CursorIcon::NwResize => Self::NwResize,
72 CursorIcon::SResize => Self::SResize,
73 CursorIcon::SeResize => Self::SeResize,
74 CursorIcon::SwResize => Self::SwResize,
75 CursorIcon::WResize => Self::WResize,
76 CursorIcon::EwResize => Self::EwResize,
77 CursorIcon::NsResize => Self::NsResize,
78 CursorIcon::NeswResize => Self::NeswResize,
79 CursorIcon::NwseResize => Self::NwseResize,
80 CursorIcon::ColResize => Self::ColResize,
81 CursorIcon::RowResize => Self::RowResize,
82 CursorIcon::AllScroll => Self::AllScroll,
83 CursorIcon::ZoomIn => Self::ZoomIn,
84 CursorIcon::ZoomOut => Self::ZoomOut,
85 CursorIcon::DndAsk => Self::DndAsk,
86 CursorIcon::AllResize => Self::AllResize,
87 }
88 }
89}
90
91#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Hash)]
93pub enum CursorGrabMode {
94 #[default]
95 None,
96 Confined,
97 Locked,
98}
99
100impl From<CursorGrabMode> for winit::window::CursorGrabMode {
101 fn from(value: CursorGrabMode) -> Self {
102 match value {
103 CursorGrabMode::None => Self::None,
104 CursorGrabMode::Confined => Self::Confined,
105 CursorGrabMode::Locked => Self::Locked,
106 }
107 }
108}
109
110#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
113pub enum KeyCode {
114 Backquote,
115 Backslash,
116 BracketLeft,
117 BracketRight,
118 Comma,
119 Digit0,
120 Digit1,
121 Digit2,
122 Digit3,
123 Digit4,
124 Digit5,
125 Digit6,
126 Digit7,
127 Digit8,
128 Digit9,
129 Equal,
130 IntlBackslash,
131 IntlRo,
132 IntlYen,
133 KeyA,
134 KeyB,
135 KeyC,
136 KeyD,
137 KeyE,
138 KeyF,
139 KeyG,
140 KeyH,
141 KeyI,
142 KeyJ,
143 KeyK,
144 KeyL,
145 KeyM,
146 KeyN,
147 KeyO,
148 KeyP,
149 KeyQ,
150 KeyR,
151 KeyS,
152 KeyT,
153 KeyU,
154 KeyV,
155 KeyW,
156 KeyX,
157 KeyY,
158 KeyZ,
159 Minus,
160 Period,
161 Quote,
162 Semicolon,
163 Slash,
164 AltLeft,
165 AltRight,
166 Backspace,
167 CapsLock,
168 ContextMenu,
169 ControlLeft,
170 ControlRight,
171 Enter,
172 SuperLeft,
173 SuperRight,
174 ShiftLeft,
175 ShiftRight,
176 Space,
177 Tab,
178 Convert,
179 KanaMode,
180 Lang1,
181 Lang2,
182 Lang3,
183 Lang4,
184 Lang5,
185 NonConvert,
186 Delete,
187 End,
188 Help,
189 Home,
190 Insert,
191 PageDown,
192 PageUp,
193 ArrowDown,
194 ArrowLeft,
195 ArrowRight,
196 ArrowUp,
197 NumLock,
198 Numpad0,
199 Numpad1,
200 Numpad2,
201 Numpad3,
202 Numpad4,
203 Numpad5,
204 Numpad6,
205 Numpad7,
206 Numpad8,
207 Numpad9,
208 NumpadAdd,
209 NumpadBackspace,
210 NumpadClear,
211 NumpadClearEntry,
212 NumpadComma,
213 NumpadDecimal,
214 NumpadDivide,
215 NumpadEnter,
216 NumpadEqual,
217 NumpadHash,
218 NumpadMemoryAdd,
219 NumpadMemoryClear,
220 NumpadMemoryRecall,
221 NumpadMemoryStore,
222 NumpadMemorySubtract,
223 NumpadMultiply,
224 NumpadParenLeft,
225 NumpadParenRight,
226 NumpadStar,
227 NumpadSubtract,
228 Escape,
229 Fn,
230 FnLock,
231 PrintScreen,
232 ScrollLock,
233 Pause,
234 BrowserBack,
235 BrowserFavorites,
236 BrowserForward,
237 BrowserHome,
238 BrowserRefresh,
239 BrowserSearch,
240 BrowserStop,
241 Eject,
242 LaunchApp1,
243 LaunchApp2,
244 LaunchMail,
245 MediaPlayPause,
246 MediaSelect,
247 MediaStop,
248 MediaTrackNext,
249 MediaTrackPrevious,
250 Power,
251 Sleep,
252 AudioVolumeDown,
253 AudioVolumeMute,
254 AudioVolumeUp,
255 WakeUp,
256 Meta,
257 Hyper,
258 Turbo,
259 Abort,
260 Resume,
261 Suspend,
262 Again,
263 Copy,
264 Cut,
265 Find,
266 Open,
267 Paste,
268 Props,
269 Select,
270 Undo,
271 Hiragana,
272 Katakana,
273 F1,
274 F2,
275 F3,
276 F4,
277 F5,
278 F6,
279 F7,
280 F8,
281 F9,
282 F10,
283 F11,
284 F12,
285 F13,
286 F14,
287 F15,
288 F16,
289 F17,
290 F18,
291 F19,
292 F20,
293 F21,
294 F22,
295 F23,
296 F24,
297 F25,
298 F26,
299 F27,
300 F28,
301 F29,
302 F30,
303 F31,
304 F32,
305 F33,
306 F34,
307 F35,
308}
309
310impl From<KeyCode> for winit::keyboard::KeyCode {
311 fn from(value: KeyCode) -> Self {
312 match value {
313 KeyCode::Backquote => Self::Backquote,
314 KeyCode::Backslash => Self::Backslash,
315 KeyCode::BracketLeft => Self::BracketLeft,
316 KeyCode::BracketRight => Self::BracketRight,
317 KeyCode::Comma => Self::Comma,
318 KeyCode::Digit0 => Self::Digit0,
319 KeyCode::Digit1 => Self::Digit1,
320 KeyCode::Digit2 => Self::Digit2,
321 KeyCode::Digit3 => Self::Digit3,
322 KeyCode::Digit4 => Self::Digit4,
323 KeyCode::Digit5 => Self::Digit5,
324 KeyCode::Digit6 => Self::Digit6,
325 KeyCode::Digit7 => Self::Digit7,
326 KeyCode::Digit8 => Self::Digit8,
327 KeyCode::Digit9 => Self::Digit9,
328 KeyCode::Equal => Self::Equal,
329 KeyCode::IntlBackslash => Self::IntlBackslash,
330 KeyCode::IntlRo => Self::IntlRo,
331 KeyCode::IntlYen => Self::IntlYen,
332 KeyCode::KeyA => Self::KeyA,
333 KeyCode::KeyB => Self::KeyB,
334 KeyCode::KeyC => Self::KeyC,
335 KeyCode::KeyD => Self::KeyD,
336 KeyCode::KeyE => Self::KeyE,
337 KeyCode::KeyF => Self::KeyF,
338 KeyCode::KeyG => Self::KeyG,
339 KeyCode::KeyH => Self::KeyH,
340 KeyCode::KeyI => Self::KeyI,
341 KeyCode::KeyJ => Self::KeyJ,
342 KeyCode::KeyK => Self::KeyK,
343 KeyCode::KeyL => Self::KeyL,
344 KeyCode::KeyM => Self::KeyM,
345 KeyCode::KeyN => Self::KeyN,
346 KeyCode::KeyO => Self::KeyO,
347 KeyCode::KeyP => Self::KeyP,
348 KeyCode::KeyQ => Self::KeyQ,
349 KeyCode::KeyR => Self::KeyR,
350 KeyCode::KeyS => Self::KeyS,
351 KeyCode::KeyT => Self::KeyT,
352 KeyCode::KeyU => Self::KeyU,
353 KeyCode::KeyV => Self::KeyV,
354 KeyCode::KeyW => Self::KeyW,
355 KeyCode::KeyX => Self::KeyX,
356 KeyCode::KeyY => Self::KeyY,
357 KeyCode::KeyZ => Self::KeyZ,
358 KeyCode::Minus => Self::Minus,
359 KeyCode::Period => Self::Period,
360 KeyCode::Quote => Self::Quote,
361 KeyCode::Semicolon => Self::Semicolon,
362 KeyCode::Slash => Self::Slash,
363 KeyCode::AltLeft => Self::AltLeft,
364 KeyCode::AltRight => Self::AltRight,
365 KeyCode::Backspace => Self::Backspace,
366 KeyCode::CapsLock => Self::CapsLock,
367 KeyCode::ContextMenu => Self::ContextMenu,
368 KeyCode::ControlLeft => Self::ControlLeft,
369 KeyCode::ControlRight => Self::ControlRight,
370 KeyCode::Enter => Self::Enter,
371 KeyCode::SuperLeft => Self::SuperLeft,
372 KeyCode::SuperRight => Self::SuperRight,
373 KeyCode::ShiftLeft => Self::ShiftLeft,
374 KeyCode::ShiftRight => Self::ShiftRight,
375 KeyCode::Space => Self::Space,
376 KeyCode::Tab => Self::Tab,
377 KeyCode::Convert => Self::Convert,
378 KeyCode::KanaMode => Self::KanaMode,
379 KeyCode::Lang1 => Self::Lang1,
380 KeyCode::Lang2 => Self::Lang2,
381 KeyCode::Lang3 => Self::Lang3,
382 KeyCode::Lang4 => Self::Lang4,
383 KeyCode::Lang5 => Self::Lang5,
384 KeyCode::NonConvert => Self::NonConvert,
385 KeyCode::Delete => Self::Delete,
386 KeyCode::End => Self::End,
387 KeyCode::Help => Self::Help,
388 KeyCode::Home => Self::Home,
389 KeyCode::Insert => Self::Insert,
390 KeyCode::PageDown => Self::PageDown,
391 KeyCode::PageUp => Self::PageUp,
392 KeyCode::ArrowDown => Self::ArrowDown,
393 KeyCode::ArrowLeft => Self::ArrowLeft,
394 KeyCode::ArrowRight => Self::ArrowRight,
395 KeyCode::ArrowUp => Self::ArrowUp,
396 KeyCode::NumLock => Self::NumLock,
397 KeyCode::Numpad0 => Self::Numpad0,
398 KeyCode::Numpad1 => Self::Numpad1,
399 KeyCode::Numpad2 => Self::Numpad2,
400 KeyCode::Numpad3 => Self::Numpad3,
401 KeyCode::Numpad4 => Self::Numpad4,
402 KeyCode::Numpad5 => Self::Numpad5,
403 KeyCode::Numpad6 => Self::Numpad6,
404 KeyCode::Numpad7 => Self::Numpad7,
405 KeyCode::Numpad8 => Self::Numpad8,
406 KeyCode::Numpad9 => Self::Numpad9,
407 KeyCode::NumpadAdd => Self::NumpadAdd,
408 KeyCode::NumpadBackspace => Self::NumpadBackspace,
409 KeyCode::NumpadClear => Self::NumpadClear,
410 KeyCode::NumpadClearEntry => Self::NumpadClearEntry,
411 KeyCode::NumpadComma => Self::NumpadComma,
412 KeyCode::NumpadDecimal => Self::NumpadDecimal,
413 KeyCode::NumpadDivide => Self::NumpadDivide,
414 KeyCode::NumpadEnter => Self::NumpadEnter,
415 KeyCode::NumpadEqual => Self::NumpadEqual,
416 KeyCode::NumpadHash => Self::NumpadHash,
417 KeyCode::NumpadMemoryAdd => Self::NumpadMemoryAdd,
418 KeyCode::NumpadMemoryClear => Self::NumpadMemoryClear,
419 KeyCode::NumpadMemoryRecall => Self::NumpadMemoryRecall,
420 KeyCode::NumpadMemoryStore => Self::NumpadMemoryStore,
421 KeyCode::NumpadMemorySubtract => Self::NumpadMemorySubtract,
422 KeyCode::NumpadMultiply => Self::NumpadMultiply,
423 KeyCode::NumpadParenLeft => Self::NumpadParenLeft,
424 KeyCode::NumpadParenRight => Self::NumpadParenRight,
425 KeyCode::NumpadStar => Self::NumpadStar,
426 KeyCode::NumpadSubtract => Self::NumpadSubtract,
427 KeyCode::Escape => Self::Escape,
428 KeyCode::Fn => Self::Fn,
429 KeyCode::FnLock => Self::FnLock,
430 KeyCode::PrintScreen => Self::PrintScreen,
431 KeyCode::ScrollLock => Self::ScrollLock,
432 KeyCode::Pause => Self::Pause,
433 KeyCode::BrowserBack => Self::BrowserBack,
434 KeyCode::BrowserFavorites => Self::BrowserFavorites,
435 KeyCode::BrowserForward => Self::BrowserForward,
436 KeyCode::BrowserHome => Self::BrowserHome,
437 KeyCode::BrowserRefresh => Self::BrowserRefresh,
438 KeyCode::BrowserSearch => Self::BrowserSearch,
439 KeyCode::BrowserStop => Self::BrowserStop,
440 KeyCode::Eject => Self::Eject,
441 KeyCode::LaunchApp1 => Self::LaunchApp1,
442 KeyCode::LaunchApp2 => Self::LaunchApp2,
443 KeyCode::LaunchMail => Self::LaunchMail,
444 KeyCode::MediaPlayPause => Self::MediaPlayPause,
445 KeyCode::MediaSelect => Self::MediaSelect,
446 KeyCode::MediaStop => Self::MediaStop,
447 KeyCode::MediaTrackNext => Self::MediaTrackNext,
448 KeyCode::MediaTrackPrevious => Self::MediaTrackPrevious,
449 KeyCode::Power => Self::Power,
450 KeyCode::Sleep => Self::Sleep,
451 KeyCode::AudioVolumeDown => Self::AudioVolumeDown,
452 KeyCode::AudioVolumeMute => Self::AudioVolumeMute,
453 KeyCode::AudioVolumeUp => Self::AudioVolumeUp,
454 KeyCode::WakeUp => Self::WakeUp,
455 KeyCode::Meta => Self::Meta,
456 KeyCode::Hyper => Self::Hyper,
457 KeyCode::Turbo => Self::Turbo,
458 KeyCode::Abort => Self::Abort,
459 KeyCode::Resume => Self::Resume,
460 KeyCode::Suspend => Self::Suspend,
461 KeyCode::Again => Self::Again,
462 KeyCode::Copy => Self::Copy,
463 KeyCode::Cut => Self::Cut,
464 KeyCode::Find => Self::Find,
465 KeyCode::Open => Self::Open,
466 KeyCode::Paste => Self::Paste,
467 KeyCode::Props => Self::Props,
468 KeyCode::Select => Self::Select,
469 KeyCode::Undo => Self::Undo,
470 KeyCode::Hiragana => Self::Hiragana,
471 KeyCode::Katakana => Self::Katakana,
472 KeyCode::F1 => Self::F1,
473 KeyCode::F2 => Self::F2,
474 KeyCode::F3 => Self::F3,
475 KeyCode::F4 => Self::F4,
476 KeyCode::F5 => Self::F5,
477 KeyCode::F6 => Self::F6,
478 KeyCode::F7 => Self::F7,
479 KeyCode::F8 => Self::F8,
480 KeyCode::F9 => Self::F9,
481 KeyCode::F10 => Self::F10,
482 KeyCode::F11 => Self::F11,
483 KeyCode::F12 => Self::F12,
484 KeyCode::F13 => Self::F13,
485 KeyCode::F14 => Self::F14,
486 KeyCode::F15 => Self::F15,
487 KeyCode::F16 => Self::F16,
488 KeyCode::F17 => Self::F17,
489 KeyCode::F18 => Self::F18,
490 KeyCode::F19 => Self::F19,
491 KeyCode::F20 => Self::F20,
492 KeyCode::F21 => Self::F21,
493 KeyCode::F22 => Self::F22,
494 KeyCode::F23 => Self::F23,
495 KeyCode::F24 => Self::F24,
496 KeyCode::F25 => Self::F25,
497 KeyCode::F26 => Self::F26,
498 KeyCode::F27 => Self::F27,
499 KeyCode::F28 => Self::F28,
500 KeyCode::F29 => Self::F29,
501 KeyCode::F30 => Self::F30,
502 KeyCode::F31 => Self::F31,
503 KeyCode::F32 => Self::F32,
504 KeyCode::F33 => Self::F33,
505 KeyCode::F34 => Self::F34,
506 KeyCode::F35 => Self::F35,
507 }
508 }
509}
510
511#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
512pub enum MouseButton {
514 Left,
515 Right,
516 Middle,
517 Back,
518 Forward,
519 Other(u16),
520}
521
522impl From<MouseButton> for winit::event::MouseButton {
523 fn from(value: MouseButton) -> Self {
524 match value {
525 MouseButton::Left => Self::Left,
526 MouseButton::Right => Self::Right,
527 MouseButton::Middle => Self::Middle,
528 MouseButton::Back => Self::Back,
529 MouseButton::Forward => Self::Forward,
530 MouseButton::Other(code) => Self::Other(code),
531 }
532 }
533}
534
535#[derive(Copy, Clone, Debug, PartialEq, Eq)]
536pub enum TouchPhase {
538 Started,
539 Moved,
540 Ended,
541 Cancelled,
542}
543
544impl From<winit::event::TouchPhase> for TouchPhase {
545 fn from(value: winit::event::TouchPhase) -> Self {
546 match value {
547 winit::event::TouchPhase::Started => Self::Started,
548 winit::event::TouchPhase::Moved => Self::Moved,
549 winit::event::TouchPhase::Ended => Self::Ended,
550 winit::event::TouchPhase::Cancelled => Self::Cancelled,
551 }
552 }
553}
554
555#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
556pub enum AstcBlock {
558 B4x4,
559 B5x4,
560 B5x5,
561 B6x5,
562 B6x6,
563 B8x5,
564 B8x6,
565 B8x8,
566 B10x5,
567 B10x6,
568 B10x8,
569 B10x10,
570 B12x10,
571 B12x12,
572}
573
574impl From<AstcBlock> for wgpu::AstcBlock {
575 fn from(value: AstcBlock) -> Self {
576 match value {
577 AstcBlock::B4x4 => Self::B4x4,
578 AstcBlock::B5x4 => Self::B5x4,
579 AstcBlock::B5x5 => Self::B5x5,
580 AstcBlock::B6x5 => Self::B6x5,
581 AstcBlock::B6x6 => Self::B6x6,
582 AstcBlock::B8x5 => Self::B8x5,
583 AstcBlock::B8x6 => Self::B8x6,
584 AstcBlock::B8x8 => Self::B8x8,
585 AstcBlock::B10x5 => Self::B10x5,
586 AstcBlock::B10x6 => Self::B10x6,
587 AstcBlock::B10x8 => Self::B10x8,
588 AstcBlock::B10x10 => Self::B10x10,
589 AstcBlock::B12x10 => Self::B12x10,
590 AstcBlock::B12x12 => Self::B12x12,
591 }
592 }
593}
594
595impl From<wgpu::AstcBlock> for AstcBlock {
596 fn from(value: wgpu::AstcBlock) -> Self {
597 match value {
598 wgpu::AstcBlock::B4x4 => Self::B4x4,
599 wgpu::AstcBlock::B5x4 => Self::B5x4,
600 wgpu::AstcBlock::B5x5 => Self::B5x5,
601 wgpu::AstcBlock::B6x5 => Self::B6x5,
602 wgpu::AstcBlock::B6x6 => Self::B6x6,
603 wgpu::AstcBlock::B8x5 => Self::B8x5,
604 wgpu::AstcBlock::B8x6 => Self::B8x6,
605 wgpu::AstcBlock::B8x8 => Self::B8x8,
606 wgpu::AstcBlock::B10x5 => Self::B10x5,
607 wgpu::AstcBlock::B10x6 => Self::B10x6,
608 wgpu::AstcBlock::B10x8 => Self::B10x8,
609 wgpu::AstcBlock::B10x10 => Self::B10x10,
610 wgpu::AstcBlock::B12x10 => Self::B12x10,
611 wgpu::AstcBlock::B12x12 => Self::B12x12,
612 }
613 }
614}
615
616#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
617pub enum AstcChannel {
619 Unorm,
620 UnormSrgb,
621 Hdr,
622}
623
624impl From<AstcChannel> for wgpu::AstcChannel {
625 fn from(value: AstcChannel) -> Self {
626 match value {
627 AstcChannel::Unorm => Self::Unorm,
628 AstcChannel::UnormSrgb => Self::UnormSrgb,
629 AstcChannel::Hdr => Self::Hdr,
630 }
631 }
632}
633
634impl From<wgpu::AstcChannel> for AstcChannel {
635 fn from(value: wgpu::AstcChannel) -> Self {
636 match value {
637 wgpu::AstcChannel::Unorm => Self::Unorm,
638 wgpu::AstcChannel::UnormSrgb => Self::UnormSrgb,
639 wgpu::AstcChannel::Hdr => Self::Hdr,
640 }
641 }
642}
643
644#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
645pub enum TextureFormat {
648 R8Unorm,
649 R8Snorm,
650 R8Uint,
651 R8Sint,
652 R16Uint,
653 R16Sint,
654 R16Unorm,
655 R16Snorm,
656 R16Float,
657 Rg8Unorm,
658 Rg8Snorm,
659 Rg8Uint,
660 Rg8Sint,
661 R32Uint,
662 R32Sint,
663 R32Float,
664 Rg16Uint,
665 Rg16Sint,
666 Rg16Unorm,
667 Rg16Snorm,
668 Rg16Float,
669 Rgba8Unorm,
670 Rgba8UnormSrgb,
671 Rgba8Snorm,
672 Rgba8Uint,
673 Rgba8Sint,
674 Bgra8Unorm,
675 Bgra8UnormSrgb,
676 Rgb9e5Ufloat,
677 Rgb10a2Uint,
678 Rgb10a2Unorm,
679 Rg11b10Ufloat,
680 R64Uint,
681 Rg32Uint,
682 Rg32Sint,
683 Rg32Float,
684 Rgba16Uint,
685 Rgba16Sint,
686 Rgba16Unorm,
687 Rgba16Snorm,
688 Rgba16Float,
689 Rgba32Uint,
690 Rgba32Sint,
691 Rgba32Float,
692 Stencil8,
693 Depth16Unorm,
694 Depth24Plus,
695 Depth24PlusStencil8,
696 Depth32Float,
697 Depth32FloatStencil8,
698 NV12,
699 P010,
700 Bc1RgbaUnorm,
701 Bc1RgbaUnormSrgb,
702 Bc2RgbaUnorm,
703 Bc2RgbaUnormSrgb,
704 Bc3RgbaUnorm,
705 Bc3RgbaUnormSrgb,
706 Bc4RUnorm,
707 Bc4RSnorm,
708 Bc5RgUnorm,
709 Bc5RgSnorm,
710 Bc6hRgbUfloat,
711 Bc6hRgbFloat,
712 Bc7RgbaUnorm,
713 Bc7RgbaUnormSrgb,
714 Etc2Rgb8Unorm,
715 Etc2Rgb8UnormSrgb,
716 Etc2Rgb8A1Unorm,
717 Etc2Rgb8A1UnormSrgb,
718 Etc2Rgba8Unorm,
719 Etc2Rgba8UnormSrgb,
720 EacR11Unorm,
721 EacR11Snorm,
722 EacRg11Unorm,
723 EacRg11Snorm,
724 Astc { block: AstcBlock, channel: AstcChannel },
725}
726
727impl From<TextureFormat> for wgpu::TextureFormat {
728 fn from(format: TextureFormat) -> Self {
729 match format {
730 TextureFormat::R8Unorm => Self::R8Unorm,
731 TextureFormat::R8Snorm => Self::R8Snorm,
732 TextureFormat::R8Uint => Self::R8Uint,
733 TextureFormat::R8Sint => Self::R8Sint,
734 TextureFormat::R16Uint => Self::R16Uint,
735 TextureFormat::R16Sint => Self::R16Sint,
736 TextureFormat::R16Unorm => Self::R16Unorm,
737 TextureFormat::R16Snorm => Self::R16Snorm,
738 TextureFormat::R16Float => Self::R16Float,
739 TextureFormat::Rg8Unorm => Self::Rg8Unorm,
740 TextureFormat::Rg8Snorm => Self::Rg8Snorm,
741 TextureFormat::Rg8Uint => Self::Rg8Uint,
742 TextureFormat::Rg8Sint => Self::Rg8Sint,
743 TextureFormat::R32Uint => Self::R32Uint,
744 TextureFormat::R32Sint => Self::R32Sint,
745 TextureFormat::R32Float => Self::R32Float,
746 TextureFormat::Rg16Uint => Self::Rg16Uint,
747 TextureFormat::Rg16Sint => Self::Rg16Sint,
748 TextureFormat::Rg16Unorm => Self::Rg16Unorm,
749 TextureFormat::Rg16Snorm => Self::Rg16Snorm,
750 TextureFormat::Rg16Float => Self::Rg16Float,
751 TextureFormat::Rgba8Unorm => Self::Rgba8Unorm,
752 TextureFormat::Rgba8UnormSrgb => Self::Rgba8UnormSrgb,
753 TextureFormat::Rgba8Snorm => Self::Rgba8Snorm,
754 TextureFormat::Rgba8Uint => Self::Rgba8Uint,
755 TextureFormat::Rgba8Sint => Self::Rgba8Sint,
756 TextureFormat::Bgra8Unorm => Self::Bgra8Unorm,
757 TextureFormat::Bgra8UnormSrgb => Self::Bgra8UnormSrgb,
758 TextureFormat::Rgb9e5Ufloat => Self::Rgb9e5Ufloat,
759 TextureFormat::Rgb10a2Uint => Self::Rgb10a2Uint,
760 TextureFormat::Rgb10a2Unorm => Self::Rgb10a2Unorm,
761 TextureFormat::Rg11b10Ufloat => Self::Rg11b10Ufloat,
762 TextureFormat::R64Uint => Self::R64Uint,
763 TextureFormat::Rg32Uint => Self::Rg32Uint,
764 TextureFormat::Rg32Sint => Self::Rg32Sint,
765 TextureFormat::Rg32Float => Self::Rg32Float,
766 TextureFormat::Rgba16Uint => Self::Rgba16Uint,
767 TextureFormat::Rgba16Sint => Self::Rgba16Sint,
768 TextureFormat::Rgba16Unorm => Self::Rgba16Unorm,
769 TextureFormat::Rgba16Snorm => Self::Rgba16Snorm,
770 TextureFormat::Rgba16Float => Self::Rgba16Float,
771 TextureFormat::Rgba32Uint => Self::Rgba32Uint,
772 TextureFormat::Rgba32Sint => Self::Rgba32Sint,
773 TextureFormat::Rgba32Float => Self::Rgba32Float,
774 TextureFormat::Stencil8 => Self::Stencil8,
775 TextureFormat::Depth16Unorm => Self::Depth16Unorm,
776 TextureFormat::Depth24Plus => Self::Depth24Plus,
777 TextureFormat::Depth24PlusStencil8 => Self::Depth24PlusStencil8,
778 TextureFormat::Depth32Float => Self::Depth32Float,
779 TextureFormat::Depth32FloatStencil8 => Self::Depth32FloatStencil8,
780 TextureFormat::NV12 => Self::NV12,
781 TextureFormat::P010 => Self::P010,
782 TextureFormat::Bc1RgbaUnorm => Self::Bc1RgbaUnorm,
783 TextureFormat::Bc1RgbaUnormSrgb => Self::Bc1RgbaUnormSrgb,
784 TextureFormat::Bc2RgbaUnorm => Self::Bc2RgbaUnorm,
785 TextureFormat::Bc2RgbaUnormSrgb => Self::Bc2RgbaUnormSrgb,
786 TextureFormat::Bc3RgbaUnorm => Self::Bc3RgbaUnorm,
787 TextureFormat::Bc3RgbaUnormSrgb => Self::Bc3RgbaUnormSrgb,
788 TextureFormat::Bc4RUnorm => Self::Bc4RUnorm,
789 TextureFormat::Bc4RSnorm => Self::Bc4RSnorm,
790 TextureFormat::Bc5RgUnorm => Self::Bc5RgUnorm,
791 TextureFormat::Bc5RgSnorm => Self::Bc5RgSnorm,
792 TextureFormat::Bc6hRgbUfloat => Self::Bc6hRgbUfloat,
793 TextureFormat::Bc6hRgbFloat => Self::Bc6hRgbFloat,
794 TextureFormat::Bc7RgbaUnorm => Self::Bc7RgbaUnorm,
795 TextureFormat::Bc7RgbaUnormSrgb => Self::Bc7RgbaUnormSrgb,
796 TextureFormat::Etc2Rgb8Unorm => Self::Etc2Rgb8Unorm,
797 TextureFormat::Etc2Rgb8UnormSrgb => Self::Etc2Rgb8UnormSrgb,
798 TextureFormat::Etc2Rgb8A1Unorm => Self::Etc2Rgb8A1Unorm,
799 TextureFormat::Etc2Rgb8A1UnormSrgb => Self::Etc2Rgb8A1UnormSrgb,
800 TextureFormat::Etc2Rgba8Unorm => Self::Etc2Rgba8Unorm,
801 TextureFormat::Etc2Rgba8UnormSrgb => Self::Etc2Rgba8UnormSrgb,
802 TextureFormat::EacR11Unorm => Self::EacR11Unorm,
803 TextureFormat::EacR11Snorm => Self::EacR11Snorm,
804 TextureFormat::EacRg11Unorm => Self::EacRg11Unorm,
805 TextureFormat::EacRg11Snorm => Self::EacRg11Snorm,
806 TextureFormat::Astc { block, channel } => {
807 Self::Astc { block: block.into(), channel: channel.into() }
808 }
809 }
810 }
811}
812
813impl From<wgpu::TextureFormat> for TextureFormat {
814 fn from(format: wgpu::TextureFormat) -> Self {
815 match format {
816 wgpu::TextureFormat::R8Unorm => Self::R8Unorm,
817 wgpu::TextureFormat::R8Snorm => Self::R8Snorm,
818 wgpu::TextureFormat::R8Uint => Self::R8Uint,
819 wgpu::TextureFormat::R8Sint => Self::R8Sint,
820 wgpu::TextureFormat::R16Uint => Self::R16Uint,
821 wgpu::TextureFormat::R16Sint => Self::R16Sint,
822 wgpu::TextureFormat::R16Unorm => Self::R16Unorm,
823 wgpu::TextureFormat::R16Snorm => Self::R16Snorm,
824 wgpu::TextureFormat::R16Float => Self::R16Float,
825 wgpu::TextureFormat::Rg8Unorm => Self::Rg8Unorm,
826 wgpu::TextureFormat::Rg8Snorm => Self::Rg8Snorm,
827 wgpu::TextureFormat::Rg8Uint => Self::Rg8Uint,
828 wgpu::TextureFormat::Rg8Sint => Self::Rg8Sint,
829 wgpu::TextureFormat::R32Uint => Self::R32Uint,
830 wgpu::TextureFormat::R32Sint => Self::R32Sint,
831 wgpu::TextureFormat::R32Float => Self::R32Float,
832 wgpu::TextureFormat::Rg16Uint => Self::Rg16Uint,
833 wgpu::TextureFormat::Rg16Sint => Self::Rg16Sint,
834 wgpu::TextureFormat::Rg16Unorm => Self::Rg16Unorm,
835 wgpu::TextureFormat::Rg16Snorm => Self::Rg16Snorm,
836 wgpu::TextureFormat::Rg16Float => Self::Rg16Float,
837 wgpu::TextureFormat::Rgba8Unorm => Self::Rgba8Unorm,
838 wgpu::TextureFormat::Rgba8UnormSrgb => Self::Rgba8UnormSrgb,
839 wgpu::TextureFormat::Rgba8Snorm => Self::Rgba8Snorm,
840 wgpu::TextureFormat::Rgba8Uint => Self::Rgba8Uint,
841 wgpu::TextureFormat::Rgba8Sint => Self::Rgba8Sint,
842 wgpu::TextureFormat::Bgra8Unorm => Self::Bgra8Unorm,
843 wgpu::TextureFormat::Bgra8UnormSrgb => Self::Bgra8UnormSrgb,
844 wgpu::TextureFormat::Rgb9e5Ufloat => Self::Rgb9e5Ufloat,
845 wgpu::TextureFormat::Rgb10a2Uint => Self::Rgb10a2Uint,
846 wgpu::TextureFormat::Rgb10a2Unorm => Self::Rgb10a2Unorm,
847 wgpu::TextureFormat::Rg11b10Ufloat => Self::Rg11b10Ufloat,
848 wgpu::TextureFormat::R64Uint => Self::R64Uint,
849 wgpu::TextureFormat::Rg32Uint => Self::Rg32Uint,
850 wgpu::TextureFormat::Rg32Sint => Self::Rg32Sint,
851 wgpu::TextureFormat::Rg32Float => Self::Rg32Float,
852 wgpu::TextureFormat::Rgba16Uint => Self::Rgba16Uint,
853 wgpu::TextureFormat::Rgba16Sint => Self::Rgba16Sint,
854 wgpu::TextureFormat::Rgba16Unorm => Self::Rgba16Unorm,
855 wgpu::TextureFormat::Rgba16Snorm => Self::Rgba16Snorm,
856 wgpu::TextureFormat::Rgba16Float => Self::Rgba16Float,
857 wgpu::TextureFormat::Rgba32Uint => Self::Rgba32Uint,
858 wgpu::TextureFormat::Rgba32Sint => Self::Rgba32Sint,
859 wgpu::TextureFormat::Rgba32Float => Self::Rgba32Float,
860 wgpu::TextureFormat::Stencil8 => Self::Stencil8,
861 wgpu::TextureFormat::Depth16Unorm => Self::Depth16Unorm,
862 wgpu::TextureFormat::Depth24Plus => Self::Depth24Plus,
863 wgpu::TextureFormat::Depth24PlusStencil8 => Self::Depth24PlusStencil8,
864 wgpu::TextureFormat::Depth32Float => Self::Depth32Float,
865 wgpu::TextureFormat::Depth32FloatStencil8 => Self::Depth32FloatStencil8,
866 wgpu::TextureFormat::NV12 => Self::NV12,
867 wgpu::TextureFormat::P010 => Self::P010,
868 wgpu::TextureFormat::Bc1RgbaUnorm => Self::Bc1RgbaUnorm,
869 wgpu::TextureFormat::Bc1RgbaUnormSrgb => Self::Bc1RgbaUnormSrgb,
870 wgpu::TextureFormat::Bc2RgbaUnorm => Self::Bc2RgbaUnorm,
871 wgpu::TextureFormat::Bc2RgbaUnormSrgb => Self::Bc2RgbaUnormSrgb,
872 wgpu::TextureFormat::Bc3RgbaUnorm => Self::Bc3RgbaUnorm,
873 wgpu::TextureFormat::Bc3RgbaUnormSrgb => Self::Bc3RgbaUnormSrgb,
874 wgpu::TextureFormat::Bc4RUnorm => Self::Bc4RUnorm,
875 wgpu::TextureFormat::Bc4RSnorm => Self::Bc4RSnorm,
876 wgpu::TextureFormat::Bc5RgUnorm => Self::Bc5RgUnorm,
877 wgpu::TextureFormat::Bc5RgSnorm => Self::Bc5RgSnorm,
878 wgpu::TextureFormat::Bc6hRgbUfloat => Self::Bc6hRgbUfloat,
879 wgpu::TextureFormat::Bc6hRgbFloat => Self::Bc6hRgbFloat,
880 wgpu::TextureFormat::Bc7RgbaUnorm => Self::Bc7RgbaUnorm,
881 wgpu::TextureFormat::Bc7RgbaUnormSrgb => Self::Bc7RgbaUnormSrgb,
882 wgpu::TextureFormat::Etc2Rgb8Unorm => Self::Etc2Rgb8Unorm,
883 wgpu::TextureFormat::Etc2Rgb8UnormSrgb => Self::Etc2Rgb8UnormSrgb,
884 wgpu::TextureFormat::Etc2Rgb8A1Unorm => Self::Etc2Rgb8A1Unorm,
885 wgpu::TextureFormat::Etc2Rgb8A1UnormSrgb => Self::Etc2Rgb8A1UnormSrgb,
886 wgpu::TextureFormat::Etc2Rgba8Unorm => Self::Etc2Rgba8Unorm,
887 wgpu::TextureFormat::Etc2Rgba8UnormSrgb => Self::Etc2Rgba8UnormSrgb,
888 wgpu::TextureFormat::EacR11Unorm => Self::EacR11Unorm,
889 wgpu::TextureFormat::EacR11Snorm => Self::EacR11Snorm,
890 wgpu::TextureFormat::EacRg11Unorm => Self::EacRg11Unorm,
891 wgpu::TextureFormat::EacRg11Snorm => Self::EacRg11Snorm,
892 wgpu::TextureFormat::Astc { block, channel } => {
893 Self::Astc { block: block.into(), channel: channel.into() }
894 }
895 }
896 }
897}
898
899#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
900pub enum VertexFormat {
903 Uint8,
904 Uint8x2,
905 Uint8x4,
906 Sint8,
907 Sint8x2,
908 Sint8x4,
909 Unorm8,
910 Unorm8x2,
911 Unorm8x4,
912 Snorm8,
913 Snorm8x2,
914 Snorm8x4,
915 Uint16,
916 Uint16x2,
917 Uint16x4,
918 Sint16,
919 Sint16x2,
920 Sint16x4,
921 Unorm16,
922 Unorm16x2,
923 Unorm16x4,
924 Snorm16,
925 Snorm16x2,
926 Snorm16x4,
927 Float16,
928 Float16x2,
929 Float16x4,
930 Float32,
931 Float32x2,
932 Float32x3,
933 Float32x4,
934 Uint32,
935 Uint32x2,
936 Uint32x3,
937 Uint32x4,
938 Sint32,
939 Sint32x2,
940 Sint32x3,
941 Sint32x4,
942 Float64,
943 Float64x2,
944 Float64x3,
945 Float64x4,
946 Unorm10_10_10_2,
947 Unorm8x4Bgra,
948}
949
950impl From<VertexFormat> for wgpu::VertexFormat {
951 fn from(format: VertexFormat) -> Self {
952 match format {
953 VertexFormat::Uint8 => Self::Uint8,
954 VertexFormat::Uint8x2 => Self::Uint8x2,
955 VertexFormat::Uint8x4 => Self::Uint8x4,
956 VertexFormat::Sint8 => Self::Sint8,
957 VertexFormat::Sint8x2 => Self::Sint8x2,
958 VertexFormat::Sint8x4 => Self::Sint8x4,
959 VertexFormat::Unorm8 => Self::Unorm8,
960 VertexFormat::Unorm8x2 => Self::Unorm8x2,
961 VertexFormat::Unorm8x4 => Self::Unorm8x4,
962 VertexFormat::Snorm8 => Self::Snorm8,
963 VertexFormat::Snorm8x2 => Self::Snorm8x2,
964 VertexFormat::Snorm8x4 => Self::Snorm8x4,
965 VertexFormat::Uint16 => Self::Uint16,
966 VertexFormat::Uint16x2 => Self::Uint16x2,
967 VertexFormat::Uint16x4 => Self::Uint16x4,
968 VertexFormat::Sint16 => Self::Sint16,
969 VertexFormat::Sint16x2 => Self::Sint16x2,
970 VertexFormat::Sint16x4 => Self::Sint16x4,
971 VertexFormat::Unorm16 => Self::Unorm16,
972 VertexFormat::Unorm16x2 => Self::Unorm16x2,
973 VertexFormat::Unorm16x4 => Self::Unorm16x4,
974 VertexFormat::Snorm16 => Self::Snorm16,
975 VertexFormat::Snorm16x2 => Self::Snorm16x2,
976 VertexFormat::Snorm16x4 => Self::Snorm16x4,
977 VertexFormat::Float16 => Self::Float16,
978 VertexFormat::Float16x2 => Self::Float16x2,
979 VertexFormat::Float16x4 => Self::Float16x4,
980 VertexFormat::Float32 => Self::Float32,
981 VertexFormat::Float32x2 => Self::Float32x2,
982 VertexFormat::Float32x3 => Self::Float32x3,
983 VertexFormat::Float32x4 => Self::Float32x4,
984 VertexFormat::Uint32 => Self::Uint32,
985 VertexFormat::Uint32x2 => Self::Uint32x2,
986 VertexFormat::Uint32x3 => Self::Uint32x3,
987 VertexFormat::Uint32x4 => Self::Uint32x4,
988 VertexFormat::Sint32 => Self::Sint32,
989 VertexFormat::Sint32x2 => Self::Sint32x2,
990 VertexFormat::Sint32x3 => Self::Sint32x3,
991 VertexFormat::Sint32x4 => Self::Sint32x4,
992 VertexFormat::Float64 => Self::Float64,
993 VertexFormat::Float64x2 => Self::Float64x2,
994 VertexFormat::Float64x3 => Self::Float64x3,
995 VertexFormat::Float64x4 => Self::Float64x4,
996 VertexFormat::Unorm10_10_10_2 => Self::Unorm10_10_10_2,
997 VertexFormat::Unorm8x4Bgra => Self::Unorm8x4Bgra,
998 }
999 }
1000}
1001
1002#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1003pub enum VertexStepMode {
1005 Vertex,
1006 Instance,
1007}
1008
1009impl From<VertexStepMode> for wgpu::VertexStepMode {
1010 fn from(mode: VertexStepMode) -> Self {
1011 match mode {
1012 VertexStepMode::Vertex => Self::Vertex,
1013 VertexStepMode::Instance => Self::Instance,
1014 }
1015 }
1016}
1017
1018#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1019pub enum Face {
1021 Front,
1022 Back,
1023}
1024
1025impl From<Face> for wgpu::Face {
1026 fn from(value: Face) -> Self {
1027 match value {
1028 Face::Front => Self::Front,
1029 Face::Back => Self::Back,
1030 }
1031 }
1032}
1033
1034#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1035pub enum PolygonMode {
1037 Fill,
1038 Line,
1039 Point,
1040}
1041
1042impl From<PolygonMode> for wgpu::PolygonMode {
1043 fn from(value: PolygonMode) -> Self {
1044 match value {
1045 PolygonMode::Fill => Self::Fill,
1046 PolygonMode::Line => Self::Line,
1047 PolygonMode::Point => Self::Point,
1048 }
1049 }
1050}
1051
1052#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1053pub enum BlendFactor {
1055 Zero,
1056 One,
1057 Src,
1058 OneMinusSrc,
1059 SrcAlpha,
1060 OneMinusSrcAlpha,
1061 Dst,
1062 OneMinusDst,
1063 DstAlpha,
1064 OneMinusDstAlpha,
1065 SrcAlphaSaturated,
1066 Constant,
1067 OneMinusConstant,
1068 Src1,
1069 OneMinusSrc1,
1070 Src1Alpha,
1071 OneMinusSrc1Alpha,
1072}
1073
1074impl From<BlendFactor> for wgpu::BlendFactor {
1075 fn from(value: BlendFactor) -> Self {
1076 match value {
1077 BlendFactor::Zero => Self::Zero,
1078 BlendFactor::One => Self::One,
1079 BlendFactor::Src => Self::Src,
1080 BlendFactor::OneMinusSrc => Self::OneMinusSrc,
1081 BlendFactor::SrcAlpha => Self::SrcAlpha,
1082 BlendFactor::OneMinusSrcAlpha => Self::OneMinusSrcAlpha,
1083 BlendFactor::Dst => Self::Dst,
1084 BlendFactor::OneMinusDst => Self::OneMinusDst,
1085 BlendFactor::DstAlpha => Self::DstAlpha,
1086 BlendFactor::OneMinusDstAlpha => Self::OneMinusDstAlpha,
1087 BlendFactor::SrcAlphaSaturated => Self::SrcAlphaSaturated,
1088 BlendFactor::Constant => Self::Constant,
1089 BlendFactor::OneMinusConstant => Self::OneMinusConstant,
1090 BlendFactor::Src1 => Self::Src1,
1091 BlendFactor::OneMinusSrc1 => Self::OneMinusSrc1,
1092 BlendFactor::Src1Alpha => Self::Src1Alpha,
1093 BlendFactor::OneMinusSrc1Alpha => Self::OneMinusSrc1Alpha,
1094 }
1095 }
1096}
1097
1098#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1099pub enum BlendOperation {
1101 Add,
1102 Subtract,
1103 ReverseSubtract,
1104 Min,
1105 Max,
1106}
1107
1108impl From<BlendOperation> for wgpu::BlendOperation {
1109 fn from(value: BlendOperation) -> Self {
1110 match value {
1111 BlendOperation::Add => Self::Add,
1112 BlendOperation::Subtract => Self::Subtract,
1113 BlendOperation::ReverseSubtract => Self::ReverseSubtract,
1114 BlendOperation::Min => Self::Min,
1115 BlendOperation::Max => Self::Max,
1116 }
1117 }
1118}
1119
1120#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1121pub enum CompareFunction {
1123 Never,
1124 Less,
1125 Equal,
1126 LessEqual,
1127 Greater,
1128 NotEqual,
1129 GreaterEqual,
1130 Always,
1131}
1132
1133impl From<CompareFunction> for wgpu::CompareFunction {
1134 fn from(value: CompareFunction) -> Self {
1135 match value {
1136 CompareFunction::Never => Self::Never,
1137 CompareFunction::Less => Self::Less,
1138 CompareFunction::Equal => Self::Equal,
1139 CompareFunction::LessEqual => Self::LessEqual,
1140 CompareFunction::Greater => Self::Greater,
1141 CompareFunction::NotEqual => Self::NotEqual,
1142 CompareFunction::GreaterEqual => Self::GreaterEqual,
1143 CompareFunction::Always => Self::Always,
1144 }
1145 }
1146}
1147
1148#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1149pub enum StencilOperation {
1151 Keep,
1152 Zero,
1153 Replace,
1154 Invert,
1155 IncrementClamp,
1156 DecrementClamp,
1157 IncrementWrap,
1158 DecrementWrap,
1159}
1160
1161impl From<StencilOperation> for wgpu::StencilOperation {
1162 fn from(value: StencilOperation) -> Self {
1163 match value {
1164 StencilOperation::Keep => Self::Keep,
1165 StencilOperation::Zero => Self::Zero,
1166 StencilOperation::Replace => Self::Replace,
1167 StencilOperation::Invert => Self::Invert,
1168 StencilOperation::IncrementClamp => Self::IncrementClamp,
1169 StencilOperation::DecrementClamp => Self::DecrementClamp,
1170 StencilOperation::IncrementWrap => Self::IncrementWrap,
1171 StencilOperation::DecrementWrap => Self::DecrementWrap,
1172 }
1173 }
1174}
1175
1176#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1177pub enum TextureSampleType {
1180 Float { filterable: bool },
1181 Depth,
1182 Sint,
1183 Uint,
1184}
1185
1186impl From<TextureSampleType> for wgpu::TextureSampleType {
1187 fn from(value: TextureSampleType) -> Self {
1188 match value {
1189 TextureSampleType::Float { filterable } => Self::Float { filterable },
1190 TextureSampleType::Depth => Self::Depth,
1191 TextureSampleType::Sint => Self::Sint,
1192 TextureSampleType::Uint => Self::Uint,
1193 }
1194 }
1195}
1196
1197#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1198pub enum TextureViewDimension {
1200 D1,
1201 D2,
1202 D2Array,
1203 Cube,
1204 CubeArray,
1205 D3,
1206}
1207
1208impl From<TextureViewDimension> for wgpu::TextureViewDimension {
1209 fn from(value: TextureViewDimension) -> Self {
1210 match value {
1211 TextureViewDimension::D1 => Self::D1,
1212 TextureViewDimension::D2 => Self::D2,
1213 TextureViewDimension::D2Array => Self::D2Array,
1214 TextureViewDimension::Cube => Self::Cube,
1215 TextureViewDimension::CubeArray => Self::CubeArray,
1216 TextureViewDimension::D3 => Self::D3,
1217 }
1218 }
1219}
1220
1221#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1222pub enum StorageTextureAccess {
1224 WriteOnly,
1225 ReadOnly,
1226 ReadWrite,
1227 Atomic,
1228}
1229
1230impl From<StorageTextureAccess> for wgpu::StorageTextureAccess {
1231 fn from(value: StorageTextureAccess) -> Self {
1232 match value {
1233 StorageTextureAccess::WriteOnly => Self::WriteOnly,
1234 StorageTextureAccess::ReadOnly => Self::ReadOnly,
1235 StorageTextureAccess::ReadWrite => Self::ReadWrite,
1236 StorageTextureAccess::Atomic => Self::Atomic,
1237 }
1238 }
1239}
1240
1241#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
1242pub enum IndexFormat {
1244 Uint16,
1245 Uint32,
1246}
1247
1248impl From<IndexFormat> for wgpu::IndexFormat {
1249 fn from(format: IndexFormat) -> Self {
1250 match format {
1251 IndexFormat::Uint16 => Self::Uint16,
1252 IndexFormat::Uint32 => Self::Uint32,
1253 }
1254 }
1255}
1256
1257#[cfg(test)]
1258mod tests {
1259 use super::*;
1260
1261 #[test]
1262 fn cursor_icon_conversion_is_positional_not_coincidental() {
1263 assert_eq!(winit::window::CursorIcon::from(CursorIcon::Default), winit::window::CursorIcon::Default);
1264 assert_eq!(winit::window::CursorIcon::from(CursorIcon::Pointer), winit::window::CursorIcon::Pointer);
1265 assert_eq!(winit::window::CursorIcon::from(CursorIcon::NwseResize), winit::window::CursorIcon::NwseResize);
1266 assert_eq!(winit::window::CursorIcon::from(CursorIcon::AllResize), winit::window::CursorIcon::AllResize);
1267 }
1268
1269 #[test]
1270 fn cursor_grab_mode_conversion_round_trips() {
1271 assert_eq!(winit::window::CursorGrabMode::from(CursorGrabMode::None), winit::window::CursorGrabMode::None);
1272 assert_eq!(winit::window::CursorGrabMode::from(CursorGrabMode::Confined), winit::window::CursorGrabMode::Confined);
1273 assert_eq!(winit::window::CursorGrabMode::from(CursorGrabMode::Locked), winit::window::CursorGrabMode::Locked);
1274 }
1275
1276 #[test]
1277 fn key_code_conversion_is_positional_not_coincidental() {
1278 assert_eq!(winit::keyboard::KeyCode::from(KeyCode::Backquote), winit::keyboard::KeyCode::Backquote);
1279 assert_eq!(winit::keyboard::KeyCode::from(KeyCode::KeyW), winit::keyboard::KeyCode::KeyW);
1280 assert_eq!(winit::keyboard::KeyCode::from(KeyCode::ArrowUp), winit::keyboard::KeyCode::ArrowUp);
1281 assert_eq!(winit::keyboard::KeyCode::from(KeyCode::ShiftLeft), winit::keyboard::KeyCode::ShiftLeft);
1282 assert_eq!(winit::keyboard::KeyCode::from(KeyCode::F35), winit::keyboard::KeyCode::F35);
1283 }
1284
1285 #[test]
1286 fn mouse_button_conversion_preserves_the_other_code() {
1287 assert_eq!(winit::event::MouseButton::from(MouseButton::Left), winit::event::MouseButton::Left);
1288 assert_eq!(winit::event::MouseButton::from(MouseButton::Other(7)), winit::event::MouseButton::Other(7));
1289 }
1290
1291 #[test]
1292 fn touch_phase_conversion_is_positional() {
1293 assert_eq!(TouchPhase::from(winit::event::TouchPhase::Started), TouchPhase::Started);
1294 assert_eq!(TouchPhase::from(winit::event::TouchPhase::Cancelled), TouchPhase::Cancelled);
1295 }
1296
1297 #[test]
1298 fn texture_format_round_trips_including_astc() {
1299 let astc = TextureFormat::Astc { block: AstcBlock::B4x4, channel: AstcChannel::Hdr };
1300 let raw = wgpu::TextureFormat::from(astc);
1301 assert_eq!(TextureFormat::from(raw), astc);
1302 assert_eq!(wgpu::TextureFormat::from(TextureFormat::Bgra8UnormSrgb), wgpu::TextureFormat::Bgra8UnormSrgb);
1303 }
1304
1305 #[test]
1306 fn index_format_conversion_round_trips() {
1307 assert_eq!(wgpu::IndexFormat::from(IndexFormat::Uint16), wgpu::IndexFormat::Uint16);
1308 assert_eq!(wgpu::IndexFormat::from(IndexFormat::Uint32), wgpu::IndexFormat::Uint32);
1309 }
1310}