gfx-rs / gfx

[maintenance mode] A low-overhead Vulkan-like GPU API for Rust.
http://gfx-rs.github.io/
Apache License 2.0
5.35k stars 547 forks source link

[GL] Android context creation failed error #3550

Closed Gordon-F closed 3 years ago

Gordon-F commented 3 years ago

Short info header:

2020-12-22 13:22:08.761 2937-4293/rust.quad_android I/RustStdoutStderr: Waiting for NativeScreen
2020-12-22 13:22:08.864 2937-2937/rust.quad_android I/ViewRootImpl@41bb7f9[NativeActivity]: setView = com.android.internal.policy.DecorView@5b6f8a7 TM=true MM=false
2020-12-22 13:22:08.926 2937-2937/rust.quad_android I/ViewRootImpl@41bb7f9[NativeActivity]: Relayout returned: old=(0,0,1200,2000) new=(0,0,1200,2000) req=(1200,2000)0 dur=25 res=0x7 s={true 526057046016} ch=true
2020-12-22 13:22:08.936 2937-2937/rust.quad_android I/ViewRootImpl@41bb7f9[NativeActivity]: ViewRootImpl >> surfaceCreated
2020-12-22 13:22:08.936 2937-4293/rust.quad_android I/RustStdoutStderr: NativeScreen Found:RwLockReadGuard { lock: RwLock { data: Some(NativeWindow { ptr: 0x7a7b718010 }) } }
2020-12-22 13:22:08.938 2937-4294/rust.quad_android I/gfx_backend_gl::windo..: Client extensions: "EGL_EXT_client_extensions EGL_KHR_platform_android EGL_ANGLE_platform_angle EGL_ANDROID_GLES_layers"
2020-12-22 13:22:08.938 2937-4294/rust.quad_android I/gfx_backend_gl::windo..: Using default platform
2020-12-22 13:22:08.940 2937-2937/rust.quad_android I/ViewRootImpl@41bb7f9[NativeActivity]: ViewRootImpl >> surfaceChanged W=1200, H=2000)
2020-12-22 13:22:08.940 2937-2937/rust.quad_android V/ndk_glue: WindowResized
2020-12-22 13:22:08.947 2937-2937/rust.quad_android V/ndk_glue: ContentRectChanged
2020-12-22 13:22:08.948 2937-2937/rust.quad_android V/ndk_glue: WindowRedrawNeeded
2020-12-22 13:22:08.950 2937-2937/rust.quad_android I/ViewRootImpl@41bb7f9[NativeActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2020-12-22 13:22:08.951 2937-2937/rust.quad_android D/InputMethodManager: prepareNavigationBarInfo() DecorView@5b6f8a7[NativeActivity]
2020-12-22 13:22:08.951 2937-2937/rust.quad_android D/InputMethodManager: getNavigationBarColor() -855310
2020-12-22 13:22:08.951 2937-2937/rust.quad_android V/ndk_glue: WindowHasFocus
2020-12-22 13:22:08.956 2937-2937/rust.quad_android D/InputMethodManager: prepareNavigationBarInfo() DecorView@5b6f8a7[NativeActivity]
2020-12-22 13:22:08.956 2937-2937/rust.quad_android D/InputMethodManager: getNavigationBarColor() -855310
2020-12-22 13:22:08.957 2937-2937/rust.quad_android V/InputMethodManager: Starting input: tba=rust.quad_android ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2020-12-22 13:22:08.957 2937-4294/rust.quad_android I/gfx_backend_gl::windo..: Display vendor "Android", version (1, 4), extensions: "EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_swap_buffers_with_damage EGL_ANDROID_get_native_client_buffer EGL_ANDROID_front_buffer_auto_refresh EGL_ANDROID_get_frame_timestamps EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata EGL_EXT_gl_colorspace_bt2020_linear EGL_EXT_gl_colorspace_bt2020_pq EGL_KHR_image EGL_KHR_image_base EGL_EXT_image_gl_colorspace EGL_KHR_gl_colorspace EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_KHR_create_context EGL_KHR_config_attribs EGL_KHR_surfaceless_context EGL_EXT_create_context_robustness EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync EGL_ANDROID_recordable EGL_KHR_partial_update EGL_EXT_pixel_format_float EGL_KHR_mutable_render_buffer EGL_IMG_context_priority EGL_KHR_no_config_context "
2020-12-22 13:22:08.957 2937-2937/rust.quad_android D/InputMethodManager: startInputInner - Id : 0
2020-12-22 13:22:08.957 2937-4294/rust.quad_android V/gfx_backend_gl::windo..: Configurations:
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1404
2020-12-22 13:22:08.958 2937-2937/rust.quad_android I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android I/chatty: uid=10251(rust.quad_android) identical 1 line
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android I/chatty: uid=10251(rust.quad_android) identical 1 line
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1
2020-12-22 13:22:08.958 2937-4294/rust.quad_android I/chatty: uid=10251(rust.quad_android) identical 2 lines
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android I/chatty: uid=10251(rust.quad_android) identical 4 lines
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x44, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.958 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x44, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1405
2020-12-22 13:22:08.959 2937-4294/rust.quad_android V/gfx_backend_gl::windo..:  CONFORMANT=0x45, RENDERABLE=0x45, NATIVE_RENDERABLE=0x0, SURFACE_TYPE=0x1
2020-12-22 13:22:08.959 2937-4294/rust.quad_android W/gfx_backend_gl::windo..: no compatible EGL config found, trying off-screen
2020-12-22 13:22:08.966 2937-4294/rust.quad_android I/mali_winsys: new_window_surface() [1200x2000] return: 0x3000
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/glow::native: glow!
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/gfx_backend_gl::windo..: glActiveShaderProgram
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/khronos_egl: glActiveShaderProgram
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/gfx_backend_gl::windo..: glActiveTexture
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/khronos_egl: glActiveTexture
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/gfx_backend_gl::windo..: glAttachShader
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/khronos_egl: glAttachShader
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/gfx_backend_gl::windo..: glBeginConditionalRender
2020-12-22 13:22:08.967 2937-4294/rust.quad_android W/khronos_egl: glBeginConditionalRender
2020-12-22 13:22:08.967 2937-4293/rust.quad_android I/RustStdoutStderr: thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', src/backend/gl/src/window/egl.rs:204:49
2020-12-22 13:22:08.968 2937-4293/rust.quad_android I/RustStdoutStderr: stack backtrace:
2020-12-22 13:22:08.968 2937-4293/rust.quad_android I/RustStdoutStderr:    0:       0x7a6faf27fc - <unknown>
2020-12-22 13:22:08.968 2937-4293/rust.quad_android I/RustStdoutStderr:    1:       0x7a6fb0c238 - <unknown>
2020-12-22 13:22:08.968 2937-4293/rust.quad_android I/RustStdoutStderr:    2:       0x7a6faf006c - <unknown>
2020-12-22 13:22:08.968 2937-4293/rust.quad_android I/RustStdoutStderr:    3:       0x7a6faf4574 - <unknown>
2020-12-22 13:22:08.968 2937-4293/rust.quad_android I/RustStdoutStderr:    4:       0x7a6faf40fc - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:    5:       0x7a6faf4c88 - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:    6:       0x7a6faf4800 - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:    7:       0x7a6faf2d50 - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:    8:       0x7a6faf4794 - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:    9:       0x7a6fb0a36c - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:   10:       0x7a6fb0a2f0 - <unknown>
2020-12-22 13:22:08.969 2937-4293/rust.quad_android I/RustStdoutStderr:   11:       0x7a6f931794 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   12:       0x7a6f8df070 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   13:       0x7a6f8edd80 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   14:       0x7a6f98ce28 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   15:       0x7a6f974d20 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   16:       0x7a6f972110 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   17:       0x7a6f937dd8 - <unknown>
2020-12-22 13:22:08.970 2937-4293/rust.quad_android I/RustStdoutStderr:   18:       0x7a6f8ed7b0 - <unknown>
2020-12-22 13:22:08.971 2937-4293/rust.quad_android I/RustStdoutStderr:   19:       0x7a6f953c98 - <unknown>
2020-12-22 13:22:08.971 2937-4293/rust.quad_android I/RustStdoutStderr:   20:       0x7a6f5ca560 - <unknown>
2020-12-22 13:22:08.971 2937-4293/rust.quad_android I/RustStdoutStderr:   21:       0x7a6f8be2f0 - <unknown>
2020-12-22 13:22:08.971 2937-4293/rust.quad_android I/RustStdoutStderr:   22:       0x7a6f8bf00c - <unknown>
2020-12-22 13:22:08.971 2937-4293/rust.quad_android I/RustStdoutStderr:   23:       0x7a6f8caf00 - <unknown>
2020-12-22 13:22:08.971 2937-4293/rust.quad_android I/RustStdoutStderr:   24:       0x7a6f8c93d8 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   25:       0x7a6f8c6824 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   26:       0x7a6f8c6fc8 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   27:       0x7a6f8c66b0 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   28:       0x7a6f8c9480 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   29:       0x7a6f8cab44 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   30:       0x7a6f8c0448 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   31:       0x7a6faf6744 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   32:       0x7b052938e4 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   33:       0x7b05236040 - <unknown>
2020-12-22 13:22:08.972 2937-4293/rust.quad_android I/RustStdoutStderr:   34:                0x0 - <unknown>
2020-12-22 13:22:08.974 2937-2937/rust.quad_android D/InputMethodManager: prepareNavigationBarInfo() DecorView@5b6f8a7[NativeActivity]
2020-12-22 13:22:08.974 2937-2937/rust.quad_android D/InputMethodManager: getNavigationBarColor() -855310
2020-12-22 13:22:08.975 2937-2937/rust.quad_android V/InputMethodManager: Starting input: tba=rust.quad_android ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2020-12-22 13:22:08.975 2937-2937/rust.quad_android D/InputMethodManager: startInputInner - Id : 0
2020-12-22 13:22:08.980 2937-4294/rust.quad_android I/mali_winsys: delete_surface() [1200x2000] return
2020-12-22 13:22:08.980 2937-4294/rust.quad_android W/libEGL: eglTerminate() called w/ 1 objects remaining
2020-12-22 13:22:08.980 2937-4294/rust.quad_android W/libEGL: EGLNativeWindowType 0x7a7b718010 disconnect failed
2020-12-22 13:22:09.010 2937-2937/rust.quad_android I/ViewRootImpl@41bb7f9[NativeActivity]: MSG_RESIZED: frame=(0,0,1200,2000) ci=(0,0,0,23) vi=(0,0,0,23) or=1

Looks like glow related error. glBeginConditionalRender only avalible for OpenGL (not ES)

kvark commented 3 years ago

Thank you for filing! Please consider making a relevant PR for glow to fix this. cc @grovesNL

grovesNL commented 3 years ago

Based on the stacktrace, it seems to be related to khronos_egl instead of glow

Gordon-F commented 3 years ago

@grovesNL khronos_egl can't return pointer to glBeginConditionalRender becase we require OpenGL ES 3 context with EGL. glBeginConditionalRender available only for OpenGL.

Looks like all magic happens here: https://raw.githubusercontent.com/grovesNL/glow/main/src/gl46.rs#load_all_with_dyn

grovesNL commented 3 years ago

Where is glBeginConditionalRender called though? I think we'd like to avoid doing that entirely (i.e. because we won't be able to load the function pointer for it, which is ok)

