All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanimir Varbanov <stanimir.varbanov@linaro.org>
To: Tomasz Figa <tfiga@chromium.org>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	vgarodia@codeaurora.org
Subject: Re: [PATCH v2 27/29] venus: implementing multi-stream support
Date: Mon, 2 Jul 2018 15:43:46 +0300	[thread overview]
Message-ID: <394e5547-9b85-604f-ee9e-fdb5ea2f4237@linaro.org> (raw)
In-Reply-To: <CAAFQd5Cyk2=YG+LVGt0qEcrRGdarpHJDJ73AzG1iWBbyhr+nAA@mail.gmail.com>

Hi Tomasz,

On 05/31/2018 12:51 PM, Tomasz Figa wrote:
> On Tue, May 15, 2018 at 5:00 PM Stanimir Varbanov
> <stanimir.varbanov@linaro.org> wrote:
>>
>> This is implementing a multi-stream decoder support. The multi
>> stream gives an option to use the secondary decoder output
>> with different raw format (or the same in case of crop).
>>
>> Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
>> ---
>>  drivers/media/platform/qcom/venus/core.h    |   1 +
>>  drivers/media/platform/qcom/venus/helpers.c | 204 +++++++++++++++++++++++++++-
>>  drivers/media/platform/qcom/venus/helpers.h |   6 +
>>  drivers/media/platform/qcom/venus/vdec.c    |  91 ++++++++++++-
>>  drivers/media/platform/qcom/venus/venc.c    |   1 +
>>  5 files changed, 299 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platform/qcom/venus/core.h
>> index 4d6c05f156c4..85e66e2dd672 100644
>> --- a/drivers/media/platform/qcom/venus/core.h
>> +++ b/drivers/media/platform/qcom/venus/core.h
>> @@ -259,6 +259,7 @@ struct venus_inst {
>>         struct list_head list;
>>         struct mutex lock;
>>         struct venus_core *core;
>> +       struct list_head dpbbufs;
>>         struct list_head internalbufs;
>>         struct list_head registeredbufs;
>>         struct list_head delayed_process;
>> diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
>> index ed569705ecac..87dcf9973e6f 100644
>> --- a/drivers/media/platform/qcom/venus/helpers.c
>> +++ b/drivers/media/platform/qcom/venus/helpers.c
>> @@ -85,6 +85,112 @@ bool venus_helper_check_codec(struct venus_inst *inst, u32 v4l2_pixfmt)
>>  }
>>  EXPORT_SYMBOL_GPL(venus_helper_check_codec);
>>
>> +static int venus_helper_queue_dpb_bufs(struct venus_inst *inst)
>> +{
>> +       struct intbuf *buf;
>> +       int ret = 0;
>> +
>> +       if (list_empty(&inst->dpbbufs))
>> +               return 0;
> 
> Does this special case give us anything other than few more source lines?

yes, thanks for spotting, will drop above lines here and below.

> 
>> +
>> +       list_for_each_entry(buf, &inst->dpbbufs, list) {
>> +               struct hfi_frame_data fdata;
>> +
>> +               memset(&fdata, 0, sizeof(fdata));
>> +               fdata.alloc_len = buf->size;
>> +               fdata.device_addr = buf->da;
>> +               fdata.buffer_type = buf->type;
>> +
>> +               ret = hfi_session_process_buf(inst, &fdata);
>> +               if (ret)
>> +                       goto fail;
>> +       }
>> +
>> +fail:
>> +       return ret;
>> +}
>> +
>> +int venus_helper_free_dpb_bufs(struct venus_inst *inst)
>> +{
>> +       struct intbuf *buf, *n;
>> +
>> +       if (list_empty(&inst->dpbbufs))
>> +               return 0;
> 
> Ditto.
> 
>> +
>> +       list_for_each_entry_safe(buf, n, &inst->dpbbufs, list) {
>> +               list_del_init(&buf->list);
>> +               dma_free_attrs(inst->core->dev, buf->size, buf->va, buf->da,
>> +                              buf->attrs);
>> +               kfree(buf);
>> +       }
>> +
>> +       INIT_LIST_HEAD(&inst->dpbbufs);
>> +
>> +       return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(venus_helper_free_dpb_bufs);
> [snip]
>> +int venus_helper_get_out_fmts(struct venus_inst *inst, u32 v4l2_fmt,
>> +                             u32 *out_fmt, u32 *out2_fmt, bool ubwc)
>> +{
>> +       struct venus_core *core = inst->core;
>> +       struct venus_caps *caps;
>> +       u32 ubwc_fmt, fmt = to_hfi_raw_fmt(v4l2_fmt);
>> +       bool found, found_ubwc;
>> +
>> +       *out_fmt = *out2_fmt = 0;
>> +
>> +       if (!fmt)
>> +               return -EINVAL;
>> +
>> +       caps = venus_caps_by_codec(core, inst->hfi_codec, inst->session_type);
>> +       if (!caps)
>> +               return -EINVAL;
>> +
>> +       if (ubwc) {
>> +               ubwc_fmt = fmt | HFI_COLOR_FORMAT_UBWC_BASE;
> 
> Does the UBWC base format have to be the same as fmt? Looking at
> HFI_COLOR_FORMAT_* macros, UBWC variants seem to exist only for few
> selected raw formats, for example there is none for NV21.

I think any raw format can have its UBWC variant. And yes we have only
one macro but we are checking against parsed capabilities from firmware
where the supported formats are stored.

-- 
regards,
Stan

  parent reply	other threads:[~2018-07-02 12:43 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-15  7:58 [PATCH v2 00/29] Venus updates Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 01/29] venus: hfi_msgs: correct pointer increment Stanimir Varbanov
2018-05-18  8:57   ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 02/29] venus: hfi: preparation to support venus 4xx Stanimir Varbanov
2018-05-18  9:44   ` Tomasz Figa
2018-05-21 14:25     ` Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 03/29] venus: hfi: update sequence event to handle more properties Stanimir Varbanov
2018-05-18 13:53   ` Tomasz Figa
2018-05-21 14:31     ` Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 04/29] venus: hfi_cmds: add set_properties for 4xx version Stanimir Varbanov
2018-05-18 14:16   ` Tomasz Figa
2018-05-21 14:53     ` Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 05/29] venus: hfi: support session continue " Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 06/29] venus: hfi: handle buffer output2 type as well Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 07/29] venus: hfi_venus: add halt AXI support for Venus 4xx Stanimir Varbanov
2018-05-18 14:23   ` Tomasz Figa
2018-05-21 12:17     ` Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 08/29] venus: hfi_venus: fix suspend function for venus 3xx versions Stanimir Varbanov
2018-05-18 15:14   ` Tomasz Figa
2018-05-21 12:18     ` Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 09/29] venus: hfi_venus: move set of default properties to core init Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 10/29] venus: hfi_venus: add suspend functionality for Venus 4xx Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 11/29] venus: venc,vdec: adds clocks needed for venus 4xx Stanimir Varbanov
2018-05-24  6:11   ` Tomasz Figa
2018-05-28  8:47     ` Stanimir Varbanov
2018-05-31  6:50       ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 12/29] venus: add common capability parser Stanimir Varbanov
2018-05-24 14:16   ` Tomasz Figa
2018-05-30 16:21     ` Stanimir Varbanov
2018-05-31  7:06       ` Tomasz Figa
2018-07-02  9:23         ` Tomasz Figa
2018-07-02  9:59           ` Stanimir Varbanov
2018-07-02 10:05             ` Tomasz Figa
2018-07-02 11:00               ` Stanimir Varbanov
2018-07-05  9:45               ` Stanimir Varbanov
2018-07-05 10:14                 ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 13/29] venus: helpers: make a commmon function for power_enable Stanimir Varbanov
2018-05-31  7:34   ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 14/29] venus: core: delete not used flag for buffer mode Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 15/29] venus: helpers: rename a helper function and use buffer mode from caps Stanimir Varbanov
2018-05-31  7:59   ` Tomasz Figa
2018-05-31  8:23     ` Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 16/29] venus: add a helper function to set dynamic buffer mode Stanimir Varbanov
2018-05-31  8:56   ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 17/29] venus: add helper function to set actual buffer size Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 18/29] venus: delete no longer used bufmode flag from instance Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 19/29] venus: helpers: add buffer type argument to a helper Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 20/29] venus: helpers: add a new helper to set raw format Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 21/29] venus: helpers,vdec,venc: add helpers to set work mode and core usage Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 22/29] venus: helpers: extend set_num_bufs helper with one more argument Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 23/29] venus: helpers: add a helper to return opb buffer sizes Stanimir Varbanov
2018-05-31  9:20   ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 24/29] venus: vdec: get required input buffers as well Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 25/29] venus: vdec: new function for output configuration Stanimir Varbanov
2018-05-31  9:27   ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 26/29] venus: move frame size calculations in common place Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 27/29] venus: implementing multi-stream support Stanimir Varbanov
2018-05-15  8:17   ` Hans Verkuil
2018-05-15  9:40     ` Stanimir Varbanov
2018-05-18 10:00   ` [PATCH v3 " Stanimir Varbanov
2018-05-31  9:51   ` [PATCH v2 " Tomasz Figa
2018-07-02  9:30     ` Tomasz Figa
2018-07-02 12:43     ` Stanimir Varbanov [this message]
2018-07-02 12:52       ` Tomasz Figa
2018-05-15  7:58 ` [PATCH v2 28/29] venus: add sdm845 compatible and resource data Stanimir Varbanov
2018-05-15  7:58 ` [PATCH v2 29/29] venus: add HEVC codec support Stanimir Varbanov
2018-05-15  8:19 ` [PATCH v2 00/29] Venus updates Hans Verkuil
2018-05-31  9:55 ` Tomasz Figa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=394e5547-9b85-604f-ee9e-fdb5ea2f4237@linaro.org \
    --to=stanimir.varbanov@linaro.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=tfiga@chromium.org \
    --cc=vgarodia@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.