Web GL Extension disjoint_timer_query returns 1285 (Memory Overflow) on Android
Reported by
helmut.e...@gmail.com,
Mar 19 2017
|
||||||||||
Issue descriptionExample URL: http://www.taccgl.org/blog/css-transition-visibility.html?exttimer=t&dbg=t&looperrcheck=t Steps to reproduce the problem: 1. call the URL http://www.taccgl.org/blog/css-transition-visibility.html?exttimer=t&dbg=t&looperrcheck=t What is the expected behavior? Should display a green 3D sign on the page top and show simple WebGL animations. What went wrong? Displays a yellow-2D sign on the page top and Error 1285 on beginQueryEXT on the javascript console and instead of WebGL animations canvas-2d animations are shown. Does it occur on multiple sites: N/A Is it a problem with a plugin? No Did this work before? N/A Does this work in other browsers? Yes Chrome version: 56.0.2924.87 Channel: stable OS Version: 6.0.1 Flash Version: The page works on desktop windows chrome stable and canary. The error also occurs in canary on android. The error does not show up if the exttimer=t URL parameter is not used to disable the disjoint_timer_query extension. I tested some other pages on my site that also use my taccgl.js library and the error occured as well. The library normally uses the extension to enable/disable rendering features depending on GPU performance. In the current version of the library the extension is no longer used on android (unless the exttimer parameter is given). URL parameter dbg=t uses non-minified .js libs and looperrcheck=t enables WebGL error checking after most of the WebGL calls. The problem occurs on a German Samsung S7 Phone SM-G930F
,
Oct 27 2017
Are you on Chrome 56? That's very old now, can you update and report back?
,
Oct 27 2017
It looks like this bug was filed back in March when 56 was Stable. Submitter, please provide about:gpu information from your phone. We can blacklist the disjoint_timer_query extension on that phone if it's broken.
,
Nov 1 2017
I just verified that the problem still occurs with Chrome 61.0.3168.98 on my German Samsung S7 Phone SM-G930F. However the problem seemes to occur on various other popular Samsung smart phones SM-920F, SM-930F and SM-925F, tested in March with chrome 56. After I found out, I disabled the use of the extension in my lib on all android devices. I am afraid that black listing this extension will hit very many devices, so I still hope, that there is a work around or fix. My taccgl library uses the timer extension to automatically degrade graphic quality on slow GPUs. Because of the problems with the timer extension on Android it currently has to rely on frame rate measurements, which are much more inprecise. Currently there is another problem with the http://www.taccgl.org/blog/css-transition-visibility.html page (see below), so for reproducing the problem another page is needed: http://www.taccgl.org/tutorial/firstExample.html?exttimer=t&dbg=t&looperrcheck=t and then pressing the red button labelled "RUN". Calling the page without the exttimer option disables the extension and makes the page run on my phone. On desktops the extension is automatically enabled without option and runs well. The page http://www.taccgl.org/blog/css-transition-visibility.html given in the bug report from march now with chrome 61 stopped working completely and delivers an error message 18:49:27.474 taccgl.js:1501 [GroupMarkerNotSet( crbug.com/242999 )!:54F398C0]GL ERROR :GL_INVALID_OPERATION : BackFramebuffer::Create: <- error from previous GL command on the German Samsung S7 Phone SM-G930F. It works on my desktop. To me this seems to be similar to http://crbug.com/740971 . Pls let me know if I should file another bug report on this.
,
Nov 1 2017
Thank you for providing more feedback. Adding requester "danakj@chromium.org" to the cc list and removing "Needs-Feedback" label. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Nov 1 2017
Note: To properly save this page, select the "Webpage, Complete" option in the Save File dialog. Graphics Feature Status Canvas: Hardware accelerated CheckerImaging: Disabled Flash: Hardware accelerated Flash Stage3D: Hardware accelerated Flash Stage3D Baseline profile: Hardware accelerated Compositing: Hardware accelerated Multiple Raster Threads: Disabled Native GpuMemoryBuffers: Software only. Hardware acceleration disabled Rasterization: Hardware accelerated Video Decode: Hardware accelerated Video Encode: Hardware accelerated WebGL: Hardware accelerated WebGL2: Hardware accelerated Driver Bug Workarounds clear_uniforms_before_first_program_use disable_framebuffer_cmaa max_texture_size_limit_4096 scalarize_vec_and_mat_constructor_args use_client_side_arrays_for_stream_buffers use_virtualized_gl_contexts Problems Detected ARM driver doesn't like uploading lots of buffer data constantly Applied Workarounds: use_client_side_arrays_for_stream_buffers The Mali-Txxx driver does not guarantee flush ordering: 154715, 10068, 269829, 294779, 285292 Applied Workarounds: use_virtualized_gl_contexts Clear uniforms before first program use on all platforms: 124764, 349137 Applied Workarounds: clear_uniforms_before_first_program_use Always rewrite vec/mat constructors to be consistent: 398694 Applied Workarounds: scalarize_vec_and_mat_constructor_args Limit max texure size to 4096 on all of Android Applied Workarounds: max_texture_size_limit_4096 Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198 Applied Workarounds: disable_framebuffer_cmaa Disable KHR_blend_equation_advanced until cc shaders are updated: 661715 Raster is using a single thread. Disabled Features: multiple_raster_threads Native GpuMemoryBuffers have been disabled, either via about:flags or command line. Disabled Features: native_gpu_memory_buffers Checker-imaging has been disabled via finch trial or the command line. Disabled Features: checker_imaging Version Information Data exported 1.11.2017, 11:42:59 Chrome version Chrome/61.0.3163.98 Operating system Android 7.0 Software rendering list version 13.10 Driver bug list version 10.29 ANGLE commit id 0d2ecb4ea992 2D graphics backend Skia/61 0eefc0552cfb5ac077560b7c2630c5bd475ea585- Command Line --use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-pinch --enable-viewport --validate-input-event-stream --enable-longpress-drag-selection --touch-selection-strategy=direction --disable-gpu-process-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-timing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --enable-features=MediaDocumentDownloadButton --flag-switches-end --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 Driver Information Initialization time 241 In-process GPU false Passthrough Command Decoder false Supports overlays false Sandboxed false GPU0 VENDOR = 0x0000 [ARM], DEVICE= 0x0000 [Mali-T880] Optimus false Optimus false AMD switchable false Driver vendor Driver version 1. Driver date Pixel shader version 3.20 Vertex shader version 3.20 Max. MSAA samples 16 Machine model name SM-G930F Machine model version GL_VENDOR ARM GL_RENDERER Mali-T880 GL_VERSION OpenGL ES 3.2 v1.r12p1-03dev0.228ab63cced004f840e7dd47b762a1d0 GL_EXTENSIONS GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_protected_textures Disabled Extensions GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent Window system binding vendor Window system binding version Window system binding extensions Direct rendering Yes Reset notification strategy 0x8252 GPU process crash count 0 Compositor Information Tile Update Mode One-copy Partial Raster Enabled GpuMemoryBuffers Status ATC Software only ATCIA Software only DXT1 Software only DXT5 Software only ETC1 Software only R_8 Software only R_16 Software only RG_88 Software only BGR_565 Software only RGBA_4444 Software only RGBX_8888 Software only RGBA_8888 Software only BGRX_8888 Software only BGRA_8888 Software only RGBA_F16 Software only YVU_420 Software only YUV_420_BIPLANAR Software only UYVY_422 Software only
,
Nov 1 2017
Thanks for confirming this is still a problem in 61. kbr@ can you triage?
,
Nov 2 2017
Submitter: per #4 above I tried: http://www.taccgl.org/tutorial/firstExample.html?exttimer=t&dbg=t&looperrcheck=t on a Retina MacBook Pro with NVIDIA GPU (pretty reasonable) and the animation chugs along very slowly, hanging up the machine for a good fraction of a second at the beginning. This machine has a capable GPU so I have a feeling your library is doing something really stressful on the GPU. I'm hesitant to blacklist EXT_disjoint_timer_query on the Mali-T880 in response to this bug report because I have a feeling it's reporting a legitimate issue. How is your library performing its animations? Does it use requestAnimationFrame to schedule them? If it's using setTimeout, please don't use that. There is the possibility it will swamp the GPU with rendering commands. Can you please provide a smaller test case demonstrating the problem with EXT_disjoint_timer_query, something separated from the entirety of the rest of your library?
,
Nov 4 2017
> Can you please provide a smaller test case demonstrating the problem with EXT_disjoint_timer_query, > something separated from the entirety of the rest of your library? I just ran the Khronos test suite 1.0.4 https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html conformance/extensions/ext-disjoint-timer-query.html fails on the device and runs on the desktop. > Submitter: per #4 above I tried: > http://www.taccgl.org/tutorial/firstExample.html?exttimer=t&dbg=t&looperrcheck=t > on a Retina MacBook Pro with NVIDIA GPU (pretty reasonable) and the animation chugs along very slowly, > hanging up the machine for a good fraction of a second at the beginning. This machine has a capable GPU > so I have a feeling your library is doing something really stressful on the GPU. I just fixed an incompatibility in the lib w.r.t. the new viewport api, which caused a very much oversized webgl canvas and so high load on the GPU. Now it runs smoothly on the phone again without the exttimer=t option. When the use of the timer extension is enabled with the exttimer=t option it crashes with the 1285 error. Crashes: http://www.taccgl.org/tutorial/firstExample.html?exttimer=t&dbg=t&looperrcheck=t Works: http://www.taccgl.org/tutorial/firstExample.html?dbg=t The looperrcheck=t option is for debugging only and calls glError after each webgl call in the requestAnimationFrame callback and slows down animations by breaking the GPU pipeline. So for timing measurements use http://www.taccgl.org/tutorial/firstExample.html?exttimer=t&dbg=t or http://www.taccgl.org/tutorial/firstExample.html?exttimer=t&dbg=t&debug=t the second one to produce test output and timing information on the js console. The library does some moderate stressful things to the GPU it tries to perform a full window / full screen animation possibly on full resolution. On a retina display it multiplies the canvas size by the device pixel ratio sometimes resulting in a huge 3D canvas. It also can do a kind shadows. However, if the requestAnimationFrame call back is not called at 60 FPS and the gpu time measured by the timer extension is bigger than 10ms it switches back to simpler shaders, a smaller canvas (not covering the full window, and lower resolution of the canvas). On the beginning of the animation it performs load tests on the gpu for about a second to find out whether to enable the shadow shaders. At the beginning it also compiles shaders and uploads 2 textures (which are also full screen at retina resolution). > How is your library performing its animations? Does it use requestAnimationFrame to schedule them? > If it's using setTimeout, please don't use that. There is the possibility it will swamp the GPU > with rendering commands. It uses requestAnimationFrame.
,
Nov 10 2017
I just noticed that the Needs-Feedback Label is still active and hope that is not a problem.
,
Nov 10 2017
,
Nov 14 2017
,
Nov 18 2017
,
Nov 18 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7b33c549911215282621c311701672fa3fd672cf commit 7b33c549911215282621c311701672fa3fd672cf Author: Kenneth Russell <kbr@chromium.org> Date: Sat Nov 18 03:38:39 2017 Blacklist EXT_disjoint_timer_query extension on Samsung Galaxy S6. The driver is generating GL_OUT_OF_MEMORY errors when it's used. Stop exposing it to the application level. BUG= 702980 NOTRY=true Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: I5d3ec20941ce0d032f37293db71926347a1652aa Reviewed-on: https://chromium-review.googlesource.com/777982 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Cr-Commit-Position: refs/heads/master@{#517693} [modify] https://crrev.com/7b33c549911215282621c311701672fa3fd672cf/gpu/config/gpu_driver_bug_list.json
,
Nov 18 2017
I believe this will be fixed (by virtue of no longer exposing the EXT_disjoint_timer_query extension to WebGL) by the CL above. Closing this as Fixed. Please reopen or comment if you test the above CL (in Chrome Canary, for example) and it somehow doesn't prevent the problem from happening.
,
Nov 18 2017
Issue 768074 has been merged into this issue.
,
Nov 28 2017
I tested with Canary on my phone and the out of memory error no longer occurs. My phone, however, is an S7 not a S6. S6 is mentioned in the check-in message. I guess the checkin itself refers to the S7 and not the S6 since it uses a model name SM-G930F. In March (with chrome 56) I have seen this bug occurring on S6 (SM-920F) and S6 Edge (SM-925F) as well. I do not have access to these phones to test the fix now. Since I want to use ext_timer in my lib for use on ordinary web sites, this needs to work (at least not crash) on almost all devices. In the production version of my lib for android I use frame rate measurements, which work quite well. Still ext_timer would probably be better.
,
Nov 29 2017
If you can confirm it's broken on other phones then please provide about:gpu from them and we'll blacklist the extension on them. The bug here is in the graphics driver, not in Chrome, and there is nothing we can do to make this extension work. The only thing we can do is avoid exposing it to WebGL to avoid the broken behavior. |
||||||||||
►
Sign in to add a comment |
||||||||||
Comment 1 by dtapu...@chromium.org
, Oct 25 2017