Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4041055ybx; Sat, 9 Nov 2019 08:03:54 -0800 (PST) X-Google-Smtp-Source: APXvYqzV+QLt9Yem1CSmXzcahuNzKiPUrWZAtqrmDFL4IhraXSBZnWJWvgQpqOYtBOFvGCyT0Ld/ X-Received: by 2002:a50:e605:: with SMTP id y5mr16237148edm.12.1573315434804; Sat, 09 Nov 2019 08:03:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573315434; cv=none; d=google.com; s=arc-20160816; b=qY16XqiEUG4ysL/NcvSL9zHKB4iYpneCMZHNmWgLC8JSm+A1VGbGJAtcHHXlaCZZKM DOr9GdqasK2GxxYntroR5QO/sQX/1CWqxYWPHpnfsyjazb9sNEx9KyhjvVK1upOS2oVk F8PUvw/y+iFKCEPSEBZ978rev56MkD3tYzt2V4xEWK+QrMBgP0TAyrt3+Fuj+dLr+Kbp ynigaTDKoyIFKt9nlaItfKIGL9TjcyKnM8lLebmBPoCpc2aiU4PJR+fFz90oypwfb6n+ pwWwrg72V1+LVDMJ2jBmtE7GFQMd9WqImZg2YwoiO7XPNwvj6gHr3ZXyzoUa0Da1PTpQ SAeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:organization:references:in-reply-to:date:cc:to:from :subject:message-id; bh=Ifvgi5sAIZWUsn8Ly9t7Z1jYvbOkfxqZCHoBuymPMgI=; b=prVu5jmLXmt84HmOz7e7OGBxSWsm3dIY9wERMeSfLDL9P/f6KwAIR6nv5lyuSsJpoW huahh+FPm/v2yKEOYdumEwgAYskJgDXVfPO8PLN8nJBfwUYUES5qeII5So2u2Gtfb9Pi V4k/rOQTpuodco9zXO8T/XIZ7OetvTmFJRXgZ6/f+jz7dKApNMwlhEP5OySlMbmUhLtb PuaRDuSegwMOXKsPoIS0BVzXqilugxW08vkPclp/d53LrR0DFPhBqhHBkmUIpB403GDf MG5vShacwNuP5iKk/K59MEwFjHpHe+hwSNSILWXDDXP7jaPKB93jYeLMdidArF3bsQix ba1A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id qh15si5677606ejb.295.2019.11.09.08.03.31; Sat, 09 Nov 2019 08:03:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726530AbfKIQCl (ORCPT + 99 others); Sat, 9 Nov 2019 11:02:41 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:46340 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726026AbfKIQCk (ORCPT ); Sat, 9 Nov 2019 11:02:40 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id 7FBF0290C12 Message-ID: <11fc6150a28f4617752c1c853521941087cc3f01.camel@collabora.com> Subject: Re: [PATCH v2 0/4] Enable Hantro G1 post-processor From: Ezequiel Garcia To: Hans Verkuil , Tomasz Figa Cc: Linux Media Mailing List , kernel@collabora.com, "open list:ARM/Rockchip SoC..." , Heiko Stuebner , Jonas Karlman , Philipp Zabel , Boris Brezillon , Chris Healy , Linux Kernel Mailing List Date: Sat, 09 Nov 2019 13:02:29 -0300 In-Reply-To: <0b12f376-385b-0f68-abe1-1a0a21bb5a48@xs4all.nl> References: <20191003190833.29046-1-ezequiel@collabora.com> <0b12f376-385b-0f68-abe1-1a0a21bb5a48@xs4all.nl> Organization: Collabora Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.1-2 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 2019-11-09 at 11:40 +0100, Hans Verkuil wrote: > On 10/4/19 8:07 AM, Tomasz Figa wrote: > > Hi Ezequiel, > > > > On Fri, Oct 4, 2019 at 4:09 AM Ezequiel Garcia wrote: > > > Hi all, > > > > > > The Hantro G1 VPU post-processor block can be pipelined with > > > the decoder hardware, allowing to perform operations such as > > > color conversion, scaling, rotation, cropping, among others. > > > > > > When the post-processor is enabled, the decoder hardware > > > gets its own set of NV12 buffers (the native decoder format), > > > and the post-processor is the owner of the CAPTURE buffers. > > > > > > This allows the application get processed > > > (scaled, converted, etc) buffers, completely transparently. > > > > > > This feature is implemented by exposing the post-processed pixel > > > formats on ENUM_FMT. When the application sets a pixel format > > > other than NV12, and if the post-processor is MC-linked, > > > the driver will make use of it, transparently. > > > > > > On this v2, the media controller API is now required > > > to "enable" (aka link, in topology jargon) the post-processor. > > > Therefore, applications now have to explicitly request this feature. > > > > > > For instance, the post-processor is enabled using the media-ctl > > > tool: > > > > > > media-ctl -l "'decoder':1 -> 'rockchip,rk3288-vpu-dec':0[0]" > > > media-ctl -l "'postproc':1 -> 'rockchip,rk3288-vpu-dec':0[1]" > > > > > > v4l2-ctl -d 1 --list-formats > > > ioctl: VIDIOC_ENUM_FMT > > > Type: Video Capture Multiplanar > > > > > > [0]: 'NV12' (Y/CbCr 4:2:0) > > > [1]: 'YUYV' (YUYV 4:2:2) > > > > > > Patches 1 and 2 are simply cleanups needed to easier integrate the > > > post-processor. Patch 2 is a bit invasive, but it's a step > > > forward towards merging the implementation for RK3399 and RK3288. > > > > > > Patch 3 re-works the media-topology, making the decoder > > > a v4l2_subdevice, instead of a bare entity. This allows > > > to introduce a more accurate of the decoder+post-processor complex. > > > > > > Patch 4 introduces the post-processing support. > > > > > > This is tested on RK3288 platforms with MPEG-2, VP8 and > > > H264 streams, decoding to YUY2 surfaces. For now, this series > > > is only adding support for NV12-to-YUY2 conversion. > > > > > > The design and implementation is quite different from v1: > > > > > > * The decoder->post-processor topology is now exposed > > > explicitly and applications need to configure the pipeline. > > > By default, the decoder is enabled and the post-processor > > > is disabled. > > > > > > > First of all, thanks for working on this. While from Chromium point of > > view there isn't any practical use case for this feature, it could > > possibly be valuable for some other platforms. > > > > I still see a problem with the current design. Mem-to-mem decoders are > > commonly used in a multi-instance fashion, but media topology is > > global. That means that when having two applications on the system > > decoding their own videos, one might be stepping on the other by > > changing the topology. > > > > I believe that if we want this to be really usable, we would need to > > make the media topology per instance, but that's a significant change > > to the media subsystem. Maybe we could pursue the other options I > > suggested in the previous revision instead, like ordering the formats > > returned by enum_fmt by native first and adding format flags that > > would tell the userspace that the format can have some performance > > and/or power penalty? > > I discussed this with Ezequiel in Lyon, and my preference is also to > not rely on the media controller, but instead order the formats with > the native formats first, followed by the formats that need this additional > processing step. A format flag can be added, but I feel that it is better > to wait with that until it is clear that there is a real need for it. > > It would be good to document in the ENUM_FMT ioctl that formats that > require additional processing are at the end of the format list. > > Ezequiel, I'm marking this series as "Changes Requested" in patchwork. > Thanks! I should revisit this and post a new series soon. Ezequiel