[libcamera-devel] [RFC] [PATCH 0/3] Add an option to enable rendering YUV frame by OpenGL shader

Niklas Söderlund niklas.soderlund at ragnatech.se
Fri Mar 20 14:50:37 CET 2020


Hi Show,

Thanks for your work!

On 2020-03-20 16:50:26 +0800, Show Liu wrote:
> Hi all,
>   I would like to share my adventure on qcam. 
> I added an option to enable rendering YUV frame by OpenGL shader for qcam.
> Honestly, it's still in progress, and only support NV12 format at present. 
> However the improvement is obviously. I logged the messages below when qcam running.
> https://pastebin.linaro.org/view/20d91f21
> In 1280x800 mode:
> format convert by CPU is around ~4 fps, rendering by GPU up to ~30.0 fps
> In 1920x1080 mode:
> format convert by CPU is around ~2 fps, rendering by GPU still up to ~30.0 fps

I have tested this and I get similar result on different device using 
Panfrost GPU, really nice work!

One general observation is that I do get a graphic artifact in the qcam 
GUI, covering about half the dropdown box for camera selection. If I 
specify --opengl the artifact is filled with black, without --opengl 
it's filled with white. If I run without the OpenGL patches I get no 
artifact. I'm not sure if this is an effect of the panfrost driver or 
not.

I first tried applying the patches to latest libcamera master, but they 
did not apply. It was easy to solve but you might want to pull in the 
latest changes to qcam so you don't have to solve conflicts later.

I will review the individual patches but just wanted to let you know how 
happy I am seeing and testing this series ;-)

> 
>   The improvement still in progress, including more YUV formats support ... etc.
> And some parts I added are not in good shape, I am trying to make it better. 
> So I appreciate any review conments and suggestion.
> 
> It's also available on below.
> https://github.com/showliu/libcamera/commits/qcam_opengl_hack2
> 
> I tested with kernel 5.5rc5 + Panfrost GPU driver on Rock Pi 4B platform.
> 
> Show Liu (3):
>   qcam: Added statusbar to show the camera stream configuration
>   qcam: Added opengl widget class for qcam
>   qcam: added an option to enable rendering via OpenGL shader
> 
>  src/qcam/glwidget.cpp    | 213 +++++++++++++++++++++++++++++++++++++++
>  src/qcam/glwidget.h      |  76 ++++++++++++++
>  src/qcam/main.cpp        |   2 +
>  src/qcam/main_window.cpp |  36 ++++++-
>  src/qcam/main_window.h   |   3 +
>  src/qcam/meson.build     |   4 +-
>  6 files changed, 330 insertions(+), 4 deletions(-)
>  create mode 100644 src/qcam/glwidget.cpp
>  create mode 100644 src/qcam/glwidget.h
> 
> -- 
> 2.20.1
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list