From 7fae634dc3a7ebbad839c26c5a08bbd986e6ee1d Mon Sep 17 00:00:00 2001 From: Luke Jones Date: Tue, 6 Sep 2022 20:07:49 +1200 Subject: [PATCH] egui_glow: default to RGBA8 if sRGB not supported (#2007) The Vivante GPU on many STM32MP1 based boards does not support sRGB as an internal format. Introduce a check for sRGB support and default to `RGBA8` internal format if not supported. Additionally the STM32MP1 needs to be checked for `GL_ARB_vertex_array_object` Closes #1991 --- crates/egui_glow/src/painter.rs | 3 +++ crates/egui_glow/src/vao.rs | 1 + 2 files changed, 4 insertions(+) diff --git a/crates/egui_glow/src/painter.rs b/crates/egui_glow/src/painter.rs index 5a383562..f4c918df 100644 --- a/crates/egui_glow/src/painter.rs +++ b/crates/egui_glow/src/painter.rs @@ -117,6 +117,7 @@ impl Painter { let header = shader_version.version_declaration(); tracing::debug!("Shader header: {:?}.", header); let srgb_support = gl.supported_extensions().contains("EXT_sRGB"); + tracing::debug!("SRGB Support: {:?}.", srgb_support); let (post_process, srgb_support_define) = match (shader_version, srgb_support) { // WebGL2 support sRGB default @@ -591,6 +592,8 @@ impl Painter { glow::RGBA }; (format, format) + } else if !self.srgb_support { + (glow::RGBA8, glow::RGBA) } else { (glow::SRGB8_ALPHA8, glow::RGBA) }; diff --git a/crates/egui_glow/src/vao.rs b/crates/egui_glow/src/vao.rs index 0a6e53d3..c533468e 100644 --- a/crates/egui_glow/src/vao.rs +++ b/crates/egui_glow/src/vao.rs @@ -147,6 +147,7 @@ fn supports_vao(gl: &glow::Context) -> bool { let supported_extensions = gl.supported_extensions(); tracing::debug!("Supported OpenGL extensions: {:?}", supported_extensions); supported_extensions.contains("ARB_vertex_array_object") + || supported_extensions.contains("GL_ARB_vertex_array_object") } else { true }