xref: /aosp_15_r20/external/OpenCL-ICD-Loader/loader/windows/adapter.h (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1*1cddb830SAndroid Build Coastguard Worker /*
2*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2019 The Khronos Group Inc.
3*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2019 Valve Corporation
4*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2019 LunarG, Inc.
5*1cddb830SAndroid Build Coastguard Worker *
6*1cddb830SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
7*1cddb830SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
8*1cddb830SAndroid Build Coastguard Worker * You may obtain a copy of the License at
9*1cddb830SAndroid Build Coastguard Worker *
10*1cddb830SAndroid Build Coastguard Worker *     http://www.apache.org/licenses/LICENSE-2.0
11*1cddb830SAndroid Build Coastguard Worker *
12*1cddb830SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
13*1cddb830SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
14*1cddb830SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*1cddb830SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
16*1cddb830SAndroid Build Coastguard Worker * limitations under the License.
17*1cddb830SAndroid Build Coastguard Worker *
18*1cddb830SAndroid Build Coastguard Worker * Author: Lenny Komow <[email protected]>
19*1cddb830SAndroid Build Coastguard Worker */
20*1cddb830SAndroid Build Coastguard Worker 
21*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderEnumAdapters2 {
22*1cddb830SAndroid Build Coastguard Worker     ULONG adapter_count;
23*1cddb830SAndroid Build Coastguard Worker     struct {
24*1cddb830SAndroid Build Coastguard Worker         UINT handle;
25*1cddb830SAndroid Build Coastguard Worker         LUID luid;
26*1cddb830SAndroid Build Coastguard Worker         ULONG source_count;
27*1cddb830SAndroid Build Coastguard Worker         BOOL present_move_regions_preferred;
28*1cddb830SAndroid Build Coastguard Worker     } * adapters;
29*1cddb830SAndroid Build Coastguard Worker } LoaderEnumAdapters2;
30*1cddb830SAndroid Build Coastguard Worker 
31*1cddb830SAndroid Build Coastguard Worker typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderEnumAdapters2)(const LoaderEnumAdapters2 *);
32*1cddb830SAndroid Build Coastguard Worker 
33*1cddb830SAndroid Build Coastguard Worker typedef enum AdapterInfoType {
34*1cddb830SAndroid Build Coastguard Worker     LOADER_QUERY_TYPE_REGISTRY = 48,
35*1cddb830SAndroid Build Coastguard Worker } AdapterInfoType;
36*1cddb830SAndroid Build Coastguard Worker 
37*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderQueryAdapterInfo {
38*1cddb830SAndroid Build Coastguard Worker     UINT handle;
39*1cddb830SAndroid Build Coastguard Worker     AdapterInfoType type;
40*1cddb830SAndroid Build Coastguard Worker     VOID *private_data;
41*1cddb830SAndroid Build Coastguard Worker     UINT private_data_size;
42*1cddb830SAndroid Build Coastguard Worker } LoaderQueryAdapterInfo;
43*1cddb830SAndroid Build Coastguard Worker 
44*1cddb830SAndroid Build Coastguard Worker typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderQueryAdapterInfo)(const LoaderQueryAdapterInfo *);
45*1cddb830SAndroid Build Coastguard Worker 
46*1cddb830SAndroid Build Coastguard Worker typedef enum LoaderQueryRegistryType {
47*1cddb830SAndroid Build Coastguard Worker     LOADER_QUERY_REGISTRY_ADAPTER_KEY = 1,
48*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryType;
49*1cddb830SAndroid Build Coastguard Worker 
50*1cddb830SAndroid Build Coastguard Worker typedef enum LoaderQueryRegistryStatus {
51*1cddb830SAndroid Build Coastguard Worker     LOADER_QUERY_REGISTRY_STATUS_SUCCESS = 0,
52*1cddb830SAndroid Build Coastguard Worker     LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW = 1,
53*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryStatus;
54*1cddb830SAndroid Build Coastguard Worker 
55*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderQueryRegistryFlags {
56*1cddb830SAndroid Build Coastguard Worker     union {
57*1cddb830SAndroid Build Coastguard Worker         struct {
58*1cddb830SAndroid Build Coastguard Worker             UINT translate_path : 1;
59*1cddb830SAndroid Build Coastguard Worker             UINT mutable_value : 1;
60*1cddb830SAndroid Build Coastguard Worker             UINT reserved : 30;
61*1cddb830SAndroid Build Coastguard Worker         };
62*1cddb830SAndroid Build Coastguard Worker         UINT value;
63*1cddb830SAndroid Build Coastguard Worker     };
64*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryFlags;
65*1cddb830SAndroid Build Coastguard Worker 
66*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderQueryRegistryInfo {
67*1cddb830SAndroid Build Coastguard Worker     LoaderQueryRegistryType query_type;
68*1cddb830SAndroid Build Coastguard Worker     LoaderQueryRegistryFlags query_flags;
69*1cddb830SAndroid Build Coastguard Worker     WCHAR value_name[MAX_PATH];
70*1cddb830SAndroid Build Coastguard Worker     ULONG value_type;
71*1cddb830SAndroid Build Coastguard Worker     ULONG physical_adapter_index;
72*1cddb830SAndroid Build Coastguard Worker     ULONG output_value_size;
73*1cddb830SAndroid Build Coastguard Worker     LoaderQueryRegistryStatus status;
74*1cddb830SAndroid Build Coastguard Worker     union {
75*1cddb830SAndroid Build Coastguard Worker         DWORD output_dword;
76*1cddb830SAndroid Build Coastguard Worker         UINT64 output_qword;
77*1cddb830SAndroid Build Coastguard Worker         WCHAR output_string[1];
78*1cddb830SAndroid Build Coastguard Worker         BYTE output_binary[1];
79*1cddb830SAndroid Build Coastguard Worker     };
80*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryInfo;
81