Commit 4c8ab49da1f059677fefb49d156af3b00c49f679

Brian Ho 2023-04-13T18:00:31

Use MESA variant of glFramebufferParameteri if possible The GL_MESA_framebuffer_flip_y extension lets the client flip reads and writes to the a fb via glFramebufferParameteri. glFramebufferParameteri, however, is only available on GLES 3.1+, but the flip y extension spec states that GLES 3.0 implementations can still implement this extension by providing glFramebufferParameteriMESA (see "Revision History" [1]). Some old ChromeOS Flex devices only support GLES 3.0, but still expose this extension. Currently, ANGLE segfaults when trying to update the FLIP_Y param [2] (e.g. when we create a WebGL canvas) on these devices because framebufferParameteri is only initialized on GLES 3.1+ [3]. This CL fixes the crash by falling back to the MESA variant of framebufferParameteri when framebufferParameteri is unavailable. [1]:https://registry.khronos.org/OpenGL/extensions/MESA/MESA_framebuffer_flip_y.txt [2]:https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/renderer/gl/FramebufferGL.cpp;l=1330;drc=bf5e9dbc89e2dddb9c36200396139e938467f58e [3]:https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:third_party/angle/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp;l=2552;drc=837cc12de25a288edf3ac222f7265c9936e69552 Bug: b/264681962 Change-Id: I079937bcd54b580b79d875f57c2b80ae796f2d83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4425929 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Brian Ho <hob@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>