xref: /aosp_15_r20/external/crosvm/gpu_display/src/vulkan/sys/unix.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1 // Copyright 2023 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 use std::ffi::c_void;
6 use std::marker::PhantomData;
7 use std::sync::Arc;
8 
9 use anyhow::Result;
10 use ash::vk;
11 use base::AsRawDescriptor;
12 use euclid::Size2D;
13 use euclid::UnknownUnit;
14 use vulkano::device::Device;
15 use vulkano::instance::Instance;
16 use vulkano::memory::ExternalMemoryHandleTypes;
17 use vulkano::memory::MemoryImportInfo;
18 
19 use super::ApplicationState;
20 use super::ApplicationStateBuilder;
21 use super::Surface;
22 use super::Window;
23 use super::WindowEventLoop;
24 
25 pub type NativeWindowType = *mut c_void;
26 
27 pub(crate) struct StubWindow;
28 
29 impl Window for StubWindow {
create_vulkan_surface(self: Arc<Self>, _instance: Arc<Instance>) -> Result<Arc<Surface>>30     fn create_vulkan_surface(self: Arc<Self>, _instance: Arc<Instance>) -> Result<Arc<Surface>> {
31         unimplemented!();
32     }
33 
get_inner_size(&self) -> Result<Size2D<u32, UnknownUnit>>34     fn get_inner_size(&self) -> Result<Size2D<u32, UnknownUnit>> {
35         unimplemented!()
36     }
37 }
38 
39 pub struct StubWindowEventLoop<AppState: ApplicationState>(PhantomData<AppState>);
40 
41 impl<AppState: ApplicationState> WindowEventLoop<AppState> for StubWindowEventLoop<AppState> {
42     type WindowType = StubWindow;
43 
create<Builder>( _parent: NativeWindowType, _initial_window_size: &Size2D<i32, UnknownUnit>, _application_state_builder: Builder, ) -> Result<Self> where Builder: ApplicationStateBuilder<Target = AppState>,44     unsafe fn create<Builder>(
45         _parent: NativeWindowType,
46         _initial_window_size: &Size2D<i32, UnknownUnit>,
47         _application_state_builder: Builder,
48     ) -> Result<Self>
49     where
50         Builder: ApplicationStateBuilder<Target = AppState>,
51     {
52         unimplemented!()
53     }
54 
move_window(&self, _pos: &euclid::Box2D<i32, UnknownUnit>) -> Result<()>55     fn move_window(&self, _pos: &euclid::Box2D<i32, UnknownUnit>) -> Result<()> {
56         unimplemented!()
57     }
58 
send_event(&self, _event: AppState::UserEvent) -> Result<()>59     fn send_event(&self, _event: AppState::UserEvent) -> Result<()> {
60         unimplemented!()
61     }
62 }
63 
create_post_image_external_memory_handle_types() -> ExternalMemoryHandleTypes64 pub(crate) fn create_post_image_external_memory_handle_types() -> ExternalMemoryHandleTypes {
65     unimplemented!()
66 }
67 
68 // The ownership of the descriptor is transferred to the returned MemoryImportInfo.
create_post_image_memory_import_info( _memory_descriptor: &dyn AsRawDescriptor, ) -> MemoryImportInfo69 pub(crate) fn create_post_image_memory_import_info(
70     _memory_descriptor: &dyn AsRawDescriptor,
71 ) -> MemoryImportInfo {
72     unimplemented!()
73 }
74 
import_semaphore_from_descriptor( _device: &Arc<Device>, _semaphore: vk::Semaphore, _descriptor: &dyn AsRawDescriptor, ) -> vk::Result75 pub(crate) fn import_semaphore_from_descriptor(
76     _device: &Arc<Device>,
77     _semaphore: vk::Semaphore,
78     _descriptor: &dyn AsRawDescriptor,
79 ) -> vk::Result {
80     unimplemented!()
81 }
82