kvark commented 3 years ago

@grovesNL doesn't glow request the pointers to all functions at initialization? It's not trying to call this function, it just tries to get the address of it.

grovesNL commented 3 years ago

As far as I know, if it can't load a function pointer then it just returnsNone for it. So it should work fine until somebody tries to call it, at which point it panics if it wasn't loaded. This is described in the doc comment a bit:

//! In both styles, if you call a function that isn't loaded you will get a
//! panic. This generally only happens if the context doesn't fully support
//! the GL version. You can check if a GL command is loaded or not before
//! actually calling it by adding `_is_loaded` to the name of the command. In
//! other words, `glGetError_is_loaded` to check if `glGetError` is globally
//! loaded, and `gl.GetError_is_loaded` to check if it's loaded in a `GlFns`.
//! All of the "`_is_loaded`" functions are hidden in the generated docs just
//! to keep things tidy, but they're there.
grovesNL commented 3 years ago

Also cc @Lokathor in case I'm misunderstanding this

kvark commented 3 years ago

@grovesNL I believe we've seen this before (either in WebRender, or here in gfx-rs, I don't recall). Android (something in it - could be the validation layer) is too picky about the function pointers we request. It doesn't like the names it doesn't know about, at all. I believe this behavior doesn't match the GL expectations in general, but it's how they roll...

