vaapioverlay: use vpp blend state iif using alpha

Don't set VAAPI vpp blend flags if alpha == 1.0,
i.e. fully opaque.  This can avoid extra processing
overhead on some drivers that apply blending
unconditionally when flags are present, even if the
end result is the same without blend flags (i.e. all
opaque alpha channels).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1380>
This commit is contained in:
U. Artie Eoff 2021-11-19 14:46:34 -08:00
parent 04b8dfa391
commit 48b6404f8e

View file

@ -275,9 +275,11 @@ gst_vaapi_blend_process_unlocked (GstVaapiBlend * blend,
param->output_background_color = 0xff000000;
#if VA_CHECK_VERSION(1,1,0)
blend_state.flags = VA_BLEND_GLOBAL_ALPHA;
blend_state.global_alpha = current->alpha;
param->blend_state = &blend_state;
if (current->alpha < 1.0) {
blend_state.flags = VA_BLEND_GLOBAL_ALPHA;
blend_state.global_alpha = current->alpha;
param->blend_state = &blend_state;
}
#endif
vaapi_unmap_buffer (va_display, id, NULL);