Message ID | 1394711056-10878-2-git-send-email-archit@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> From: Archit Taneja [mailto:archit@ti.com] > Sent: Thursday, March 13, 2014 12:44 PM > > VPE has a ctrl parameter which decides how many mem to mem transactions > the active job from the job queue can perform. > > The driver's job_ready() made sure that the number of ready source > buffers are sufficient for the job to execute successfully. But it > didn't make sure if there are sufficient ready destination buffers in > the capture queue for the VPE output. > > If the time taken by VPE to process a single frame is really slow, then > it's possible that we don't need to imply such a restriction on the dst > queue, but really fast transactions(small resolution, no de-interlacing) > may cause us to hit the condition where we don't have any free buffers > for the VPE to write on. > > Add the extra check in job_ready() to make sure we have the sufficient > amount of destination buffers. > > Signed-off-by: Archit Taneja <archit@ti.com> Acked-by: Kamil Debski <k.debski@samsung.com> > --- > drivers/media/platform/ti-vpe/vpe.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/media/platform/ti-vpe/vpe.c > b/drivers/media/platform/ti-vpe/vpe.c > index 7a77a5b..f3143ac 100644 > --- a/drivers/media/platform/ti-vpe/vpe.c > +++ b/drivers/media/platform/ti-vpe/vpe.c > @@ -887,6 +887,9 @@ static int job_ready(void *priv) > if (v4l2_m2m_num_src_bufs_ready(ctx->m2m_ctx) < needed) > return 0; > > + if (v4l2_m2m_num_dst_bufs_ready(ctx->m2m_ctx) < needed) > + return 0; > + > return 1; > } > > -- > 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c index 7a77a5b..f3143ac 100644 --- a/drivers/media/platform/ti-vpe/vpe.c +++ b/drivers/media/platform/ti-vpe/vpe.c @@ -887,6 +887,9 @@ static int job_ready(void *priv) if (v4l2_m2m_num_src_bufs_ready(ctx->m2m_ctx) < needed) return 0; + if (v4l2_m2m_num_dst_bufs_ready(ctx->m2m_ctx) < needed) + return 0; + return 1; }
VPE has a ctrl parameter which decides how many mem to mem transactions the active job from the job queue can perform. The driver's job_ready() made sure that the number of ready source buffers are sufficient for the job to execute successfully. But it didn't make sure if there are sufficient ready destination buffers in the capture queue for the VPE output. If the time taken by VPE to process a single frame is really slow, then it's possible that we don't need to imply such a restriction on the dst queue, but really fast transactions(small resolution, no de-interlacing) may cause us to hit the condition where we don't have any free buffers for the VPE to write on. Add the extra check in job_ready() to make sure we have the sufficient amount of destination buffers. Signed-off-by: Archit Taneja <archit@ti.com> --- drivers/media/platform/ti-vpe/vpe.c | 3 +++ 1 file changed, 3 insertions(+)