Message ID | 1683193152-5808-3-git-send-email-quic_dikshita@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fix decoder issues with firmware version check | expand |
On 4.05.2023 11:39, Dikshita Agarwal wrote: > VP9 supports resolution change at interframe. > Currenlty, if sequence change is detected at interframe and > resources are sufficient, sequence change event is not raised > by firmware to driver until the next keyframe. > This change add the HFI to notify the sequence change in this > case to driver. > > Signed-off-by: Vikash Garodia <quic_vgarodia@quicinc.com> > Signed-off-by: Viswanath Boma <quic_vboma@quicinc.com> > Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com> > Tested-by: Nathan Hebert <nhebert@chromium.org> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Konrad > drivers/media/platform/qcom/venus/hfi_cmds.c | 1 + > drivers/media/platform/qcom/venus/hfi_helper.h | 2 ++ > drivers/media/platform/qcom/venus/vdec.c | 8 ++++++++ > 3 files changed, 11 insertions(+) > > diff --git a/drivers/media/platform/qcom/venus/hfi_cmds.c b/drivers/media/platform/qcom/venus/hfi_cmds.c > index 930b743..e2539b5 100644 > --- a/drivers/media/platform/qcom/venus/hfi_cmds.c > +++ b/drivers/media/platform/qcom/venus/hfi_cmds.c > @@ -521,6 +521,7 @@ static int pkt_session_set_property_1x(struct hfi_session_set_property_pkt *pkt, > pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en); > break; > } > + case HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT: > case HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER: { > struct hfi_enable *in = pdata; > struct hfi_enable *en = prop_data; > diff --git a/drivers/media/platform/qcom/venus/hfi_helper.h b/drivers/media/platform/qcom/venus/hfi_helper.h > index d2d6719..2e03b6e 100644 > --- a/drivers/media/platform/qcom/venus/hfi_helper.h > +++ b/drivers/media/platform/qcom/venus/hfi_helper.h > @@ -469,6 +469,8 @@ > #define HFI_PROPERTY_PARAM_VDEC_PIXEL_BITDEPTH 0x1003007 > #define HFI_PROPERTY_PARAM_VDEC_PIC_STRUCT 0x1003009 > #define HFI_PROPERTY_PARAM_VDEC_COLOUR_SPACE 0x100300a > +#define HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT \ > + 0x100300b > > /* > * HFI_PROPERTY_CONFIG_VDEC_COMMON_START > diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c > index 4ceaba3..f0394b9 100644 > --- a/drivers/media/platform/qcom/venus/vdec.c > +++ b/drivers/media/platform/qcom/venus/vdec.c > @@ -671,6 +671,14 @@ static int vdec_set_properties(struct venus_inst *inst) > return ret; > } > > + /* Enabling sufficient sequence change support for VP9 */ > + if (is_fw_rev_or_newer(inst->core, 5, 4, 51)) { > + ptype = HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT; > + ret = hfi_session_set_property(inst, ptype, &en); > + if (ret) > + return ret; > + } > + > ptype = HFI_PROPERTY_PARAM_VDEC_CONCEAL_COLOR; > conceal = ctr->conceal_color & 0xffff; > conceal |= ((ctr->conceal_color >> 16) & 0xffff) << 10;
diff --git a/drivers/media/platform/qcom/venus/hfi_cmds.c b/drivers/media/platform/qcom/venus/hfi_cmds.c index 930b743..e2539b5 100644 --- a/drivers/media/platform/qcom/venus/hfi_cmds.c +++ b/drivers/media/platform/qcom/venus/hfi_cmds.c @@ -521,6 +521,7 @@ static int pkt_session_set_property_1x(struct hfi_session_set_property_pkt *pkt, pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en); break; } + case HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT: case HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER: { struct hfi_enable *in = pdata; struct hfi_enable *en = prop_data; diff --git a/drivers/media/platform/qcom/venus/hfi_helper.h b/drivers/media/platform/qcom/venus/hfi_helper.h index d2d6719..2e03b6e 100644 --- a/drivers/media/platform/qcom/venus/hfi_helper.h +++ b/drivers/media/platform/qcom/venus/hfi_helper.h @@ -469,6 +469,8 @@ #define HFI_PROPERTY_PARAM_VDEC_PIXEL_BITDEPTH 0x1003007 #define HFI_PROPERTY_PARAM_VDEC_PIC_STRUCT 0x1003009 #define HFI_PROPERTY_PARAM_VDEC_COLOUR_SPACE 0x100300a +#define HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT \ + 0x100300b /* * HFI_PROPERTY_CONFIG_VDEC_COMMON_START diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c index 4ceaba3..f0394b9 100644 --- a/drivers/media/platform/qcom/venus/vdec.c +++ b/drivers/media/platform/qcom/venus/vdec.c @@ -671,6 +671,14 @@ static int vdec_set_properties(struct venus_inst *inst) return ret; } + /* Enabling sufficient sequence change support for VP9 */ + if (is_fw_rev_or_newer(inst->core, 5, 4, 51)) { + ptype = HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT; + ret = hfi_session_set_property(inst, ptype, &en); + if (ret) + return ret; + } + ptype = HFI_PROPERTY_PARAM_VDEC_CONCEAL_COLOR; conceal = ctr->conceal_color & 0xffff; conceal |= ((ctr->conceal_color >> 16) & 0xffff) << 10;