[libcamera-devel,RFC] android: camera_device: Drop HAL_PIXEL_FORMAT_RAW_OPAQUE support
diff mbox series

Message ID 20210614104553.497626-1-hiroh@chromium.org
State Accepted
Commit 1fea2730a162905794277b7c21dee283c9cd3a02
Headers show
Series
  • [libcamera-devel,RFC] android: camera_device: Drop HAL_PIXEL_FORMAT_RAW_OPAQUE support
Related show

Commit Message

Hirokazu Honda June 14, 2021, 10:45 a.m. UTC
HAL_PIXEL_FORMAT_RAW_OPAQUE is requested only for
Zero-Shutter-Lag (ZSL). ZSL requires RAW and YUV reprocessing.
Since either of them is not supported by libcamera, supporting
RAW_OPAQUE format doesn't make sense. Drop the format from the
supported format list.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
---
 src/android/camera_device.cpp | 11 -----------
 1 file changed, 11 deletions(-)

Comments

Laurent Pinchart June 14, 2021, 10:44 p.m. UTC | #1
Hi Hiro,

Thank you for the patch.

On Mon, Jun 14, 2021 at 07:45:53PM +0900, Hirokazu Honda wrote:
> HAL_PIXEL_FORMAT_RAW_OPAQUE is requested only for
> Zero-Shutter-Lag (ZSL). ZSL requires RAW and YUV reprocessing.
> Since either of them is not supported by libcamera, supporting
> RAW_OPAQUE format doesn't make sense. Drop the format from the
> supported format list.
> 
> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>

This looks sensible to me. Given that the formats below are specific to
the IPU3, the code would need to be reworked when we'll implement ZSL
support anyway.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

I'll wait for a second tag before merging.

> ---
>  src/android/camera_device.cpp | 11 -----------
>  1 file changed, 11 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index fe332ec3..14022aed 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -120,17 +120,6 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
>  			false,
>  			"RAW16"
>  		}
> -	}, {
> -		HAL_PIXEL_FORMAT_RAW_OPAQUE, {
> -			{
> -				formats::SBGGR10_IPU3,
> -				formats::SGBRG10_IPU3,
> -				formats::SGRBG10_IPU3,
> -				formats::SRGGB10_IPU3
> -			},
> -			false,
> -			"RAW_OPAQUE"
> -		}
>  	},
>  };
>
Hirokazu Honda June 15, 2021, 7:44 a.m. UTC | #2
Hi Laurent,

On Tue, Jun 15, 2021 at 7:44 AM Laurent Pinchart <
laurent.pinchart@ideasonboard.com> wrote:

> Hi Hiro,
>
> Thank you for the patch.
>
> On Mon, Jun 14, 2021 at 07:45:53PM +0900, Hirokazu Honda wrote:
> > HAL_PIXEL_FORMAT_RAW_OPAQUE is requested only for
> > Zero-Shutter-Lag (ZSL). ZSL requires RAW and YUV reprocessing.
> > Since either of them is not supported by libcamera, supporting
> > RAW_OPAQUE format doesn't make sense. Drop the format from the
> > supported format list.
> >
> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
>
> This looks sensible to me. Given that the formats below are specific to
> the IPU3, the code would need to be reworked when we'll implement ZSL
> support anyway.
>
>
Just note:
For ZSL capture request, the format is either RAW_OPAQUE or
IMPLEMENTATION_DEFINED.
In ChromeOS, IMPLEMENTATION_DEFINED is used for ZSL.
Besides, gralloc implementation in ChromeOS doesn't support RAW_OPAQUE.
So we should not list this format in supported formats at least in ChromeOS.
We may want to support RAW_OPAQUE for other platforms though.

-Hiro

> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> I'll wait for a second tag before merging.
>
> > ---
> >  src/android/camera_device.cpp | 11 -----------
> >  1 file changed, 11 deletions(-)
> >
> > diff --git a/src/android/camera_device.cpp
> b/src/android/camera_device.cpp
> > index fe332ec3..14022aed 100644
> > --- a/src/android/camera_device.cpp
> > +++ b/src/android/camera_device.cpp
> > @@ -120,17 +120,6 @@ const std::map<int, const Camera3Format>
> camera3FormatsMap = {
> >                       false,
> >                       "RAW16"
> >               }
> > -     }, {
> > -             HAL_PIXEL_FORMAT_RAW_OPAQUE, {
> > -                     {
> > -                             formats::SBGGR10_IPU3,
> > -                             formats::SGBRG10_IPU3,
> > -                             formats::SGRBG10_IPU3,
> > -                             formats::SRGGB10_IPU3
> > -                     },
> > -                     false,
> > -                     "RAW_OPAQUE"
> > -             }
> >       },
> >  };
> >
>
> --
> Regards,
>
> Laurent Pinchart
>
Jacopo Mondi June 15, 2021, 7:46 a.m. UTC | #3
Hello,

