|
34 | 34 | * which will be selected when provided with an adapter LUID which
|
35 | 35 | * does not have a registered VA driver
|
36 | 36 | */
|
37 |
| -const char VAAPI_DEFAULT_DRIVER_NAME[] = "vaon12"; |
| 37 | +const char VAAPI_DEFAULT_DRIVER_PATH[] = "vaon12_drv_video.dll"; |
38 | 38 |
|
39 | 39 | typedef struct _VADisplayContextWin32 {
|
40 | 40 | LUID adapter_luid;
|
41 |
| - char registry_driver_name[MAX_PATH]; |
| 41 | + char registry_driver_path[MAX_PATH]; |
42 | 42 | bool registry_driver_available_flag;
|
43 | 43 | } VADisplayContextWin32;
|
44 | 44 |
|
45 |
| -static void LoadDriverNameFromRegistry(VADisplayContextWin32* pWin32Ctx) |
| 45 | +static void LoadDriverPathFromRegistry(VADisplayContextWin32* pWin32Ctx) |
46 | 46 | {
|
47 | 47 | HMODULE hGdi32 = LoadLibraryA("gdi32.dll");
|
48 | 48 | if (!hGdi32)
|
@@ -95,8 +95,8 @@ static void LoadDriverNameFromRegistry(VADisplayContextWin32* pWin32Ctx)
|
95 | 95 |
|
96 | 96 | if (!WideCharToMultiByte(CP_ACP, 0, pRegistryInfo->OutputString,
|
97 | 97 | RegistryInfo.OutputValueSize / sizeof(wchar_t),
|
98 |
| - pWin32Ctx->registry_driver_name, |
99 |
| - sizeof(pWin32Ctx->registry_driver_name), |
| 98 | + pWin32Ctx->registry_driver_path, |
| 99 | + sizeof(pWin32Ctx->registry_driver_path), |
100 | 100 | NULL, NULL))
|
101 | 101 | goto cleanup;
|
102 | 102 |
|
@@ -144,43 +144,29 @@ static VAStatus va_DisplayContextGetNumCandidates(
|
144 | 144 | int *num_candidates
|
145 | 145 | )
|
146 | 146 | {
|
147 |
| - /* Always report the default driver name |
| 147 | + /* Always report the default driver path |
148 | 148 | If available, also add the adapter specific registered driver */
|
149 |
| - LUID* adapter = pDisplayContext->pDriverContext->native_dpy; |
150 | 149 | VADisplayContextWin32* pWin32Ctx = (VADisplayContextWin32*) pDisplayContext->opaque;
|
151 |
| - if (adapter && pWin32Ctx->registry_driver_available_flag) |
152 |
| - *num_candidates = 2; |
153 |
| - else |
154 |
| - *num_candidates = 1; |
155 |
| - |
| 150 | + *num_candidates = pWin32Ctx->registry_driver_available_flag ? 2 : 1; |
156 | 151 | return VA_STATUS_SUCCESS;
|
157 | 152 | }
|
158 | 153 |
|
159 | 154 | static VAStatus va_DisplayContextGetDriverNameByIndex(
|
160 | 155 | VADisplayContextP pDisplayContext,
|
161 |
| - char **driver_name, |
| 156 | + char **driver_absolute_path, |
162 | 157 | int candidate_index
|
163 | 158 | )
|
164 | 159 | {
|
165 |
| - LUID* adapter = pDisplayContext->pDriverContext->native_dpy; |
166 | 160 | VADisplayContextWin32* pWin32Ctx = (VADisplayContextWin32*) pDisplayContext->opaque;
|
167 |
| - if (adapter && pWin32Ctx->registry_driver_available_flag) { |
168 |
| - /* Always prefer the adapter registered driver name as first option */ |
169 |
| - if (candidate_index == 0) { |
170 |
| - *driver_name = calloc(sizeof(pWin32Ctx->registry_driver_name), sizeof(char)); |
171 |
| - memcpy(*driver_name, pWin32Ctx->registry_driver_name, sizeof(pWin32Ctx->registry_driver_name)); |
172 |
| - } |
173 |
| - /* Provide the default driver name as a fallback option */ |
174 |
| - else if (candidate_index == 1) { |
175 |
| - *driver_name = calloc(sizeof(VAAPI_DEFAULT_DRIVER_NAME), sizeof(char)); |
176 |
| - memcpy(*driver_name, VAAPI_DEFAULT_DRIVER_NAME, sizeof(VAAPI_DEFAULT_DRIVER_NAME)); |
177 |
| - } |
178 |
| - } else { |
179 |
| - /* Provide the default driver name as a fallback option */ |
180 |
| - *driver_name = calloc(sizeof(VAAPI_DEFAULT_DRIVER_NAME), sizeof(char)); |
181 |
| - memcpy(*driver_name, VAAPI_DEFAULT_DRIVER_NAME, sizeof(VAAPI_DEFAULT_DRIVER_NAME)); |
| 161 | + /* Always prefer the adapter registered driver path as first option */ |
| 162 | + if (pWin32Ctx->registry_driver_available_flag && (candidate_index == 0)) { |
| 163 | + *driver_absolute_path = calloc(sizeof(pWin32Ctx->registry_driver_path), sizeof(char)); |
| 164 | + memcpy(*driver_absolute_path, pWin32Ctx->registry_driver_path, sizeof(pWin32Ctx->registry_driver_path)); |
| 165 | + return VA_STATUS_SUCCESS; |
182 | 166 | }
|
183 |
| - |
| 167 | + /* Provide the default driver path as a fallback option */ |
| 168 | + *driver_absolute_path = calloc(sizeof(VAAPI_DEFAULT_DRIVER_PATH), sizeof(char)); |
| 169 | + memcpy(*driver_absolute_path, VAAPI_DEFAULT_DRIVER_PATH, sizeof(VAAPI_DEFAULT_DRIVER_PATH)); |
184 | 170 | return VA_STATUS_SUCCESS;
|
185 | 171 | }
|
186 | 172 |
|
@@ -211,12 +197,12 @@ VADisplay vaGetDisplayWin32(
|
211 | 197 | /* Copy LUID information to display context */
|
212 | 198 | memcpy(&pWin32Ctx->adapter_luid, adapter_luid, sizeof(pWin32Ctx->adapter_luid));
|
213 | 199 |
|
214 |
| - /* Load the preferred driver name from the driver registry if available */ |
215 |
| - LoadDriverNameFromRegistry(pWin32Ctx); |
| 200 | + /* Load the preferred driver path from the driver registry if available */ |
| 201 | + LoadDriverPathFromRegistry(pWin32Ctx); |
216 | 202 | if (pWin32Ctx->registry_driver_available_flag) {
|
217 |
| - fprintf(stderr, "VA_Win32: Found driver %s in the registry for LUID %ld %ld \n", pWin32Ctx->registry_driver_name, pWin32Ctx->adapter_luid.LowPart, pWin32Ctx->adapter_luid.HighPart); |
| 203 | + fprintf(stderr, "VA_Win32: Found driver %s in the registry for LUID %ld %ld \n", pWin32Ctx->registry_driver_path, pWin32Ctx->adapter_luid.LowPart, pWin32Ctx->adapter_luid.HighPart); |
218 | 204 | } else {
|
219 |
| - fprintf(stderr, "VA_Win32: Couldn't find a driver in the registry for LUID %ld %ld. Using default driver: %s \n", pWin32Ctx->adapter_luid.LowPart, pWin32Ctx->adapter_luid.HighPart, VAAPI_DEFAULT_DRIVER_NAME); |
| 205 | + fprintf(stderr, "VA_Win32: Couldn't find a driver in the registry for LUID %ld %ld. Using default driver: %s \n", pWin32Ctx->adapter_luid.LowPart, pWin32Ctx->adapter_luid.HighPart, VAAPI_DEFAULT_DRIVER_PATH); |
220 | 206 | }
|
221 | 207 | }
|
222 | 208 |
|
|
0 commit comments