@@ -107,7 +107,7 @@ public:
int createInputDMABufTexture2D(eGLImage &eglImage, int fd);
int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);
- void createTexture2D(eGLImage &eglImage, void *data);
+ void createTexture2D(eGLImage &eglImage, void *data, GLint filter);
void updateTexture2D(eGLImage &eglImage, void *data);
void createOutputTexture2D(eGLImage &eglImage);
@@ -275,13 +275,14 @@ int eGL::createOutputDMABufTexture2D(eGLImage &eglImage, int fd)
* \brief Create a 2D texture from a memory buffer
* \param[in,out] eglImage EGL image to associate with the texture
* \param[in] data Pointer to pixel data, or nullptr for uninitialised texture
+ * \param[in] filter GL texture filter setting
*
* Creates a 2D texture from a CPU-accessible memory buffer. The texture
- * is configured with nearest filtering and clamp-to-edge wrapping. This
+ * is configured the specified filtering and clamp-to-edge wrapping. This
* is useful for uploading static data like lookup tables or uniform color
* matrices to the GPU.
*/
-void eGL::createTexture2D(eGLImage &eglImage, void *data)
+void eGL::createTexture2D(eGLImage &eglImage, void *data, GLint filter)
{
ASSERT(tid_ == Thread::currentId());
@@ -291,8 +292,8 @@ void eGL::createTexture2D(eGLImage &eglImage, void *data)
glTexImage2D(GL_TEXTURE_2D, 0, eglImage.format_, eglImage.width_, eglImage.height_, 0, eglImage.format_, GL_UNSIGNED_BYTE, data);
// Nearest filtering
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter);
// Wrap to edge to avoid edge artifacts
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -369,7 +370,7 @@ void eGL::updateTexture2D(eGLImage &eglImage, void *data)
*/
void eGL::createOutputTexture2D(eGLImage &eglImage)
{
- createTexture2D(eglImage, NULL);
+ createTexture2D(eglImage, NULL, GL_NEAREST);
attachTextureToFBO(eglImage);
}
@@ -549,7 +549,7 @@ eGLImage *DebayerEGL::getCachedInputFrameBuffer(FrameBuffer *input, std::optiona
return nullptr;
}
if (cache_miss)
- egl_.createTexture2D(*eglImageIn, inMapped->value().planes()[0].data());
+ egl_.createTexture2D(*eglImageIn, inMapped->value().planes()[0].data(), GL_NEAREST);
else
egl_.updateTexture2D(*eglImageIn, inMapped->value().planes()[0].data());