On Tue, Jun 15, 2021 at 01:44:12AM +0300, Laurent Pinchart wrote:
> Hi Hiro,
>
> Thank you for the patch.
>
> On Mon, Jun 14, 2021 at 07:45:53PM +0900, Hirokazu Honda wrote:
> > HAL_PIXEL_FORMAT_RAW_OPAQUE is requested only for
> > Zero-Shutter-Lag (ZSL). ZSL requires RAW and YUV reprocessing.
> > Since either of them is not supported by libcamera, supporting
> > RAW_OPAQUE format doesn't make sense. Drop the format from the
> > supported format list.
> >
> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
>
> This looks sensible to me. Given that the formats below are specific to
> the IPU3, the code would need to be reworked when we'll implement ZSL
> support anyway.
>
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> I'll wait for a second tag before merging.

Have mine
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Those are IPU3 specific formats, not sure they belong here

>
> > ---
> >  src/android/camera_device.cpp | 11 -----------
> >  1 file changed, 11 deletions(-)
> >
> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> > index fe332ec3..14022aed 100644
> > --- a/src/android/camera_device.cpp
> > +++ b/src/android/camera_device.cpp
> > @@ -120,17 +120,6 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
> >  			false,
> >  			"RAW16"
> >  		}
> > -	}, {
> > -		HAL_PIXEL_FORMAT_RAW_OPAQUE, {
> > -			{
> > -				formats::SBGGR10_IPU3,
> > -				formats::SGBRG10_IPU3,
> > -				formats::SGRBG10_IPU3,
> > -				formats::SRGGB10_IPU3
> > -			},
> > -			false,
> > -			"RAW_OPAQUE"
> > -		}
> >  	},
> >  };
> >
>
> --
> Regards,
>
> Laurent Pinchart
Laurent Pinchart June 15, 2021, 10:04 a.m. UTC | #4
Hi Hiro,

On Tue, Jun 15, 2021 at 04:44:24PM +0900, Hirokazu Honda wrote:
> On Tue, Jun 15, 2021 at 7:44 AM Laurent Pinchart wrote:
> > On Mon, Jun 14, 2021 at 07:45:53PM +0900, Hirokazu Honda wrote:
> > > HAL_PIXEL_FORMAT_RAW_OPAQUE is requested only for
> > > Zero-Shutter-Lag (ZSL). ZSL requires RAW and YUV reprocessing.
> > > Since either of them is not supported by libcamera, supporting
> > > RAW_OPAQUE format doesn't make sense. Drop the format from the
> > > supported format list.
> > >
> > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> >
> > This looks sensible to me. Given that the formats below are specific to
> > the IPU3, the code would need to be reworked when we'll implement ZSL
> > support anyway.
>
> Just note:
> For ZSL capture request, the format is either RAW_OPAQUE or
> IMPLEMENTATION_DEFINED.

What's the practical difference between the two ? I'd expect both to map
to the same opaque, device-specific RAW format.

> In ChromeOS, IMPLEMENTATION_DEFINED is used for ZSL.
> Besides, gralloc implementation in ChromeOS doesn't support RAW_OPAQUE.
> So we should not list this format in supported formats at least in ChromeOS.
> We may want to support RAW_OPAQUE for other platforms though.

Is there a reason why minigbm couldn't support RAW_OPAQUE ?

> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >
> > I'll wait for a second tag before merging.
> >
> > > ---
> > >  src/android/camera_device.cpp | 11 -----------
> > >  1 file changed, 11 deletions(-)
> > >
> > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> > > index fe332ec3..14022aed 100644
> > > --- a/src/android/camera_device.cpp
> > > +++ b/src/android/camera_device.cpp
> > > @@ -120,17 +120,6 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
> > >                       false,
> > >                       "RAW16"
> > >               }
> > > -     }, {
> > > -             HAL_PIXEL_FORMAT_RAW_OPAQUE, {
> > > -                     {
> > > -                             formats::SBGGR10_IPU3,
> > > -                             formats::SGBRG10_IPU3,
> > > -                             formats::SGRBG10_IPU3,
> > > -                             formats::SRGGB10_IPU3
> > > -                     },
> > > -                     false,
> > > -                     "RAW_OPAQUE"
> > > -             }
> > >       },
> > >  };
> > >
Hirokazu Honda June 15, 2021, 10:15 a.m. UTC | #5
Hi Laurent,