Lokathor commented 3 years ago

glancing at this quickly, groves understands the lib situation correctly. the lib will try to load a whole pile of functions, and will expect the occasional null pointer back. this "works" based on the fact that all open gl and gl es functions do the same thing if they have the same name and exist in both places, so it's "fine" to casually mix between both and handle the occasional error.

if android is gonna be picky about what is even asked for, you might need an alternative loader set on android which only asks for gl es function names.

Gordon-F commented 3 years ago

After some hacks on gl backend side:

let context = unsafe {
    glow::Context::from_loader_function(|name| {
        log::warn!("{}", name);
        match self.egl.get_proc_address(name) {
            Some(ext) => ext as *const _,
            _ => std::ptr::null() as *const _,
        }
        //self.egl.get_proc_address(name).unwrap() as *const _
    })
};
2020-12-23 13:09:25.410 5825-20827/rust.quad_android I/gfx_backend_gl: Vendor: "ARM"
2020-12-23 13:09:25.410 5825-20827/rust.quad_android I/gfx_backend_gl: Renderer: "Mali-G72"
2020-12-23 13:09:25.410 5825-20827/rust.quad_android I/gfx_backend_gl: Version: 3.2, v1.r19p0-01rel0.###other-sha0123456789ABCDEF0###
2020-12-23 13:09:25.410 5825-20827/rust.quad_android I/gfx_backend_gl: Shading Language: 3.2
2020-12-23 13:09:25.410 5825-20827/rust.quad_android I/gfx_backend_gl: Supported Features: INDEPENDENT_BLENDING | INSTANCE_RATE | MUTABLE_COMPARISON_SAMPLER | NDC_Y_UP
2020-12-23 13:09:25.410 5825-20827/rust.quad_android I/gfx_backend_gl: Legacy Features: DRAW_INSTANCED | DRAW_INDEXED_INSTANCED | VERTEX_BASE | CONSTANT_BUFFER | COPY_BUFFER | SAMPLER_OBJECTS | INSTANCED_ATTRIBUTE_BINDING
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: Private capabilities: PrivateCaps {
        vertex_array: true,
        framebuffer: true,
        framebuffer_texture: false,
        index_buffer_role_change: true,
        buffer_storage: true,
        image_storage: false,
        clear_buffer: true,
        program_interface: false,
        frag_data_location: false,
        sync: true,
        emulate_map: false,
        depth_range_f64_precision: false,
        draw_buffers: true,
    }
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: Loaded Extensions:
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_sample_variables
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_shader_io_blocks
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_copy_image
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_shader_non_constant_global_initializers
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_fbo_render_mipmap
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_storage
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_get_program_binary
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_shader_image_atomic
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_vertex_half_float
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_storage_multisample_2d_array
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_draw_buffers_indexed
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_cube_map_array
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_shader_io_blocks
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_ARM_rgba8
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_depth_texture_cube_map
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_packed_depth_stencil
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_tessellation_shader
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_shader_multisample_interpolation
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_geometry_shader
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_gpu_shader5
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_element_index_uint
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_draw_elements_base_vertex
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_robust_buffer_access_behavior
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_protected_textures
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_EGL_image_external_essl3
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OVR_multiview
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_disjoint_timer_query
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OVR_multiview_multisampled_render_to_texture
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_ANDROID_extension_pack_es31a
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OVR_multiview2
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_blend_minmax
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_buffer_storage
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_gpu_shader5
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_read_format_bgra
2020-12-23 13:09:25.411 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_sample_shading
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_color_buffer_float
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_external_buffer
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_standard_derivatives
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_texture_compression_astc_ldr
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_debug
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_multisampled_render_to_texture
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_sRGB_write_control
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_draw_elements_base_vertex
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_EGL_image
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_shadow_samplers
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_required_internalformat
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_texture_compression_astc_sliced_3d
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_vertex_array_object
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_debug_marker
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_sRGB_decode
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_sRGB_R8
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_texture_compression_astc_hdr
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_primitive_bounding_box
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_depth24
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_robustness
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_compressed_paletted_texture
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_ARM_mali_program_binary
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_buffer
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_rgb8_rgba8
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_draw_buffers_indexed
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_color_buffer_half_float
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_blend_equation_advanced
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_multisampled_render_to_texture2
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_npot
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_YUV_target
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_rg
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_format_BGRA8888
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_sRGB_RG8
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_tessellation_shader
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_compressed_ETC1_RGB8_texture
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_blend_equation_advanced_coherent
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_EGL_sync
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_occlusion_query_boolean
2020-12-23 13:09:25.412 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_EGL_image_external
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_buffer
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_geometry_shader
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_depth_texture
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_discard_framebuffer
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_copy_image
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_KHR_robustness
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_EGL_image_array
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_3D
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_shader_pixel_local_storage
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_sRGB
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_type_2_10_10_10_REV
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_ARM_mali_shader_binary
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_compression_astc
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_mapbuffer
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_ARM_shader_framebuffer_fetch
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_stencil8
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_ARM_shader_framebuffer_fetch_depth_stencil
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_border_clamp
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_texture_border_clamp
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_primitive_bounding_box
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_EXT_texture_cube_map_array
2020-12-23 13:09:25.413 5825-20827/rust.quad_android D/gfx_backend_gl: - GL_OES_surfaceless_context
2020-12-23 13:09:25.413 5825-20827/rust.quad_android I/gfx_backend_gl: Memory types: [
        (
            MemoryType {
                properties: CPU_VISIBLE | COHERENT | CPU_CACHED,
                heap_index: 1,
            },
            Buffer(
                TRANSFER_SRC | TRANSFER_DST | UNIFORM_TEXEL | STORAGE_TEXEL | UNIFORM | STORAGE | INDEX | VERTEX | INDIRECT,
            ),
        ),
        (
            MemoryType {
                properties: CPU_VISIBLE | COHERENT,
                heap_index: 1,
            },
            Buffer(
                TRANSFER_SRC | TRANSFER_DST | UNIFORM_TEXEL | STORAGE_TEXEL | UNIFORM | STORAGE | INDEX | VERTEX | INDIRECT,
            ),
        ),
        (
            MemoryType {
                properties: DEVICE_LOCAL,
                heap_index: 0,
            },
            Buffer(
                TRANSFER_SRC | TRANSFER_DST | UNIFORM_TEXEL | STORAGE_TEXEL | UNIFORM | STORAGE | INDEX | VERTEX | INDIRECT,
            ),
        ),
        (
            MemoryType {
                properties: DEVICE_LOCAL,
                heap_index: 0,
            },
            Image,
        ),
    ]
