From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from galahad.ideasonboard.com ([185.26.127.97]:54319 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751414AbeDEJSe (ORCPT ); Thu, 5 Apr 2018 05:18:34 -0400 From: Laurent Pinchart To: linux-media@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Kieran Bingham Subject: [PATCH v2 00/15] R-Car VSP1: Dynamically assign blend units to display pipelines Date: Thu, 5 Apr 2018 12:18:25 +0300 Message-Id: <20180405091840.30728-1-laurent.pinchart+renesas@ideasonboard.com> Sender: linux-media-owner@vger.kernel.org List-ID: Hello, On R-Car H3 ES2.0+ and M3-N SoCs, two display pipelines are served by the same VSP instance (named VSPDL). The VSPDL includes two blending units named BRU and BRS, unlike the other display-related VSPD that serves a single display channel with a single blending unit. The VSPDL has five inputs and can freely assign them at runtime to two display pipelines, using the BRU and BRS to blend multiple inputs. The BRU supports blending up to five inputs, while the BRS is limited to two inputs. Each display pipeline requires a blending unit, and the BRU and BRS are currently assigned statically to the first and second pipeline respectively. This artificially limits the number of inputs for the second pipeline to two. To overcome that limitation, the BRU and BRS need to be dynamically assigned to the display pipelines, which is what this patch series does. Patches 01/15 to 10/15 perform small cleanups and refactoring to prepare for the rest of the series. Patches 11/15 and 12/15 implement new internal features for the same purpose, and patch 13/15 performs the bulk of the work by implementing dynamic BRU and BRS assignment to pipelines. Reassigning the BRU and BRS when two pipelines are running results in flicker as one pipeline has to first release its blending unit. Synchronization between the two pipelines also require locking that effectively serializes page flips for the two pipelines, even when not interacting with each other. This is currently believed to be unavoidable due to the hardware design, but please feel free to prove me wrong (ideally with a patch - one can always dream). Patch 14/15 then adds messages useful for debugging this new feature. I have kept it separate from 13/15 to make it easier to remove those messages once dynamic assignment of blending units will be deemed perfectly stable, but I won't oppose squashing it with 13/15 if that is preferred. Patch 15/15 finally rename BRU to BRx to avoid confusion between the BRU terms that refer to the BRU in particular, and the ones that refer to any of the BRU or BRS. As this might be a bit controversial I've put the patch last in the series in case it needs to be dropped. I have decided to CC the dri-devel mailing list even though the code doesn't touch the R-Car DU driver and will be merged through the Linux media tree as the display is involved and the series could benefit from the expertise of the DRM/KMS community from that point of view. The patches are based on top of the latest Linux media master branch. For convenience their are available from git://linuxtv.org/pinchartl/media.git v4l2-vsp1-bru-brs-v2-20180405 The series passes the DU test suite with the new BRx dynamic assignment test available from git://git.ideasonboard.com/renesas/kms-tests.git bru-brs The VSP test suite also runs without any noticed regression. Since v1, patch 10/15 has been added an the v1 02/15 patch merged with 01/15. Other small changes are documented in individual changelogs. Laurent Pinchart (15): v4l: vsp1: Don't start/stop media pipeline for DRM v4l: vsp1: Remove unused field from vsp1_drm_pipeline structure v4l: vsp1: Store pipeline pointer in vsp1_entity v4l: vsp1: Use vsp1_entity.pipe to check if entity belongs to a pipeline v4l: vsp1: Share duplicated DRM pipeline configuration code v4l: vsp1: Move DRM atomic commit pipeline setup to separate function v4l: vsp1: Setup BRU at atomic commit time v4l: vsp1: Replace manual DRM pipeline input setup in vsp1_du_setup_lif v4l: vsp1: Move DRM pipeline output setup code to a function v4l: vsp1: Turn frame end completion status into a bitfield v4l: vsp1: Add per-display list internal completion notification support v4l: vsp1: Generalize detection of entity removal from DRM pipeline v4l: vsp1: Assign BRU and BRS to pipelines dynamically v4l: vsp1: Add BRx dynamic assignment debugging messages v4l: vsp1: Rename BRU to BRx drivers/media/platform/vsp1/Makefile | 2 +- drivers/media/platform/vsp1/vsp1.h | 6 +- .../media/platform/vsp1/{vsp1_bru.c => vsp1_brx.c} | 202 ++--- .../media/platform/vsp1/{vsp1_bru.h => vsp1_brx.h} | 18 +- drivers/media/platform/vsp1/vsp1_dl.c | 45 +- drivers/media/platform/vsp1/vsp1_dl.h | 7 +- drivers/media/platform/vsp1/vsp1_drm.c | 828 ++++++++++++--------- drivers/media/platform/vsp1/vsp1_drm.h | 16 +- drivers/media/platform/vsp1/vsp1_drv.c | 8 +- drivers/media/platform/vsp1/vsp1_entity.h | 2 + drivers/media/platform/vsp1/vsp1_histo.c | 2 +- drivers/media/platform/vsp1/vsp1_histo.h | 3 - drivers/media/platform/vsp1/vsp1_pipe.c | 53 +- drivers/media/platform/vsp1/vsp1_pipe.h | 6 +- drivers/media/platform/vsp1/vsp1_rpf.c | 12 +- drivers/media/platform/vsp1/vsp1_rwpf.h | 4 +- drivers/media/platform/vsp1/vsp1_video.c | 39 +- drivers/media/platform/vsp1/vsp1_wpf.c | 8 +- 18 files changed, 718 insertions(+), 543 deletions(-) rename drivers/media/platform/vsp1/{vsp1_bru.c => vsp1_brx.c} (63%) rename drivers/media/platform/vsp1/{vsp1_bru.h => vsp1_brx.h} (66%) -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: [PATCH v2 00/15] R-Car VSP1: Dynamically assign blend units to display pipelines Date: Thu, 5 Apr 2018 12:18:25 +0300 Message-ID: <20180405091840.30728-1-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id DADAA6E6D3 for ; Thu, 5 Apr 2018 09:18:34 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, Kieran Bingham , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGVsbG8sCgpPbiBSLUNhciBIMyBFUzIuMCsgYW5kIE0zLU4gU29DcywgdHdvIGRpc3BsYXkgcGlw ZWxpbmVzIGFyZSBzZXJ2ZWQgYnkgdGhlIHNhbWUKVlNQIGluc3RhbmNlIChuYW1lZCBWU1BETCku IFRoZSBWU1BETCBpbmNsdWRlcyB0d28gYmxlbmRpbmcgdW5pdHMgbmFtZWQgQlJVCmFuZCBCUlMs IHVubGlrZSB0aGUgb3RoZXIgZGlzcGxheS1yZWxhdGVkIFZTUEQgdGhhdCBzZXJ2ZXMgYSBzaW5n bGUgZGlzcGxheQpjaGFubmVsIHdpdGggYSBzaW5nbGUgYmxlbmRpbmcgdW5pdC4KClRoZSBWU1BE TCBoYXMgZml2ZSBpbnB1dHMgYW5kIGNhbiBmcmVlbHkgYXNzaWduIHRoZW0gYXQgcnVudGltZSB0 byB0d28gZGlzcGxheQpwaXBlbGluZXMsIHVzaW5nIHRoZSBCUlUgYW5kIEJSUyB0byBibGVuZCBt dWx0aXBsZSBpbnB1dHMuIFRoZSBCUlUgc3VwcG9ydHMKYmxlbmRpbmcgdXAgdG8gZml2ZSBpbnB1 dHMsIHdoaWxlIHRoZSBCUlMgaXMgbGltaXRlZCB0byB0d28gaW5wdXRzLgoKRWFjaCBkaXNwbGF5 IHBpcGVsaW5lIHJlcXVpcmVzIGEgYmxlbmRpbmcgdW5pdCwgYW5kIHRoZSBCUlUgYW5kIEJSUyBh cmUKY3VycmVudGx5IGFzc2lnbmVkIHN0YXRpY2FsbHkgdG8gdGhlIGZpcnN0IGFuZCBzZWNvbmQg cGlwZWxpbmUgcmVzcGVjdGl2ZWx5LgpUaGlzIGFydGlmaWNpYWxseSBsaW1pdHMgdGhlIG51bWJl ciBvZiBpbnB1dHMgZm9yIHRoZSBzZWNvbmQgcGlwZWxpbmUgdG8gdHdvLgpUbyBvdmVyY29tZSB0 aGF0IGxpbWl0YXRpb24sIHRoZSBCUlUgYW5kIEJSUyBuZWVkIHRvIGJlIGR5bmFtaWNhbGx5IGFz c2lnbmVkCnRvIHRoZSBkaXNwbGF5IHBpcGVsaW5lcywgd2hpY2ggaXMgd2hhdCB0aGlzIHBhdGNo IHNlcmllcyBkb2VzLgoKUGF0Y2hlcyAwMS8xNSB0byAxMC8xNSBwZXJmb3JtIHNtYWxsIGNsZWFu dXBzIGFuZCByZWZhY3RvcmluZyB0byBwcmVwYXJlIGZvcgp0aGUgcmVzdCBvZiB0aGUgc2VyaWVz LiBQYXRjaGVzIDExLzE1IGFuZCAxMi8xNSBpbXBsZW1lbnQgbmV3IGludGVybmFsCmZlYXR1cmVz IGZvciB0aGUgc2FtZSBwdXJwb3NlLCBhbmQgcGF0Y2ggMTMvMTUgcGVyZm9ybXMgdGhlIGJ1bGsg b2YgdGhlIHdvcmsKYnkgaW1wbGVtZW50aW5nIGR5bmFtaWMgQlJVIGFuZCBCUlMgYXNzaWdubWVu dCB0byBwaXBlbGluZXMuCgpSZWFzc2lnbmluZyB0aGUgQlJVIGFuZCBCUlMgd2hlbiB0d28gcGlw ZWxpbmVzIGFyZSBydW5uaW5nIHJlc3VsdHMgaW4gZmxpY2tlcgphcyBvbmUgcGlwZWxpbmUgaGFz IHRvIGZpcnN0IHJlbGVhc2UgaXRzIGJsZW5kaW5nIHVuaXQuIFN5bmNocm9uaXphdGlvbgpiZXR3 ZWVuIHRoZSB0d28gcGlwZWxpbmVzIGFsc28gcmVxdWlyZSBsb2NraW5nIHRoYXQgZWZmZWN0aXZl bHkgc2VyaWFsaXplcwpwYWdlIGZsaXBzIGZvciB0aGUgdHdvIHBpcGVsaW5lcywgZXZlbiB3aGVu IG5vdCBpbnRlcmFjdGluZyB3aXRoIGVhY2ggb3RoZXIuClRoaXMgaXMgY3VycmVudGx5IGJlbGll dmVkIHRvIGJlIHVuYXZvaWRhYmxlIGR1ZSB0byB0aGUgaGFyZHdhcmUgZGVzaWduLCBidXQKcGxl YXNlIGZlZWwgZnJlZSB0byBwcm92ZSBtZSB3cm9uZyAoaWRlYWxseSB3aXRoIGEgcGF0Y2ggLSBv bmUgY2FuIGFsd2F5cwpkcmVhbSkuCgpQYXRjaCAxNC8xNSB0aGVuIGFkZHMgbWVzc2FnZXMgdXNl ZnVsIGZvciBkZWJ1Z2dpbmcgdGhpcyBuZXcgZmVhdHVyZS4gSSBoYXZlCmtlcHQgaXQgc2VwYXJh dGUgZnJvbSAxMy8xNSB0byBtYWtlIGl0IGVhc2llciB0byByZW1vdmUgdGhvc2UgbWVzc2FnZXMg b25jZQpkeW5hbWljIGFzc2lnbm1lbnQgb2YgYmxlbmRpbmcgdW5pdHMgd2lsbCBiZSBkZWVtZWQg cGVyZmVjdGx5IHN0YWJsZSwgYnV0IEkKd29uJ3Qgb3Bwb3NlIHNxdWFzaGluZyBpdCB3aXRoIDEz LzE1IGlmIHRoYXQgaXMgcHJlZmVycmVkLgoKUGF0Y2ggMTUvMTUgZmluYWxseSByZW5hbWUgQlJV IHRvIEJSeCB0byBhdm9pZCBjb25mdXNpb24gYmV0d2VlbiB0aGUgQlJVIHRlcm1zCnRoYXQgcmVm ZXIgdG8gdGhlIEJSVSBpbiBwYXJ0aWN1bGFyLCBhbmQgdGhlIG9uZXMgdGhhdCByZWZlciB0byBh bnkgb2YgdGhlIEJSVQpvciBCUlMuIEFzIHRoaXMgbWlnaHQgYmUgYSBiaXQgY29udHJvdmVyc2lh bCBJJ3ZlIHB1dCB0aGUgcGF0Y2ggbGFzdCBpbiB0aGUKc2VyaWVzIGluIGNhc2UgaXQgbmVlZHMg dG8gYmUgZHJvcHBlZC4KCkkgaGF2ZSBkZWNpZGVkIHRvIENDIHRoZSBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0IGV2ZW4gdGhvdWdoIHRoZSBjb2RlIGRvZXNuJ3QKdG91Y2ggdGhlIFItQ2FyIERVIGRy aXZlciBhbmQgd2lsbCBiZSBtZXJnZWQgdGhyb3VnaCB0aGUgTGludXggbWVkaWEgdHJlZSBhcwp0 aGUgZGlzcGxheSBpcyBpbnZvbHZlZCBhbmQgdGhlIHNlcmllcyBjb3VsZCBiZW5lZml0IGZyb20g dGhlIGV4cGVydGlzZSBvZiB0aGUKRFJNL0tNUyBjb21tdW5pdHkgZnJvbSB0aGF0IHBvaW50IG9m IHZpZXcuCgpUaGUgcGF0Y2hlcyBhcmUgYmFzZWQgb24gdG9wIG9mIHRoZSBsYXRlc3QgTGludXgg bWVkaWEgbWFzdGVyIGJyYW5jaC4gRm9yCmNvbnZlbmllbmNlIHRoZWlyIGFyZSBhdmFpbGFibGUg ZnJvbQoKCWdpdDovL2xpbnV4dHYub3JnL3BpbmNoYXJ0bC9tZWRpYS5naXQgdjRsMi12c3AxLWJy dS1icnMtdjItMjAxODA0MDUKClRoZSBzZXJpZXMgcGFzc2VzIHRoZSBEVSB0ZXN0IHN1aXRlIHdp dGggdGhlIG5ldyBCUnggZHluYW1pYyBhc3NpZ25tZW50CnRlc3QgYXZhaWxhYmxlIGZyb20KCgln aXQ6Ly9naXQuaWRlYXNvbmJvYXJkLmNvbS9yZW5lc2FzL2ttcy10ZXN0cy5naXQgYnJ1LWJycwoK VGhlIFZTUCB0ZXN0IHN1aXRlIGFsc28gcnVucyB3aXRob3V0IGFueSBub3RpY2VkIHJlZ3Jlc3Np b24uCgpTaW5jZSB2MSwgcGF0Y2ggMTAvMTUgaGFzIGJlZW4gYWRkZWQgYW4gdGhlIHYxIDAyLzE1 IHBhdGNoIG1lcmdlZCB3aXRoCjAxLzE1LiBPdGhlciBzbWFsbCBjaGFuZ2VzIGFyZSBkb2N1bWVu dGVkIGluIGluZGl2aWR1YWwgY2hhbmdlbG9ncy4KCkxhdXJlbnQgUGluY2hhcnQgKDE1KToKICB2 NGw6IHZzcDE6IERvbid0IHN0YXJ0L3N0b3AgbWVkaWEgcGlwZWxpbmUgZm9yIERSTQogIHY0bDog dnNwMTogUmVtb3ZlIHVudXNlZCBmaWVsZCBmcm9tIHZzcDFfZHJtX3BpcGVsaW5lIHN0cnVjdHVy ZQogIHY0bDogdnNwMTogU3RvcmUgcGlwZWxpbmUgcG9pbnRlciBpbiB2c3AxX2VudGl0eQogIHY0 bDogdnNwMTogVXNlIHZzcDFfZW50aXR5LnBpcGUgdG8gY2hlY2sgaWYgZW50aXR5IGJlbG9uZ3Mg dG8gYQogICAgcGlwZWxpbmUKICB2NGw6IHZzcDE6IFNoYXJlIGR1cGxpY2F0ZWQgRFJNIHBpcGVs aW5lIGNvbmZpZ3VyYXRpb24gY29kZQogIHY0bDogdnNwMTogTW92ZSBEUk0gYXRvbWljIGNvbW1p dCBwaXBlbGluZSBzZXR1cCB0byBzZXBhcmF0ZSBmdW5jdGlvbgogIHY0bDogdnNwMTogU2V0dXAg QlJVIGF0IGF0b21pYyBjb21taXQgdGltZQogIHY0bDogdnNwMTogUmVwbGFjZSBtYW51YWwgRFJN IHBpcGVsaW5lIGlucHV0IHNldHVwIGluCiAgICB2c3AxX2R1X3NldHVwX2xpZgogIHY0bDogdnNw MTogTW92ZSBEUk0gcGlwZWxpbmUgb3V0cHV0IHNldHVwIGNvZGUgdG8gYSBmdW5jdGlvbgogIHY0 bDogdnNwMTogVHVybiBmcmFtZSBlbmQgY29tcGxldGlvbiBzdGF0dXMgaW50byBhIGJpdGZpZWxk CiAgdjRsOiB2c3AxOiBBZGQgcGVyLWRpc3BsYXkgbGlzdCBpbnRlcm5hbCBjb21wbGV0aW9uIG5v dGlmaWNhdGlvbgogICAgc3VwcG9ydAogIHY0bDogdnNwMTogR2VuZXJhbGl6ZSBkZXRlY3Rpb24g b2YgZW50aXR5IHJlbW92YWwgZnJvbSBEUk0gcGlwZWxpbmUKICB2NGw6IHZzcDE6IEFzc2lnbiBC UlUgYW5kIEJSUyB0byBwaXBlbGluZXMgZHluYW1pY2FsbHkKICB2NGw6IHZzcDE6IEFkZCBCUngg ZHluYW1pYyBhc3NpZ25tZW50IGRlYnVnZ2luZyBtZXNzYWdlcwogIHY0bDogdnNwMTogUmVuYW1l IEJSVSB0byBCUngKCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICAgMiArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDEuaCAgICAg ICAgICAgICAgICAgfCAgIDYgKy0KIC4uLi9tZWRpYS9wbGF0Zm9ybS92c3AxL3t2c3AxX2JydS5j ID0+IHZzcDFfYnJ4LmN9IHwgMjAyICsrLS0tCiAuLi4vbWVkaWEvcGxhdGZvcm0vdnNwMS97dnNw MV9icnUuaCA9PiB2c3AxX2JyeC5ofSB8ICAxOCArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 c3AxL3ZzcDFfZGwuYyAgICAgICAgICAgICAgfCAgNDUgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdnNwMS92c3AxX2RsLmggICAgICAgICAgICAgIHwgICA3ICstCiBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3ZzcDEvdnNwMV9kcm0uYyAgICAgICAgICAgICB8IDgyOCArKysrKysrKysrKystLS0t LS0tLS0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2RybS5oICAgICAgICAgICAg IHwgIDE2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kcnYuYyAgICAgICAg ICAgICB8ICAgOCArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZW50aXR5Lmgg ICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfaGlzdG8u YyAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2hp c3RvLmggICAgICAgICAgIHwgICAzIC0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3Ax X3BpcGUuYyAgICAgICAgICAgIHwgIDUzICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEv dnNwMV9waXBlLmggICAgICAgICAgICB8ICAgNiArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 c3AxL3ZzcDFfcnBmLmMgICAgICAgICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdnNwMS92c3AxX3J3cGYuaCAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3ZzcDEvdnNwMV92aWRlby5jICAgICAgICAgICB8ICAzOSArLQogZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92c3AxL3ZzcDFfd3BmLmMgICAgICAgICAgICAgfCAgIDggKy0KIDE4IGZpbGVz IGNoYW5nZWQsIDcxOCBpbnNlcnRpb25zKCspLCA1NDMgZGVsZXRpb25zKC0pCiByZW5hbWUgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3t2c3AxX2JydS5jID0+IHZzcDFfYnJ4LmN9ICg2MyUp CiByZW5hbWUgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3t2c3AxX2JydS5oID0+IHZzcDFf YnJ4Lmh9ICg2NiUpCgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=