On Tue, Jun 15, 2021 at 7:04 PM Laurent Pinchart <
laurent.pinchart@ideasonboard.com> wrote:

> Hi Hiro,
>
> On Tue, Jun 15, 2021 at 04:44:24PM +0900, Hirokazu Honda wrote:
> > On Tue, Jun 15, 2021 at 7:44 AM Laurent Pinchart wrote:
> > > On Mon, Jun 14, 2021 at 07:45:53PM +0900, Hirokazu Honda wrote:
> > > > HAL_PIXEL_FORMAT_RAW_OPAQUE is requested only for
> > > > Zero-Shutter-Lag (ZSL). ZSL requires RAW and YUV reprocessing.
> > > > Since either of them is not supported by libcamera, supporting
> > > > RAW_OPAQUE format doesn't make sense. Drop the format from the
> > > > supported format list.
> > > >
> > > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> > >
> > > This looks sensible to me. Given that the formats below are specific to
> > > the IPU3, the code would need to be reworked when we'll implement ZSL
> > > support anyway.
> >
> > Just note:
> > For ZSL capture request, the format is either RAW_OPAQUE or
> > IMPLEMENTATION_DEFINED.
>
> What's the practical difference between the two ? I'd expect both to map
> to the same opaque, device-specific RAW format.
>
>
+Tomasz Figa <tfiga@chromium.org>

I am not sure honestly as it is not documented anywhere.
ChromeOS camera people told me that RAW_OPAQUE is optional to support and
meant for vendor app use only.
Only IMPLEMENTATION_DEFINED needs to be supported for PRIVATE reprocessing.


> > In ChromeOS, IMPLEMENTATION_DEFINED is used for ZSL.
> > Besides, gralloc implementation in ChromeOS doesn't support RAW_OPAQUE.
> > So we should not list this format in supported formats at least in
> ChromeOS.
> > We may want to support RAW_OPAQUE for other platforms though.
>
> Is there a reason why minigbm couldn't support RAW_OPAQUE ?
>
>
It must be because we don't use the RAW_OPAQUE buffer.
Thus we don't need to support it at all.

-Hiro

> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > >
> > > I'll wait for a second tag before merging.
> > >
> > > > ---
> > > >  src/android/camera_device.cpp | 11 -----------
> > > >  1 file changed, 11 deletions(-)
> > > >
> > > > diff --git a/src/android/camera_device.cpp
> b/src/android/camera_device.cpp
> > > > index fe332ec3..14022aed 100644
> > > > --- a/src/android/camera_device.cpp
> > > > +++ b/src/android/camera_device.cpp
> > > > @@ -120,17 +120,6 @@ const std::map<int, const Camera3Format>
> camera3FormatsMap = {
> > > >                       false,
> > > >                       "RAW16"
> > > >               }
> > > > -     }, {
> > > > -             HAL_PIXEL_FORMAT_RAW_OPAQUE, {
> > > > -                     {
> > > > -                             formats::SBGGR10_IPU3,
> > > > -                             formats::SGBRG10_IPU3,
> > > > -                             formats::SGRBG10_IPU3,
> > > > -                             formats::SRGGB10_IPU3
> > > > -                     },
> > > > -                     false,
> > > > -                     "RAW_OPAQUE"
> > > > -             }
> > > >       },
> > > >  };
> > > >
>
> --
> Regards,
>
> Laurent Pinchart
>

Patch
diff mbox series

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index fe332ec3..14022aed 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -120,17 +120,6 @@  const std::map<int, const Camera3Format> camera3FormatsMap = {
 			false,
 			"RAW16"
 		}
-	}, {
-		HAL_PIXEL_FORMAT_RAW_OPAQUE, {
-			{
-				formats::SBGGR10_IPU3,
-				formats::SGBRG10_IPU3,
-				formats::SGRBG10_IPU3,
-				formats::SRGGB10_IPU3
-			},
-			false,
-			"RAW_OPAQUE"
-		}
 	},
 };