1 // Copyright 2024 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::os::raw::c_void; 6 7 pub const VIRTGPU_KUMQUAT_PARAM_3D_FEATURES: u64 = 1; 8 pub const VIRTGPU_KUMQUAT_PARAM_CAPSET_QUERY_FIX: u64 = 2; 9 #[allow(unused)] 10 pub const VIRTGPU_KUMQUAT_PARAM_RESOURCE_BLOB: u64 = 3; 11 #[allow(unused)] 12 pub const VIRTGPU_KUMQUAT_PARAM_HOST_VISIBLE: u64 = 4; 13 #[allow(unused)] 14 pub const VIRTGPU_KUMQUAT_PARAM_CROSS_DEVICE: u64 = 5; 15 pub const VIRTGPU_KUMQUAT_PARAM_CONTEXT_INIT: u64 = 6; 16 pub const VIRTGPU_KUMQUAT_PARAM_SUPPORTED_CAPSET_IDS: u64 = 7; 17 pub const VIRTGPU_KUMQUAT_PARAM_EXPLICIT_DEBUG_NAME: u64 = 8; 18 pub const VIRTGPU_KUMQUAT_PARAM_FENCE_PASSING: u64 = 9; 19 20 #[allow(unused)] 21 pub const VIRTGPU_KUMQUAT_EXECBUF_FENCE_FD_IN: u32 = 0x01; 22 #[allow(unused)] 23 pub const VIRTGPU_KUMQUAT_EXECBUF_FENCE_FD_OUT: u32 = 0x02; 24 #[allow(unused)] 25 pub const VIRTGPU_KUMQUAT_EXECBUF_RING_IDX: u32 = 0x04; 26 #[allow(unused)] 27 pub const VIRTGPU_KUMQUAT_EXECBUF_SHAREABLE_IN: u32 = 0x08; 28 pub const VIRTGPU_KUMQUAT_EXECBUF_SHAREABLE_OUT: u32 = 0x10; 29 30 #[allow(unused)] 31 pub const VIRTGPU_KUMQUAT_CONTEXT_PARAM_CAPSET_ID: u64 = 0x01; 32 #[allow(unused)] 33 pub const VIRTGPU_KUMQUAT_CONTEXT_PARAM_NUM_RINGS: u64 = 0x02; 34 #[allow(unused)] 35 pub const VIRTGPU_KUMQUAT_CONTEXT_PARAM_POLL_RING_MASK: u64 = 0x03; 36 37 pub const VIRTGPU_KUMQUAT_EMULATED_EXPORT: u32 = 0x01; 38 pub const VIRTGPU_KUMQUAT_PAGE_SIZE: usize = 4096; 39 40 #[repr(C)] 41 #[derive(Copy, Clone, Debug)] 42 pub struct VirtGpuParam { 43 pub param: u64, 44 pub value: u64, 45 } 46 47 #[repr(C)] 48 #[derive(Copy, Clone, Debug)] 49 pub struct VirtGpuGetCaps { 50 pub cap_set_id: u32, 51 pub cap_set_ver: u32, 52 pub addr: u64, 53 pub size: u32, 54 pub pad: u32, 55 } 56 57 #[repr(C)] 58 #[derive(Copy, Clone, Debug)] 59 pub struct VirtGpuContextInit { 60 pub num_params: u32, 61 pub pad: u32, 62 pub ctx_set_params: u64, 63 } 64 65 #[repr(C)] 66 #[derive(Copy, Clone, Debug)] 67 pub struct VirtGpuResourceCreate3D { 68 pub target: u32, 69 pub format: u32, 70 pub bind: u32, 71 pub width: u32, 72 pub height: u32, 73 pub depth: u32, 74 pub array_size: u32, 75 pub last_level: u32, 76 pub nr_samples: u32, 77 pub flags: u32, 78 pub bo_handle: u32, 79 pub res_handle: u32, 80 pub size: u32, 81 pub stride: u32, 82 } 83 84 #[repr(C)] 85 #[derive(Copy, Clone, Debug)] 86 pub struct VirtGpuBox { 87 pub x: u32, 88 pub y: u32, 89 pub z: u32, 90 pub w: u32, 91 pub h: u32, 92 pub d: u32, 93 } 94 95 #[repr(C)] 96 #[derive(Copy, Clone, Debug)] 97 pub struct VirtGpuTransfer { 98 pub bo_handle: u32, 99 pub _box: VirtGpuBox, 100 pub level: u32, 101 pub offset: u64, 102 pub stride: u32, 103 pub layer_stride: u32, 104 } 105 106 #[repr(C)] 107 #[derive(Copy, Clone, Debug)] 108 pub struct VirtGpuResourceCreateBlob { 109 pub blob_mem: u32, 110 pub blob_flags: u32, 111 pub bo_handle: u32, 112 pub res_handle: u32, 113 pub size: u64, 114 pub pad: u32, 115 pub cmd_size: u32, 116 pub cmd: u64, 117 pub blob_id: u64, 118 } 119 120 #[repr(C)] 121 #[derive(Copy, Clone, Debug)] 122 pub struct VirtGpuResourceUnref { 123 pub bo_handle: u32, 124 pub pad: u32, 125 } 126 127 #[repr(C)] 128 #[derive(Copy, Clone, Debug)] 129 pub struct VirtGpuExecBuffer { 130 pub flags: u32, 131 pub size: u32, 132 pub command: u64, 133 pub bo_handles: u64, 134 pub num_bo_handles: u32, 135 pub fence_handle: i64, 136 pub ring_idx: u32, 137 pub syncobj_stride: u32, 138 pub num_in_syncobjs: u32, 139 pub num_out_syncobjs: u32, 140 pub in_syncobjs: u64, 141 pub out_syncobjs: u64, 142 } 143 144 #[repr(C)] 145 #[derive(Copy, Clone, Debug)] 146 pub struct VirtGpuWait { 147 pub bo_handle: u32, 148 pub flags: u32, 149 } 150 151 #[repr(C)] 152 #[derive(Copy, Clone, Debug)] 153 pub struct VirtGpuResourceMap { 154 pub bo_handle: u32, 155 pub ptr: *mut c_void, 156 pub size: u64, 157 } 158 159 #[repr(C)] 160 #[derive(Copy, Clone, Debug)] 161 pub struct VirtGpuResourceExport { 162 pub bo_handle: u32, 163 pub flags: u32, 164 pub os_handle: i64, 165 pub handle_type: u32, 166 } 167 168 #[repr(C)] 169 #[derive(Copy, Clone, Debug)] 170 pub struct VirtGpuResourceImport { 171 pub os_handle: i64, 172 pub handle_type: u32, 173 pub bo_handle: u32, 174 pub res_handle: u32, 175 pub size: u64, 176 } 177