Commit 8fb756df authored by Eric Anholt's avatar Eric Anholt

drm: Trust format_mod_supported() when it OKs a plane modifier.

For parameterized modifiers (Broadcom's SAND and UIF), we need to
allow the parameter fields to be filled in, while exposing only the
variant of the modifier with the parameter unfilled in the internal
arrays and the format blob.
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-1-eric@anholt.netReviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
parent a38189c5
...@@ -561,19 +561,20 @@ int drm_plane_check_pixel_format(struct drm_plane *plane, ...@@ -561,19 +561,20 @@ int drm_plane_check_pixel_format(struct drm_plane *plane,
if (i == plane->format_count) if (i == plane->format_count)
return -EINVAL; return -EINVAL;
if (!plane->modifier_count) if (plane->funcs->format_mod_supported) {
return 0; if (!plane->funcs->format_mod_supported(plane, format, modifier))
return -EINVAL;
} else {
if (!plane->modifier_count)
return 0;
for (i = 0; i < plane->modifier_count; i++) { for (i = 0; i < plane->modifier_count; i++) {
if (modifier == plane->modifiers[i]) if (modifier == plane->modifiers[i])
break; break;
}
if (i == plane->modifier_count)
return -EINVAL;
} }
if (i == plane->modifier_count)
return -EINVAL;
if (plane->funcs->format_mod_supported &&
!plane->funcs->format_mod_supported(plane, format, modifier))
return -EINVAL;
return 0; return 0;
} }
......
...@@ -431,7 +431,10 @@ struct drm_plane_funcs { ...@@ -431,7 +431,10 @@ struct drm_plane_funcs {
* This optional hook is used for the DRM to determine if the given * This optional hook is used for the DRM to determine if the given
* format/modifier combination is valid for the plane. This allows the * format/modifier combination is valid for the plane. This allows the
* DRM to generate the correct format bitmask (which formats apply to * DRM to generate the correct format bitmask (which formats apply to
* which modifier). * which modifier), and to valdiate modifiers at atomic_check time.
*
* If not present, then any modifier in the plane's modifier
* list is allowed with any of the plane's formats.
* *
* Returns: * Returns:
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment