1*61046927SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*61046927SAndroid Build Coastguard Worker 3*61046927SAndroid Build Coastguard Worker /* 4*61046927SAndroid Build Coastguard Worker * Copyright (c) 2019, Microsoft Corporation. 5*61046927SAndroid Build Coastguard Worker * 6*61046927SAndroid Build Coastguard Worker * Author: 7*61046927SAndroid Build Coastguard Worker * Iouri Tarassov <[email protected]> 8*61046927SAndroid Build Coastguard Worker * 9*61046927SAndroid Build Coastguard Worker * Dxgkrnl Graphics Driver 10*61046927SAndroid Build Coastguard Worker * User mode WDDM interface definitions 11*61046927SAndroid Build Coastguard Worker * 12*61046927SAndroid Build Coastguard Worker */ 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker #ifndef _D3DKMTHK_H 15*61046927SAndroid Build Coastguard Worker #define _D3DKMTHK_H 16*61046927SAndroid Build Coastguard Worker 17*61046927SAndroid Build Coastguard Worker /* 18*61046927SAndroid Build Coastguard Worker * This structure matches the definition of D3DKMTHANDLE in Windows. 19*61046927SAndroid Build Coastguard Worker * The handle is opaque in user mode. It is used by user mode applications to 20*61046927SAndroid Build Coastguard Worker * represent kernel mode objects, created by dxgkrnl. 21*61046927SAndroid Build Coastguard Worker */ 22*61046927SAndroid Build Coastguard Worker struct d3dkmthandle { 23*61046927SAndroid Build Coastguard Worker union { 24*61046927SAndroid Build Coastguard Worker struct { 25*61046927SAndroid Build Coastguard Worker __u32 instance : 6; 26*61046927SAndroid Build Coastguard Worker __u32 index : 24; 27*61046927SAndroid Build Coastguard Worker __u32 unique : 2; 28*61046927SAndroid Build Coastguard Worker }; 29*61046927SAndroid Build Coastguard Worker __u32 v; 30*61046927SAndroid Build Coastguard Worker }; 31*61046927SAndroid Build Coastguard Worker }; 32*61046927SAndroid Build Coastguard Worker 33*61046927SAndroid Build Coastguard Worker /* 34*61046927SAndroid Build Coastguard Worker * VM bus messages return Windows' NTSTATUS, which is integer and only negative 35*61046927SAndroid Build Coastguard Worker * value indicates a failure. A positive number is a success and needs to be 36*61046927SAndroid Build Coastguard Worker * returned to user mode as the IOCTL return code. Negative status codes are 37*61046927SAndroid Build Coastguard Worker * converted to Linux error codes. 38*61046927SAndroid Build Coastguard Worker */ 39*61046927SAndroid Build Coastguard Worker struct ntstatus { 40*61046927SAndroid Build Coastguard Worker union { 41*61046927SAndroid Build Coastguard Worker struct { 42*61046927SAndroid Build Coastguard Worker int code : 16; 43*61046927SAndroid Build Coastguard Worker int facility : 13; 44*61046927SAndroid Build Coastguard Worker int customer : 1; 45*61046927SAndroid Build Coastguard Worker int severity : 2; 46*61046927SAndroid Build Coastguard Worker }; 47*61046927SAndroid Build Coastguard Worker int v; 48*61046927SAndroid Build Coastguard Worker }; 49*61046927SAndroid Build Coastguard Worker }; 50*61046927SAndroid Build Coastguard Worker 51*61046927SAndroid Build Coastguard Worker /* 52*61046927SAndroid Build Coastguard Worker * Matches the Windows LUID definition. 53*61046927SAndroid Build Coastguard Worker * LUID is a locally unique identifier (similar to GUID, but not global), 54*61046927SAndroid Build Coastguard Worker * which is guaranteed to be unique intil the computer is rebooted. 55*61046927SAndroid Build Coastguard Worker */ 56*61046927SAndroid Build Coastguard Worker struct winluid { 57*61046927SAndroid Build Coastguard Worker __u32 a; 58*61046927SAndroid Build Coastguard Worker __u32 b; 59*61046927SAndroid Build Coastguard Worker }; 60*61046927SAndroid Build Coastguard Worker 61*61046927SAndroid Build Coastguard Worker #define D3DDDI_MAX_WRITTEN_PRIMARIES 16 62*61046927SAndroid Build Coastguard Worker 63*61046927SAndroid Build Coastguard Worker #define D3DKMT_CREATEALLOCATION_MAX 1024 64*61046927SAndroid Build Coastguard Worker #define D3DKMT_MAKERESIDENT_ALLOC_MAX (1024 * 10) 65*61046927SAndroid Build Coastguard Worker #define D3DKMT_ADAPTERS_MAX 64 66*61046927SAndroid Build Coastguard Worker #define D3DDDI_MAX_BROADCAST_CONTEXT 64 67*61046927SAndroid Build Coastguard Worker #define D3DDDI_MAX_OBJECT_WAITED_ON 32 68*61046927SAndroid Build Coastguard Worker #define D3DDDI_MAX_OBJECT_SIGNALED 32 69*61046927SAndroid Build Coastguard Worker 70*61046927SAndroid Build Coastguard Worker struct d3dkmt_adapterinfo { 71*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter_handle; 72*61046927SAndroid Build Coastguard Worker struct winluid adapter_luid; 73*61046927SAndroid Build Coastguard Worker __u32 num_sources; 74*61046927SAndroid Build Coastguard Worker __u32 present_move_regions_preferred; 75*61046927SAndroid Build Coastguard Worker }; 76*61046927SAndroid Build Coastguard Worker 77*61046927SAndroid Build Coastguard Worker struct d3dkmt_enumadapters2 { 78*61046927SAndroid Build Coastguard Worker __u32 num_adapters; 79*61046927SAndroid Build Coastguard Worker __u32 reserved; 80*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 81*61046927SAndroid Build Coastguard Worker struct d3dkmt_adapterinfo *adapters; 82*61046927SAndroid Build Coastguard Worker #else 83*61046927SAndroid Build Coastguard Worker __u64 *adapters; 84*61046927SAndroid Build Coastguard Worker #endif 85*61046927SAndroid Build Coastguard Worker }; 86*61046927SAndroid Build Coastguard Worker 87*61046927SAndroid Build Coastguard Worker struct d3dkmt_closeadapter { 88*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter_handle; 89*61046927SAndroid Build Coastguard Worker }; 90*61046927SAndroid Build Coastguard Worker 91*61046927SAndroid Build Coastguard Worker struct d3dkmt_openadapterfromluid { 92*61046927SAndroid Build Coastguard Worker struct winluid adapter_luid; 93*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter_handle; 94*61046927SAndroid Build Coastguard Worker }; 95*61046927SAndroid Build Coastguard Worker 96*61046927SAndroid Build Coastguard Worker struct d3dddi_allocationlist { 97*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 98*61046927SAndroid Build Coastguard Worker union { 99*61046927SAndroid Build Coastguard Worker struct { 100*61046927SAndroid Build Coastguard Worker __u32 write_operation :1; 101*61046927SAndroid Build Coastguard Worker __u32 do_not_retire_instance :1; 102*61046927SAndroid Build Coastguard Worker __u32 offer_priority :3; 103*61046927SAndroid Build Coastguard Worker __u32 reserved :27; 104*61046927SAndroid Build Coastguard Worker }; 105*61046927SAndroid Build Coastguard Worker __u32 value; 106*61046927SAndroid Build Coastguard Worker }; 107*61046927SAndroid Build Coastguard Worker }; 108*61046927SAndroid Build Coastguard Worker 109*61046927SAndroid Build Coastguard Worker struct d3dddi_patchlocationlist { 110*61046927SAndroid Build Coastguard Worker __u32 allocation_index; 111*61046927SAndroid Build Coastguard Worker union { 112*61046927SAndroid Build Coastguard Worker struct { 113*61046927SAndroid Build Coastguard Worker __u32 slot_id:24; 114*61046927SAndroid Build Coastguard Worker __u32 reserved:8; 115*61046927SAndroid Build Coastguard Worker }; 116*61046927SAndroid Build Coastguard Worker __u32 value; 117*61046927SAndroid Build Coastguard Worker }; 118*61046927SAndroid Build Coastguard Worker __u32 driver_id; 119*61046927SAndroid Build Coastguard Worker __u32 allocation_offset; 120*61046927SAndroid Build Coastguard Worker __u32 patch_offset; 121*61046927SAndroid Build Coastguard Worker __u32 split_offset; 122*61046927SAndroid Build Coastguard Worker }; 123*61046927SAndroid Build Coastguard Worker 124*61046927SAndroid Build Coastguard Worker struct d3dkmt_createdeviceflags { 125*61046927SAndroid Build Coastguard Worker __u32 legacy_mode:1; 126*61046927SAndroid Build Coastguard Worker __u32 request_vSync:1; 127*61046927SAndroid Build Coastguard Worker __u32 disable_gpu_timeout:1; 128*61046927SAndroid Build Coastguard Worker __u32 gdi_device:1; 129*61046927SAndroid Build Coastguard Worker __u32 reserved:28; 130*61046927SAndroid Build Coastguard Worker }; 131*61046927SAndroid Build Coastguard Worker 132*61046927SAndroid Build Coastguard Worker struct d3dkmt_createdevice { 133*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 134*61046927SAndroid Build Coastguard Worker __u32 reserved3; 135*61046927SAndroid Build Coastguard Worker struct d3dkmt_createdeviceflags flags; 136*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 137*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 138*61046927SAndroid Build Coastguard Worker void *command_buffer; 139*61046927SAndroid Build Coastguard Worker #else 140*61046927SAndroid Build Coastguard Worker __u64 command_buffer; 141*61046927SAndroid Build Coastguard Worker #endif 142*61046927SAndroid Build Coastguard Worker __u32 command_buffer_size; 143*61046927SAndroid Build Coastguard Worker __u32 reserved; 144*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 145*61046927SAndroid Build Coastguard Worker struct d3dddi_allocationlist *allocation_list; 146*61046927SAndroid Build Coastguard Worker #else 147*61046927SAndroid Build Coastguard Worker __u64 allocation_list; 148*61046927SAndroid Build Coastguard Worker #endif 149*61046927SAndroid Build Coastguard Worker __u32 allocation_list_size; 150*61046927SAndroid Build Coastguard Worker __u32 reserved1; 151*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 152*61046927SAndroid Build Coastguard Worker struct d3dddi_patchlocationlist *patch_location_list; 153*61046927SAndroid Build Coastguard Worker #else 154*61046927SAndroid Build Coastguard Worker __u64 patch_location_list; 155*61046927SAndroid Build Coastguard Worker #endif 156*61046927SAndroid Build Coastguard Worker __u32 patch_location_list_size; 157*61046927SAndroid Build Coastguard Worker __u32 reserved2; 158*61046927SAndroid Build Coastguard Worker }; 159*61046927SAndroid Build Coastguard Worker 160*61046927SAndroid Build Coastguard Worker struct d3dkmt_destroydevice { 161*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 162*61046927SAndroid Build Coastguard Worker }; 163*61046927SAndroid Build Coastguard Worker 164*61046927SAndroid Build Coastguard Worker enum d3dkmt_clienthint { 165*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHNT_UNKNOWN = 0, 166*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHINT_OPENGL = 1, 167*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHINT_CDD = 2, 168*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHINT_DX7 = 7, 169*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHINT_DX8 = 8, 170*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHINT_DX9 = 9, 171*61046927SAndroid Build Coastguard Worker _D3DKMT_CLIENTHINT_DX10 = 10, 172*61046927SAndroid Build Coastguard Worker }; 173*61046927SAndroid Build Coastguard Worker 174*61046927SAndroid Build Coastguard Worker struct d3dddi_createcontextflags { 175*61046927SAndroid Build Coastguard Worker union { 176*61046927SAndroid Build Coastguard Worker struct { 177*61046927SAndroid Build Coastguard Worker __u32 null_rendering:1; 178*61046927SAndroid Build Coastguard Worker __u32 initial_data:1; 179*61046927SAndroid Build Coastguard Worker __u32 disable_gpu_timeout:1; 180*61046927SAndroid Build Coastguard Worker __u32 synchronization_only:1; 181*61046927SAndroid Build Coastguard Worker __u32 hw_queue_supported:1; 182*61046927SAndroid Build Coastguard Worker __u32 reserved:27; 183*61046927SAndroid Build Coastguard Worker }; 184*61046927SAndroid Build Coastguard Worker __u32 value; 185*61046927SAndroid Build Coastguard Worker }; 186*61046927SAndroid Build Coastguard Worker }; 187*61046927SAndroid Build Coastguard Worker 188*61046927SAndroid Build Coastguard Worker struct d3dkmt_destroycontext { 189*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 190*61046927SAndroid Build Coastguard Worker }; 191*61046927SAndroid Build Coastguard Worker 192*61046927SAndroid Build Coastguard Worker struct d3dkmt_createcontextvirtual { 193*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 194*61046927SAndroid Build Coastguard Worker __u32 node_ordinal; 195*61046927SAndroid Build Coastguard Worker __u32 engine_affinity; 196*61046927SAndroid Build Coastguard Worker struct d3dddi_createcontextflags flags; 197*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 198*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 199*61046927SAndroid Build Coastguard Worker #else 200*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 201*61046927SAndroid Build Coastguard Worker #endif 202*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 203*61046927SAndroid Build Coastguard Worker enum d3dkmt_clienthint client_hint; 204*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 205*61046927SAndroid Build Coastguard Worker }; 206*61046927SAndroid Build Coastguard Worker 207*61046927SAndroid Build Coastguard Worker struct d3dddi_createhwqueueflags { 208*61046927SAndroid Build Coastguard Worker union { 209*61046927SAndroid Build Coastguard Worker struct { 210*61046927SAndroid Build Coastguard Worker __u32 disable_gpu_timeout:1; 211*61046927SAndroid Build Coastguard Worker __u32 reserved:31; 212*61046927SAndroid Build Coastguard Worker }; 213*61046927SAndroid Build Coastguard Worker __u32 value; 214*61046927SAndroid Build Coastguard Worker }; 215*61046927SAndroid Build Coastguard Worker }; 216*61046927SAndroid Build Coastguard Worker 217*61046927SAndroid Build Coastguard Worker enum d3dddi_pagingqueue_priority { 218*61046927SAndroid Build Coastguard Worker _D3DDDI_PAGINGQUEUE_PRIORITY_BELOW_NORMAL = -1, 219*61046927SAndroid Build Coastguard Worker _D3DDDI_PAGINGQUEUE_PRIORITY_NORMAL = 0, 220*61046927SAndroid Build Coastguard Worker _D3DDDI_PAGINGQUEUE_PRIORITY_ABOVE_NORMAL = 1, 221*61046927SAndroid Build Coastguard Worker }; 222*61046927SAndroid Build Coastguard Worker 223*61046927SAndroid Build Coastguard Worker struct d3dkmt_createpagingqueue { 224*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 225*61046927SAndroid Build Coastguard Worker enum d3dddi_pagingqueue_priority priority; 226*61046927SAndroid Build Coastguard Worker struct d3dkmthandle paging_queue; 227*61046927SAndroid Build Coastguard Worker struct d3dkmthandle sync_object; 228*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 229*61046927SAndroid Build Coastguard Worker void *fence_cpu_virtual_address; 230*61046927SAndroid Build Coastguard Worker #else 231*61046927SAndroid Build Coastguard Worker __u64 fence_cpu_virtual_address; 232*61046927SAndroid Build Coastguard Worker #endif 233*61046927SAndroid Build Coastguard Worker __u32 physical_adapter_index; 234*61046927SAndroid Build Coastguard Worker }; 235*61046927SAndroid Build Coastguard Worker 236*61046927SAndroid Build Coastguard Worker struct d3dddi_destroypagingqueue { 237*61046927SAndroid Build Coastguard Worker struct d3dkmthandle paging_queue; 238*61046927SAndroid Build Coastguard Worker }; 239*61046927SAndroid Build Coastguard Worker 240*61046927SAndroid Build Coastguard Worker enum d3dddi_knownescapetype { 241*61046927SAndroid Build Coastguard Worker _D3DDDI_DRIVERESCAPETYPE_TRANSLATEALLOCATIONHANDLE = 0, 242*61046927SAndroid Build Coastguard Worker _D3DDDI_DRIVERESCAPETYPE_TRANSLATERESOURCEHANDLE = 1, 243*61046927SAndroid Build Coastguard Worker _D3DDDI_DRIVERESCAPETYPE_CPUEVENTUSAGE = 2, 244*61046927SAndroid Build Coastguard Worker _D3DDDI_DRIVERESCAPETYPE_BUILDTESTCOMMANDBUFFER = 3, 245*61046927SAndroid Build Coastguard Worker }; 246*61046927SAndroid Build Coastguard Worker 247*61046927SAndroid Build Coastguard Worker struct d3dddi_translate_allocation_handle { 248*61046927SAndroid Build Coastguard Worker enum d3dddi_knownescapetype escape_type; 249*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 250*61046927SAndroid Build Coastguard Worker }; 251*61046927SAndroid Build Coastguard Worker 252*61046927SAndroid Build Coastguard Worker struct d3dddi_testcommand { 253*61046927SAndroid Build Coastguard Worker char buffer[72]; 254*61046927SAndroid Build Coastguard Worker }; 255*61046927SAndroid Build Coastguard Worker 256*61046927SAndroid Build Coastguard Worker #define D3DDDI_MAXTESTBUFFERSIZE 4096 257*61046927SAndroid Build Coastguard Worker #define D3DDDI_MAXTESTBUFFERPRIVATEDRIVERDATASIZE 1024 258*61046927SAndroid Build Coastguard Worker 259*61046927SAndroid Build Coastguard Worker struct d3dddi_buildtestcommandbuffer { 260*61046927SAndroid Build Coastguard Worker enum d3dddi_knownescapetype escape_type; 261*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 262*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 263*61046927SAndroid Build Coastguard Worker __u32 flags; 264*61046927SAndroid Build Coastguard Worker struct d3dddi_testcommand command; 265*61046927SAndroid Build Coastguard Worker void *dma_buffer; 266*61046927SAndroid Build Coastguard Worker void *dma_buffer_priv_data; 267*61046927SAndroid Build Coastguard Worker __u32 dma_buffer_size; 268*61046927SAndroid Build Coastguard Worker __u32 dma_buffer_priv_data_size; 269*61046927SAndroid Build Coastguard Worker }; 270*61046927SAndroid Build Coastguard Worker 271*61046927SAndroid Build Coastguard Worker enum d3dkmt_escapetype { 272*61046927SAndroid Build Coastguard Worker _D3DKMT_ESCAPE_DRIVERPRIVATE = 0, 273*61046927SAndroid Build Coastguard Worker _D3DKMT_ESCAPE_VIDMM = 1, 274*61046927SAndroid Build Coastguard Worker _D3DKMT_ESCAPE_VIDSCH = 3, 275*61046927SAndroid Build Coastguard Worker _D3DKMT_ESCAPE_DEVICE = 4, 276*61046927SAndroid Build Coastguard Worker _D3DKMT_ESCAPE_DRT_TEST = 8, 277*61046927SAndroid Build Coastguard Worker }; 278*61046927SAndroid Build Coastguard Worker 279*61046927SAndroid Build Coastguard Worker struct d3dddi_escapeflags { 280*61046927SAndroid Build Coastguard Worker union { 281*61046927SAndroid Build Coastguard Worker struct { 282*61046927SAndroid Build Coastguard Worker __u32 hardware_access:1; 283*61046927SAndroid Build Coastguard Worker __u32 device_status_query:1; 284*61046927SAndroid Build Coastguard Worker __u32 change_frame_latency:1; 285*61046927SAndroid Build Coastguard Worker __u32 no_adapter_synchronization:1; 286*61046927SAndroid Build Coastguard Worker __u32 reserved:1; 287*61046927SAndroid Build Coastguard Worker __u32 virtual_machine_data:1; 288*61046927SAndroid Build Coastguard Worker __u32 driver_known_escape:1; 289*61046927SAndroid Build Coastguard Worker __u32 driver_common_escape:1; 290*61046927SAndroid Build Coastguard Worker __u32 reserved2:24; 291*61046927SAndroid Build Coastguard Worker }; 292*61046927SAndroid Build Coastguard Worker __u32 value; 293*61046927SAndroid Build Coastguard Worker }; 294*61046927SAndroid Build Coastguard Worker }; 295*61046927SAndroid Build Coastguard Worker 296*61046927SAndroid Build Coastguard Worker struct d3dkmt_escape { 297*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 298*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 299*61046927SAndroid Build Coastguard Worker enum d3dkmt_escapetype type; 300*61046927SAndroid Build Coastguard Worker struct d3dddi_escapeflags flags; 301*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 302*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 303*61046927SAndroid Build Coastguard Worker #else 304*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 305*61046927SAndroid Build Coastguard Worker #endif 306*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 307*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 308*61046927SAndroid Build Coastguard Worker }; 309*61046927SAndroid Build Coastguard Worker 310*61046927SAndroid Build Coastguard Worker enum dxgk_render_pipeline_stage { 311*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_UNKNOWN = 0, 312*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_INPUT_ASSEMBLER = 1, 313*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_VERTEX_SHADER = 2, 314*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_GEOMETRY_SHADER = 3, 315*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_STREAM_OUTPUT = 4, 316*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_RASTERIZER = 5, 317*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_PIXEL_SHADER = 6, 318*61046927SAndroid Build Coastguard Worker _DXGK_RENDER_PIPELINE_STAGE_OUTPUT_MERGER = 7, 319*61046927SAndroid Build Coastguard Worker }; 320*61046927SAndroid Build Coastguard Worker 321*61046927SAndroid Build Coastguard Worker enum dxgk_page_fault_flags { 322*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_WRITE = 0x1, 323*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_FENCE_INVALID = 0x2, 324*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_ADAPTER_RESET_REQUIRED = 0x4, 325*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_ENGINE_RESET_REQUIRED = 0x8, 326*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_FATAL_HARDWARE_ERROR = 0x10, 327*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_IOMMU = 0x20, 328*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_HW_CONTEXT_VALID = 0x40, 329*61046927SAndroid Build Coastguard Worker _DXGK_PAGE_FAULT_PROCESS_HANDLE_VALID = 0x80, 330*61046927SAndroid Build Coastguard Worker }; 331*61046927SAndroid Build Coastguard Worker 332*61046927SAndroid Build Coastguard Worker enum dxgk_general_error_code { 333*61046927SAndroid Build Coastguard Worker _DXGK_GENERAL_ERROR_PAGE_FAULT = 0, 334*61046927SAndroid Build Coastguard Worker _DXGK_GENERAL_ERROR_INVALID_INSTRUCTION = 1, 335*61046927SAndroid Build Coastguard Worker }; 336*61046927SAndroid Build Coastguard Worker 337*61046927SAndroid Build Coastguard Worker struct dxgk_fault_error_code { 338*61046927SAndroid Build Coastguard Worker union { 339*61046927SAndroid Build Coastguard Worker struct { 340*61046927SAndroid Build Coastguard Worker __u32 is_device_specific_code:1; 341*61046927SAndroid Build Coastguard Worker enum dxgk_general_error_code general_error_code:31; 342*61046927SAndroid Build Coastguard Worker }; 343*61046927SAndroid Build Coastguard Worker struct { 344*61046927SAndroid Build Coastguard Worker __u32 is_device_specific_code_reserved_bit:1; 345*61046927SAndroid Build Coastguard Worker __u32 device_specific_code:31; 346*61046927SAndroid Build Coastguard Worker }; 347*61046927SAndroid Build Coastguard Worker }; 348*61046927SAndroid Build Coastguard Worker }; 349*61046927SAndroid Build Coastguard Worker 350*61046927SAndroid Build Coastguard Worker struct d3dkmt_devicereset_state { 351*61046927SAndroid Build Coastguard Worker union { 352*61046927SAndroid Build Coastguard Worker struct { 353*61046927SAndroid Build Coastguard Worker __u32 desktop_switched:1; 354*61046927SAndroid Build Coastguard Worker __u32 reserved:31; 355*61046927SAndroid Build Coastguard Worker }; 356*61046927SAndroid Build Coastguard Worker __u32 value; 357*61046927SAndroid Build Coastguard Worker }; 358*61046927SAndroid Build Coastguard Worker }; 359*61046927SAndroid Build Coastguard Worker 360*61046927SAndroid Build Coastguard Worker struct d3dkmt_devicepagefault_state { 361*61046927SAndroid Build Coastguard Worker __u64 faulted_primitive_api_sequence_number; 362*61046927SAndroid Build Coastguard Worker enum dxgk_render_pipeline_stage faulted_pipeline_stage; 363*61046927SAndroid Build Coastguard Worker __u32 faulted_bind_table_entry; 364*61046927SAndroid Build Coastguard Worker enum dxgk_page_fault_flags page_fault_flags; 365*61046927SAndroid Build Coastguard Worker struct dxgk_fault_error_code fault_error_code; 366*61046927SAndroid Build Coastguard Worker __u64 faulted_virtual_address; 367*61046927SAndroid Build Coastguard Worker }; 368*61046927SAndroid Build Coastguard Worker 369*61046927SAndroid Build Coastguard Worker enum d3dkmt_deviceexecution_state { 370*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_ACTIVE = 1, 371*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_RESET = 2, 372*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_HUNG = 3, 373*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_STOPPED = 4, 374*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_ERROR_OUTOFMEMORY = 5, 375*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_ERROR_DMAFAULT = 6, 376*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICEEXECUTION_ERROR_DMAPAGEFAULT = 7, 377*61046927SAndroid Build Coastguard Worker }; 378*61046927SAndroid Build Coastguard Worker 379*61046927SAndroid Build Coastguard Worker enum d3dkmt_devicestate_type { 380*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICESTATE_EXECUTION = 1, 381*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICESTATE_PRESENT = 2, 382*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICESTATE_RESET = 3, 383*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICESTATE_PRESENT_DWM = 4, 384*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICESTATE_PAGE_FAULT = 5, 385*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICESTATE_PRESENT_QUEUE = 6, 386*61046927SAndroid Build Coastguard Worker }; 387*61046927SAndroid Build Coastguard Worker 388*61046927SAndroid Build Coastguard Worker struct d3dkmt_getdevicestate { 389*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 390*61046927SAndroid Build Coastguard Worker enum d3dkmt_devicestate_type state_type; 391*61046927SAndroid Build Coastguard Worker union { 392*61046927SAndroid Build Coastguard Worker enum d3dkmt_deviceexecution_state execution_state; 393*61046927SAndroid Build Coastguard Worker struct d3dkmt_devicereset_state reset_state; 394*61046927SAndroid Build Coastguard Worker struct d3dkmt_devicepagefault_state page_fault_state; 395*61046927SAndroid Build Coastguard Worker char alignment[48]; 396*61046927SAndroid Build Coastguard Worker }; 397*61046927SAndroid Build Coastguard Worker }; 398*61046927SAndroid Build Coastguard Worker 399*61046927SAndroid Build Coastguard Worker enum d3dkmdt_gdisurfacetype { 400*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_INVALID = 0, 401*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_TEXTURE = 1, 402*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_STAGING_CPUVISIBLE = 2, 403*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_STAGING = 3, 404*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_LOOKUPTABLE = 4, 405*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_EXISTINGSYSMEM = 5, 406*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_TEXTURE_CPUVISIBLE = 6, 407*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_TEXTURE_CROSSADAPTER = 7, 408*61046927SAndroid Build Coastguard Worker _D3DKMDT_GDISURFACE_TEXTURE_CPUVISIBLE_CROSSADAPTER = 8, 409*61046927SAndroid Build Coastguard Worker }; 410*61046927SAndroid Build Coastguard Worker 411*61046927SAndroid Build Coastguard Worker struct d3dddi_rational { 412*61046927SAndroid Build Coastguard Worker __u32 numerator; 413*61046927SAndroid Build Coastguard Worker __u32 denominator; 414*61046927SAndroid Build Coastguard Worker }; 415*61046927SAndroid Build Coastguard Worker 416*61046927SAndroid Build Coastguard Worker enum d3dddiformat { 417*61046927SAndroid Build Coastguard Worker _D3DDDIFMT_UNKNOWN = 0, 418*61046927SAndroid Build Coastguard Worker }; 419*61046927SAndroid Build Coastguard Worker 420*61046927SAndroid Build Coastguard Worker struct d3dkmdt_gdisurfacedata { 421*61046927SAndroid Build Coastguard Worker __u32 width; 422*61046927SAndroid Build Coastguard Worker __u32 height; 423*61046927SAndroid Build Coastguard Worker __u32 format; 424*61046927SAndroid Build Coastguard Worker enum d3dkmdt_gdisurfacetype type; 425*61046927SAndroid Build Coastguard Worker __u32 flags; 426*61046927SAndroid Build Coastguard Worker __u32 pitch; 427*61046927SAndroid Build Coastguard Worker }; 428*61046927SAndroid Build Coastguard Worker 429*61046927SAndroid Build Coastguard Worker struct d3dkmdt_stagingsurfacedata { 430*61046927SAndroid Build Coastguard Worker __u32 width; 431*61046927SAndroid Build Coastguard Worker __u32 height; 432*61046927SAndroid Build Coastguard Worker __u32 pitch; 433*61046927SAndroid Build Coastguard Worker }; 434*61046927SAndroid Build Coastguard Worker 435*61046927SAndroid Build Coastguard Worker struct d3dkmdt_sharedprimarysurfacedata { 436*61046927SAndroid Build Coastguard Worker __u32 width; 437*61046927SAndroid Build Coastguard Worker __u32 height; 438*61046927SAndroid Build Coastguard Worker enum d3dddiformat format; 439*61046927SAndroid Build Coastguard Worker struct d3dddi_rational refresh_rate; 440*61046927SAndroid Build Coastguard Worker __u32 vidpn_source_id; 441*61046927SAndroid Build Coastguard Worker }; 442*61046927SAndroid Build Coastguard Worker 443*61046927SAndroid Build Coastguard Worker struct d3dkmdt_shadowsurfacedata { 444*61046927SAndroid Build Coastguard Worker __u32 width; 445*61046927SAndroid Build Coastguard Worker __u32 height; 446*61046927SAndroid Build Coastguard Worker enum d3dddiformat format; 447*61046927SAndroid Build Coastguard Worker __u32 pitch; 448*61046927SAndroid Build Coastguard Worker }; 449*61046927SAndroid Build Coastguard Worker 450*61046927SAndroid Build Coastguard Worker enum d3dkmdt_standardallocationtype { 451*61046927SAndroid Build Coastguard Worker _D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE = 1, 452*61046927SAndroid Build Coastguard Worker _D3DKMDT_STANDARDALLOCATION_SHADOWSURFACE = 2, 453*61046927SAndroid Build Coastguard Worker _D3DKMDT_STANDARDALLOCATION_STAGINGSURFACE = 3, 454*61046927SAndroid Build Coastguard Worker _D3DKMDT_STANDARDALLOCATION_GDISURFACE = 4, 455*61046927SAndroid Build Coastguard Worker }; 456*61046927SAndroid Build Coastguard Worker 457*61046927SAndroid Build Coastguard Worker struct d3dddi_synchronizationobject_flags { 458*61046927SAndroid Build Coastguard Worker union { 459*61046927SAndroid Build Coastguard Worker struct { 460*61046927SAndroid Build Coastguard Worker __u32 shared:1; 461*61046927SAndroid Build Coastguard Worker __u32 nt_security_sharing:1; 462*61046927SAndroid Build Coastguard Worker __u32 cross_adapter:1; 463*61046927SAndroid Build Coastguard Worker __u32 top_of_pipeline:1; 464*61046927SAndroid Build Coastguard Worker __u32 no_signal:1; 465*61046927SAndroid Build Coastguard Worker __u32 no_wait:1; 466*61046927SAndroid Build Coastguard Worker __u32 no_signal_max_value_on_tdr:1; 467*61046927SAndroid Build Coastguard Worker __u32 no_gpu_access:1; 468*61046927SAndroid Build Coastguard Worker __u32 reserved:23; 469*61046927SAndroid Build Coastguard Worker }; 470*61046927SAndroid Build Coastguard Worker __u32 value; 471*61046927SAndroid Build Coastguard Worker }; 472*61046927SAndroid Build Coastguard Worker }; 473*61046927SAndroid Build Coastguard Worker 474*61046927SAndroid Build Coastguard Worker enum d3dddi_synchronizationobject_type { 475*61046927SAndroid Build Coastguard Worker _D3DDDI_SYNCHRONIZATION_MUTEX = 1, 476*61046927SAndroid Build Coastguard Worker _D3DDDI_SEMAPHORE = 2, 477*61046927SAndroid Build Coastguard Worker _D3DDDI_FENCE = 3, 478*61046927SAndroid Build Coastguard Worker _D3DDDI_CPU_NOTIFICATION = 4, 479*61046927SAndroid Build Coastguard Worker _D3DDDI_MONITORED_FENCE = 5, 480*61046927SAndroid Build Coastguard Worker _D3DDDI_PERIODIC_MONITORED_FENCE = 6, 481*61046927SAndroid Build Coastguard Worker _D3DDDI_SYNCHRONIZATION_TYPE_LIMIT 482*61046927SAndroid Build Coastguard Worker }; 483*61046927SAndroid Build Coastguard Worker 484*61046927SAndroid Build Coastguard Worker struct d3dddi_synchronizationobjectinfo2 { 485*61046927SAndroid Build Coastguard Worker enum d3dddi_synchronizationobject_type type; 486*61046927SAndroid Build Coastguard Worker struct d3dddi_synchronizationobject_flags flags; 487*61046927SAndroid Build Coastguard Worker union { 488*61046927SAndroid Build Coastguard Worker struct { 489*61046927SAndroid Build Coastguard Worker __u32 initial_state; 490*61046927SAndroid Build Coastguard Worker } synchronization_mutex; 491*61046927SAndroid Build Coastguard Worker 492*61046927SAndroid Build Coastguard Worker struct { 493*61046927SAndroid Build Coastguard Worker __u32 max_count; 494*61046927SAndroid Build Coastguard Worker __u32 initial_count; 495*61046927SAndroid Build Coastguard Worker } semaphore; 496*61046927SAndroid Build Coastguard Worker 497*61046927SAndroid Build Coastguard Worker struct { 498*61046927SAndroid Build Coastguard Worker __u64 fence_value; 499*61046927SAndroid Build Coastguard Worker } fence; 500*61046927SAndroid Build Coastguard Worker 501*61046927SAndroid Build Coastguard Worker struct { 502*61046927SAndroid Build Coastguard Worker __u64 event; 503*61046927SAndroid Build Coastguard Worker } cpu_notification; 504*61046927SAndroid Build Coastguard Worker 505*61046927SAndroid Build Coastguard Worker struct { 506*61046927SAndroid Build Coastguard Worker __u64 initial_fence_value; 507*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 508*61046927SAndroid Build Coastguard Worker void *fence_cpu_virtual_address; 509*61046927SAndroid Build Coastguard Worker #else 510*61046927SAndroid Build Coastguard Worker __u64 *fence_cpu_virtual_address; 511*61046927SAndroid Build Coastguard Worker #endif 512*61046927SAndroid Build Coastguard Worker __u64 fence_gpu_virtual_address; 513*61046927SAndroid Build Coastguard Worker __u32 engine_affinity; 514*61046927SAndroid Build Coastguard Worker } monitored_fence; 515*61046927SAndroid Build Coastguard Worker 516*61046927SAndroid Build Coastguard Worker struct { 517*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 518*61046927SAndroid Build Coastguard Worker __u32 vidpn_target_id; 519*61046927SAndroid Build Coastguard Worker __u64 time; 520*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 521*61046927SAndroid Build Coastguard Worker void *fence_cpu_virtual_address; 522*61046927SAndroid Build Coastguard Worker #else 523*61046927SAndroid Build Coastguard Worker __u64 fence_cpu_virtual_address; 524*61046927SAndroid Build Coastguard Worker #endif 525*61046927SAndroid Build Coastguard Worker __u64 fence_gpu_virtual_address; 526*61046927SAndroid Build Coastguard Worker __u32 engine_affinity; 527*61046927SAndroid Build Coastguard Worker } periodic_monitored_fence; 528*61046927SAndroid Build Coastguard Worker 529*61046927SAndroid Build Coastguard Worker struct { 530*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 531*61046927SAndroid Build Coastguard Worker } reserved; 532*61046927SAndroid Build Coastguard Worker }; 533*61046927SAndroid Build Coastguard Worker struct d3dkmthandle shared_handle; 534*61046927SAndroid Build Coastguard Worker }; 535*61046927SAndroid Build Coastguard Worker 536*61046927SAndroid Build Coastguard Worker struct d3dkmt_createsynchronizationobject2 { 537*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 538*61046927SAndroid Build Coastguard Worker __u32 reserved; 539*61046927SAndroid Build Coastguard Worker struct d3dddi_synchronizationobjectinfo2 info; 540*61046927SAndroid Build Coastguard Worker struct d3dkmthandle sync_object; 541*61046927SAndroid Build Coastguard Worker __u32 reserved1; 542*61046927SAndroid Build Coastguard Worker }; 543*61046927SAndroid Build Coastguard Worker 544*61046927SAndroid Build Coastguard Worker struct d3dkmt_waitforsynchronizationobject2 { 545*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 546*61046927SAndroid Build Coastguard Worker __u32 object_count; 547*61046927SAndroid Build Coastguard Worker struct d3dkmthandle object_array[D3DDDI_MAX_OBJECT_WAITED_ON]; 548*61046927SAndroid Build Coastguard Worker union { 549*61046927SAndroid Build Coastguard Worker struct { 550*61046927SAndroid Build Coastguard Worker __u64 fence_value; 551*61046927SAndroid Build Coastguard Worker } fence; 552*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 553*61046927SAndroid Build Coastguard Worker }; 554*61046927SAndroid Build Coastguard Worker }; 555*61046927SAndroid Build Coastguard Worker 556*61046927SAndroid Build Coastguard Worker struct d3dddicb_signalflags { 557*61046927SAndroid Build Coastguard Worker union { 558*61046927SAndroid Build Coastguard Worker struct { 559*61046927SAndroid Build Coastguard Worker __u32 signal_at_submission:1; 560*61046927SAndroid Build Coastguard Worker __u32 enqueue_cpu_event:1; 561*61046927SAndroid Build Coastguard Worker __u32 allow_fence_rewind:1; 562*61046927SAndroid Build Coastguard Worker __u32 reserved:28; 563*61046927SAndroid Build Coastguard Worker __u32 DXGK_SIGNAL_FLAG_INTERNAL0:1; 564*61046927SAndroid Build Coastguard Worker }; 565*61046927SAndroid Build Coastguard Worker __u32 value; 566*61046927SAndroid Build Coastguard Worker }; 567*61046927SAndroid Build Coastguard Worker }; 568*61046927SAndroid Build Coastguard Worker 569*61046927SAndroid Build Coastguard Worker struct d3dkmt_signalsynchronizationobject2 { 570*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 571*61046927SAndroid Build Coastguard Worker __u32 object_count; 572*61046927SAndroid Build Coastguard Worker struct d3dkmthandle object_array[D3DDDI_MAX_OBJECT_SIGNALED]; 573*61046927SAndroid Build Coastguard Worker struct d3dddicb_signalflags flags; 574*61046927SAndroid Build Coastguard Worker __u32 context_count; 575*61046927SAndroid Build Coastguard Worker struct d3dkmthandle contexts[D3DDDI_MAX_BROADCAST_CONTEXT]; 576*61046927SAndroid Build Coastguard Worker union { 577*61046927SAndroid Build Coastguard Worker struct { 578*61046927SAndroid Build Coastguard Worker __u64 fence_value; 579*61046927SAndroid Build Coastguard Worker } fence; 580*61046927SAndroid Build Coastguard Worker __u64 cpu_event_handle; 581*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 582*61046927SAndroid Build Coastguard Worker }; 583*61046927SAndroid Build Coastguard Worker }; 584*61046927SAndroid Build Coastguard Worker 585*61046927SAndroid Build Coastguard Worker struct d3dddi_waitforsynchronizationobjectfromcpu_flags { 586*61046927SAndroid Build Coastguard Worker union { 587*61046927SAndroid Build Coastguard Worker struct { 588*61046927SAndroid Build Coastguard Worker __u32 wait_any:1; 589*61046927SAndroid Build Coastguard Worker __u32 reserved:31; 590*61046927SAndroid Build Coastguard Worker }; 591*61046927SAndroid Build Coastguard Worker __u32 value; 592*61046927SAndroid Build Coastguard Worker }; 593*61046927SAndroid Build Coastguard Worker }; 594*61046927SAndroid Build Coastguard Worker 595*61046927SAndroid Build Coastguard Worker struct d3dkmt_waitforsynchronizationobjectfromcpu { 596*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 597*61046927SAndroid Build Coastguard Worker __u32 object_count; 598*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 599*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 600*61046927SAndroid Build Coastguard Worker __u64 *fence_values; 601*61046927SAndroid Build Coastguard Worker #else 602*61046927SAndroid Build Coastguard Worker __u64 objects; 603*61046927SAndroid Build Coastguard Worker __u64 fence_values; 604*61046927SAndroid Build Coastguard Worker #endif 605*61046927SAndroid Build Coastguard Worker __u64 async_event; 606*61046927SAndroid Build Coastguard Worker struct d3dddi_waitforsynchronizationobjectfromcpu_flags flags; 607*61046927SAndroid Build Coastguard Worker }; 608*61046927SAndroid Build Coastguard Worker 609*61046927SAndroid Build Coastguard Worker struct d3dkmt_signalsynchronizationobjectfromcpu { 610*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 611*61046927SAndroid Build Coastguard Worker __u32 object_count; 612*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 613*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 614*61046927SAndroid Build Coastguard Worker __u64 *fence_values; 615*61046927SAndroid Build Coastguard Worker #else 616*61046927SAndroid Build Coastguard Worker __u64 objects; 617*61046927SAndroid Build Coastguard Worker __u64 fence_values; 618*61046927SAndroid Build Coastguard Worker #endif 619*61046927SAndroid Build Coastguard Worker struct d3dddicb_signalflags flags; 620*61046927SAndroid Build Coastguard Worker }; 621*61046927SAndroid Build Coastguard Worker 622*61046927SAndroid Build Coastguard Worker struct d3dkmt_waitforsynchronizationobjectfromgpu { 623*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 624*61046927SAndroid Build Coastguard Worker __u32 object_count; 625*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 626*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 627*61046927SAndroid Build Coastguard Worker #else 628*61046927SAndroid Build Coastguard Worker __u64 objects; 629*61046927SAndroid Build Coastguard Worker #endif 630*61046927SAndroid Build Coastguard Worker union { 631*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 632*61046927SAndroid Build Coastguard Worker __u64 *monitored_fence_values; 633*61046927SAndroid Build Coastguard Worker #else 634*61046927SAndroid Build Coastguard Worker __u64 monitored_fence_values; 635*61046927SAndroid Build Coastguard Worker #endif 636*61046927SAndroid Build Coastguard Worker __u64 fence_value; 637*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 638*61046927SAndroid Build Coastguard Worker }; 639*61046927SAndroid Build Coastguard Worker }; 640*61046927SAndroid Build Coastguard Worker 641*61046927SAndroid Build Coastguard Worker struct d3dkmt_signalsynchronizationobjectfromgpu { 642*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 643*61046927SAndroid Build Coastguard Worker __u32 object_count; 644*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 645*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 646*61046927SAndroid Build Coastguard Worker #else 647*61046927SAndroid Build Coastguard Worker __u64 objects; 648*61046927SAndroid Build Coastguard Worker #endif 649*61046927SAndroid Build Coastguard Worker union { 650*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 651*61046927SAndroid Build Coastguard Worker __u64 *monitored_fence_values; 652*61046927SAndroid Build Coastguard Worker #else 653*61046927SAndroid Build Coastguard Worker __u64 monitored_fence_values; 654*61046927SAndroid Build Coastguard Worker #endif 655*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 656*61046927SAndroid Build Coastguard Worker }; 657*61046927SAndroid Build Coastguard Worker }; 658*61046927SAndroid Build Coastguard Worker 659*61046927SAndroid Build Coastguard Worker struct d3dkmt_signalsynchronizationobjectfromgpu2 { 660*61046927SAndroid Build Coastguard Worker __u32 object_count; 661*61046927SAndroid Build Coastguard Worker __u32 reserved1; 662*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 663*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 664*61046927SAndroid Build Coastguard Worker #else 665*61046927SAndroid Build Coastguard Worker __u64 objects; 666*61046927SAndroid Build Coastguard Worker #endif 667*61046927SAndroid Build Coastguard Worker struct d3dddicb_signalflags flags; 668*61046927SAndroid Build Coastguard Worker __u32 context_count; 669*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 670*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *contexts; 671*61046927SAndroid Build Coastguard Worker #else 672*61046927SAndroid Build Coastguard Worker __u64 contexts; 673*61046927SAndroid Build Coastguard Worker #endif 674*61046927SAndroid Build Coastguard Worker union { 675*61046927SAndroid Build Coastguard Worker __u64 fence_value; 676*61046927SAndroid Build Coastguard Worker __u64 cpu_event_handle; 677*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 678*61046927SAndroid Build Coastguard Worker __u64 *monitored_fence_values; 679*61046927SAndroid Build Coastguard Worker #else 680*61046927SAndroid Build Coastguard Worker __u64 monitored_fence_values; 681*61046927SAndroid Build Coastguard Worker #endif 682*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 683*61046927SAndroid Build Coastguard Worker }; 684*61046927SAndroid Build Coastguard Worker }; 685*61046927SAndroid Build Coastguard Worker 686*61046927SAndroid Build Coastguard Worker struct d3dkmt_destroysynchronizationobject { 687*61046927SAndroid Build Coastguard Worker struct d3dkmthandle sync_object; 688*61046927SAndroid Build Coastguard Worker }; 689*61046927SAndroid Build Coastguard Worker 690*61046927SAndroid Build Coastguard Worker struct d3dkmt_submitcommandflags { 691*61046927SAndroid Build Coastguard Worker __u32 null_rendering:1; 692*61046927SAndroid Build Coastguard Worker __u32 present_redirected:1; 693*61046927SAndroid Build Coastguard Worker __u32 reserved:30; 694*61046927SAndroid Build Coastguard Worker }; 695*61046927SAndroid Build Coastguard Worker 696*61046927SAndroid Build Coastguard Worker struct d3dkmt_submitcommand { 697*61046927SAndroid Build Coastguard Worker __u64 command_buffer; 698*61046927SAndroid Build Coastguard Worker __u32 command_length; 699*61046927SAndroid Build Coastguard Worker struct d3dkmt_submitcommandflags flags; 700*61046927SAndroid Build Coastguard Worker __u64 present_history_token; 701*61046927SAndroid Build Coastguard Worker __u32 broadcast_context_count; 702*61046927SAndroid Build Coastguard Worker struct d3dkmthandle broadcast_context[D3DDDI_MAX_BROADCAST_CONTEXT]; 703*61046927SAndroid Build Coastguard Worker __u32 reserved; 704*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 705*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 706*61046927SAndroid Build Coastguard Worker #else 707*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 708*61046927SAndroid Build Coastguard Worker #endif 709*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 710*61046927SAndroid Build Coastguard Worker __u32 num_primaries; 711*61046927SAndroid Build Coastguard Worker struct d3dkmthandle written_primaries[D3DDDI_MAX_WRITTEN_PRIMARIES]; 712*61046927SAndroid Build Coastguard Worker __u32 num_history_buffers; 713*61046927SAndroid Build Coastguard Worker __u32 reserved1; 714*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 715*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *history_buffer_array; 716*61046927SAndroid Build Coastguard Worker #else 717*61046927SAndroid Build Coastguard Worker __u64 history_buffer_array; 718*61046927SAndroid Build Coastguard Worker #endif 719*61046927SAndroid Build Coastguard Worker }; 720*61046927SAndroid Build Coastguard Worker 721*61046927SAndroid Build Coastguard Worker struct d3dkmt_submitcommandtohwqueue { 722*61046927SAndroid Build Coastguard Worker struct d3dkmthandle hwqueue; 723*61046927SAndroid Build Coastguard Worker __u32 reserved; 724*61046927SAndroid Build Coastguard Worker __u64 hwqueue_progress_fence_id; 725*61046927SAndroid Build Coastguard Worker __u64 command_buffer; 726*61046927SAndroid Build Coastguard Worker __u32 command_length; 727*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 728*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 729*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 730*61046927SAndroid Build Coastguard Worker #else 731*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 732*61046927SAndroid Build Coastguard Worker #endif 733*61046927SAndroid Build Coastguard Worker __u32 num_primaries; 734*61046927SAndroid Build Coastguard Worker __u32 reserved1; 735*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 736*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *written_primaries; 737*61046927SAndroid Build Coastguard Worker #else 738*61046927SAndroid Build Coastguard Worker __u64 written_primaries; 739*61046927SAndroid Build Coastguard Worker #endif 740*61046927SAndroid Build Coastguard Worker }; 741*61046927SAndroid Build Coastguard Worker 742*61046927SAndroid Build Coastguard Worker struct d3dkmt_setcontextschedulingpriority { 743*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 744*61046927SAndroid Build Coastguard Worker int priority; 745*61046927SAndroid Build Coastguard Worker }; 746*61046927SAndroid Build Coastguard Worker 747*61046927SAndroid Build Coastguard Worker struct d3dkmt_setcontextinprocessschedulingpriority { 748*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 749*61046927SAndroid Build Coastguard Worker int priority; 750*61046927SAndroid Build Coastguard Worker }; 751*61046927SAndroid Build Coastguard Worker 752*61046927SAndroid Build Coastguard Worker struct d3dkmt_getcontextschedulingpriority { 753*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 754*61046927SAndroid Build Coastguard Worker int priority; 755*61046927SAndroid Build Coastguard Worker }; 756*61046927SAndroid Build Coastguard Worker 757*61046927SAndroid Build Coastguard Worker struct d3dkmt_getcontextinprocessschedulingpriority { 758*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 759*61046927SAndroid Build Coastguard Worker int priority; 760*61046927SAndroid Build Coastguard Worker }; 761*61046927SAndroid Build Coastguard Worker 762*61046927SAndroid Build Coastguard Worker struct d3dkmt_setallocationpriority { 763*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 764*61046927SAndroid Build Coastguard Worker struct d3dkmthandle resource; 765*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 766*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *allocation_list; 767*61046927SAndroid Build Coastguard Worker #else 768*61046927SAndroid Build Coastguard Worker __u64 allocation_list; 769*61046927SAndroid Build Coastguard Worker #endif 770*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 771*61046927SAndroid Build Coastguard Worker __u32 reserved; 772*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 773*61046927SAndroid Build Coastguard Worker const __u32 *priorities; 774*61046927SAndroid Build Coastguard Worker #else 775*61046927SAndroid Build Coastguard Worker __u64 priorities; 776*61046927SAndroid Build Coastguard Worker #endif 777*61046927SAndroid Build Coastguard Worker }; 778*61046927SAndroid Build Coastguard Worker 779*61046927SAndroid Build Coastguard Worker struct d3dkmt_getallocationpriority { 780*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 781*61046927SAndroid Build Coastguard Worker struct d3dkmthandle resource; 782*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 783*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *allocation_list; 784*61046927SAndroid Build Coastguard Worker #else 785*61046927SAndroid Build Coastguard Worker __u64 allocation_list; 786*61046927SAndroid Build Coastguard Worker #endif 787*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 788*61046927SAndroid Build Coastguard Worker __u32 reserved; 789*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 790*61046927SAndroid Build Coastguard Worker __u32 *priorities; 791*61046927SAndroid Build Coastguard Worker #else 792*61046927SAndroid Build Coastguard Worker __u64 priorities; 793*61046927SAndroid Build Coastguard Worker #endif 794*61046927SAndroid Build Coastguard Worker }; 795*61046927SAndroid Build Coastguard Worker 796*61046927SAndroid Build Coastguard Worker enum d3dkmt_allocationresidencystatus { 797*61046927SAndroid Build Coastguard Worker _D3DKMT_ALLOCATIONRESIDENCYSTATUS_RESIDENTINGPUMEMORY = 1, 798*61046927SAndroid Build Coastguard Worker _D3DKMT_ALLOCATIONRESIDENCYSTATUS_RESIDENTINSHAREDMEMORY = 2, 799*61046927SAndroid Build Coastguard Worker _D3DKMT_ALLOCATIONRESIDENCYSTATUS_NOTRESIDENT = 3, 800*61046927SAndroid Build Coastguard Worker }; 801*61046927SAndroid Build Coastguard Worker 802*61046927SAndroid Build Coastguard Worker struct d3dkmt_queryallocationresidency { 803*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 804*61046927SAndroid Build Coastguard Worker struct d3dkmthandle resource; 805*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 806*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *allocations; 807*61046927SAndroid Build Coastguard Worker #else 808*61046927SAndroid Build Coastguard Worker __u64 allocations; 809*61046927SAndroid Build Coastguard Worker #endif 810*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 811*61046927SAndroid Build Coastguard Worker __u32 reserved; 812*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 813*61046927SAndroid Build Coastguard Worker enum d3dkmt_allocationresidencystatus *residency_status; 814*61046927SAndroid Build Coastguard Worker #else 815*61046927SAndroid Build Coastguard Worker __u64 residency_status; 816*61046927SAndroid Build Coastguard Worker #endif 817*61046927SAndroid Build Coastguard Worker }; 818*61046927SAndroid Build Coastguard Worker 819*61046927SAndroid Build Coastguard Worker struct d3dddicb_lock2flags { 820*61046927SAndroid Build Coastguard Worker union { 821*61046927SAndroid Build Coastguard Worker struct { 822*61046927SAndroid Build Coastguard Worker __u32 reserved:32; 823*61046927SAndroid Build Coastguard Worker }; 824*61046927SAndroid Build Coastguard Worker __u32 value; 825*61046927SAndroid Build Coastguard Worker }; 826*61046927SAndroid Build Coastguard Worker }; 827*61046927SAndroid Build Coastguard Worker 828*61046927SAndroid Build Coastguard Worker struct d3dkmt_lock2 { 829*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 830*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 831*61046927SAndroid Build Coastguard Worker struct d3dddicb_lock2flags flags; 832*61046927SAndroid Build Coastguard Worker __u32 reserved; 833*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 834*61046927SAndroid Build Coastguard Worker void *data; 835*61046927SAndroid Build Coastguard Worker #else 836*61046927SAndroid Build Coastguard Worker __u64 data; 837*61046927SAndroid Build Coastguard Worker #endif 838*61046927SAndroid Build Coastguard Worker }; 839*61046927SAndroid Build Coastguard Worker 840*61046927SAndroid Build Coastguard Worker struct d3dkmt_unlock2 { 841*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 842*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 843*61046927SAndroid Build Coastguard Worker }; 844*61046927SAndroid Build Coastguard Worker 845*61046927SAndroid Build Coastguard Worker enum d3dkmt_device_error_reason { 846*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICE_ERROR_REASON_GENERIC = 0x80000000, 847*61046927SAndroid Build Coastguard Worker _D3DKMT_DEVICE_ERROR_REASON_DRIVER_ERROR = 0x80000006, 848*61046927SAndroid Build Coastguard Worker }; 849*61046927SAndroid Build Coastguard Worker 850*61046927SAndroid Build Coastguard Worker struct d3dkmt_markdeviceaserror { 851*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 852*61046927SAndroid Build Coastguard Worker enum d3dkmt_device_error_reason reason; 853*61046927SAndroid Build Coastguard Worker }; 854*61046927SAndroid Build Coastguard Worker 855*61046927SAndroid Build Coastguard Worker enum d3dkmt_standardallocationtype { 856*61046927SAndroid Build Coastguard Worker _D3DKMT_STANDARDALLOCATIONTYPE_EXISTINGHEAP = 1, 857*61046927SAndroid Build Coastguard Worker _D3DKMT_STANDARDALLOCATIONTYPE_CROSSADAPTER = 2, 858*61046927SAndroid Build Coastguard Worker }; 859*61046927SAndroid Build Coastguard Worker 860*61046927SAndroid Build Coastguard Worker struct d3dkmt_standardallocation_existingheap { 861*61046927SAndroid Build Coastguard Worker __u64 size; 862*61046927SAndroid Build Coastguard Worker }; 863*61046927SAndroid Build Coastguard Worker 864*61046927SAndroid Build Coastguard Worker struct d3dkmt_createstandardallocationflags { 865*61046927SAndroid Build Coastguard Worker union { 866*61046927SAndroid Build Coastguard Worker struct { 867*61046927SAndroid Build Coastguard Worker __u32 reserved:32; 868*61046927SAndroid Build Coastguard Worker }; 869*61046927SAndroid Build Coastguard Worker __u32 value; 870*61046927SAndroid Build Coastguard Worker }; 871*61046927SAndroid Build Coastguard Worker }; 872*61046927SAndroid Build Coastguard Worker 873*61046927SAndroid Build Coastguard Worker struct d3dkmt_createstandardallocation { 874*61046927SAndroid Build Coastguard Worker enum d3dkmt_standardallocationtype type; 875*61046927SAndroid Build Coastguard Worker __u32 reserved; 876*61046927SAndroid Build Coastguard Worker struct d3dkmt_standardallocation_existingheap existing_heap_data; 877*61046927SAndroid Build Coastguard Worker struct d3dkmt_createstandardallocationflags flags; 878*61046927SAndroid Build Coastguard Worker __u32 reserved1; 879*61046927SAndroid Build Coastguard Worker }; 880*61046927SAndroid Build Coastguard Worker 881*61046927SAndroid Build Coastguard Worker struct d3dddi_allocationinfo2 { 882*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 883*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 884*61046927SAndroid Build Coastguard Worker const void *sysmem; 885*61046927SAndroid Build Coastguard Worker #else 886*61046927SAndroid Build Coastguard Worker __u64 sysmem; 887*61046927SAndroid Build Coastguard Worker #endif 888*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 889*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 890*61046927SAndroid Build Coastguard Worker #else 891*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 892*61046927SAndroid Build Coastguard Worker #endif 893*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 894*61046927SAndroid Build Coastguard Worker __u32 vidpn_source_id; 895*61046927SAndroid Build Coastguard Worker union { 896*61046927SAndroid Build Coastguard Worker struct { 897*61046927SAndroid Build Coastguard Worker __u32 primary:1; 898*61046927SAndroid Build Coastguard Worker __u32 stereo:1; 899*61046927SAndroid Build Coastguard Worker __u32 override_priority:1; 900*61046927SAndroid Build Coastguard Worker __u32 reserved:29; 901*61046927SAndroid Build Coastguard Worker }; 902*61046927SAndroid Build Coastguard Worker __u32 value; 903*61046927SAndroid Build Coastguard Worker } flags; 904*61046927SAndroid Build Coastguard Worker __u64 gpu_virtual_address; 905*61046927SAndroid Build Coastguard Worker union { 906*61046927SAndroid Build Coastguard Worker __u32 priority; 907*61046927SAndroid Build Coastguard Worker __u64 unused; 908*61046927SAndroid Build Coastguard Worker }; 909*61046927SAndroid Build Coastguard Worker __u64 reserved[5]; 910*61046927SAndroid Build Coastguard Worker }; 911*61046927SAndroid Build Coastguard Worker 912*61046927SAndroid Build Coastguard Worker struct d3dkmt_createallocationflags { 913*61046927SAndroid Build Coastguard Worker union { 914*61046927SAndroid Build Coastguard Worker struct { 915*61046927SAndroid Build Coastguard Worker __u32 create_resource:1; 916*61046927SAndroid Build Coastguard Worker __u32 create_shared:1; 917*61046927SAndroid Build Coastguard Worker __u32 non_secure:1; 918*61046927SAndroid Build Coastguard Worker __u32 create_protected:1; 919*61046927SAndroid Build Coastguard Worker __u32 restrict_shared_access:1; 920*61046927SAndroid Build Coastguard Worker __u32 existing_sysmem:1; 921*61046927SAndroid Build Coastguard Worker __u32 nt_security_sharing:1; 922*61046927SAndroid Build Coastguard Worker __u32 read_only:1; 923*61046927SAndroid Build Coastguard Worker __u32 create_write_combined:1; 924*61046927SAndroid Build Coastguard Worker __u32 create_cached:1; 925*61046927SAndroid Build Coastguard Worker __u32 swap_chain_back_buffer:1; 926*61046927SAndroid Build Coastguard Worker __u32 cross_adapter:1; 927*61046927SAndroid Build Coastguard Worker __u32 open_cross_adapter:1; 928*61046927SAndroid Build Coastguard Worker __u32 partial_shared_creation:1; 929*61046927SAndroid Build Coastguard Worker __u32 zeroed:1; 930*61046927SAndroid Build Coastguard Worker __u32 write_watch:1; 931*61046927SAndroid Build Coastguard Worker __u32 standard_allocation:1; 932*61046927SAndroid Build Coastguard Worker __u32 existing_section:1; 933*61046927SAndroid Build Coastguard Worker __u32 reserved:14; 934*61046927SAndroid Build Coastguard Worker }; 935*61046927SAndroid Build Coastguard Worker __u32 value; 936*61046927SAndroid Build Coastguard Worker }; 937*61046927SAndroid Build Coastguard Worker }; 938*61046927SAndroid Build Coastguard Worker 939*61046927SAndroid Build Coastguard Worker struct d3dkmt_createallocation { 940*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 941*61046927SAndroid Build Coastguard Worker struct d3dkmthandle resource; 942*61046927SAndroid Build Coastguard Worker struct d3dkmthandle global_share; 943*61046927SAndroid Build Coastguard Worker __u32 reserved; 944*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 945*61046927SAndroid Build Coastguard Worker const void *private_runtime_data; 946*61046927SAndroid Build Coastguard Worker #else 947*61046927SAndroid Build Coastguard Worker __u64 private_runtime_data; 948*61046927SAndroid Build Coastguard Worker #endif 949*61046927SAndroid Build Coastguard Worker __u32 private_runtime_data_size; 950*61046927SAndroid Build Coastguard Worker __u32 reserved1; 951*61046927SAndroid Build Coastguard Worker union { 952*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 953*61046927SAndroid Build Coastguard Worker struct d3dkmt_createstandardallocation *standard_allocation; 954*61046927SAndroid Build Coastguard Worker const void *priv_drv_data; 955*61046927SAndroid Build Coastguard Worker #else 956*61046927SAndroid Build Coastguard Worker __u64 standard_allocation; 957*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 958*61046927SAndroid Build Coastguard Worker #endif 959*61046927SAndroid Build Coastguard Worker }; 960*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 961*61046927SAndroid Build Coastguard Worker __u32 alloc_count; 962*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 963*61046927SAndroid Build Coastguard Worker struct d3dddi_allocationinfo2 *allocation_info; 964*61046927SAndroid Build Coastguard Worker #else 965*61046927SAndroid Build Coastguard Worker __u64 allocation_info; 966*61046927SAndroid Build Coastguard Worker #endif 967*61046927SAndroid Build Coastguard Worker struct d3dkmt_createallocationflags flags; 968*61046927SAndroid Build Coastguard Worker __u32 reserved2; 969*61046927SAndroid Build Coastguard Worker __u64 private_runtime_resource_handle; 970*61046927SAndroid Build Coastguard Worker }; 971*61046927SAndroid Build Coastguard Worker 972*61046927SAndroid Build Coastguard Worker struct d3dddicb_destroyallocation2flags { 973*61046927SAndroid Build Coastguard Worker union { 974*61046927SAndroid Build Coastguard Worker struct { 975*61046927SAndroid Build Coastguard Worker __u32 assume_not_in_use:1; 976*61046927SAndroid Build Coastguard Worker __u32 synchronous_destroy:1; 977*61046927SAndroid Build Coastguard Worker __u32 reserved:29; 978*61046927SAndroid Build Coastguard Worker __u32 system_use_only:1; 979*61046927SAndroid Build Coastguard Worker }; 980*61046927SAndroid Build Coastguard Worker __u32 value; 981*61046927SAndroid Build Coastguard Worker }; 982*61046927SAndroid Build Coastguard Worker }; 983*61046927SAndroid Build Coastguard Worker 984*61046927SAndroid Build Coastguard Worker struct d3dkmt_destroyallocation2 { 985*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 986*61046927SAndroid Build Coastguard Worker struct d3dkmthandle resource; 987*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 988*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *allocations; 989*61046927SAndroid Build Coastguard Worker #else 990*61046927SAndroid Build Coastguard Worker __u64 allocations; 991*61046927SAndroid Build Coastguard Worker #endif 992*61046927SAndroid Build Coastguard Worker __u32 alloc_count; 993*61046927SAndroid Build Coastguard Worker struct d3dddicb_destroyallocation2flags flags; 994*61046927SAndroid Build Coastguard Worker }; 995*61046927SAndroid Build Coastguard Worker 996*61046927SAndroid Build Coastguard Worker struct d3dddi_makeresident_flags { 997*61046927SAndroid Build Coastguard Worker union { 998*61046927SAndroid Build Coastguard Worker struct { 999*61046927SAndroid Build Coastguard Worker __u32 cant_trim_further:1; 1000*61046927SAndroid Build Coastguard Worker __u32 must_succeed:1; 1001*61046927SAndroid Build Coastguard Worker __u32 reserved:30; 1002*61046927SAndroid Build Coastguard Worker }; 1003*61046927SAndroid Build Coastguard Worker __u32 value; 1004*61046927SAndroid Build Coastguard Worker }; 1005*61046927SAndroid Build Coastguard Worker }; 1006*61046927SAndroid Build Coastguard Worker 1007*61046927SAndroid Build Coastguard Worker struct d3dddi_makeresident { 1008*61046927SAndroid Build Coastguard Worker struct d3dkmthandle paging_queue; 1009*61046927SAndroid Build Coastguard Worker __u32 alloc_count; 1010*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1011*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *allocation_list; 1012*61046927SAndroid Build Coastguard Worker const __u32 *priority_list; 1013*61046927SAndroid Build Coastguard Worker #else 1014*61046927SAndroid Build Coastguard Worker __u64 allocation_list; 1015*61046927SAndroid Build Coastguard Worker __u64 priority_list; 1016*61046927SAndroid Build Coastguard Worker #endif 1017*61046927SAndroid Build Coastguard Worker struct d3dddi_makeresident_flags flags; 1018*61046927SAndroid Build Coastguard Worker __u64 paging_fence_value; 1019*61046927SAndroid Build Coastguard Worker __u64 num_bytes_to_trim; 1020*61046927SAndroid Build Coastguard Worker }; 1021*61046927SAndroid Build Coastguard Worker 1022*61046927SAndroid Build Coastguard Worker struct d3dddi_evict_flags { 1023*61046927SAndroid Build Coastguard Worker union { 1024*61046927SAndroid Build Coastguard Worker struct { 1025*61046927SAndroid Build Coastguard Worker __u32 evict_only_if_necessary:1; 1026*61046927SAndroid Build Coastguard Worker __u32 not_written_to:1; 1027*61046927SAndroid Build Coastguard Worker __u32 reserved:30; 1028*61046927SAndroid Build Coastguard Worker }; 1029*61046927SAndroid Build Coastguard Worker __u32 value; 1030*61046927SAndroid Build Coastguard Worker }; 1031*61046927SAndroid Build Coastguard Worker }; 1032*61046927SAndroid Build Coastguard Worker 1033*61046927SAndroid Build Coastguard Worker struct d3dkmt_evict { 1034*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1035*61046927SAndroid Build Coastguard Worker __u32 alloc_count; 1036*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1037*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *allocations; 1038*61046927SAndroid Build Coastguard Worker #else 1039*61046927SAndroid Build Coastguard Worker __u64 allocations; 1040*61046927SAndroid Build Coastguard Worker #endif 1041*61046927SAndroid Build Coastguard Worker struct d3dddi_evict_flags flags; 1042*61046927SAndroid Build Coastguard Worker __u32 reserved; 1043*61046927SAndroid Build Coastguard Worker __u64 num_bytes_to_trim; 1044*61046927SAndroid Build Coastguard Worker }; 1045*61046927SAndroid Build Coastguard Worker 1046*61046927SAndroid Build Coastguard Worker struct d3dddigpuva_protection_type { 1047*61046927SAndroid Build Coastguard Worker union { 1048*61046927SAndroid Build Coastguard Worker struct { 1049*61046927SAndroid Build Coastguard Worker __u64 write:1; 1050*61046927SAndroid Build Coastguard Worker __u64 execute:1; 1051*61046927SAndroid Build Coastguard Worker __u64 zero:1; 1052*61046927SAndroid Build Coastguard Worker __u64 no_access:1; 1053*61046927SAndroid Build Coastguard Worker __u64 system_use_only:1; 1054*61046927SAndroid Build Coastguard Worker __u64 reserved:59; 1055*61046927SAndroid Build Coastguard Worker }; 1056*61046927SAndroid Build Coastguard Worker __u64 value; 1057*61046927SAndroid Build Coastguard Worker }; 1058*61046927SAndroid Build Coastguard Worker }; 1059*61046927SAndroid Build Coastguard Worker 1060*61046927SAndroid Build Coastguard Worker enum d3dddi_updategpuvirtualaddress_operation_type { 1061*61046927SAndroid Build Coastguard Worker _D3DDDI_UPDATEGPUVIRTUALADDRESS_MAP = 0, 1062*61046927SAndroid Build Coastguard Worker _D3DDDI_UPDATEGPUVIRTUALADDRESS_UNMAP = 1, 1063*61046927SAndroid Build Coastguard Worker _D3DDDI_UPDATEGPUVIRTUALADDRESS_COPY = 2, 1064*61046927SAndroid Build Coastguard Worker _D3DDDI_UPDATEGPUVIRTUALADDRESS_MAP_PROTECT = 3, 1065*61046927SAndroid Build Coastguard Worker }; 1066*61046927SAndroid Build Coastguard Worker 1067*61046927SAndroid Build Coastguard Worker struct d3dddi_updategpuvirtualaddress_operation { 1068*61046927SAndroid Build Coastguard Worker enum d3dddi_updategpuvirtualaddress_operation_type operation; 1069*61046927SAndroid Build Coastguard Worker union { 1070*61046927SAndroid Build Coastguard Worker struct { 1071*61046927SAndroid Build Coastguard Worker __u64 base_address; 1072*61046927SAndroid Build Coastguard Worker __u64 size; 1073*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 1074*61046927SAndroid Build Coastguard Worker __u64 allocation_offset; 1075*61046927SAndroid Build Coastguard Worker __u64 allocation_size; 1076*61046927SAndroid Build Coastguard Worker } map; 1077*61046927SAndroid Build Coastguard Worker struct { 1078*61046927SAndroid Build Coastguard Worker __u64 base_address; 1079*61046927SAndroid Build Coastguard Worker __u64 size; 1080*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 1081*61046927SAndroid Build Coastguard Worker __u64 allocation_offset; 1082*61046927SAndroid Build Coastguard Worker __u64 allocation_size; 1083*61046927SAndroid Build Coastguard Worker struct d3dddigpuva_protection_type protection; 1084*61046927SAndroid Build Coastguard Worker __u64 driver_protection; 1085*61046927SAndroid Build Coastguard Worker } map_protect; 1086*61046927SAndroid Build Coastguard Worker struct { 1087*61046927SAndroid Build Coastguard Worker __u64 base_address; 1088*61046927SAndroid Build Coastguard Worker __u64 size; 1089*61046927SAndroid Build Coastguard Worker struct d3dddigpuva_protection_type protection; 1090*61046927SAndroid Build Coastguard Worker } unmap; 1091*61046927SAndroid Build Coastguard Worker struct { 1092*61046927SAndroid Build Coastguard Worker __u64 source_address; 1093*61046927SAndroid Build Coastguard Worker __u64 size; 1094*61046927SAndroid Build Coastguard Worker __u64 dest_address; 1095*61046927SAndroid Build Coastguard Worker } copy; 1096*61046927SAndroid Build Coastguard Worker }; 1097*61046927SAndroid Build Coastguard Worker }; 1098*61046927SAndroid Build Coastguard Worker 1099*61046927SAndroid Build Coastguard Worker enum d3dddigpuva_reservation_type { 1100*61046927SAndroid Build Coastguard Worker _D3DDDIGPUVA_RESERVE_NO_ACCESS = 0, 1101*61046927SAndroid Build Coastguard Worker _D3DDDIGPUVA_RESERVE_ZERO = 1, 1102*61046927SAndroid Build Coastguard Worker _D3DDDIGPUVA_RESERVE_NO_COMMIT = 2 1103*61046927SAndroid Build Coastguard Worker }; 1104*61046927SAndroid Build Coastguard Worker 1105*61046927SAndroid Build Coastguard Worker struct d3dkmt_updategpuvirtualaddress { 1106*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1107*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 1108*61046927SAndroid Build Coastguard Worker struct d3dkmthandle fence_object; 1109*61046927SAndroid Build Coastguard Worker __u32 num_operations; 1110*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1111*61046927SAndroid Build Coastguard Worker struct d3dddi_updategpuvirtualaddress_operation *operations; 1112*61046927SAndroid Build Coastguard Worker #else 1113*61046927SAndroid Build Coastguard Worker __u64 operations; 1114*61046927SAndroid Build Coastguard Worker #endif 1115*61046927SAndroid Build Coastguard Worker __u32 reserved0; 1116*61046927SAndroid Build Coastguard Worker __u32 reserved1; 1117*61046927SAndroid Build Coastguard Worker __u64 reserved2; 1118*61046927SAndroid Build Coastguard Worker __u64 fence_value; 1119*61046927SAndroid Build Coastguard Worker union { 1120*61046927SAndroid Build Coastguard Worker struct { 1121*61046927SAndroid Build Coastguard Worker __u32 do_not_wait:1; 1122*61046927SAndroid Build Coastguard Worker __u32 reserved:31; 1123*61046927SAndroid Build Coastguard Worker }; 1124*61046927SAndroid Build Coastguard Worker __u32 value; 1125*61046927SAndroid Build Coastguard Worker } flags; 1126*61046927SAndroid Build Coastguard Worker __u32 reserved3; 1127*61046927SAndroid Build Coastguard Worker }; 1128*61046927SAndroid Build Coastguard Worker 1129*61046927SAndroid Build Coastguard Worker struct d3dddi_mapgpuvirtualaddress { 1130*61046927SAndroid Build Coastguard Worker struct d3dkmthandle paging_queue; 1131*61046927SAndroid Build Coastguard Worker __u64 base_address; 1132*61046927SAndroid Build Coastguard Worker __u64 minimum_address; 1133*61046927SAndroid Build Coastguard Worker __u64 maximum_address; 1134*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 1135*61046927SAndroid Build Coastguard Worker __u64 offset_in_pages; 1136*61046927SAndroid Build Coastguard Worker __u64 size_in_pages; 1137*61046927SAndroid Build Coastguard Worker struct d3dddigpuva_protection_type protection; 1138*61046927SAndroid Build Coastguard Worker __u64 driver_protection; 1139*61046927SAndroid Build Coastguard Worker __u32 reserved0; 1140*61046927SAndroid Build Coastguard Worker __u64 reserved1; 1141*61046927SAndroid Build Coastguard Worker __u64 virtual_address; 1142*61046927SAndroid Build Coastguard Worker __u64 paging_fence_value; 1143*61046927SAndroid Build Coastguard Worker }; 1144*61046927SAndroid Build Coastguard Worker 1145*61046927SAndroid Build Coastguard Worker struct d3dddi_reservegpuvirtualaddress { 1146*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1147*61046927SAndroid Build Coastguard Worker __u64 base_address; 1148*61046927SAndroid Build Coastguard Worker __u64 minimum_address; 1149*61046927SAndroid Build Coastguard Worker __u64 maximum_address; 1150*61046927SAndroid Build Coastguard Worker __u64 size; 1151*61046927SAndroid Build Coastguard Worker enum d3dddigpuva_reservation_type reservation_type; 1152*61046927SAndroid Build Coastguard Worker __u64 driver_protection; 1153*61046927SAndroid Build Coastguard Worker __u64 virtual_address; 1154*61046927SAndroid Build Coastguard Worker __u64 paging_fence_value; 1155*61046927SAndroid Build Coastguard Worker }; 1156*61046927SAndroid Build Coastguard Worker 1157*61046927SAndroid Build Coastguard Worker struct d3dkmt_freegpuvirtualaddress { 1158*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1159*61046927SAndroid Build Coastguard Worker __u32 reserved; 1160*61046927SAndroid Build Coastguard Worker __u64 base_address; 1161*61046927SAndroid Build Coastguard Worker __u64 size; 1162*61046927SAndroid Build Coastguard Worker }; 1163*61046927SAndroid Build Coastguard Worker 1164*61046927SAndroid Build Coastguard Worker enum d3dkmt_memory_segment_group { 1165*61046927SAndroid Build Coastguard Worker _D3DKMT_MEMORY_SEGMENT_GROUP_LOCAL = 0, 1166*61046927SAndroid Build Coastguard Worker _D3DKMT_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1 1167*61046927SAndroid Build Coastguard Worker }; 1168*61046927SAndroid Build Coastguard Worker 1169*61046927SAndroid Build Coastguard Worker struct d3dkmt_queryvideomemoryinfo { 1170*61046927SAndroid Build Coastguard Worker __u64 process; 1171*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1172*61046927SAndroid Build Coastguard Worker enum d3dkmt_memory_segment_group memory_segment_group; 1173*61046927SAndroid Build Coastguard Worker __u64 budget; 1174*61046927SAndroid Build Coastguard Worker __u64 current_usage; 1175*61046927SAndroid Build Coastguard Worker __u64 current_reservation; 1176*61046927SAndroid Build Coastguard Worker __u64 available_for_reservation; 1177*61046927SAndroid Build Coastguard Worker __u32 physical_adapter_index; 1178*61046927SAndroid Build Coastguard Worker }; 1179*61046927SAndroid Build Coastguard Worker 1180*61046927SAndroid Build Coastguard Worker struct d3dkmt_adaptertype { 1181*61046927SAndroid Build Coastguard Worker union { 1182*61046927SAndroid Build Coastguard Worker struct { 1183*61046927SAndroid Build Coastguard Worker __u32 render_supported:1; 1184*61046927SAndroid Build Coastguard Worker __u32 display_supported:1; 1185*61046927SAndroid Build Coastguard Worker __u32 software_device:1; 1186*61046927SAndroid Build Coastguard Worker __u32 post_device:1; 1187*61046927SAndroid Build Coastguard Worker __u32 hybrid_discrete:1; 1188*61046927SAndroid Build Coastguard Worker __u32 hybrid_integrated:1; 1189*61046927SAndroid Build Coastguard Worker __u32 indirect_display_device:1; 1190*61046927SAndroid Build Coastguard Worker __u32 paravirtualized:1; 1191*61046927SAndroid Build Coastguard Worker __u32 acg_supported:1; 1192*61046927SAndroid Build Coastguard Worker __u32 support_set_timings_from_vidpn:1; 1193*61046927SAndroid Build Coastguard Worker __u32 detachable:1; 1194*61046927SAndroid Build Coastguard Worker __u32 compute_only:1; 1195*61046927SAndroid Build Coastguard Worker __u32 prototype:1; 1196*61046927SAndroid Build Coastguard Worker __u32 reserved:19; 1197*61046927SAndroid Build Coastguard Worker }; 1198*61046927SAndroid Build Coastguard Worker __u32 value; 1199*61046927SAndroid Build Coastguard Worker }; 1200*61046927SAndroid Build Coastguard Worker }; 1201*61046927SAndroid Build Coastguard Worker 1202*61046927SAndroid Build Coastguard Worker enum kmtqueryadapterinfotype { 1203*61046927SAndroid Build Coastguard Worker _KMTQAITYPE_UMDRIVERPRIVATE = 0, 1204*61046927SAndroid Build Coastguard Worker _KMTQAITYPE_ADAPTERTYPE = 15, 1205*61046927SAndroid Build Coastguard Worker _KMTQAITYPE_ADAPTERTYPE_RENDER = 57 1206*61046927SAndroid Build Coastguard Worker }; 1207*61046927SAndroid Build Coastguard Worker 1208*61046927SAndroid Build Coastguard Worker struct d3dkmt_queryadapterinfo { 1209*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1210*61046927SAndroid Build Coastguard Worker enum kmtqueryadapterinfotype type; 1211*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1212*61046927SAndroid Build Coastguard Worker void *private_data; 1213*61046927SAndroid Build Coastguard Worker #else 1214*61046927SAndroid Build Coastguard Worker __u64 private_data; 1215*61046927SAndroid Build Coastguard Worker #endif 1216*61046927SAndroid Build Coastguard Worker __u32 private_data_size; 1217*61046927SAndroid Build Coastguard Worker }; 1218*61046927SAndroid Build Coastguard Worker 1219*61046927SAndroid Build Coastguard Worker #pragma pack(push, 1) 1220*61046927SAndroid Build Coastguard Worker 1221*61046927SAndroid Build Coastguard Worker struct dxgk_gpuclockdata_flags { 1222*61046927SAndroid Build Coastguard Worker union { 1223*61046927SAndroid Build Coastguard Worker struct { 1224*61046927SAndroid Build Coastguard Worker __u32 context_management_processor:1; 1225*61046927SAndroid Build Coastguard Worker __u32 reserved:31; 1226*61046927SAndroid Build Coastguard Worker }; 1227*61046927SAndroid Build Coastguard Worker __u32 value; 1228*61046927SAndroid Build Coastguard Worker }; 1229*61046927SAndroid Build Coastguard Worker }; 1230*61046927SAndroid Build Coastguard Worker 1231*61046927SAndroid Build Coastguard Worker struct dxgk_gpuclockdata { 1232*61046927SAndroid Build Coastguard Worker __u64 gpu_frequency; 1233*61046927SAndroid Build Coastguard Worker __u64 gpu_clock_counter; 1234*61046927SAndroid Build Coastguard Worker __u64 cpu_clock_counter; 1235*61046927SAndroid Build Coastguard Worker struct dxgk_gpuclockdata_flags flags; 1236*61046927SAndroid Build Coastguard Worker } __packed; 1237*61046927SAndroid Build Coastguard Worker 1238*61046927SAndroid Build Coastguard Worker struct d3dkmt_queryclockcalibration { 1239*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1240*61046927SAndroid Build Coastguard Worker __u32 node_ordinal; 1241*61046927SAndroid Build Coastguard Worker __u32 physical_adapter_index; 1242*61046927SAndroid Build Coastguard Worker struct dxgk_gpuclockdata clock_data; 1243*61046927SAndroid Build Coastguard Worker }; 1244*61046927SAndroid Build Coastguard Worker 1245*61046927SAndroid Build Coastguard Worker #pragma pack(pop) 1246*61046927SAndroid Build Coastguard Worker 1247*61046927SAndroid Build Coastguard Worker struct d3dkmt_flushheaptransitions { 1248*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1249*61046927SAndroid Build Coastguard Worker }; 1250*61046927SAndroid Build Coastguard Worker 1251*61046927SAndroid Build Coastguard Worker struct d3dddi_openallocationinfo2 { 1252*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 1253*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1254*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 1255*61046927SAndroid Build Coastguard Worker #else 1256*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 1257*61046927SAndroid Build Coastguard Worker #endif 1258*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 1259*61046927SAndroid Build Coastguard Worker __u64 gpu_va; 1260*61046927SAndroid Build Coastguard Worker __u64 reserved[6]; 1261*61046927SAndroid Build Coastguard Worker }; 1262*61046927SAndroid Build Coastguard Worker 1263*61046927SAndroid Build Coastguard Worker struct d3dddi_updateallocproperty_flags { 1264*61046927SAndroid Build Coastguard Worker union { 1265*61046927SAndroid Build Coastguard Worker struct { 1266*61046927SAndroid Build Coastguard Worker __u32 accessed_physically:1; 1267*61046927SAndroid Build Coastguard Worker __u32 reserved:31; 1268*61046927SAndroid Build Coastguard Worker }; 1269*61046927SAndroid Build Coastguard Worker __u32 value; 1270*61046927SAndroid Build Coastguard Worker }; 1271*61046927SAndroid Build Coastguard Worker }; 1272*61046927SAndroid Build Coastguard Worker 1273*61046927SAndroid Build Coastguard Worker struct d3dddi_segmentpreference { 1274*61046927SAndroid Build Coastguard Worker union { 1275*61046927SAndroid Build Coastguard Worker struct { 1276*61046927SAndroid Build Coastguard Worker __u32 segment_id0:5; 1277*61046927SAndroid Build Coastguard Worker __u32 direction0:1; 1278*61046927SAndroid Build Coastguard Worker __u32 segment_id1:5; 1279*61046927SAndroid Build Coastguard Worker __u32 direction1:1; 1280*61046927SAndroid Build Coastguard Worker __u32 segment_id2:5; 1281*61046927SAndroid Build Coastguard Worker __u32 direction2:1; 1282*61046927SAndroid Build Coastguard Worker __u32 segment_id3:5; 1283*61046927SAndroid Build Coastguard Worker __u32 direction3:1; 1284*61046927SAndroid Build Coastguard Worker __u32 segment_id4:5; 1285*61046927SAndroid Build Coastguard Worker __u32 direction4:1; 1286*61046927SAndroid Build Coastguard Worker __u32 reserved:2; 1287*61046927SAndroid Build Coastguard Worker }; 1288*61046927SAndroid Build Coastguard Worker __u32 value; 1289*61046927SAndroid Build Coastguard Worker }; 1290*61046927SAndroid Build Coastguard Worker }; 1291*61046927SAndroid Build Coastguard Worker 1292*61046927SAndroid Build Coastguard Worker struct d3dddi_updateallocproperty { 1293*61046927SAndroid Build Coastguard Worker struct d3dkmthandle paging_queue; 1294*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 1295*61046927SAndroid Build Coastguard Worker __u32 supported_segment_set; 1296*61046927SAndroid Build Coastguard Worker struct d3dddi_segmentpreference preferred_segment; 1297*61046927SAndroid Build Coastguard Worker struct d3dddi_updateallocproperty_flags flags; 1298*61046927SAndroid Build Coastguard Worker __u64 paging_fence_value; 1299*61046927SAndroid Build Coastguard Worker union { 1300*61046927SAndroid Build Coastguard Worker struct { 1301*61046927SAndroid Build Coastguard Worker __u32 set_accessed_physically:1; 1302*61046927SAndroid Build Coastguard Worker __u32 set_supported_segmentSet:1; 1303*61046927SAndroid Build Coastguard Worker __u32 set_preferred_segment:1; 1304*61046927SAndroid Build Coastguard Worker __u32 reserved:29; 1305*61046927SAndroid Build Coastguard Worker }; 1306*61046927SAndroid Build Coastguard Worker __u32 property_mask_value; 1307*61046927SAndroid Build Coastguard Worker }; 1308*61046927SAndroid Build Coastguard Worker }; 1309*61046927SAndroid Build Coastguard Worker 1310*61046927SAndroid Build Coastguard Worker enum d3dkmt_offer_priority { 1311*61046927SAndroid Build Coastguard Worker _D3DKMT_OFFER_PRIORITY_LOW = 1, 1312*61046927SAndroid Build Coastguard Worker _D3DKMT_OFFER_PRIORITY_NORMAL = 2, 1313*61046927SAndroid Build Coastguard Worker _D3DKMT_OFFER_PRIORITY_HIGH = 3, 1314*61046927SAndroid Build Coastguard Worker _D3DKMT_OFFER_PRIORITY_AUTO = 4, 1315*61046927SAndroid Build Coastguard Worker }; 1316*61046927SAndroid Build Coastguard Worker 1317*61046927SAndroid Build Coastguard Worker struct d3dkmt_offer_flags { 1318*61046927SAndroid Build Coastguard Worker union { 1319*61046927SAndroid Build Coastguard Worker struct { 1320*61046927SAndroid Build Coastguard Worker __u32 offer_immediately:1; 1321*61046927SAndroid Build Coastguard Worker __u32 allow_decommit:1; 1322*61046927SAndroid Build Coastguard Worker __u32 reserved:30; 1323*61046927SAndroid Build Coastguard Worker }; 1324*61046927SAndroid Build Coastguard Worker __u32 value; 1325*61046927SAndroid Build Coastguard Worker }; 1326*61046927SAndroid Build Coastguard Worker }; 1327*61046927SAndroid Build Coastguard Worker 1328*61046927SAndroid Build Coastguard Worker struct d3dkmt_offerallocations { 1329*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1330*61046927SAndroid Build Coastguard Worker __u32 reserved; 1331*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1332*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *resources; 1333*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *allocations; 1334*61046927SAndroid Build Coastguard Worker #else 1335*61046927SAndroid Build Coastguard Worker __u64 resources; 1336*61046927SAndroid Build Coastguard Worker __u64 allocations; 1337*61046927SAndroid Build Coastguard Worker #endif 1338*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 1339*61046927SAndroid Build Coastguard Worker enum d3dkmt_offer_priority priority; 1340*61046927SAndroid Build Coastguard Worker struct d3dkmt_offer_flags flags; 1341*61046927SAndroid Build Coastguard Worker __u32 reserved1; 1342*61046927SAndroid Build Coastguard Worker }; 1343*61046927SAndroid Build Coastguard Worker 1344*61046927SAndroid Build Coastguard Worker enum d3dddi_reclaim_result { 1345*61046927SAndroid Build Coastguard Worker _D3DDDI_RECLAIM_RESULT_OK = 0, 1346*61046927SAndroid Build Coastguard Worker _D3DDDI_RECLAIM_RESULT_DISCARDED = 1, 1347*61046927SAndroid Build Coastguard Worker _D3DDDI_RECLAIM_RESULT_NOT_COMMITTED = 2, 1348*61046927SAndroid Build Coastguard Worker }; 1349*61046927SAndroid Build Coastguard Worker 1350*61046927SAndroid Build Coastguard Worker struct d3dkmt_reclaimallocations2 { 1351*61046927SAndroid Build Coastguard Worker struct d3dkmthandle paging_queue; 1352*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 1353*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1354*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *resources; 1355*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *allocations; 1356*61046927SAndroid Build Coastguard Worker #else 1357*61046927SAndroid Build Coastguard Worker __u64 resources; 1358*61046927SAndroid Build Coastguard Worker __u64 allocations; 1359*61046927SAndroid Build Coastguard Worker #endif 1360*61046927SAndroid Build Coastguard Worker union { 1361*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1362*61046927SAndroid Build Coastguard Worker __u32 *discarded; 1363*61046927SAndroid Build Coastguard Worker enum d3dddi_reclaim_result *results; 1364*61046927SAndroid Build Coastguard Worker #else 1365*61046927SAndroid Build Coastguard Worker __u64 discarded; 1366*61046927SAndroid Build Coastguard Worker __u64 results; 1367*61046927SAndroid Build Coastguard Worker #endif 1368*61046927SAndroid Build Coastguard Worker }; 1369*61046927SAndroid Build Coastguard Worker __u64 paging_fence_value; 1370*61046927SAndroid Build Coastguard Worker }; 1371*61046927SAndroid Build Coastguard Worker 1372*61046927SAndroid Build Coastguard Worker struct d3dkmt_changevideomemoryreservation { 1373*61046927SAndroid Build Coastguard Worker __u64 process; 1374*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1375*61046927SAndroid Build Coastguard Worker enum d3dkmt_memory_segment_group memory_segment_group; 1376*61046927SAndroid Build Coastguard Worker __u64 reservation; 1377*61046927SAndroid Build Coastguard Worker __u32 physical_adapter_index; 1378*61046927SAndroid Build Coastguard Worker }; 1379*61046927SAndroid Build Coastguard Worker 1380*61046927SAndroid Build Coastguard Worker struct d3dkmt_createhwqueue { 1381*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 1382*61046927SAndroid Build Coastguard Worker struct d3dddi_createhwqueueflags flags; 1383*61046927SAndroid Build Coastguard Worker __u32 priv_drv_data_size; 1384*61046927SAndroid Build Coastguard Worker __u32 reserved; 1385*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1386*61046927SAndroid Build Coastguard Worker void *priv_drv_data; 1387*61046927SAndroid Build Coastguard Worker #else 1388*61046927SAndroid Build Coastguard Worker __u64 priv_drv_data; 1389*61046927SAndroid Build Coastguard Worker #endif 1390*61046927SAndroid Build Coastguard Worker struct d3dkmthandle queue; 1391*61046927SAndroid Build Coastguard Worker struct d3dkmthandle queue_progress_fence; 1392*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1393*61046927SAndroid Build Coastguard Worker void *queue_progress_fence_cpu_va; 1394*61046927SAndroid Build Coastguard Worker #else 1395*61046927SAndroid Build Coastguard Worker __u64 queue_progress_fence_cpu_va; 1396*61046927SAndroid Build Coastguard Worker #endif 1397*61046927SAndroid Build Coastguard Worker __u64 queue_progress_fence_gpu_va; 1398*61046927SAndroid Build Coastguard Worker }; 1399*61046927SAndroid Build Coastguard Worker 1400*61046927SAndroid Build Coastguard Worker struct d3dkmt_destroyhwqueue { 1401*61046927SAndroid Build Coastguard Worker struct d3dkmthandle queue; 1402*61046927SAndroid Build Coastguard Worker }; 1403*61046927SAndroid Build Coastguard Worker 1404*61046927SAndroid Build Coastguard Worker struct d3dkmt_submitwaitforsyncobjectstohwqueue { 1405*61046927SAndroid Build Coastguard Worker struct d3dkmthandle hwqueue; 1406*61046927SAndroid Build Coastguard Worker __u32 object_count; 1407*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1408*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 1409*61046927SAndroid Build Coastguard Worker __u64 *fence_values; 1410*61046927SAndroid Build Coastguard Worker #else 1411*61046927SAndroid Build Coastguard Worker __u64 objects; 1412*61046927SAndroid Build Coastguard Worker __u64 fence_values; 1413*61046927SAndroid Build Coastguard Worker #endif 1414*61046927SAndroid Build Coastguard Worker }; 1415*61046927SAndroid Build Coastguard Worker 1416*61046927SAndroid Build Coastguard Worker struct d3dkmt_submitsignalsyncobjectstohwqueue { 1417*61046927SAndroid Build Coastguard Worker struct d3dddicb_signalflags flags; 1418*61046927SAndroid Build Coastguard Worker __u32 hwqueue_count; 1419*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1420*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *hwqueues; 1421*61046927SAndroid Build Coastguard Worker #else 1422*61046927SAndroid Build Coastguard Worker __u64 hwqueues; 1423*61046927SAndroid Build Coastguard Worker #endif 1424*61046927SAndroid Build Coastguard Worker __u32 object_count; 1425*61046927SAndroid Build Coastguard Worker __u32 reserved; 1426*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1427*61046927SAndroid Build Coastguard Worker struct d3dkmthandle *objects; 1428*61046927SAndroid Build Coastguard Worker __u64 *fence_values; 1429*61046927SAndroid Build Coastguard Worker #else 1430*61046927SAndroid Build Coastguard Worker __u64 objects; 1431*61046927SAndroid Build Coastguard Worker __u64 fence_values; 1432*61046927SAndroid Build Coastguard Worker #endif 1433*61046927SAndroid Build Coastguard Worker }; 1434*61046927SAndroid Build Coastguard Worker 1435*61046927SAndroid Build Coastguard Worker struct d3dkmt_opensyncobjectfromnthandle2 { 1436*61046927SAndroid Build Coastguard Worker __u64 nt_handle; 1437*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1438*61046927SAndroid Build Coastguard Worker struct d3dddi_synchronizationobject_flags flags; 1439*61046927SAndroid Build Coastguard Worker struct d3dkmthandle sync_object; 1440*61046927SAndroid Build Coastguard Worker __u32 reserved1; 1441*61046927SAndroid Build Coastguard Worker union { 1442*61046927SAndroid Build Coastguard Worker struct { 1443*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1444*61046927SAndroid Build Coastguard Worker void *fence_value_cpu_va; 1445*61046927SAndroid Build Coastguard Worker #else 1446*61046927SAndroid Build Coastguard Worker __u64 fence_value_cpu_va; 1447*61046927SAndroid Build Coastguard Worker #endif 1448*61046927SAndroid Build Coastguard Worker __u64 fence_value_gpu_va; 1449*61046927SAndroid Build Coastguard Worker __u32 engine_affinity; 1450*61046927SAndroid Build Coastguard Worker } monitored_fence; 1451*61046927SAndroid Build Coastguard Worker __u64 reserved[8]; 1452*61046927SAndroid Build Coastguard Worker }; 1453*61046927SAndroid Build Coastguard Worker }; 1454*61046927SAndroid Build Coastguard Worker 1455*61046927SAndroid Build Coastguard Worker struct d3dkmt_openresourcefromnthandle { 1456*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1457*61046927SAndroid Build Coastguard Worker __u32 reserved; 1458*61046927SAndroid Build Coastguard Worker __u64 nt_handle; 1459*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 1460*61046927SAndroid Build Coastguard Worker __u32 reserved1; 1461*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1462*61046927SAndroid Build Coastguard Worker struct d3dddi_openallocationinfo2 *open_alloc_info; 1463*61046927SAndroid Build Coastguard Worker #else 1464*61046927SAndroid Build Coastguard Worker __u64 open_alloc_info; 1465*61046927SAndroid Build Coastguard Worker #endif 1466*61046927SAndroid Build Coastguard Worker int private_runtime_data_size; 1467*61046927SAndroid Build Coastguard Worker __u32 reserved2; 1468*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1469*61046927SAndroid Build Coastguard Worker void *private_runtime_data; 1470*61046927SAndroid Build Coastguard Worker #else 1471*61046927SAndroid Build Coastguard Worker __u64 private_runtime_data; 1472*61046927SAndroid Build Coastguard Worker #endif 1473*61046927SAndroid Build Coastguard Worker __u32 resource_priv_drv_data_size; 1474*61046927SAndroid Build Coastguard Worker __u32 reserved3; 1475*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1476*61046927SAndroid Build Coastguard Worker void *resource_priv_drv_data; 1477*61046927SAndroid Build Coastguard Worker #else 1478*61046927SAndroid Build Coastguard Worker __u64 resource_priv_drv_data; 1479*61046927SAndroid Build Coastguard Worker #endif 1480*61046927SAndroid Build Coastguard Worker __u32 total_priv_drv_data_size; 1481*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1482*61046927SAndroid Build Coastguard Worker void *total_priv_drv_data; 1483*61046927SAndroid Build Coastguard Worker #else 1484*61046927SAndroid Build Coastguard Worker __u64 total_priv_drv_data; 1485*61046927SAndroid Build Coastguard Worker #endif 1486*61046927SAndroid Build Coastguard Worker struct d3dkmthandle resource; 1487*61046927SAndroid Build Coastguard Worker struct d3dkmthandle keyed_mutex; 1488*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1489*61046927SAndroid Build Coastguard Worker void *keyed_mutex_private_data; 1490*61046927SAndroid Build Coastguard Worker #else 1491*61046927SAndroid Build Coastguard Worker __u64 keyed_mutex_private_data; 1492*61046927SAndroid Build Coastguard Worker #endif 1493*61046927SAndroid Build Coastguard Worker __u32 keyed_mutex_private_data_size; 1494*61046927SAndroid Build Coastguard Worker struct d3dkmthandle sync_object; 1495*61046927SAndroid Build Coastguard Worker }; 1496*61046927SAndroid Build Coastguard Worker 1497*61046927SAndroid Build Coastguard Worker struct d3dkmt_queryresourceinfofromnthandle { 1498*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1499*61046927SAndroid Build Coastguard Worker __u32 reserved; 1500*61046927SAndroid Build Coastguard Worker __u64 nt_handle; 1501*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1502*61046927SAndroid Build Coastguard Worker void *private_runtime_data; 1503*61046927SAndroid Build Coastguard Worker #else 1504*61046927SAndroid Build Coastguard Worker __u64 private_runtime_data; 1505*61046927SAndroid Build Coastguard Worker #endif 1506*61046927SAndroid Build Coastguard Worker __u32 private_runtime_data_size; 1507*61046927SAndroid Build Coastguard Worker __u32 total_priv_drv_data_size; 1508*61046927SAndroid Build Coastguard Worker __u32 resource_priv_drv_data_size; 1509*61046927SAndroid Build Coastguard Worker __u32 allocation_count; 1510*61046927SAndroid Build Coastguard Worker }; 1511*61046927SAndroid Build Coastguard Worker 1512*61046927SAndroid Build Coastguard Worker struct d3dkmt_shareobjects { 1513*61046927SAndroid Build Coastguard Worker __u32 object_count; 1514*61046927SAndroid Build Coastguard Worker __u32 reserved; 1515*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1516*61046927SAndroid Build Coastguard Worker const struct d3dkmthandle *objects; 1517*61046927SAndroid Build Coastguard Worker void *object_attr; /* security attributes */ 1518*61046927SAndroid Build Coastguard Worker #else 1519*61046927SAndroid Build Coastguard Worker __u64 objects; 1520*61046927SAndroid Build Coastguard Worker __u64 object_attr; 1521*61046927SAndroid Build Coastguard Worker #endif 1522*61046927SAndroid Build Coastguard Worker __u32 desired_access; 1523*61046927SAndroid Build Coastguard Worker __u32 reserved1; 1524*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1525*61046927SAndroid Build Coastguard Worker __u64 *shared_handle; /* output file descriptors */ 1526*61046927SAndroid Build Coastguard Worker #else 1527*61046927SAndroid Build Coastguard Worker __u64 shared_handle; 1528*61046927SAndroid Build Coastguard Worker #endif 1529*61046927SAndroid Build Coastguard Worker }; 1530*61046927SAndroid Build Coastguard Worker 1531*61046927SAndroid Build Coastguard Worker union d3dkmt_enumadapters_filter { 1532*61046927SAndroid Build Coastguard Worker struct { 1533*61046927SAndroid Build Coastguard Worker __u64 include_compute_only:1; 1534*61046927SAndroid Build Coastguard Worker __u64 include_display_only:1; 1535*61046927SAndroid Build Coastguard Worker __u64 reserved:62; 1536*61046927SAndroid Build Coastguard Worker }; 1537*61046927SAndroid Build Coastguard Worker __u64 value; 1538*61046927SAndroid Build Coastguard Worker }; 1539*61046927SAndroid Build Coastguard Worker 1540*61046927SAndroid Build Coastguard Worker struct d3dkmt_enumadapters3 { 1541*61046927SAndroid Build Coastguard Worker union d3dkmt_enumadapters_filter filter; 1542*61046927SAndroid Build Coastguard Worker __u32 adapter_count; 1543*61046927SAndroid Build Coastguard Worker __u32 reserved; 1544*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1545*61046927SAndroid Build Coastguard Worker struct d3dkmt_adapterinfo *adapters; 1546*61046927SAndroid Build Coastguard Worker #else 1547*61046927SAndroid Build Coastguard Worker __u64 adapters; 1548*61046927SAndroid Build Coastguard Worker #endif 1549*61046927SAndroid Build Coastguard Worker }; 1550*61046927SAndroid Build Coastguard Worker 1551*61046927SAndroid Build Coastguard Worker enum d3dkmt_querystatistics_type { 1552*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_ADAPTER = 0, 1553*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PROCESS = 1, 1554*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER = 2, 1555*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_SEGMENT = 3, 1556*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT = 4, 1557*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_NODE = 5, 1558*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PROCESS_NODE = 6, 1559*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_VIDPNSOURCE = 7, 1560*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE = 8, 1561*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP = 9, 1562*61046927SAndroid Build Coastguard Worker _D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER = 10, 1563*61046927SAndroid Build Coastguard Worker }; 1564*61046927SAndroid Build Coastguard Worker 1565*61046927SAndroid Build Coastguard Worker struct d3dkmt_querystatistics_result { 1566*61046927SAndroid Build Coastguard Worker char size[0x308]; 1567*61046927SAndroid Build Coastguard Worker }; 1568*61046927SAndroid Build Coastguard Worker 1569*61046927SAndroid Build Coastguard Worker struct d3dkmt_querystatistics { 1570*61046927SAndroid Build Coastguard Worker union { 1571*61046927SAndroid Build Coastguard Worker struct { 1572*61046927SAndroid Build Coastguard Worker enum d3dkmt_querystatistics_type type; 1573*61046927SAndroid Build Coastguard Worker struct winluid adapter_luid; 1574*61046927SAndroid Build Coastguard Worker __u64 process; 1575*61046927SAndroid Build Coastguard Worker struct d3dkmt_querystatistics_result result; 1576*61046927SAndroid Build Coastguard Worker }; 1577*61046927SAndroid Build Coastguard Worker char size[0x328]; 1578*61046927SAndroid Build Coastguard Worker }; 1579*61046927SAndroid Build Coastguard Worker }; 1580*61046927SAndroid Build Coastguard Worker 1581*61046927SAndroid Build Coastguard Worker struct d3dkmt_shareobjectwithhost { 1582*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device_handle; 1583*61046927SAndroid Build Coastguard Worker struct d3dkmthandle object_handle; 1584*61046927SAndroid Build Coastguard Worker __u64 reserved; 1585*61046927SAndroid Build Coastguard Worker __u64 object_vail_nt_handle; 1586*61046927SAndroid Build Coastguard Worker }; 1587*61046927SAndroid Build Coastguard Worker 1588*61046927SAndroid Build Coastguard Worker struct d3dkmt_createsyncfile { 1589*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1590*61046927SAndroid Build Coastguard Worker struct d3dkmthandle monitored_fence; 1591*61046927SAndroid Build Coastguard Worker __u64 fence_value; 1592*61046927SAndroid Build Coastguard Worker __u64 sync_file_handle; /* out */ 1593*61046927SAndroid Build Coastguard Worker }; 1594*61046927SAndroid Build Coastguard Worker 1595*61046927SAndroid Build Coastguard Worker struct d3dkmt_waitsyncfile { 1596*61046927SAndroid Build Coastguard Worker __u64 sync_file_handle; 1597*61046927SAndroid Build Coastguard Worker struct d3dkmthandle context; 1598*61046927SAndroid Build Coastguard Worker __u32 reserved; 1599*61046927SAndroid Build Coastguard Worker }; 1600*61046927SAndroid Build Coastguard Worker 1601*61046927SAndroid Build Coastguard Worker struct d3dkmt_opensyncobjectfromsyncfile { 1602*61046927SAndroid Build Coastguard Worker __u64 sync_file_handle; 1603*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1604*61046927SAndroid Build Coastguard Worker struct d3dkmthandle syncobj; /* out */ 1605*61046927SAndroid Build Coastguard Worker __u64 fence_value; /* out */ 1606*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1607*61046927SAndroid Build Coastguard Worker void *fence_value_cpu_va; /* out */ 1608*61046927SAndroid Build Coastguard Worker #else 1609*61046927SAndroid Build Coastguard Worker __u64 fence_value_cpu_va; /* out */ 1610*61046927SAndroid Build Coastguard Worker #endif 1611*61046927SAndroid Build Coastguard Worker __u64 fence_value_gpu_va; /* out */ 1612*61046927SAndroid Build Coastguard Worker }; 1613*61046927SAndroid Build Coastguard Worker 1614*61046927SAndroid Build Coastguard Worker struct d3dkmt_enumprocesses { 1615*61046927SAndroid Build Coastguard Worker struct winluid adapter_luid; 1616*61046927SAndroid Build Coastguard Worker #ifdef __KERNEL__ 1617*61046927SAndroid Build Coastguard Worker __u32 *buffer; 1618*61046927SAndroid Build Coastguard Worker #else 1619*61046927SAndroid Build Coastguard Worker __u64 buffer; 1620*61046927SAndroid Build Coastguard Worker #endif 1621*61046927SAndroid Build Coastguard Worker __u64 buffer_count; 1622*61046927SAndroid Build Coastguard Worker }; 1623*61046927SAndroid Build Coastguard Worker 1624*61046927SAndroid Build Coastguard Worker enum dxgk_feature_id { 1625*61046927SAndroid Build Coastguard Worker _DXGK_FEATURE_HWSCH = 0, 1626*61046927SAndroid Build Coastguard Worker _DXGK_FEATURE_PAGE_BASED_MEMORY_MANAGER = 32, 1627*61046927SAndroid Build Coastguard Worker _DXGK_FEATURE_KERNEL_MODE_TESTING = 33, 1628*61046927SAndroid Build Coastguard Worker _DXGK_FEATURE_MAX 1629*61046927SAndroid Build Coastguard Worker }; 1630*61046927SAndroid Build Coastguard Worker 1631*61046927SAndroid Build Coastguard Worker struct dxgk_isfeatureenabled_result { 1632*61046927SAndroid Build Coastguard Worker __u16 version; 1633*61046927SAndroid Build Coastguard Worker union { 1634*61046927SAndroid Build Coastguard Worker struct { 1635*61046927SAndroid Build Coastguard Worker __u16 enabled : 1; 1636*61046927SAndroid Build Coastguard Worker __u16 known_feature : 1; 1637*61046927SAndroid Build Coastguard Worker __u16 supported_by_driver : 1; 1638*61046927SAndroid Build Coastguard Worker __u16 supported_on_config : 1; 1639*61046927SAndroid Build Coastguard Worker __u16 reserved : 12; 1640*61046927SAndroid Build Coastguard Worker }; 1641*61046927SAndroid Build Coastguard Worker __u16 value; 1642*61046927SAndroid Build Coastguard Worker }; 1643*61046927SAndroid Build Coastguard Worker }; 1644*61046927SAndroid Build Coastguard Worker 1645*61046927SAndroid Build Coastguard Worker struct d3dkmt_isfeatureenabled { 1646*61046927SAndroid Build Coastguard Worker struct d3dkmthandle adapter; 1647*61046927SAndroid Build Coastguard Worker enum dxgk_feature_id feature_id; 1648*61046927SAndroid Build Coastguard Worker struct dxgk_isfeatureenabled_result result; 1649*61046927SAndroid Build Coastguard Worker }; 1650*61046927SAndroid Build Coastguard Worker 1651*61046927SAndroid Build Coastguard Worker struct d3dkmt_invalidatecache { 1652*61046927SAndroid Build Coastguard Worker struct d3dkmthandle device; 1653*61046927SAndroid Build Coastguard Worker struct d3dkmthandle allocation; 1654*61046927SAndroid Build Coastguard Worker __u64 offset; 1655*61046927SAndroid Build Coastguard Worker __u64 length; 1656*61046927SAndroid Build Coastguard Worker }; 1657*61046927SAndroid Build Coastguard Worker 1658*61046927SAndroid Build Coastguard Worker /* 1659*61046927SAndroid Build Coastguard Worker * Dxgkrnl Graphics Port Driver ioctl definitions 1660*61046927SAndroid Build Coastguard Worker * 1661*61046927SAndroid Build Coastguard Worker */ 1662*61046927SAndroid Build Coastguard Worker 1663*61046927SAndroid Build Coastguard Worker #define LX_DXOPENADAPTERFROMLUID \ 1664*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x01, struct d3dkmt_openadapterfromluid) 1665*61046927SAndroid Build Coastguard Worker #define LX_DXCREATEDEVICE \ 1666*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x02, struct d3dkmt_createdevice) 1667*61046927SAndroid Build Coastguard Worker #define LX_DXCREATECONTEXTVIRTUAL \ 1668*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x04, struct d3dkmt_createcontextvirtual) 1669*61046927SAndroid Build Coastguard Worker #define LX_DXDESTROYCONTEXT \ 1670*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x05, struct d3dkmt_destroycontext) 1671*61046927SAndroid Build Coastguard Worker #define LX_DXCREATEALLOCATION \ 1672*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x06, struct d3dkmt_createallocation) 1673*61046927SAndroid Build Coastguard Worker #define LX_DXCREATEPAGINGQUEUE \ 1674*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x07, struct d3dkmt_createpagingqueue) 1675*61046927SAndroid Build Coastguard Worker #define LX_DXRESERVEGPUVIRTUALADDRESS \ 1676*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x08, struct d3dddi_reservegpuvirtualaddress) 1677*61046927SAndroid Build Coastguard Worker #define LX_DXQUERYADAPTERINFO \ 1678*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x09, struct d3dkmt_queryadapterinfo) 1679*61046927SAndroid Build Coastguard Worker #define LX_DXQUERYVIDEOMEMORYINFO \ 1680*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x0a, struct d3dkmt_queryvideomemoryinfo) 1681*61046927SAndroid Build Coastguard Worker #define LX_DXMAKERESIDENT \ 1682*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x0b, struct d3dddi_makeresident) 1683*61046927SAndroid Build Coastguard Worker #define LX_DXMAPGPUVIRTUALADDRESS \ 1684*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x0c, struct d3dddi_mapgpuvirtualaddress) 1685*61046927SAndroid Build Coastguard Worker #define LX_DXESCAPE \ 1686*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x0d, struct d3dkmt_escape) 1687*61046927SAndroid Build Coastguard Worker #define LX_DXGETDEVICESTATE \ 1688*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x0e, struct d3dkmt_getdevicestate) 1689*61046927SAndroid Build Coastguard Worker #define LX_DXSUBMITCOMMAND \ 1690*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x0f, struct d3dkmt_submitcommand) 1691*61046927SAndroid Build Coastguard Worker #define LX_DXCREATESYNCHRONIZATIONOBJECT \ 1692*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x10, struct d3dkmt_createsynchronizationobject2) 1693*61046927SAndroid Build Coastguard Worker #define LX_DXSIGNALSYNCHRONIZATIONOBJECT \ 1694*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x11, struct d3dkmt_signalsynchronizationobject2) 1695*61046927SAndroid Build Coastguard Worker #define LX_DXWAITFORSYNCHRONIZATIONOBJECT \ 1696*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x12, struct d3dkmt_waitforsynchronizationobject2) 1697*61046927SAndroid Build Coastguard Worker #define LX_DXDESTROYALLOCATION2 \ 1698*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x13, struct d3dkmt_destroyallocation2) 1699*61046927SAndroid Build Coastguard Worker #define LX_DXENUMADAPTERS2 \ 1700*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x14, struct d3dkmt_enumadapters2) 1701*61046927SAndroid Build Coastguard Worker #define LX_DXCLOSEADAPTER \ 1702*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x15, struct d3dkmt_closeadapter) 1703*61046927SAndroid Build Coastguard Worker #define LX_DXCHANGEVIDEOMEMORYRESERVATION \ 1704*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x16, struct d3dkmt_changevideomemoryreservation) 1705*61046927SAndroid Build Coastguard Worker #define LX_DXCREATEHWQUEUE \ 1706*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x18, struct d3dkmt_createhwqueue) 1707*61046927SAndroid Build Coastguard Worker #define LX_DXDESTROYHWQUEUE \ 1708*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x1b, struct d3dkmt_destroyhwqueue) 1709*61046927SAndroid Build Coastguard Worker #define LX_DXDESTROYPAGINGQUEUE \ 1710*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x1c, struct d3dddi_destroypagingqueue) 1711*61046927SAndroid Build Coastguard Worker #define LX_DXDESTROYDEVICE \ 1712*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x19, struct d3dkmt_destroydevice) 1713*61046927SAndroid Build Coastguard Worker #define LX_DXDESTROYSYNCHRONIZATIONOBJECT \ 1714*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x1d, struct d3dkmt_destroysynchronizationobject) 1715*61046927SAndroid Build Coastguard Worker #define LX_DXEVICT \ 1716*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x1e, struct d3dkmt_evict) 1717*61046927SAndroid Build Coastguard Worker #define LX_DXFLUSHHEAPTRANSITIONS \ 1718*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x1f, struct d3dkmt_flushheaptransitions) 1719*61046927SAndroid Build Coastguard Worker #define LX_DXFREEGPUVIRTUALADDRESS \ 1720*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x20, struct d3dkmt_freegpuvirtualaddress) 1721*61046927SAndroid Build Coastguard Worker #define LX_DXGETCONTEXTINPROCESSSCHEDULINGPRIORITY \ 1722*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x21, struct d3dkmt_getcontextinprocessschedulingpriority) 1723*61046927SAndroid Build Coastguard Worker #define LX_DXGETCONTEXTSCHEDULINGPRIORITY \ 1724*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x22, struct d3dkmt_getcontextschedulingpriority) 1725*61046927SAndroid Build Coastguard Worker #define LX_DXINVALIDATECACHE \ 1726*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x24, struct d3dkmt_invalidatecache) 1727*61046927SAndroid Build Coastguard Worker #define LX_DXLOCK2 \ 1728*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x25, struct d3dkmt_lock2) 1729*61046927SAndroid Build Coastguard Worker #define LX_DXMARKDEVICEASERROR \ 1730*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x26, struct d3dkmt_markdeviceaserror) 1731*61046927SAndroid Build Coastguard Worker #define LX_DXOFFERALLOCATIONS \ 1732*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x27, struct d3dkmt_offerallocations) 1733*61046927SAndroid Build Coastguard Worker #define LX_DXQUERYALLOCATIONRESIDENCY \ 1734*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x2a, struct d3dkmt_queryallocationresidency) 1735*61046927SAndroid Build Coastguard Worker #define LX_DXRECLAIMALLOCATIONS2 \ 1736*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x2c, struct d3dkmt_reclaimallocations2) 1737*61046927SAndroid Build Coastguard Worker #define LX_DXSETALLOCATIONPRIORITY \ 1738*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x2e, struct d3dkmt_setallocationpriority) 1739*61046927SAndroid Build Coastguard Worker #define LX_DXSETCONTEXTINPROCESSSCHEDULINGPRIORITY \ 1740*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x2f, struct d3dkmt_setcontextinprocessschedulingpriority) 1741*61046927SAndroid Build Coastguard Worker #define LX_DXSETCONTEXTSCHEDULINGPRIORITY \ 1742*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x30, struct d3dkmt_setcontextschedulingpriority) 1743*61046927SAndroid Build Coastguard Worker #define LX_DXSIGNALSYNCHRONIZATIONOBJECTFROMCPU \ 1744*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x31, struct d3dkmt_signalsynchronizationobjectfromcpu) 1745*61046927SAndroid Build Coastguard Worker #define LX_DXSIGNALSYNCHRONIZATIONOBJECTFROMGPU \ 1746*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x32, struct d3dkmt_signalsynchronizationobjectfromgpu) 1747*61046927SAndroid Build Coastguard Worker #define LX_DXSIGNALSYNCHRONIZATIONOBJECTFROMGPU2 \ 1748*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x33, struct d3dkmt_signalsynchronizationobjectfromgpu2) 1749*61046927SAndroid Build Coastguard Worker #define LX_DXSUBMITCOMMANDTOHWQUEUE \ 1750*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x34, struct d3dkmt_submitcommandtohwqueue) 1751*61046927SAndroid Build Coastguard Worker #define LX_DXSUBMITSIGNALSYNCOBJECTSTOHWQUEUE \ 1752*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x35, struct d3dkmt_submitsignalsyncobjectstohwqueue) 1753*61046927SAndroid Build Coastguard Worker #define LX_DXSUBMITWAITFORSYNCOBJECTSTOHWQUEUE \ 1754*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x36, struct d3dkmt_submitwaitforsyncobjectstohwqueue) 1755*61046927SAndroid Build Coastguard Worker #define LX_DXUNLOCK2 \ 1756*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x37, struct d3dkmt_unlock2) 1757*61046927SAndroid Build Coastguard Worker #define LX_DXUPDATEALLOCPROPERTY \ 1758*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x38, struct d3dddi_updateallocproperty) 1759*61046927SAndroid Build Coastguard Worker #define LX_DXUPDATEGPUVIRTUALADDRESS \ 1760*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x39, struct d3dkmt_updategpuvirtualaddress) 1761*61046927SAndroid Build Coastguard Worker #define LX_DXWAITFORSYNCHRONIZATIONOBJECTFROMCPU \ 1762*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x3a, struct d3dkmt_waitforsynchronizationobjectfromcpu) 1763*61046927SAndroid Build Coastguard Worker #define LX_DXWAITFORSYNCHRONIZATIONOBJECTFROMGPU \ 1764*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x3b, struct d3dkmt_waitforsynchronizationobjectfromgpu) 1765*61046927SAndroid Build Coastguard Worker #define LX_DXGETALLOCATIONPRIORITY \ 1766*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x3c, struct d3dkmt_getallocationpriority) 1767*61046927SAndroid Build Coastguard Worker #define LX_DXQUERYCLOCKCALIBRATION \ 1768*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x3d, struct d3dkmt_queryclockcalibration) 1769*61046927SAndroid Build Coastguard Worker #define LX_DXENUMADAPTERS3 \ 1770*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x3e, struct d3dkmt_enumadapters3) 1771*61046927SAndroid Build Coastguard Worker #define LX_DXSHAREOBJECTS \ 1772*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x3f, struct d3dkmt_shareobjects) 1773*61046927SAndroid Build Coastguard Worker #define LX_DXOPENSYNCOBJECTFROMNTHANDLE2 \ 1774*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x40, struct d3dkmt_opensyncobjectfromnthandle2) 1775*61046927SAndroid Build Coastguard Worker #define LX_DXQUERYRESOURCEINFOFROMNTHANDLE \ 1776*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x41, struct d3dkmt_queryresourceinfofromnthandle) 1777*61046927SAndroid Build Coastguard Worker #define LX_DXOPENRESOURCEFROMNTHANDLE \ 1778*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x42, struct d3dkmt_openresourcefromnthandle) 1779*61046927SAndroid Build Coastguard Worker #define LX_DXQUERYSTATISTICS \ 1780*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x43, struct d3dkmt_querystatistics) 1781*61046927SAndroid Build Coastguard Worker #define LX_DXSHAREOBJECTWITHHOST \ 1782*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x44, struct d3dkmt_shareobjectwithhost) 1783*61046927SAndroid Build Coastguard Worker #define LX_DXCREATESYNCFILE \ 1784*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x45, struct d3dkmt_createsyncfile) 1785*61046927SAndroid Build Coastguard Worker #define LX_DXWAITSYNCFILE \ 1786*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x46, struct d3dkmt_waitsyncfile) 1787*61046927SAndroid Build Coastguard Worker #define LX_DXOPENSYNCOBJECTFROMSYNCFILE \ 1788*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x47, struct d3dkmt_opensyncobjectfromsyncfile) 1789*61046927SAndroid Build Coastguard Worker #define LX_DXENUMPROCESSES \ 1790*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x48, struct d3dkmt_enumprocesses) 1791*61046927SAndroid Build Coastguard Worker #define LX_ISFEATUREENABLED \ 1792*61046927SAndroid Build Coastguard Worker _IOWR(0x47, 0x49, struct d3dkmt_isfeatureenabled) 1793*61046927SAndroid Build Coastguard Worker 1794*61046927SAndroid Build Coastguard Worker #endif /* _D3DKMTHK_H */ 1795