From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com (Ville =?iso-8859-1?Q?Syrj=E4l=E4?=) Date: Fri, 16 Feb 2018 20:20:41 +0200 Subject: [PATCH v3 1/8] drm/blend: Add a generic alpha property In-Reply-To: <9403570d73b6eb63ab87488d5e8eb767ba6f1ac7.1518802627.git-series.maxime.ripard@bootlin.com> References: <9403570d73b6eb63ab87488d5e8eb767ba6f1ac7.1518802627.git-series.maxime.ripard@bootlin.com> Message-ID: <20180216182041.GU5453@intel.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, Feb 16, 2018 at 06:39:29PM +0100, Maxime Ripard wrote: > Some drivers duplicate the logic to create a property to store a per-plane > alpha. > > This is especially useful if we ever want to support extra protocols for > Wayland like: > https://lists.freedesktop.org/archives/wayland-devel/2017-August/034741.html > > Let's create a helper in order to move that to the core. > > Cc: Laurent Pinchart > Reviewed-by: Boris Brezillon > Signed-off-by: Maxime Ripard > --- > Documentation/gpu/kms-properties.csv | 2 +- > drivers/gpu/drm/drm_atomic.c | 4 ++++- > drivers/gpu/drm/drm_atomic_helper.c | 4 ++++- > drivers/gpu/drm/drm_blend.c | 32 +++++++++++++++++++++++++++++- > include/drm/drm_blend.h | 1 +- > include/drm/drm_plane.h | 6 +++++- > 6 files changed, 48 insertions(+), 1 deletion(-) > > diff --git a/Documentation/gpu/kms-properties.csv b/Documentation/gpu/kms-properties.csv > index 927b65e14219..25ad3503d663 100644 > --- a/Documentation/gpu/kms-properties.csv > +++ b/Documentation/gpu/kms-properties.csv > @@ -99,5 +99,5 @@ radeon,DVI-I,?coherent?,RANGE,"Min=0, Max=1",Connector,TBD > ,,"""underscan vborder""",RANGE,"Min=0, Max=128",Connector,TBD > ,Audio,?audio?,ENUM,"{ ""off"", ""on"", ""auto"" }",Connector,TBD > ,FMT Dithering,?dither?,ENUM,"{ ""off"", ""on"" }",Connector,TBD > -rcar-du,Generic,"""alpha""",RANGE,"Min=0, Max=255",Plane,TBD > +,,"""alpha""",RANGE,"Min=0, Max=Driver dependant",Plane,Opacity of the plane from transparent (0) to fully opaque (MAX). If this property is set to a value different than max, and that the pixel will define an alpha component, the property will have precendance and the pixel value will be ignored. Those semantics don't seem particularly good to me. I think we would want the per-pixel alpha and global alpha both to be effecive at the same time. You can always decide to ignore the per-pixel alpha by using a pixel format without alpha. Also, where's the userspace that wants this feature? > diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h > index 8185e3468a23..5a6f29524f12 100644 > --- a/include/drm/drm_plane.h > +++ b/include/drm/drm_plane.h > @@ -42,6 +42,7 @@ struct drm_modeset_acquire_ctx; > * plane (in 16.16) > * @src_w: width of visible portion of plane (in 16.16) > * @src_h: height of visible portion of plane (in 16.16) > + * @alpha: opacity of the plane > * @rotation: rotation of the plane > * @zpos: priority of the given plane on crtc (optional) > * Note that multiple active planes on the same crtc can have an identical > @@ -105,6 +106,9 @@ struct drm_plane_state { > uint32_t src_x, src_y; > uint32_t src_h, src_w; > > + /* Plane opacity */ > + u8 alpha; We may want to make that u16. The general we expect 16bpc for most color related things, but since this is a range prop I suppose we should just expose the actual hardware range. But making it u16 might avoid some head scratching for the first person to have hardware with higher precision. Either that or we should make the prop creation fail if the driver asks for more bits than we have in the state. Oh, and you should plug this into the state dumper as well. > + > /* Plane rotation */ > unsigned int rotation; > > @@ -481,6 +485,7 @@ enum drm_plane_type { > * @funcs: helper functions > * @properties: property tracking for this plane > * @type: type of plane (overlay, primary, cursor) > + * @alpha_property: alpha property for this plane > * @zpos_property: zpos property for this plane > * @rotation_property: rotation property for this plane > * @helper_private: mid-layer private data > @@ -556,6 +561,7 @@ struct drm_plane { > */ > struct drm_plane_state *state; > > + struct drm_property *alpha_property; > struct drm_property *zpos_property; > struct drm_property *rotation_property; > }; > -- > git-series 0.9.1 > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrj?l? Intel OTC From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/8] drm/blend: Add a generic alpha property Date: Fri, 16 Feb 2018 20:20:41 +0200 Message-ID: <20180216182041.GU5453@intel.com> References: <9403570d73b6eb63ab87488d5e8eb767ba6f1ac7.1518802627.git-series.maxime.ripard@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id C00A06E150 for ; Fri, 16 Feb 2018 18:20:46 +0000 (UTC) Content-Disposition: inline In-Reply-To: <9403570d73b6eb63ab87488d5e8eb767ba6f1ac7.1518802627.git-series.maxime.ripard@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maxime Ripard Cc: dri-devel@lists.freedesktop.org, Boris Brezillon , Chen-Yu Tsai , Laurent Pinchart , Daniel Vetter , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBGZWIgMTYsIDIwMTggYXQgMDY6Mzk6MjlQTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3 cm90ZToKPiBTb21lIGRyaXZlcnMgZHVwbGljYXRlIHRoZSBsb2dpYyB0byBjcmVhdGUgYSBwcm9w ZXJ0eSB0byBzdG9yZSBhIHBlci1wbGFuZQo+IGFscGhhLgo+IAo+IFRoaXMgaXMgZXNwZWNpYWxs eSB1c2VmdWwgaWYgd2UgZXZlciB3YW50IHRvIHN1cHBvcnQgZXh0cmEgcHJvdG9jb2xzIGZvcgo+ IFdheWxhbmQgbGlrZToKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy93 YXlsYW5kLWRldmVsLzIwMTctQXVndXN0LzAzNDc0MS5odG1sCj4gCj4gTGV0J3MgY3JlYXRlIGEg aGVscGVyIGluIG9yZGVyIHRvIG1vdmUgdGhhdCB0byB0aGUgY29yZS4KPiAKPiBDYzogTGF1cmVu dCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+IFJldmlld2Vk LWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBib290bGluLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJvb3RsaW4uY29tPgo+IC0t LQo+ICBEb2N1bWVudGF0aW9uL2dwdS9rbXMtcHJvcGVydGllcy5jc3YgfCAgMiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICAgfCAgNCArKysrLQo+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyAgfCAgNCArKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2JsZW5kLmMgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K PiAgaW5jbHVkZS9kcm0vZHJtX2JsZW5kLmggICAgICAgICAgICAgIHwgIDEgKy0KPiAgaW5jbHVk ZS9kcm0vZHJtX3BsYW5lLmggICAgICAgICAgICAgIHwgIDYgKysrKystCj4gIDYgZmlsZXMgY2hh bmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL2dwdS9rbXMtcHJvcGVydGllcy5jc3YgYi9Eb2N1bWVudGF0aW9uL2dwdS9r bXMtcHJvcGVydGllcy5jc3YKPiBpbmRleCA5MjdiNjVlMTQyMTkuLjI1YWQzNTAzZDY2MyAxMDA2 NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9rbXMtcHJvcGVydGllcy5jc3YKPiArKysgYi9E b2N1bWVudGF0aW9uL2dwdS9rbXMtcHJvcGVydGllcy5jc3YKPiBAQCAtOTksNSArOTksNSBAQCBy YWRlb24sRFZJLUks4oCcY29oZXJlbnTigJ0sUkFOR0UsIk1pbj0wLCBNYXg9MSIsQ29ubmVjdG9y LFRCRAo+ICAsLCIiInVuZGVyc2NhbiB2Ym9yZGVyIiIiLFJBTkdFLCJNaW49MCwgTWF4PTEyOCIs Q29ubmVjdG9yLFRCRAo+ICAsQXVkaW8s4oCcYXVkaW/igJ0sRU5VTSwieyAiIm9mZiIiLCAiIm9u IiIsICIiYXV0byIiIH0iLENvbm5lY3RvcixUQkQKPiAgLEZNVCBEaXRoZXJpbmcs4oCcZGl0aGVy 4oCdLEVOVU0sInsgIiJvZmYiIiwgIiJvbiIiIH0iLENvbm5lY3RvcixUQkQKPiAtcmNhci1kdSxH ZW5lcmljLCIiImFscGhhIiIiLFJBTkdFLCJNaW49MCwgTWF4PTI1NSIsUGxhbmUsVEJECj4gKyws IiIiYWxwaGEiIiIsUkFOR0UsIk1pbj0wLCBNYXg9RHJpdmVyIGRlcGVuZGFudCIsUGxhbmUsT3Bh Y2l0eSBvZiB0aGUgcGxhbmUgZnJvbSB0cmFuc3BhcmVudCAoMCkgdG8gZnVsbHkgb3BhcXVlIChN QVgpLiBJZiB0aGlzIHByb3BlcnR5IGlzIHNldCB0byBhIHZhbHVlIGRpZmZlcmVudCB0aGFuIG1h eCwgYW5kIHRoYXQgdGhlIHBpeGVsIHdpbGwgZGVmaW5lIGFuIGFscGhhIGNvbXBvbmVudCwgdGhl IHByb3BlcnR5IHdpbGwgaGF2ZSBwcmVjZW5kYW5jZSBhbmQgdGhlIHBpeGVsIHZhbHVlIHdpbGwg YmUgaWdub3JlZC4KClRob3NlIHNlbWFudGljcyBkb24ndCBzZWVtIHBhcnRpY3VsYXJseSBnb29k IHRvIG1lLiBJIHRoaW5rIHdlIHdvdWxkIHdhbnQgdGhlCnBlci1waXhlbCBhbHBoYSBhbmQgZ2xv YmFsIGFscGhhIGJvdGggdG8gYmUgZWZmZWNpdmUgYXQgdGhlIHNhbWUgdGltZS4gWW91IGNhbgph bHdheXMgZGVjaWRlIHRvIGlnbm9yZSB0aGUgcGVyLXBpeGVsIGFscGhhIGJ5IHVzaW5nIGEgcGl4 ZWwgZm9ybWF0IHdpdGhvdXQKYWxwaGEuCgpBbHNvLCB3aGVyZSdzIHRoZSB1c2Vyc3BhY2UgdGhh dCB3YW50cyB0aGlzIGZlYXR1cmU/Cgo8c25pcD4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+IGluZGV4IDgxODVlMzQ2OGEy My4uNWE2ZjI5NTI0ZjEyIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4g KysrIGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiBAQCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHg7Cj4gICAqCXBsYW5lIChpbiAxNi4xNikKPiAgICogQHNy Y193OiB3aWR0aCBvZiB2aXNpYmxlIHBvcnRpb24gb2YgcGxhbmUgKGluIDE2LjE2KQo+ICAgKiBA c3JjX2g6IGhlaWdodCBvZiB2aXNpYmxlIHBvcnRpb24gb2YgcGxhbmUgKGluIDE2LjE2KQo+ICsg KiBAYWxwaGE6IG9wYWNpdHkgb2YgdGhlIHBsYW5lCj4gICAqIEByb3RhdGlvbjogcm90YXRpb24g b2YgdGhlIHBsYW5lCj4gICAqIEB6cG9zOiBwcmlvcml0eSBvZiB0aGUgZ2l2ZW4gcGxhbmUgb24g Y3J0YyAob3B0aW9uYWwpCj4gICAqCU5vdGUgdGhhdCBtdWx0aXBsZSBhY3RpdmUgcGxhbmVzIG9u IHRoZSBzYW1lIGNydGMgY2FuIGhhdmUgYW4gaWRlbnRpY2FsCj4gQEAgLTEwNSw2ICsxMDYsOSBA QCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsKPiAgCXVpbnQzMl90IHNyY194LCBzcmNfeTsKPiAg CXVpbnQzMl90IHNyY19oLCBzcmNfdzsKPiAgCj4gKwkvKiBQbGFuZSBvcGFjaXR5ICovCj4gKwl1 OCBhbHBoYTsKCldlIG1heSB3YW50IHRvIG1ha2UgdGhhdCB1MTYuIFRoZSBnZW5lcmFsIHdlIGV4 cGVjdCAxNmJwYyBmb3IgbW9zdCBjb2xvcgpyZWxhdGVkIHRoaW5ncywgYnV0IHNpbmNlIHRoaXMg aXMgYSByYW5nZSBwcm9wIEkgc3VwcG9zZSB3ZSBzaG91bGQganVzdApleHBvc2UgdGhlIGFjdHVh bCBoYXJkd2FyZSByYW5nZS4gQnV0IG1ha2luZyBpdCB1MTYgbWlnaHQgYXZvaWQgc29tZSBoZWFk CnNjcmF0Y2hpbmcgZm9yIHRoZSBmaXJzdCBwZXJzb24gdG8gaGF2ZSBoYXJkd2FyZSB3aXRoIGhp Z2hlciBwcmVjaXNpb24uCkVpdGhlciB0aGF0IG9yIHdlIHNob3VsZCBtYWtlIHRoZSBwcm9wIGNy ZWF0aW9uIGZhaWwgaWYgdGhlIGRyaXZlciBhc2tzCmZvciBtb3JlIGJpdHMgdGhhbiB3ZSBoYXZl IGluIHRoZSBzdGF0ZS4KCk9oLCBhbmQgeW91IHNob3VsZCBwbHVnIHRoaXMgaW50byB0aGUgc3Rh dGUgZHVtcGVyIGFzIHdlbGwuCgo+ICsKPiAgCS8qIFBsYW5lIHJvdGF0aW9uICovCj4gIAl1bnNp Z25lZCBpbnQgcm90YXRpb247Cj4gIAo+IEBAIC00ODEsNiArNDg1LDcgQEAgZW51bSBkcm1fcGxh bmVfdHlwZSB7Cj4gICAqIEBmdW5jczogaGVscGVyIGZ1bmN0aW9ucwo+ICAgKiBAcHJvcGVydGll czogcHJvcGVydHkgdHJhY2tpbmcgZm9yIHRoaXMgcGxhbmUKPiAgICogQHR5cGU6IHR5cGUgb2Yg cGxhbmUgKG92ZXJsYXksIHByaW1hcnksIGN1cnNvcikKPiArICogQGFscGhhX3Byb3BlcnR5OiBh bHBoYSBwcm9wZXJ0eSBmb3IgdGhpcyBwbGFuZQo+ICAgKiBAenBvc19wcm9wZXJ0eTogenBvcyBw cm9wZXJ0eSBmb3IgdGhpcyBwbGFuZQo+ICAgKiBAcm90YXRpb25fcHJvcGVydHk6IHJvdGF0aW9u IHByb3BlcnR5IGZvciB0aGlzIHBsYW5lCj4gICAqIEBoZWxwZXJfcHJpdmF0ZTogbWlkLWxheWVy IHByaXZhdGUgZGF0YQo+IEBAIC01NTYsNiArNTYxLDcgQEAgc3RydWN0IGRybV9wbGFuZSB7Cj4g IAkgKi8KPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlOwo+ICAKPiArCXN0cnVjdCBk cm1fcHJvcGVydHkgKmFscGhhX3Byb3BlcnR5Owo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqenBv c19wcm9wZXJ0eTsKPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKnJvdGF0aW9uX3Byb3BlcnR5Owo+ ICB9Owo+IC0tIAo+IGdpdC1zZXJpZXMgMC45LjEKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RD Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=