Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1757319ybl; Thu, 5 Dec 2019 06:34:40 -0800 (PST) X-Google-Smtp-Source: APXvYqyufrH8CsUZtZNvRTQasTrfDl6ugh0idPLJndk32N+f5RIOdb0gRkZa6tk9hqJSv5SVojc9 X-Received: by 2002:aca:4ad8:: with SMTP id x207mr7352333oia.148.1575556479902; Thu, 05 Dec 2019 06:34:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575556479; cv=none; d=google.com; s=arc-20160816; b=HBuhjMaOjQmJiZ0XM1LBNd+84xC61xnVoeUXFwwvq+TLWMSRhG3bXwFrTkdwqhr8H0 ItqvqXYkbiTA6oWwY55qDWHQs73AlkySikOCe+he8xDJT/MZsnNzKxIGyifvB7g98Uxe jQhmdD5KsQ/dELezpaz/b3+jvtWNr1p7k4DmdKldbNWwfmH03LPdiCHE2xiMG1XD714M FekohsbPt3uxKmY8FcwHFGtwrg8vfYnbgmFhY8smb1zYCx+cBOBbZqop7WCuf85qwpaZ YYpzEo+72IxOGgBmJ95pHaOmImuvqkS6QKs6LjFdL2q1A2Lzjaj/L92XsAS1IoioiIgx EVSQ== 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=eOx3aaDTyy3ByG/RpMDbghCGUW3utlFNbVVUNjX24zo=; b=ycBpTHeAta/1tL12XtAeaNct0TWR3GKY0GJoOadma1ZD3Qm7+pP6vbCTWzabGZoBz5 gx9rgh4V2opJ6LLb7puhw1f97VDdqpQMvFSaTvxQf4WIaOfixiCmsJlwyDtJVlGEPSZW dszJk/H7J/2/prdcxFa1AdPykNliBNsaK4FgP/24O9NURJYoLNnO0+/heNxmbFq90t5N M3nBWKAobpNUiWFUsUY/FbquCaqixlyOgGxOXjeED+OxkL2GdDeWdyhf6PODfxzBSde7 q4wDdf6E2njP9l4CBrQJGmG2yLmbMboyCUztlJBjLLzB6XJe2ny0TH6IDx75m2RC0EEH gsCQ== 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 c187si4740242oig.182.2019.12.05.06.34.27; Thu, 05 Dec 2019 06:34:39 -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 S1729535AbfLEOdY (ORCPT + 99 others); Thu, 5 Dec 2019 09:33:24 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:49636 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729099AbfLEOdX (ORCPT ); Thu, 5 Dec 2019 09:33:23 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id 62EBD29227C Message-ID: <88a48cb78843458b55896eeb3af2f46488d42744.camel@collabora.com> Subject: Re: [PATCH v3 2/3] media: hantro: Support color conversion via post-processing From: Ezequiel Garcia To: Philipp Zabel , linux-media@vger.kernel.org Cc: kernel@collabora.com, Tomasz Figa , linux-rockchip@lists.infradead.org, Heiko Stuebner , Jonas Karlman , Boris Brezillon , Chris Healy , linux-kernel@vger.kernel.org Date: Thu, 05 Dec 2019 11:33:13 -0300 In-Reply-To: References: <20191113175603.24742-1-ezequiel@collabora.com> <20191113175603.24742-3-ezequiel@collabora.com> <1e1c7a0e3d25187723ccac1a8360b5aae9aed8cd.camel@pengutronix.de> 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 Hello Philipp, On Fri, 2019-11-15 at 12:44 -0300, Ezequiel Garcia wrote: > Hello Philipp, > > Thanks for reviewing. > > On Thu, 2019-11-14 at 10:48 +0100, Philipp Zabel wrote: > > Hi Ezequiel, > > > > On Wed, 2019-11-13 at 14:56 -0300, Ezequiel Garcia wrote: > > > The Hantro G1 decoder is able to enable a post-processor > > > on the decoding pipeline, which can be used to perform > > > scaling and color conversion. > > > > > > The post-processor is integrated to the decoder, and it's > > > possible to use it in a way that is completely transparent > > > to the user. > > > > > > This commit enables color conversion via post-processing, > > > which means the driver now exposes YUV packed, in addition to NV12. > > > > > > Signed-off-by: Ezequiel Garcia > > > --- > > > drivers/staging/media/hantro/Makefile | 1 + > > > drivers/staging/media/hantro/hantro.h | 64 +++++++- > > > drivers/staging/media/hantro/hantro_drv.c | 8 +- > > > .../staging/media/hantro/hantro_g1_h264_dec.c | 2 +- > > > .../media/hantro/hantro_g1_mpeg2_dec.c | 2 +- > > > drivers/staging/media/hantro/hantro_g1_regs.h | 53 +++++++ > > > .../staging/media/hantro/hantro_g1_vp8_dec.c | 2 +- > > > drivers/staging/media/hantro/hantro_h264.c | 6 +- > > > drivers/staging/media/hantro/hantro_hw.h | 13 ++ > > > .../staging/media/hantro/hantro_postproc.c | 141 ++++++++++++++++++ > > > drivers/staging/media/hantro/hantro_v4l2.c | 52 ++++++- > > > drivers/staging/media/hantro/rk3288_vpu_hw.c | 10 ++ > > > 12 files changed, 343 insertions(+), 11 deletions(-) > > > create mode 100644 drivers/staging/media/hantro/hantro_postproc.c > > > > > > [..] > > > > pix_mp->plane_fmt[0].sizeimage += > > > 128 * DIV_ROUND_UP(pix_mp->width, 16) * > > > DIV_ROUND_UP(pix_mp->height, 16); > > > @@ -611,10 +643,23 @@ static int hantro_start_streaming(struct vb2_queue *q, unsigned int count) > > > > > > vpu_debug(4, "Codec mode = %d\n", codec_mode); > > > ctx->codec_ops = &ctx->dev->variant->codec_ops[codec_mode]; > > > - if (ctx->codec_ops->init) > > > + if (ctx->codec_ops->init) { > > > ret = ctx->codec_ops->init(ctx); > > > + if (ret) > > > + return ret; > > > + } > > > + > > > + if (hantro_needs_postproc(ctx)) { > > > + ret = hantro_postproc_alloc(ctx); > > > > Why is this done in start_streaming? Wouldn't capture side REQBUFS be a > > better place for this? > > > > Yes, makes sense as well. > This didn't work so well, so I have decided to leave it as-is in the just submitted v4 series. The vb2 framework provides two mechanism for drivers to allocate buffers, REQBUFS and CREATEBUFS, so the bounce buffer allocation has to be hooked on both of them. Also, REQBUFS and CREATEBUFS can be called multiple times to grow/shrink the vb2_queue, so the driver has to check if the bounce buffers were already created or not. Not a big deal, but I felt the implementation ended up being too nasty for my taste. If fragmentation turns out to be an issue and we want to avoid allocating and destroying in start and stop (STREAMOFF, STREAMON), we can revisit this. Thanks, Ezequiel