Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp1141023pxb; Wed, 16 Feb 2022 11:58:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJyldk5lUlOPWjxgOBlBflgJv5pxD4wu/MpvxAF6Grq2582N9wz66OZVdB+U668IJoSy7A00 X-Received: by 2002:a05:6402:40c6:b0:410:803d:8732 with SMTP id z6-20020a05640240c600b00410803d8732mr4617154edb.239.1645041485260; Wed, 16 Feb 2022 11:58:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645041485; cv=none; d=google.com; s=arc-20160816; b=WYtQL4l1TEflY25jzW/mUcDh8/hH985nmC9Yb8fN/YWyhiamG0817Z8ax0JZeDDt/Z mi81xVQNusCJQ4UX62hAc+fDv3TIuegjak8jGZfT0MXy107pNsFUX/R3D9vNSh1Wli9m Yczdk8Y87XP6ik/upDLS6zoUtO9OpPckaGE0Y2EDHTwEApy9wDy+xbHGJfS6O4IAjs/s oXAO5MOMeYmY0CWzF0qypmrc3sxYZ/NXK0CEgXVK0vbw+VzJn9ZfRB0eX6/Cv1tcil4X 0f6Dr/CkG6TFB18p0zVCW/U5oLiOX74TxOSLGRhSGgNHhr5h6RtkjUU+KhkrGecs4GRS 1CTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=KMrWgD9hlBT67vq70Rol+E2yH6VcMSsxVJIcHIW4zaw=; b=t/VljViOJ3FP5uc/8iTaalOcGDb/8sHVJf74yEtxUA7HrK4dNq3tK3Wgv+cFllEbaM 7CzvnIhohxmVmg3YVs/TeWD7QcHZD0AcV7Rfk6GCEmzdo5DaybO6G5FU686SUYoYbyn9 pyqOGUyQHzi31UIfm0KoRNccGXHNIjoEANW66N8kbqzFRWvZjozLLeq511DkAaoZh+vC cGloTXwl1OcLGVogW1UBxwPz3UyaPrr+jVG90Ptp2+eYu3Qrg8qP0ixZGMpuwoCO2pib enhZFjvbkxS6KQUG6sf9e9edcSVJqIFz3HPDdYaqUHBLIX4imwvWgPgT88bbZ6olTf2w DqZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ndufresne-ca.20210112.gappssmtp.com header.s=20210112 header.b=h9xTqWs9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i7si543088ejw.591.2022.02.16.11.57.41; Wed, 16 Feb 2022 11:58:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ndufresne-ca.20210112.gappssmtp.com header.s=20210112 header.b=h9xTqWs9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236273AbiBPQUa (ORCPT + 99 others); Wed, 16 Feb 2022 11:20:30 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:55704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236259AbiBPQU2 (ORCPT ); Wed, 16 Feb 2022 11:20:28 -0500 Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F0E4D2AE29B for ; Wed, 16 Feb 2022 08:20:15 -0800 (PST) Received: by mail-qk1-x736.google.com with SMTP id j24so2076498qkk.10 for ; Wed, 16 Feb 2022 08:20:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=KMrWgD9hlBT67vq70Rol+E2yH6VcMSsxVJIcHIW4zaw=; b=h9xTqWs9Pm9+1oqVfjSwLgMUYWUxBSgeh9sTjYuVgNGx6JudRj8cWesIAFsHbTp9ay snIIghfEzPX/UFiJO+zBoYrQ0QhHKvjW85zXESdNeD1Lbj2Owy18jbz/DSWFZSMhrGnG yFNmOnMxJhFhTSujkzeki5624tDxk8ZzogBGHEHec9j7lz3PJ5dP1kvK7aEw6xebWUpA lypyq4VVPDf6NACaIVS8DII9oMv8oMNGfbkyx+V+lbF2UoJlj+os8pQVqMIMUlmv1MDv NBSnhV/Dx5NP3Ppso+fZjEuqz0HWQml40YpYnpiESl/k9cylgzzIN4c0zSWkDZSaWIJE FTEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=KMrWgD9hlBT67vq70Rol+E2yH6VcMSsxVJIcHIW4zaw=; b=A+mqDElWRNvQU1f4bQB1ALV38QA2hXTZicxmnJG8mW3IVZ5sLbt7M7yHKlGEfqTJaP 0nVNmsZeYUCDQnK80+6habUeQ/rjPvPPFrTcG9pSmcEzAHlQR6GFzQiCSZGJO0fdTFuy mg48T7U/t+tDmxSpty6+tuL69in9tp8j0QOLau7xiBcSj9ru/rbvmXwtFJjOMPXsd48Y 4Jsfid6So1hmWHxUM6Rgbg9kUx90PsWetF9SkEvFK4gK0p2vvY5gwmrLi0WyQ1ikA5cF CCEnHpMGFKeX/14dc5BGxqo9jkE+wILsqFGANNbUrsERbFb31eKCdPGp3B+9rAn3LxeM YDlA== X-Gm-Message-State: AOAM531OgULqGVXpGtGLX0v+83zrg5HHzkWFrd3dRoxz4pk7qBOq4ZDw 8CeBAnCcSNAKkERhUnxdN2HRGg== X-Received: by 2002:a37:946:0:b0:47d:6768:edcc with SMTP id 67-20020a370946000000b0047d6768edccmr1666095qkj.120.1645028415084; Wed, 16 Feb 2022 08:20:15 -0800 (PST) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id f5sm19161439qkp.97.2022.02.16.08.20.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Feb 2022 08:20:14 -0800 (PST) Message-ID: <4e1cc50854da4075fc7ebf71e24aa8372905c668.camel@ndufresne.ca> Subject: Re: [PATCH v3 5/6] venus: Add a handling of QC10C compressed format From: Nicolas Dufresne To: Stanimir Varbanov , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Cc: hverkuil-cisco@xs4all.nl Date: Wed, 16 Feb 2022 11:20:12 -0500 In-Reply-To: <20220117155559.234026-6-stanimir.varbanov@linaro.org> References: <20220117155559.234026-1-stanimir.varbanov@linaro.org> <20220117155559.234026-6-stanimir.varbanov@linaro.org> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.3 (3.42.3-1.fc35) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le lundi 17 janvier 2022 à 17:55 +0200, Stanimir Varbanov a écrit : > This adds QC10C compressed pixel format in the Venus driver, and > make it possible to discover from v4l2 clients. > > Note: The QC10C format shouldn't be possible to discpver by the discpver -> discover It is not super clear though, did you mean to say that it won't be enumerated after the header have been parsed ? > client if the decoded bitstream is not 10-bits. > > Signed-off-by: Stanimir Varbanov > --- > drivers/media/platform/qcom/venus/helpers.c | 26 ++++----------------- > drivers/media/platform/qcom/venus/vdec.c | 19 ++++++++++++--- > 2 files changed, 20 insertions(+), 25 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c > index adbfa4fbe139..69a9a9471a27 100644 > --- a/drivers/media/platform/qcom/venus/helpers.c > +++ b/drivers/media/platform/qcom/venus/helpers.c > @@ -594,6 +594,8 @@ static u32 to_hfi_raw_fmt(u32 v4l2_fmt) > return HFI_COLOR_FORMAT_NV21; > case V4L2_PIX_FMT_QC08C: > return HFI_COLOR_FORMAT_NV12_UBWC; > + case V4L2_PIX_FMT_QC10C: > + return HFI_COLOR_FORMAT_YUV420_TP10_UBWC; > default: > break; > } > @@ -1176,7 +1178,8 @@ int venus_helper_set_format_constraints(struct venus_inst *inst) > if (!IS_V6(inst->core)) > return 0; > > - if (inst->opb_fmt == HFI_COLOR_FORMAT_NV12_UBWC) > + if (inst->opb_fmt == HFI_COLOR_FORMAT_NV12_UBWC || > + inst->opb_fmt == HFI_COLOR_FORMAT_YUV420_TP10_UBWC) > return 0; > > pconstraint.buffer_type = HFI_BUFFER_OUTPUT2; > @@ -1747,27 +1750,6 @@ int venus_helper_get_out_fmts(struct venus_inst *inst, u32 v4l2_fmt, > if (!caps) > return -EINVAL; > > - if (inst->bit_depth == VIDC_BITDEPTH_10 && > - inst->session_type == VIDC_SESSION_TYPE_DEC) { > - found_ubwc = > - find_fmt_from_caps(caps, HFI_BUFFER_OUTPUT, > - HFI_COLOR_FORMAT_YUV420_TP10_UBWC); > - found = find_fmt_from_caps(caps, HFI_BUFFER_OUTPUT2, > - HFI_COLOR_FORMAT_NV12); > - if (found_ubwc && found) { > - /* > - * Hard-code DPB buffers to be 10bit UBWC and decoder > - * output buffers in 8bit NV12 until V4L2 is able to > - * expose compressed/tiled formats to applications. > - */ > - *out_fmt = HFI_COLOR_FORMAT_YUV420_TP10_UBWC; > - *out2_fmt = HFI_COLOR_FORMAT_NV12; > - return 0; > - } > - > - return -EINVAL; > - } > - > if (ubwc) { > ubwc_fmt = fmt | HFI_COLOR_FORMAT_UBWC_BASE; > found_ubwc = find_fmt_from_caps(caps, HFI_BUFFER_OUTPUT, > diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c > index eb02e45a512b..c8261c6cb0fb 100644 > --- a/drivers/media/platform/qcom/venus/vdec.c > +++ b/drivers/media/platform/qcom/venus/vdec.c > @@ -35,6 +35,10 @@ static const struct venus_format vdec_formats[] = { > .num_planes = 1, > .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, > }, { > + .pixfmt = V4L2_PIX_FMT_QC10C, > + .num_planes = 1, > + .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, > + },{ > .pixfmt = V4L2_PIX_FMT_NV12, > .num_planes = 1, > .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, > @@ -114,6 +118,10 @@ find_format(struct venus_inst *inst, u32 pixfmt, u32 type) > !venus_helper_check_format(inst, fmt[i].pixfmt)) > return NULL; > > + if (V4L2_TYPE_IS_CAPTURE(type) && fmt[i].pixfmt == V4L2_PIX_FMT_QC10C && > + !(inst->bit_depth == VIDC_BITDEPTH_10)) > + return NULL; > + > return &fmt[i]; > } > > @@ -133,11 +141,16 @@ find_format_by_index(struct venus_inst *inst, unsigned int index, u32 type) > if (fmt[i].type != type) > continue; > > - if (V4L2_TYPE_IS_OUTPUT(type)) > + if (V4L2_TYPE_IS_OUTPUT(type)) { > valid = venus_helper_check_codec(inst, fmt[i].pixfmt); > - else if (V4L2_TYPE_IS_CAPTURE(type)) > + } else if (V4L2_TYPE_IS_CAPTURE(type)) { > valid = venus_helper_check_format(inst, fmt[i].pixfmt); > > + if (fmt[i].pixfmt == V4L2_PIX_FMT_QC10C && > + !(inst->bit_depth == VIDC_BITDEPTH_10)) > + valid = false; > + } > + > if (k == index && valid) > break; > if (valid) > @@ -1537,7 +1550,7 @@ static const struct hfi_inst_ops vdec_hfi_ops = { > static void vdec_inst_init(struct venus_inst *inst) > { > inst->hfi_codec = HFI_VIDEO_CODEC_H264; > - inst->fmt_out = &vdec_formats[7]; > + inst->fmt_out = &vdec_formats[8]; > inst->fmt_cap = &vdec_formats[0]; > inst->width = frame_width_min(inst); > inst->height = ALIGN(frame_height_min(inst), 32);