Skip to content
Snippets Groups Projects
Commit 852c7ba3 authored by Mark Thompson's avatar Mark Thompson
Browse files

hwcontext_vaapi: Improve logging around quirk detection

Clarify that the list is the naughty list, and therefore being on it is
not desirable.  The i965 driver does not need to be on the list after
version 2.0 (when the standard parameter buffer rendering behaviour was
changed).
parent c2e2b04d
No related branches found
No related tags found
No related merge requests found
......@@ -279,11 +279,14 @@ static const struct {
const char *match_string;
unsigned int quirks;
} vaapi_driver_quirks_table[] = {
#if !VA_CHECK_VERSION(1, 0, 0)
// The i965 driver did not conform before version 2.0.
{
"Intel i965 (Quick Sync)",
"i965",
AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS,
},
#endif
{
"Intel iHD",
"ubit",
......@@ -344,29 +347,37 @@ static int vaapi_device_init(AVHWDeviceContext *hwdev)
}
}
vendor_string = vaQueryVendorString(hwctx->display);
if (vendor_string)
av_log(hwdev, AV_LOG_VERBOSE, "VAAPI driver: %s.\n", vendor_string);
if (hwctx->driver_quirks & AV_VAAPI_DRIVER_QUIRK_USER_SET) {
av_log(hwdev, AV_LOG_VERBOSE, "Not detecting driver: "
"quirks set by user.\n");
av_log(hwdev, AV_LOG_VERBOSE, "Using quirks set by user (%#x).\n",
hwctx->driver_quirks);
} else {
// Detect the driver in use and set quirk flags if necessary.
vendor_string = vaQueryVendorString(hwctx->display);
hwctx->driver_quirks = 0;
if (vendor_string) {
for (i = 0; i < FF_ARRAY_ELEMS(vaapi_driver_quirks_table); i++) {
if (strstr(vendor_string,
vaapi_driver_quirks_table[i].match_string)) {
av_log(hwdev, AV_LOG_VERBOSE, "Matched \"%s\" as known "
"driver \"%s\".\n", vendor_string,
vaapi_driver_quirks_table[i].friendly_name);
av_log(hwdev, AV_LOG_VERBOSE, "Matched driver string "
"as known nonstandard driver \"%s\", setting "
"quirks (%#x).\n",
vaapi_driver_quirks_table[i].friendly_name,
vaapi_driver_quirks_table[i].quirks);
hwctx->driver_quirks |=
vaapi_driver_quirks_table[i].quirks;
break;
}
}
if (!(i < FF_ARRAY_ELEMS(vaapi_driver_quirks_table))) {
av_log(hwdev, AV_LOG_VERBOSE, "Unknown driver \"%s\", "
"assuming standard behaviour.\n", vendor_string);
av_log(hwdev, AV_LOG_VERBOSE, "Driver not found in known "
"nonstandard list, using standard behaviour.\n");
}
} else {
av_log(hwdev, AV_LOG_VERBOSE, "Driver has no vendor string, "
"assuming standard behaviour.\n");
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment