Message ID | 20251015012251.17508-2-bryan.odonoghue@linaro.org |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Quoting Bryan O'Donoghue (2025-10-15 02:22:13) > Moving the vertex and fragment shaders to src/libcamera/assets/shader to > allow for reuse of these inside of the SoftISP. > > A comment has been added to src/apps/qcom/meson.build to force a > rebuild. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > .../libcamera/internal/shaders}/RGB.frag | 0 > .../internal/shaders}/YUV_2_planes.frag | 0 > .../internal/shaders}/YUV_3_planes.frag | 0 > .../internal/shaders}/YUV_packed.frag | 0 > .../internal/shaders}/bayer_1x_packed.frag | 0 > .../libcamera/internal/shaders}/bayer_8.frag | 0 > .../libcamera/internal/shaders}/bayer_8.vert | 0 > .../libcamera/internal/shaders}/identity.vert | 0 > src/apps/qcam/assets/shader/shaders.qrc | 16 ++--- > src/apps/qcam/meson.build | 3 + > src/apps/qcam/viewfinder_gl.cpp | 70 +++++++++---------- > 11 files changed, 46 insertions(+), 43 deletions(-) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/RGB.frag (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_2_planes.frag (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_3_planes.frag (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_packed.frag (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_1x_packed.frag (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.frag (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.vert (100%) > rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/identity.vert (100%) > > diff --git a/src/apps/qcam/assets/shader/RGB.frag b/include/libcamera/internal/shaders/RGB.frag > similarity index 100% > rename from src/apps/qcam/assets/shader/RGB.frag > rename to include/libcamera/internal/shaders/RGB.frag > diff --git a/src/apps/qcam/assets/shader/YUV_2_planes.frag b/include/libcamera/internal/shaders/YUV_2_planes.frag > similarity index 100% > rename from src/apps/qcam/assets/shader/YUV_2_planes.frag > rename to include/libcamera/internal/shaders/YUV_2_planes.frag > diff --git a/src/apps/qcam/assets/shader/YUV_3_planes.frag b/include/libcamera/internal/shaders/YUV_3_planes.frag > similarity index 100% > rename from src/apps/qcam/assets/shader/YUV_3_planes.frag > rename to include/libcamera/internal/shaders/YUV_3_planes.frag > diff --git a/src/apps/qcam/assets/shader/YUV_packed.frag b/include/libcamera/internal/shaders/YUV_packed.frag > similarity index 100% > rename from src/apps/qcam/assets/shader/YUV_packed.frag > rename to include/libcamera/internal/shaders/YUV_packed.frag > diff --git a/src/apps/qcam/assets/shader/bayer_1x_packed.frag b/include/libcamera/internal/shaders/bayer_1x_packed.frag > similarity index 100% > rename from src/apps/qcam/assets/shader/bayer_1x_packed.frag > rename to include/libcamera/internal/shaders/bayer_1x_packed.frag > diff --git a/src/apps/qcam/assets/shader/bayer_8.frag b/include/libcamera/internal/shaders/bayer_8.frag > similarity index 100% > rename from src/apps/qcam/assets/shader/bayer_8.frag > rename to include/libcamera/internal/shaders/bayer_8.frag > diff --git a/src/apps/qcam/assets/shader/bayer_8.vert b/include/libcamera/internal/shaders/bayer_8.vert > similarity index 100% > rename from src/apps/qcam/assets/shader/bayer_8.vert > rename to include/libcamera/internal/shaders/bayer_8.vert > diff --git a/src/apps/qcam/assets/shader/identity.vert b/include/libcamera/internal/shaders/identity.vert > similarity index 100% > rename from src/apps/qcam/assets/shader/identity.vert > rename to include/libcamera/internal/shaders/identity.vert > diff --git a/src/apps/qcam/assets/shader/shaders.qrc b/src/apps/qcam/assets/shader/shaders.qrc > index 96c709f9..04f9d706 100644 > --- a/src/apps/qcam/assets/shader/shaders.qrc > +++ b/src/apps/qcam/assets/shader/shaders.qrc > @@ -1,13 +1,13 @@ > <!-- SPDX-License-Identifier: LGPL-2.1-or-later --> > <!DOCTYPE RCC><RCC version="1.0"> > <qresource> > - <file>RGB.frag</file> > - <file>YUV_2_planes.frag</file> > - <file>YUV_3_planes.frag</file> > - <file>YUV_packed.frag</file> > - <file>bayer_1x_packed.frag</file> > - <file>bayer_8.frag</file> > - <file>bayer_8.vert</file> > - <file>identity.vert</file> > + <file>../../../../../include/libcamera/internal/shaders/RGB.frag</file> > + <file>../../../../../include/libcamera/internal/shaders/YUV_2_planes.frag</file> > + <file>../../../../../include/libcamera/internal/shaders/YUV_3_planes.frag</file> > + <file>../../../../../include/libcamera/internal/shaders/YUV_packed.frag</file> > + <file>../../../../../include/libcamera/internal/shaders/bayer_1x_packed.frag</file> > + <file>../../../../../include/libcamera/internal/shaders/bayer_8.frag</file> > + <file>../../../../../include/libcamera/internal/shaders/bayer_8.vert</file> > + <file>../../../../../include/libcamera/internal/shaders/identity.vert</file> > </qresource> > </RCC> > diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build > index 9ca047b0..33600095 100644 > --- a/src/apps/qcam/meson.build > +++ b/src/apps/qcam/meson.build > @@ -64,3 +64,6 @@ qcam = executable('qcam', qcam_sources, resources, > qt6_dep, > ], > cpp_args : qt6_cpp_args) > + > +# Note: qt6.preprocess does not automatically rebuild when the > +# qcam_resources dependency chain is updated. I would have put this above the qt6.preprocess line but all the same. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > diff --git a/src/apps/qcam/viewfinder_gl.cpp b/src/apps/qcam/viewfinder_gl.cpp > index f31956ff..70f60065 100644 > --- a/src/apps/qcam/viewfinder_gl.cpp > +++ b/src/apps/qcam/viewfinder_gl.cpp > @@ -141,7 +141,7 @@ bool ViewFinderGL::selectFormat(const libcamera::PixelFormat &format) > textureMinMagFilters_ = GL_LINEAR; > > /* Use identity.vert as the default vertex shader. */ > - vertexShaderFile_ = ":identity.vert"; > + vertexShaderFile_ = ":include/libcamera/internal/shaders/identity.vert"; > > fragmentShaderDefines_.clear(); > > @@ -150,170 +150,170 @@ bool ViewFinderGL::selectFormat(const libcamera::PixelFormat &format) > horzSubSample_ = 2; > vertSubSample_ = 2; > fragmentShaderDefines_.append("#define YUV_PATTERN_UV"); > - fragmentShaderFile_ = ":YUV_2_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; > break; > case libcamera::formats::NV21: > horzSubSample_ = 2; > vertSubSample_ = 2; > fragmentShaderDefines_.append("#define YUV_PATTERN_VU"); > - fragmentShaderFile_ = ":YUV_2_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; > break; > case libcamera::formats::NV16: > horzSubSample_ = 2; > vertSubSample_ = 1; > fragmentShaderDefines_.append("#define YUV_PATTERN_UV"); > - fragmentShaderFile_ = ":YUV_2_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; > break; > case libcamera::formats::NV61: > horzSubSample_ = 2; > vertSubSample_ = 1; > fragmentShaderDefines_.append("#define YUV_PATTERN_VU"); > - fragmentShaderFile_ = ":YUV_2_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; > break; > case libcamera::formats::NV24: > horzSubSample_ = 1; > vertSubSample_ = 1; > fragmentShaderDefines_.append("#define YUV_PATTERN_UV"); > - fragmentShaderFile_ = ":YUV_2_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; > break; > case libcamera::formats::NV42: > horzSubSample_ = 1; > vertSubSample_ = 1; > fragmentShaderDefines_.append("#define YUV_PATTERN_VU"); > - fragmentShaderFile_ = ":YUV_2_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; > break; > case libcamera::formats::YUV420: > horzSubSample_ = 2; > vertSubSample_ = 2; > - fragmentShaderFile_ = ":YUV_3_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_3_planes.frag"; > break; > case libcamera::formats::YVU420: > horzSubSample_ = 2; > vertSubSample_ = 2; > - fragmentShaderFile_ = ":YUV_3_planes.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_3_planes.frag"; > break; > case libcamera::formats::UYVY: > fragmentShaderDefines_.append("#define YUV_PATTERN_UYVY"); > - fragmentShaderFile_ = ":YUV_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; > break; > case libcamera::formats::VYUY: > fragmentShaderDefines_.append("#define YUV_PATTERN_VYUY"); > - fragmentShaderFile_ = ":YUV_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; > break; > case libcamera::formats::YUYV: > fragmentShaderDefines_.append("#define YUV_PATTERN_YUYV"); > - fragmentShaderFile_ = ":YUV_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; > break; > case libcamera::formats::YVYU: > fragmentShaderDefines_.append("#define YUV_PATTERN_YVYU"); > - fragmentShaderFile_ = ":YUV_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; > break; > case libcamera::formats::ABGR8888: > fragmentShaderDefines_.append("#define RGB_PATTERN rgb"); > - fragmentShaderFile_ = ":RGB.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; > break; > case libcamera::formats::ARGB8888: > fragmentShaderDefines_.append("#define RGB_PATTERN bgr"); > - fragmentShaderFile_ = ":RGB.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; > break; > case libcamera::formats::BGRA8888: > fragmentShaderDefines_.append("#define RGB_PATTERN gba"); > - fragmentShaderFile_ = ":RGB.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; > break; > case libcamera::formats::RGBA8888: > fragmentShaderDefines_.append("#define RGB_PATTERN abg"); > - fragmentShaderFile_ = ":RGB.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; > break; > case libcamera::formats::BGR888: > fragmentShaderDefines_.append("#define RGB_PATTERN rgb"); > - fragmentShaderFile_ = ":RGB.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; > break; > case libcamera::formats::RGB888: > fragmentShaderDefines_.append("#define RGB_PATTERN bgr"); > - fragmentShaderFile_ = ":RGB.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; > break; > case libcamera::formats::SBGGR8: > firstRed_.setX(1.0); > firstRed_.setY(1.0); > - vertexShaderFile_ = ":bayer_8.vert"; > - fragmentShaderFile_ = ":bayer_8.frag"; > + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SGBRG8: > firstRed_.setX(0.0); > firstRed_.setY(1.0); > - vertexShaderFile_ = ":bayer_8.vert"; > - fragmentShaderFile_ = ":bayer_8.frag"; > + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SGRBG8: > firstRed_.setX(1.0); > firstRed_.setY(0.0); > - vertexShaderFile_ = ":bayer_8.vert"; > - fragmentShaderFile_ = ":bayer_8.frag"; > + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SRGGB8: > firstRed_.setX(0.0); > firstRed_.setY(0.0); > - vertexShaderFile_ = ":bayer_8.vert"; > - fragmentShaderFile_ = ":bayer_8.frag"; > + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SBGGR10_CSI2P: > firstRed_.setX(1.0); > firstRed_.setY(1.0); > fragmentShaderDefines_.append("#define RAW10P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SGBRG10_CSI2P: > firstRed_.setX(0.0); > firstRed_.setY(1.0); > fragmentShaderDefines_.append("#define RAW10P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SGRBG10_CSI2P: > firstRed_.setX(1.0); > firstRed_.setY(0.0); > fragmentShaderDefines_.append("#define RAW10P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SRGGB10_CSI2P: > firstRed_.setX(0.0); > firstRed_.setY(0.0); > fragmentShaderDefines_.append("#define RAW10P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SBGGR12_CSI2P: > firstRed_.setX(1.0); > firstRed_.setY(1.0); > fragmentShaderDefines_.append("#define RAW12P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SGBRG12_CSI2P: > firstRed_.setX(0.0); > firstRed_.setY(1.0); > fragmentShaderDefines_.append("#define RAW12P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SGRBG12_CSI2P: > firstRed_.setX(1.0); > firstRed_.setY(0.0); > fragmentShaderDefines_.append("#define RAW12P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > case libcamera::formats::SRGGB12_CSI2P: > firstRed_.setX(0.0); > firstRed_.setY(0.0); > fragmentShaderDefines_.append("#define RAW12P"); > - fragmentShaderFile_ = ":bayer_1x_packed.frag"; > + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; > textureMinMagFilters_ = GL_NEAREST; > break; > default: > -- > 2.51.0 >
diff --git a/src/apps/qcam/assets/shader/RGB.frag b/include/libcamera/internal/shaders/RGB.frag similarity index 100% rename from src/apps/qcam/assets/shader/RGB.frag rename to include/libcamera/internal/shaders/RGB.frag diff --git a/src/apps/qcam/assets/shader/YUV_2_planes.frag b/include/libcamera/internal/shaders/YUV_2_planes.frag similarity index 100% rename from src/apps/qcam/assets/shader/YUV_2_planes.frag rename to include/libcamera/internal/shaders/YUV_2_planes.frag diff --git a/src/apps/qcam/assets/shader/YUV_3_planes.frag b/include/libcamera/internal/shaders/YUV_3_planes.frag similarity index 100% rename from src/apps/qcam/assets/shader/YUV_3_planes.frag rename to include/libcamera/internal/shaders/YUV_3_planes.frag diff --git a/src/apps/qcam/assets/shader/YUV_packed.frag b/include/libcamera/internal/shaders/YUV_packed.frag similarity index 100% rename from src/apps/qcam/assets/shader/YUV_packed.frag rename to include/libcamera/internal/shaders/YUV_packed.frag diff --git a/src/apps/qcam/assets/shader/bayer_1x_packed.frag b/include/libcamera/internal/shaders/bayer_1x_packed.frag similarity index 100% rename from src/apps/qcam/assets/shader/bayer_1x_packed.frag rename to include/libcamera/internal/shaders/bayer_1x_packed.frag diff --git a/src/apps/qcam/assets/shader/bayer_8.frag b/include/libcamera/internal/shaders/bayer_8.frag similarity index 100% rename from src/apps/qcam/assets/shader/bayer_8.frag rename to include/libcamera/internal/shaders/bayer_8.frag diff --git a/src/apps/qcam/assets/shader/bayer_8.vert b/include/libcamera/internal/shaders/bayer_8.vert similarity index 100% rename from src/apps/qcam/assets/shader/bayer_8.vert rename to include/libcamera/internal/shaders/bayer_8.vert diff --git a/src/apps/qcam/assets/shader/identity.vert b/include/libcamera/internal/shaders/identity.vert similarity index 100% rename from src/apps/qcam/assets/shader/identity.vert rename to include/libcamera/internal/shaders/identity.vert diff --git a/src/apps/qcam/assets/shader/shaders.qrc b/src/apps/qcam/assets/shader/shaders.qrc index 96c709f9..04f9d706 100644 --- a/src/apps/qcam/assets/shader/shaders.qrc +++ b/src/apps/qcam/assets/shader/shaders.qrc @@ -1,13 +1,13 @@ <!-- SPDX-License-Identifier: LGPL-2.1-or-later --> <!DOCTYPE RCC><RCC version="1.0"> <qresource> - <file>RGB.frag</file> - <file>YUV_2_planes.frag</file> - <file>YUV_3_planes.frag</file> - <file>YUV_packed.frag</file> - <file>bayer_1x_packed.frag</file> - <file>bayer_8.frag</file> - <file>bayer_8.vert</file> - <file>identity.vert</file> + <file>../../../../../include/libcamera/internal/shaders/RGB.frag</file> + <file>../../../../../include/libcamera/internal/shaders/YUV_2_planes.frag</file> + <file>../../../../../include/libcamera/internal/shaders/YUV_3_planes.frag</file> + <file>../../../../../include/libcamera/internal/shaders/YUV_packed.frag</file> + <file>../../../../../include/libcamera/internal/shaders/bayer_1x_packed.frag</file> + <file>../../../../../include/libcamera/internal/shaders/bayer_8.frag</file> + <file>../../../../../include/libcamera/internal/shaders/bayer_8.vert</file> + <file>../../../../../include/libcamera/internal/shaders/identity.vert</file> </qresource> </RCC> diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build index 9ca047b0..33600095 100644 --- a/src/apps/qcam/meson.build +++ b/src/apps/qcam/meson.build @@ -64,3 +64,6 @@ qcam = executable('qcam', qcam_sources, resources, qt6_dep, ], cpp_args : qt6_cpp_args) + +# Note: qt6.preprocess does not automatically rebuild when the +# qcam_resources dependency chain is updated. diff --git a/src/apps/qcam/viewfinder_gl.cpp b/src/apps/qcam/viewfinder_gl.cpp index f31956ff..70f60065 100644 --- a/src/apps/qcam/viewfinder_gl.cpp +++ b/src/apps/qcam/viewfinder_gl.cpp @@ -141,7 +141,7 @@ bool ViewFinderGL::selectFormat(const libcamera::PixelFormat &format) textureMinMagFilters_ = GL_LINEAR; /* Use identity.vert as the default vertex shader. */ - vertexShaderFile_ = ":identity.vert"; + vertexShaderFile_ = ":include/libcamera/internal/shaders/identity.vert"; fragmentShaderDefines_.clear(); @@ -150,170 +150,170 @@ bool ViewFinderGL::selectFormat(const libcamera::PixelFormat &format) horzSubSample_ = 2; vertSubSample_ = 2; fragmentShaderDefines_.append("#define YUV_PATTERN_UV"); - fragmentShaderFile_ = ":YUV_2_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; break; case libcamera::formats::NV21: horzSubSample_ = 2; vertSubSample_ = 2; fragmentShaderDefines_.append("#define YUV_PATTERN_VU"); - fragmentShaderFile_ = ":YUV_2_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; break; case libcamera::formats::NV16: horzSubSample_ = 2; vertSubSample_ = 1; fragmentShaderDefines_.append("#define YUV_PATTERN_UV"); - fragmentShaderFile_ = ":YUV_2_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; break; case libcamera::formats::NV61: horzSubSample_ = 2; vertSubSample_ = 1; fragmentShaderDefines_.append("#define YUV_PATTERN_VU"); - fragmentShaderFile_ = ":YUV_2_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; break; case libcamera::formats::NV24: horzSubSample_ = 1; vertSubSample_ = 1; fragmentShaderDefines_.append("#define YUV_PATTERN_UV"); - fragmentShaderFile_ = ":YUV_2_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; break; case libcamera::formats::NV42: horzSubSample_ = 1; vertSubSample_ = 1; fragmentShaderDefines_.append("#define YUV_PATTERN_VU"); - fragmentShaderFile_ = ":YUV_2_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_2_planes.frag"; break; case libcamera::formats::YUV420: horzSubSample_ = 2; vertSubSample_ = 2; - fragmentShaderFile_ = ":YUV_3_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_3_planes.frag"; break; case libcamera::formats::YVU420: horzSubSample_ = 2; vertSubSample_ = 2; - fragmentShaderFile_ = ":YUV_3_planes.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_3_planes.frag"; break; case libcamera::formats::UYVY: fragmentShaderDefines_.append("#define YUV_PATTERN_UYVY"); - fragmentShaderFile_ = ":YUV_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; break; case libcamera::formats::VYUY: fragmentShaderDefines_.append("#define YUV_PATTERN_VYUY"); - fragmentShaderFile_ = ":YUV_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; break; case libcamera::formats::YUYV: fragmentShaderDefines_.append("#define YUV_PATTERN_YUYV"); - fragmentShaderFile_ = ":YUV_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; break; case libcamera::formats::YVYU: fragmentShaderDefines_.append("#define YUV_PATTERN_YVYU"); - fragmentShaderFile_ = ":YUV_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/YUV_packed.frag"; break; case libcamera::formats::ABGR8888: fragmentShaderDefines_.append("#define RGB_PATTERN rgb"); - fragmentShaderFile_ = ":RGB.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; break; case libcamera::formats::ARGB8888: fragmentShaderDefines_.append("#define RGB_PATTERN bgr"); - fragmentShaderFile_ = ":RGB.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; break; case libcamera::formats::BGRA8888: fragmentShaderDefines_.append("#define RGB_PATTERN gba"); - fragmentShaderFile_ = ":RGB.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; break; case libcamera::formats::RGBA8888: fragmentShaderDefines_.append("#define RGB_PATTERN abg"); - fragmentShaderFile_ = ":RGB.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; break; case libcamera::formats::BGR888: fragmentShaderDefines_.append("#define RGB_PATTERN rgb"); - fragmentShaderFile_ = ":RGB.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; break; case libcamera::formats::RGB888: fragmentShaderDefines_.append("#define RGB_PATTERN bgr"); - fragmentShaderFile_ = ":RGB.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/RGB.frag"; break; case libcamera::formats::SBGGR8: firstRed_.setX(1.0); firstRed_.setY(1.0); - vertexShaderFile_ = ":bayer_8.vert"; - fragmentShaderFile_ = ":bayer_8.frag"; + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SGBRG8: firstRed_.setX(0.0); firstRed_.setY(1.0); - vertexShaderFile_ = ":bayer_8.vert"; - fragmentShaderFile_ = ":bayer_8.frag"; + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SGRBG8: firstRed_.setX(1.0); firstRed_.setY(0.0); - vertexShaderFile_ = ":bayer_8.vert"; - fragmentShaderFile_ = ":bayer_8.frag"; + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SRGGB8: firstRed_.setX(0.0); firstRed_.setY(0.0); - vertexShaderFile_ = ":bayer_8.vert"; - fragmentShaderFile_ = ":bayer_8.frag"; + vertexShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.vert"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_8.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SBGGR10_CSI2P: firstRed_.setX(1.0); firstRed_.setY(1.0); fragmentShaderDefines_.append("#define RAW10P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SGBRG10_CSI2P: firstRed_.setX(0.0); firstRed_.setY(1.0); fragmentShaderDefines_.append("#define RAW10P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SGRBG10_CSI2P: firstRed_.setX(1.0); firstRed_.setY(0.0); fragmentShaderDefines_.append("#define RAW10P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SRGGB10_CSI2P: firstRed_.setX(0.0); firstRed_.setY(0.0); fragmentShaderDefines_.append("#define RAW10P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SBGGR12_CSI2P: firstRed_.setX(1.0); firstRed_.setY(1.0); fragmentShaderDefines_.append("#define RAW12P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SGBRG12_CSI2P: firstRed_.setX(0.0); firstRed_.setY(1.0); fragmentShaderDefines_.append("#define RAW12P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SGRBG12_CSI2P: firstRed_.setX(1.0); firstRed_.setY(0.0); fragmentShaderDefines_.append("#define RAW12P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; case libcamera::formats::SRGGB12_CSI2P: firstRed_.setX(0.0); firstRed_.setY(0.0); fragmentShaderDefines_.append("#define RAW12P"); - fragmentShaderFile_ = ":bayer_1x_packed.frag"; + fragmentShaderFile_ = ":include/libcamera/internal/shaders/bayer_1x_packed.frag"; textureMinMagFilters_ = GL_NEAREST; break; default:
Moving the vertex and fragment shaders to src/libcamera/assets/shader to allow for reuse of these inside of the SoftISP. A comment has been added to src/apps/qcom/meson.build to force a rebuild. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- .../libcamera/internal/shaders}/RGB.frag | 0 .../internal/shaders}/YUV_2_planes.frag | 0 .../internal/shaders}/YUV_3_planes.frag | 0 .../internal/shaders}/YUV_packed.frag | 0 .../internal/shaders}/bayer_1x_packed.frag | 0 .../libcamera/internal/shaders}/bayer_8.frag | 0 .../libcamera/internal/shaders}/bayer_8.vert | 0 .../libcamera/internal/shaders}/identity.vert | 0 src/apps/qcam/assets/shader/shaders.qrc | 16 ++--- src/apps/qcam/meson.build | 3 + src/apps/qcam/viewfinder_gl.cpp | 70 +++++++++---------- 11 files changed, 46 insertions(+), 43 deletions(-) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/RGB.frag (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_2_planes.frag (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_3_planes.frag (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_packed.frag (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_1x_packed.frag (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.frag (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.vert (100%) rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/identity.vert (100%)