| Message ID | 20260618122245.946138-16-bryan.odonoghue@linaro.org |
|---|---|
| State | RFC |
| Headers | show |
| Series |
|
| Related | show |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes: > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > src/libcamera/egl.cpp | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp > index 4da335a53..a5e59c09c 100644 > --- a/src/libcamera/egl.cpp > +++ b/src/libcamera/egl.cpp > @@ -264,13 +264,29 @@ int eGL::createOutputDMABufTexture2D(eGLImage &eglImage, int fd) > */ > void eGL::createTexture2D(eGLImage &eglImage, void *data) > { > + GLenum format; The compiler complains this may remain without an assigned value eventually. > + GLenum type = GL_UNSIGNED_BYTE; > + > ASSERT(tid_ == Thread::currentId()); > > glActiveTexture(eglImage.texture_unit_); > glBindTexture(GL_TEXTURE_2D, eglImage.texture_); > > + switch (eglImage.format_) { > + case GL_R16F: > + format = GL_RED; > + type = GL_HALF_FLOAT; > + break; > + case GL_RG8: > + format = GL_RG; > + break; > + case GL_LUMINANCE: > + format = GL_LUMINANCE; > + break; > + } > + > // Generate texture, bind, associate image to texture, configure, unbind > - glTexImage2D(GL_TEXTURE_2D, 0, eglImage.format_, eglImage.width_, eglImage.height_, 0, eglImage.format_, GL_UNSIGNED_BYTE, data); > + glTexImage2D(GL_TEXTURE_2D, 0, eglImage.format_, eglImage.width_, eglImage.height_, 0, format, type, data); > > // Nearest filtering > glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp index 4da335a53..a5e59c09c 100644 --- a/src/libcamera/egl.cpp +++ b/src/libcamera/egl.cpp @@ -264,13 +264,29 @@ int eGL::createOutputDMABufTexture2D(eGLImage &eglImage, int fd) */ void eGL::createTexture2D(eGLImage &eglImage, void *data) { + GLenum format; + GLenum type = GL_UNSIGNED_BYTE; + ASSERT(tid_ == Thread::currentId()); glActiveTexture(eglImage.texture_unit_); glBindTexture(GL_TEXTURE_2D, eglImage.texture_); + switch (eglImage.format_) { + case GL_R16F: + format = GL_RED; + type = GL_HALF_FLOAT; + break; + case GL_RG8: + format = GL_RG; + break; + case GL_LUMINANCE: + format = GL_LUMINANCE; + break; + } + // Generate texture, bind, associate image to texture, configure, unbind - glTexImage2D(GL_TEXTURE_2D, 0, eglImage.format_, eglImage.width_, eglImage.height_, 0, eglImage.format_, GL_UNSIGNED_BYTE, data); + glTexImage2D(GL_TEXTURE_2D, 0, eglImage.format_, eglImage.width_, eglImage.height_, 0, format, type, data); // Nearest filtering glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- src/libcamera/egl.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)