mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 05:02:12 +00:00
media: venus: add handling of bit depth change from firmware
Set opb format to TP10_UWC and dpb to client set format when bit depth change to 10 bit is detecting by firmware. Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com> Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
58b64dd09f
commit
996d215547
@ -1765,6 +1765,22 @@ 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, fmt);
|
||||
if (found_ubwc && found) {
|
||||
/*
|
||||
* Hard-code DPB buffers to be 10bit UBWC
|
||||
* until V4L2 is able to expose compressed/tiled
|
||||
* formats to applications.
|
||||
*/
|
||||
*out_fmt = HFI_COLOR_FORMAT_YUV420_TP10_UBWC;
|
||||
*out2_fmt = fmt;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (ubwc) {
|
||||
ubwc_fmt = fmt | HFI_COLOR_FORMAT_UBWC_BASE;
|
||||
found_ubwc = find_fmt_from_caps(caps, HFI_BUFFER_OUTPUT,
|
||||
|
@ -736,6 +736,9 @@ static int vdec_set_work_route(struct venus_inst *inst)
|
||||
}
|
||||
|
||||
#define is_ubwc_fmt(fmt) (!!((fmt) & HFI_COLOR_FORMAT_UBWC_BASE))
|
||||
#define is_10bit_ubwc_fmt(fmt) (!!((fmt) & HFI_COLOR_FORMAT_10_BIT_BASE & \
|
||||
HFI_COLOR_FORMAT_UBWC_BASE))
|
||||
|
||||
|
||||
static int vdec_output_conf(struct venus_inst *inst)
|
||||
{
|
||||
@ -783,7 +786,7 @@ static int vdec_output_conf(struct venus_inst *inst)
|
||||
inst->opb_fmt = out2_fmt;
|
||||
inst->dpb_buftype = HFI_BUFFER_OUTPUT;
|
||||
inst->dpb_fmt = out_fmt;
|
||||
} else if (is_ubwc_fmt(out2_fmt)) {
|
||||
} else if (is_ubwc_fmt(out2_fmt) || is_10bit_ubwc_fmt(out_fmt)) {
|
||||
inst->opb_buftype = HFI_BUFFER_OUTPUT;
|
||||
inst->opb_fmt = out_fmt;
|
||||
inst->dpb_buftype = HFI_BUFFER_OUTPUT2;
|
||||
|
Loading…
Reference in New Issue
Block a user