Re: [PATCH v8 07/13] [media] vb2: mark codec drivers as unordered
On 03/09/2018 09:49 AM, Gustavo Padovan wrote: > From: Gustavo Padovan> > In preparation to have full support to explicit fence we are > marking codec as non-ordered preventively. It is easier and safer from an > uAPI point of view to move from unordered to ordered than the opposite. Same comment as for the cobalt driver: if you mark these drivers as unordered, shouldn't you mark the compressed formats as UNORDERED as well? Should we perhaps do this by default for compressed formats (except MJPEG) in v4l2-ioctl.c? Thus requiring drivers to clear the flag if they are actually ordered. > > Signed-off-by: Gustavo Padovan > --- > drivers/media/platform/coda/coda-common.c | 1 + > drivers/media/platform/exynos-gsc/gsc-m2m.c| 1 + > drivers/media/platform/exynos4-is/fimc-m2m.c | 1 + > drivers/media/platform/m2m-deinterlace.c | 1 + This is a deinterlaced, so this should be ordered. > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1 + JPEG is ordered. > drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c | 1 + > drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c | 1 + > drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 1 + > drivers/media/platform/mx2_emmaprp.c | 1 + I believe this is also not a codec, so ordered, > drivers/media/platform/qcom/venus/vdec.c | 1 + > drivers/media/platform/qcom/venus/venc.c | 1 + > drivers/media/platform/rcar_fdp1.c | 1 + > drivers/media/platform/rcar_jpu.c | 1 + I don't think these two R-Car drivers are codecs, so these would be ordered (the 2nd is a JPEG codec, not sure about the first one). > drivers/media/platform/rockchip/rga/rga-buf.c | 1 + Not a codec driver, this is ordered, > drivers/media/platform/s5p-g2d/g2d.c | 1 + Not sure about this one, I don't think it is a codec driver, > drivers/media/platform/s5p-jpeg/jpeg-core.c| 1 + MJPEG, so ordered, > drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 1 + > drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 1 + > drivers/media/platform/sh_veu.c| 1 + Not a codec, so ordered, > drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 1 + > drivers/media/platform/ti-vpe/vpe.c| 1 + > drivers/media/platform/vim2m.c | 1 + Same for these three. Regards, Hans > 22 files changed, 22 insertions(+) > > diff --git a/drivers/media/platform/coda/coda-common.c > b/drivers/media/platform/coda/coda-common.c > index 04e35d70ce2e..6deb29fe6eb7 100644 > --- a/drivers/media/platform/coda/coda-common.c > +++ b/drivers/media/platform/coda/coda-common.c > @@ -1649,6 +1649,7 @@ static const struct vb2_ops coda_qops = { > .stop_streaming = coda_stop_streaming, > .wait_prepare = vb2_ops_wait_prepare, > .wait_finish= vb2_ops_wait_finish, > + .is_unordered = vb2_ops_set_unordered, > }; > > static int coda_s_ctrl(struct v4l2_ctrl *ctrl) > diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c > b/drivers/media/platform/exynos-gsc/gsc-m2m.c > index e9ff27949a91..10c3e4659d38 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c > +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c > @@ -286,6 +286,7 @@ static const struct vb2_ops gsc_m2m_qops = { > .wait_finish = vb2_ops_wait_finish, > .stop_streaming = gsc_m2m_stop_streaming, > .start_streaming = gsc_m2m_start_streaming, > + .is_unordered= vb2_ops_set_unordered, > }; > > static int gsc_m2m_querycap(struct file *file, void *fh, > diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c > b/drivers/media/platform/exynos4-is/fimc-m2m.c > index a19f8b164a47..dfc487a582c0 100644 > --- a/drivers/media/platform/exynos4-is/fimc-m2m.c > +++ b/drivers/media/platform/exynos4-is/fimc-m2m.c > @@ -227,6 +227,7 @@ static const struct vb2_ops fimc_qops = { > .wait_finish = vb2_ops_wait_finish, > .stop_streaming = stop_streaming, > .start_streaming = start_streaming, > + .is_unordered= vb2_ops_set_unordered, > }; > > /* > diff --git a/drivers/media/platform/m2m-deinterlace.c > b/drivers/media/platform/m2m-deinterlace.c > index 1e4195144f39..35a0f45d2a51 100644 > --- a/drivers/media/platform/m2m-deinterlace.c > +++ b/drivers/media/platform/m2m-deinterlace.c > @@ -856,6 +856,7 @@ static const struct vb2_ops deinterlace_qops = { > .queue_setup = deinterlace_queue_setup, > .buf_prepare = deinterlace_buf_prepare, > .buf_queue = deinterlace_buf_queue, > + .is_unordered= vb2_ops_set_unordered, > }; > > static int queue_init(void *priv, struct vb2_queue *src_vq, > diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > index 226f90886484..34a4b5b2e1b5 100644 > ---
Re: [PATCH v8 07/13] [media] vb2: mark codec drivers as unordered
Le vendredi 09 mars 2018 à 14:49 -0300, Gustavo Padovan a écrit : > From: Gustavo Padovan> > In preparation to have full support to explicit fence we are > marking codec as non-ordered preventively. It is easier and safer from an The usage of "codec" is soso > uAPI point of view to move from unordered to ordered than the opposite. > > Signed-off-by: Gustavo Padovan > --- > drivers/media/platform/coda/coda-common.c | 1 + > drivers/media/platform/exynos-gsc/gsc-m2m.c| 1 + > drivers/media/platform/exynos4-is/fimc-m2m.c | 1 + > drivers/media/platform/m2m-deinterlace.c | 1 + ... these tree are not codecs. Did you just set all M2M drivers are unordered ? > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1 + > drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c | 1 + > drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c | 1 + > drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 1 + > drivers/media/platform/mx2_emmaprp.c | 1 + > drivers/media/platform/qcom/venus/vdec.c | 1 + > drivers/media/platform/qcom/venus/venc.c | 1 + > drivers/media/platform/rcar_fdp1.c | 1 + > drivers/media/platform/rcar_jpu.c | 1 + > drivers/media/platform/rockchip/rga/rga-buf.c | 1 + > drivers/media/platform/s5p-g2d/g2d.c | 1 + If this 2D blitter driver picks input buffers in random order, we have a serious problem. > drivers/media/platform/s5p-jpeg/jpeg-core.c| 1 + > drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 1 + > drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 1 + > drivers/media/platform/sh_veu.c| 1 + > drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 1 + > drivers/media/platform/ti-vpe/vpe.c| 1 + > drivers/media/platform/vim2m.c | 1 + > 22 files changed, 22 insertions(+) > > diff --git a/drivers/media/platform/coda/coda-common.c > b/drivers/media/platform/coda/coda-common.c > index 04e35d70ce2e..6deb29fe6eb7 100644 > --- a/drivers/media/platform/coda/coda-common.c > +++ b/drivers/media/platform/coda/coda-common.c > @@ -1649,6 +1649,7 @@ static const struct vb2_ops coda_qops = { > .stop_streaming = coda_stop_streaming, > .wait_prepare = vb2_ops_wait_prepare, > .wait_finish= vb2_ops_wait_finish, > + .is_unordered = vb2_ops_set_unordered, > }; > > static int coda_s_ctrl(struct v4l2_ctrl *ctrl) > diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c > b/drivers/media/platform/exynos-gsc/gsc-m2m.c > index e9ff27949a91..10c3e4659d38 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c > +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c > @@ -286,6 +286,7 @@ static const struct vb2_ops gsc_m2m_qops = { > .wait_finish = vb2_ops_wait_finish, > .stop_streaming = gsc_m2m_stop_streaming, > .start_streaming = gsc_m2m_start_streaming, > + .is_unordered= vb2_ops_set_unordered, > }; > > static int gsc_m2m_querycap(struct file *file, void *fh, > diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c > b/drivers/media/platform/exynos4-is/fimc-m2m.c > index a19f8b164a47..dfc487a582c0 100644 > --- a/drivers/media/platform/exynos4-is/fimc-m2m.c > +++ b/drivers/media/platform/exynos4-is/fimc-m2m.c > @@ -227,6 +227,7 @@ static const struct vb2_ops fimc_qops = { > .wait_finish = vb2_ops_wait_finish, > .stop_streaming = stop_streaming, > .start_streaming = start_streaming, > + .is_unordered= vb2_ops_set_unordered, > }; > > /* > diff --git a/drivers/media/platform/m2m-deinterlace.c > b/drivers/media/platform/m2m-deinterlace.c > index 1e4195144f39..35a0f45d2a51 100644 > --- a/drivers/media/platform/m2m-deinterlace.c > +++ b/drivers/media/platform/m2m-deinterlace.c > @@ -856,6 +856,7 @@ static const struct vb2_ops deinterlace_qops = { > .queue_setup = deinterlace_queue_setup, > .buf_prepare = deinterlace_buf_prepare, > .buf_queue = deinterlace_buf_queue, > + .is_unordered= vb2_ops_set_unordered, > }; > > static int queue_init(void *priv, struct vb2_queue *src_vq, > diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > index 226f90886484..34a4b5b2e1b5 100644 > --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > @@ -764,6 +764,7 @@ static const struct vb2_ops mtk_jpeg_qops = { > .wait_finish= vb2_ops_wait_finish, > .start_streaming= mtk_jpeg_start_streaming, > .stop_streaming = mtk_jpeg_stop_streaming, > + .is_unordered = vb2_ops_set_unordered, > }; > > static void mtk_jpeg_set_dec_src(struct mtk_jpeg_ctx *ctx, > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c >
[PATCH v8 07/13] [media] vb2: mark codec drivers as unordered
From: Gustavo PadovanIn preparation to have full support to explicit fence we are marking codec as non-ordered preventively. It is easier and safer from an uAPI point of view to move from unordered to ordered than the opposite. Signed-off-by: Gustavo Padovan --- drivers/media/platform/coda/coda-common.c | 1 + drivers/media/platform/exynos-gsc/gsc-m2m.c| 1 + drivers/media/platform/exynos4-is/fimc-m2m.c | 1 + drivers/media/platform/m2m-deinterlace.c | 1 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1 + drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c | 1 + drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c | 1 + drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 1 + drivers/media/platform/mx2_emmaprp.c | 1 + drivers/media/platform/qcom/venus/vdec.c | 1 + drivers/media/platform/qcom/venus/venc.c | 1 + drivers/media/platform/rcar_fdp1.c | 1 + drivers/media/platform/rcar_jpu.c | 1 + drivers/media/platform/rockchip/rga/rga-buf.c | 1 + drivers/media/platform/s5p-g2d/g2d.c | 1 + drivers/media/platform/s5p-jpeg/jpeg-core.c| 1 + drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 1 + drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 1 + drivers/media/platform/sh_veu.c| 1 + drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 1 + drivers/media/platform/ti-vpe/vpe.c| 1 + drivers/media/platform/vim2m.c | 1 + 22 files changed, 22 insertions(+) diff --git a/drivers/media/platform/coda/coda-common.c b/drivers/media/platform/coda/coda-common.c index 04e35d70ce2e..6deb29fe6eb7 100644 --- a/drivers/media/platform/coda/coda-common.c +++ b/drivers/media/platform/coda/coda-common.c @@ -1649,6 +1649,7 @@ static const struct vb2_ops coda_qops = { .stop_streaming = coda_stop_streaming, .wait_prepare = vb2_ops_wait_prepare, .wait_finish= vb2_ops_wait_finish, + .is_unordered = vb2_ops_set_unordered, }; static int coda_s_ctrl(struct v4l2_ctrl *ctrl) diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c index e9ff27949a91..10c3e4659d38 100644 --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c @@ -286,6 +286,7 @@ static const struct vb2_ops gsc_m2m_qops = { .wait_finish = vb2_ops_wait_finish, .stop_streaming = gsc_m2m_stop_streaming, .start_streaming = gsc_m2m_start_streaming, + .is_unordered= vb2_ops_set_unordered, }; static int gsc_m2m_querycap(struct file *file, void *fh, diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c b/drivers/media/platform/exynos4-is/fimc-m2m.c index a19f8b164a47..dfc487a582c0 100644 --- a/drivers/media/platform/exynos4-is/fimc-m2m.c +++ b/drivers/media/platform/exynos4-is/fimc-m2m.c @@ -227,6 +227,7 @@ static const struct vb2_ops fimc_qops = { .wait_finish = vb2_ops_wait_finish, .stop_streaming = stop_streaming, .start_streaming = start_streaming, + .is_unordered= vb2_ops_set_unordered, }; /* diff --git a/drivers/media/platform/m2m-deinterlace.c b/drivers/media/platform/m2m-deinterlace.c index 1e4195144f39..35a0f45d2a51 100644 --- a/drivers/media/platform/m2m-deinterlace.c +++ b/drivers/media/platform/m2m-deinterlace.c @@ -856,6 +856,7 @@ static const struct vb2_ops deinterlace_qops = { .queue_setup = deinterlace_queue_setup, .buf_prepare = deinterlace_buf_prepare, .buf_queue = deinterlace_buf_queue, + .is_unordered= vb2_ops_set_unordered, }; static int queue_init(void *priv, struct vb2_queue *src_vq, diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c index 226f90886484..34a4b5b2e1b5 100644 --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -764,6 +764,7 @@ static const struct vb2_ops mtk_jpeg_qops = { .wait_finish= vb2_ops_wait_finish, .start_streaming= mtk_jpeg_start_streaming, .stop_streaming = mtk_jpeg_stop_streaming, + .is_unordered = vb2_ops_set_unordered, }; static void mtk_jpeg_set_dec_src(struct mtk_jpeg_ctx *ctx, diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c index 583d47724ee8..f3bb9f277f55 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c @@ -629,6 +629,7 @@ static const struct vb2_ops mtk_mdp_m2m_qops = { .wait_finish = mtk_mdp_ctx_lock, .stop_streaming = mtk_mdp_m2m_stop_streaming, .start_streaming = mtk_mdp_m2m_start_streaming, + .is_unordered=