[libcamera-devel] [PATCH 2/7] qcam: viewfinder_gl: Don't store texture IDs in class members
Niklas Söderlund
niklas.soderlund at ragnatech.se
Wed Sep 16 17:02:21 CEST 2020
Hi Laurent,
Thanks for your patch.
On 2020-09-16 17:52:49 +0300, Laurent Pinchart wrote:
> The texture IDs can easily and cheaply be retrieved from the textures,
> there's no need to store them in class members.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
> src/qcam/viewfinder_gl.cpp | 23 ++++++++++-------------
> src/qcam/viewfinder_gl.h | 5 +----
> 2 files changed, 11 insertions(+), 17 deletions(-)
>
> diff --git a/src/qcam/viewfinder_gl.cpp b/src/qcam/viewfinder_gl.cpp
> index fbe21dcf1ad2..18ebe46fe2f9 100644
> --- a/src/qcam/viewfinder_gl.cpp
> +++ b/src/qcam/viewfinder_gl.cpp
> @@ -229,15 +229,12 @@ bool ViewFinderGL::createFragmentShader()
> if (!textureV_.isCreated())
> textureV_.create();
>
> - id_y_ = textureY_.textureId();
> - id_u_ = textureU_.textureId();
> - id_v_ = textureV_.textureId();
> return true;
> }
>
> -void ViewFinderGL::configureTexture(unsigned int id)
> +void ViewFinderGL::configureTexture(QOpenGLTexture &texture)
> {
> - glBindTexture(GL_TEXTURE_2D, id);
> + glBindTexture(GL_TEXTURE_2D, texture.textureId());
> glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
> glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
> glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
> @@ -303,7 +300,7 @@ void ViewFinderGL::doRender()
> case libcamera::formats::NV42:
> /* Activate texture Y */
> glActiveTexture(GL_TEXTURE0);
> - configureTexture(id_y_);
> + configureTexture(textureY_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> @@ -317,7 +314,7 @@ void ViewFinderGL::doRender()
>
> /* Activate texture UV/VU */
> glActiveTexture(GL_TEXTURE1);
> - configureTexture(id_u_);
> + configureTexture(textureU_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RG,
> @@ -333,7 +330,7 @@ void ViewFinderGL::doRender()
> case libcamera::formats::YUV420:
> /* Activate texture Y */
> glActiveTexture(GL_TEXTURE0);
> - configureTexture(id_y_);
> + configureTexture(textureY_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> @@ -347,7 +344,7 @@ void ViewFinderGL::doRender()
>
> /* Activate texture U */
> glActiveTexture(GL_TEXTURE1);
> - configureTexture(id_u_);
> + configureTexture(textureU_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> @@ -361,7 +358,7 @@ void ViewFinderGL::doRender()
>
> /* Activate texture V */
> glActiveTexture(GL_TEXTURE2);
> - configureTexture(id_v_);
> + configureTexture(textureV_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> @@ -377,7 +374,7 @@ void ViewFinderGL::doRender()
> case libcamera::formats::YVU420:
> /* Activate texture Y */
> glActiveTexture(GL_TEXTURE0);
> - configureTexture(id_y_);
> + configureTexture(textureY_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> @@ -391,7 +388,7 @@ void ViewFinderGL::doRender()
>
> /* Activate texture V */
> glActiveTexture(GL_TEXTURE2);
> - configureTexture(id_v_);
> + configureTexture(textureV_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> @@ -405,7 +402,7 @@ void ViewFinderGL::doRender()
>
> /* Activate texture U */
> glActiveTexture(GL_TEXTURE1);
> - configureTexture(id_u_);
> + configureTexture(textureU_);
> glTexImage2D(GL_TEXTURE_2D,
> 0,
> GL_RED,
> diff --git a/src/qcam/viewfinder_gl.h b/src/qcam/viewfinder_gl.h
> index 69502b7a543e..825af1c13cb7 100644
> --- a/src/qcam/viewfinder_gl.h
> +++ b/src/qcam/viewfinder_gl.h
> @@ -53,7 +53,7 @@ protected:
> private:
> bool selectFormat(const libcamera::PixelFormat &format);
>
> - void configureTexture(unsigned int id);
> + void configureTexture(QOpenGLTexture &texture);
> bool createFragmentShader();
> bool createVertexShader();
> void removeShader();
> @@ -78,9 +78,6 @@ private:
> QString vertexShaderSrc_;
>
> /* YUV texture planars and parameters */
> - GLuint id_u_;
> - GLuint id_v_;
> - GLuint id_y_;
> GLuint textureUniformU_;
> GLuint textureUniformV_;
> GLuint textureUniformY_;
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> 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