If the driver doesn't support post-blend colorop, refuse attempts from usersapce to set it. Same approach is taken for pre-blend colorop.
Signed-off-by: Melissa Wen <[email protected]> --- drivers/gpu/drm/drm_ioctl.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index ae374733e154..82d4f1bfc557 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -380,13 +380,26 @@ drm_setclientcap(struct drm_device *dev, void *data, struct drm_file *file_priv) return -EINVAL; file_priv->plane_color_pipeline = req->value; break; - case DRM_CLIENT_CAP_CRTC_COLOR_PIPELINE: + case DRM_CLIENT_CAP_CRTC_COLOR_PIPELINE: { + struct drm_crtc *crtc; + bool has_crtc_with_color_pipeline = false; + if (!file_priv->atomic) return -EINVAL; if (req->value > 1) return -EINVAL; + drm_for_each_crtc(crtc, dev) { + if (crtc->color_pipeline_property) { + has_crtc_with_color_pipeline = true; + break; + } + } + if (req->value == 1 && !has_crtc_with_color_pipeline) + return -EOPNOTSUPP; + file_priv->crtc_color_pipeline = req->value; break; + } default: return -EINVAL; } -- 2.53.0