2020-12-23 13:09:25.413 5825-20827/rust.quad_android W/quad_android: surface QueueFamily General
2020-12-23 13:09:25.413 5825-20826/rust.quad_android I/RustStdoutStderr: AdapterInfo { name: "Mali-G72", vendor: 5045, device: 0, device_type: IntegratedGpu }
2020-12-23 13:09:25.413 5825-20827/rust.quad_android W/gfx_backend_gl::windo..: presentable false
2020-12-23 13:09:25.414 5825-20827/rust.quad_android I/gfx_backend_gl::device:  Created frame buffer 1
2020-12-23 13:09:25.414 5825-20826/rust.quad_android I/RustStdoutStderr: Memory types: [MemoryType { properties: CPU_VISIBLE | COHERENT | CPU_CACHED, heap_index: 1 }, MemoryType { properties: CPU_VISIBLE | COHERENT, heap_index: 1 }, MemoryType { properties: DEVICE_LOCAL, heap_index: 0 }, MemoryType { properties: DEVICE_LOCAL, heap_index: 0 }]
2020-12-23 13:09:25.414 5825-20826/rust.quad_android I/RustStdoutStderr: thread '<unnamed>' panicked at 'called glBufferStorage but it was not loaded.', /Users/indish/Dev/RustProjects/glow/src/gl46.rs:4224:5
2020-12-23 13:09:25.414 5825-20826/rust.quad_android I/RustStdoutStderr: stack backtrace:

GL_EXT_buffer_storage available on device. Ho we can use glBufferStorageExt with glow?

grovesNL commented 3 years ago

We'll need to include bindings for GL_EXT_buffer_storage in glow's gl46.rs file following the steps in https://github.com/grovesNL/glow/pull/117#issuecomment-674613621. Then in buffer_storage we can try to fallback to glBufferStorageExt whenever !glBufferStorage_is_loaded