| Message ID | 20210101171553.32727-1-andrey.konovalov@linaro.org |
|---|---|
| Headers | show |
| Series |
|
| Related | show |
I'd like to add that I would probably hold off on merging this patchset until I post the RAW10P one. The latter is in progress, and when it is completed, it will be more clear if reading the frame into GL_RGB texture (this is what the current patchset does) vs GL_RED is the right choice. Thanks, Andrey On 01.01.2021 20:15, Andrey Konovalov wrote: > This patchset adds support for OpenGL accelerated conversion from 12-bit > packed raw Bayer format (debyering). > > All the 4 pixel layouts are supported, but only the RGGB one was tested. > > The lower 4 bits of the 12-bit colour values are discarded as the target RGBA > format has only 8 bits per colour. > > Changes in v2 vs v1 [1]: > * Most of the review comments are addressed. In particular: > * comments explaining the calculations in the shader are added > * textureUniformY_ is reused in the same way as RGB formats do > * uniforms are renamed to follow the common pattern > * the existing float tex_stepx is extended to vec2 tex_step and is > used in both YUV_packed and bayer_12_packed shaders > * firstRed_ type changed to QPointF > * NOT CHANGED: the center is still vec4, and [xy]coords are still vec2. > The reason is that I'd like to keep them in the same form as in the > original code [2] - I still consider moving from the current bilinear > to the MHC filter implemented in [2] someday. > * The shader code is reworked to address the issue with the garbage due > to scaling the image from the captured size to the viewfinder window size. > With v1 one could see something like [3], and in v2 this is fixed [4]. > For this all the processing is moved to the fragment shader, so that the > hardware interpolators don't have the effect (the price is increased GPU > load). [PATCH][RFC 1/2] "qcam: viewfinder_gl: set the vertex shader file > name in selectFormat()" is dropped as the common identity vertex shader is > used in v2. > * The header in the fragment shader is updated to refer to the work [2] this > shader is based on. The license is adjusted accordingly. > > [1] https://lists.libcamera.org/pipermail/libcamera-devel/2020-November/014893.html > [2] https://casual-effects.com/research/McGuire2009Bayer/index.html > [3] https://people.linaro.org/~andrey.konovalov/qcam-vf_gl-raw12p/v1_maximized.bmp > [4] https://people.linaro.org/~andrey.konovalov/qcam-vf_gl-raw12p/v2-1_maximized.bmp > >
This patchset adds support for OpenGL accelerated conversion from 12-bit packed raw Bayer format (debyering). All the 4 pixel layouts are supported, but only the RGGB one was tested. The lower 4 bits of the 12-bit colour values are discarded as the target RGBA format has only 8 bits per colour. Changes in v2 vs v1 [1]: * Most of the review comments are addressed. In particular: * comments explaining the calculations in the shader are added * textureUniformY_ is reused in the same way as RGB formats do * uniforms are renamed to follow the common pattern * the existing float tex_stepx is extended to vec2 tex_step and is used in both YUV_packed and bayer_12_packed shaders * firstRed_ type changed to QPointF * NOT CHANGED: the center is still vec4, and [xy]coords are still vec2. The reason is that I'd like to keep them in the same form as in the original code [2] - I still consider moving from the current bilinear to the MHC filter implemented in [2] someday. * The shader code is reworked to address the issue with the garbage due to scaling the image from the captured size to the viewfinder window size. With v1 one could see something like [3], and in v2 this is fixed [4]. For this all the processing is moved to the fragment shader, so that the hardware interpolators don't have the effect (the price is increased GPU load). [PATCH][RFC 1/2] "qcam: viewfinder_gl: set the vertex shader file name in selectFormat()" is dropped as the common identity vertex shader is used in v2. * The header in the fragment shader is updated to refer to the work [2] this shader is based on. The license is adjusted accordingly. [1] https://lists.libcamera.org/pipermail/libcamera-devel/2020-November/014893.html [2] https://casual-effects.com/research/McGuire2009Bayer/index.html [3] https://people.linaro.org/~andrey.konovalov/qcam-vf_gl-raw12p/v1_maximized.bmp [4] https://people.linaro.org/~andrey.konovalov/qcam-vf_gl-raw12p/v2-1_maximized.bmp