notashelf /
c9d32e14ab93f00829803348cdbb8f52b717531a
chroma
publicLightweight wallpaper daemon for Wayland
clone
ssh://git@git.notashelf.dev:33/notashelf/chroma.gitCommit c9d32e14ab93
tarballunverified1 files changed+17-3
@@ -10,27 +10,33 @@ // Convert filter quality enum to OpenGL parameters static void get_gl_filter_params(chroma_filter_quality_t quality,- GLint *min_filter, GLint *mag_filter) {+ GLint *min_filter, GLint *mag_filter,+ bool *needs_mipmaps) { switch (quality) { case CHROMA_FILTER_NEAREST: *min_filter = GL_NEAREST; *mag_filter = GL_NEAREST;+ *needs_mipmaps = false; break; case CHROMA_FILTER_LINEAR: *min_filter = GL_LINEAR; *mag_filter = GL_LINEAR;+ *needs_mipmaps = false; break; case CHROMA_FILTER_BILINEAR:- *min_filter = GL_LINEAR_MIPMAP_LINEAR;+ *min_filter = GL_LINEAR; *mag_filter = GL_LINEAR;+ *needs_mipmaps = false; break; case CHROMA_FILTER_TRILINEAR: *min_filter = GL_LINEAR_MIPMAP_LINEAR; *mag_filter = GL_LINEAR;+ *needs_mipmaps = true; break; default: *min_filter = GL_LINEAR; *mag_filter = GL_LINEAR;+ *needs_mipmaps = false; break; } }@@ -324,7 +330,9 @@ static int update_texture_from_image(chroma_output_t *output, // Use configured filter quality GLint min_filter, mag_filter;- get_gl_filter_params(filter_quality, &min_filter, &mag_filter);+ bool needs_mipmaps;+ get_gl_filter_params(filter_quality, &min_filter, &mag_filter,+ &needs_mipmaps); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); @@ -332,6 +340,12 @@ static int update_texture_from_image(chroma_output_t *output, glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image->width, image->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->data); + // Generate mipmaps for trilinear filtering if they're needed+ if (needs_mipmaps) {+ glGenerateMipmap(GL_TEXTURE_2D);+ chroma_log("DEBUG", "Generated mipmaps for trilinear filtering");+ }+ glBindTexture(GL_TEXTURE_2D, 0); // Mark this output as having uploaded its texture