Hash :
4c8ab49d
Author :
Date :
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>
{
"src/libANGLE/renderer/angle_format.py":
"601bfb757e052c50ac8f4cb4e0b58eb5",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp":
"26e64fe13d7248c4ae04d6c8f3ac5890",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.h":
"94e376d7f3b7e2ef6587284f825dfe39",
"src/libANGLE/renderer/gl/generate_gl_dispatch_table.py":
"2fb7f3906b4966b192c629228bc3e961",
"src/libANGLE/renderer/gl/gl_bindings_data.json":
"1c8d597d390eff780a14c703105304c4",
"src/libANGLE/renderer/gl/null_functions.cpp":
"38cd5858fa583e39bd76744ff532db49",
"src/libANGLE/renderer/gl/null_functions.h":
"dff00d65990f16e1f77a73d12085a408",
"third_party/OpenGL-Registry/src/xml/gl.xml":
"49f0afe5cac23951c74420e457b0cb23"
}