From 2af0f63cfba4a89d0e7df8dc3484c1aa43e4a422 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 4 May 2019 13:29:44 +0200 Subject: [PATCH] ui/app/internal/gl: parse WebGL versions And drop a redundant error message while here. Signed-off-by: Elias Naur --- ui/app/internal/gl/srgb.go | 2 +- ui/app/internal/gl/util.go | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ui/app/internal/gl/srgb.go b/ui/app/internal/gl/srgb.go index 25ba3df0..56385c4d 100644 --- a/ui/app/internal/gl/srgb.go +++ b/ui/app/internal/gl/srgb.go @@ -26,7 +26,7 @@ func NewSRGBFBO(f *Functions) (*SRGBFBO, error) { glVer := f.GetString(VERSION) ver, err := ParseGLVersion(glVer) if err != nil { - return nil, fmt.Errorf("failed to parse OpenGL ES version (%s): %v", glVer, err) + return nil, err } if ver[0] >= 3 { es3 = true diff --git a/ui/app/internal/gl/util.go b/ui/app/internal/gl/util.go index 7e4c9671..76080a19 100644 --- a/ui/app/internal/gl/util.go +++ b/ui/app/internal/gl/util.go @@ -76,10 +76,14 @@ func BytesView(s interface{}) []byte { func ParseGLVersion(glVer string) ([2]int, error) { var ver [2]int - if _, err := fmt.Sscanf(glVer, "OpenGL ES %d.%d", &ver[0], &ver[1]); err != nil { - if _, err := fmt.Sscanf(glVer, "%d.%d", &ver[0], &ver[1]); err != nil { - return [2]int{}, fmt.Errorf("failed to parse OpenGL ES version (%s): %v", glVer, err) - } + if _, err := fmt.Sscanf(glVer, "OpenGL ES %d.%d", &ver[0], &ver[1]); err == nil { + return ver, nil + } else if _, err := fmt.Sscanf(glVer, "WebGL %d.%d", &ver[0], &ver[1]); err == nil { + // WebGL major version v corresponds to OpenGL ES version v + 1 + ver[0]++ + return ver, nil + } else if _, err := fmt.Sscanf(glVer, "%d.%d", &ver[0], &ver[1]); err == nil { + return ver, nil } - return ver, nil + return ver, fmt.Errorf("failed to parse OpenGL ES version (%s)", glVer) }