Issue metadata
Sign in to add a comment
|
On Android device, element with mix-blend-mode over video disappears
Reported by
toufali....@gmail.com,
Jan 28 2017
|
||||||||||||||||||||||
Issue descriptionSteps to reproduce the problem: 1. visit https://jsfiddle.net/d0z9xen7/ on desktop Chrome to view expected results 2. visit https://jsfiddle.net/d0z9xen7/ on Android Chrome to reproduce bug What is the expected behavior? On Android Chrome, elements with mix-blend-mode should work over video, as they do on desktop. What went wrong? The mix-blend-mode element disappears. Note this also frustratingly occurs on canvas drawing the video. Did this work before? N/A Chrome version: 55.0.2883.91 Channel: stable OS Version: 7.1.1 Flash Version: Element with mix-blend-mode over video and canvas works as expected on iOS Safari.
,
Jan 30 2017
It works fine for me on a Nexus5X with Chrome Beta 56.0.2924.78. What device are you seeing problems on? Could you please send us the output from chrome://gpu? Assigning to the GPU team as this seems to be device specific.
,
Jan 30 2017
,
Jan 30 2017
I'm on Google Pixel XL. According to chrome://gpu you may be right - many (1000?) errors after fresh restart and visiting the jsfiddle link. I cut most of the log since the errors seemed to be repeating: Graphics Feature Status - Canvas: Hardware accelerated - 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 - VPx Video Decode: Hardware accelerated - WebGL: Hardware accelerated Driver Bug Workarounds - broken_egl_image_ref_counting - clear_uniforms_before_first_program_use - disable_chromium_framebuffer_multisample - disable_depth_texture - disable_framebuffer_cmaa - disable_program_disk_cache - force_cube_map_positive_x_allocation - max_copy_texture_chromium_size_1048576 - max_texture_size_limit_4096 - scalarize_vec_and_mat_constructor_args - unbind_egl_context_to_flush_driver_caches - use_virtualized_gl_contexts - wake_up_gpu_before_drawing Problems Detected - Disable depth textures on Android with Qualcomm GPUs *Applied Workarounds: disable_depth_texture* - Non-virtual contexts on Qualcomm sometimes cause out-of-order frames: 289461 < http://crbug.com/289461 > *Applied Workarounds: use_virtualized_gl_contexts* - The first draw operation from an idle state is slow: 309734 <http://crbug.com/309734> *Applied Workarounds: wake_up_gpu_before_drawing* - ES3 MSAA is broken on Qualcomm *Applied Workarounds: disable_chromium_framebuffer_multisample* - Clear uniforms before first program use on all platforms: 124764 < http://crbug.com/124764 >, 349137 < http://crbug.com/349137 > *Applied Workarounds: clear_uniforms_before_first_program_use* - Always rewrite vec/mat constructors to be consistent: 398694 < http://crbug.com/398694 > *Applied Workarounds: scalarize_vec_and_mat_constructor_args* - Certain Adreno 4xx and 5xx drivers often crash in glProgramBinary.: 486117 <http://crbug.com/486117>, 598060 < http://crbug.com/598060 > *Applied Workarounds: disable_program_disk_cache* - glFinish doesn't clear caches on Android: 509727 <http://crbug.com/509727> *Applied Workarounds: unbind_egl_context_to_flush_driver_caches* - Android Adreno crashes on binding incomplete cube map texture to FBO: 518889 <http://crbug.com/518889> *Applied Workarounds: force_cube_map_positive_x_allocation* - CHROMIUM_copy_texture with 1MB copy per flush to avoid unwanted cache growth on Adreno: 542478 <http://crbug.com/542478> *Applied Workarounds: max_copy_texture_chromium_size_1048576* - EGLImage ref counting across EGLContext/threads is broken: 585250 < http://crbug.com/585250 > *Applied Workarounds: broken_egl_image_ref_counting* - 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 < http://crbug.com/535198 > *Applied Workarounds: disable_framebuffer_cmaa* - 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* Version Information Data exported 1/30/2017, 3:15:28 PM Chrome version Chrome/55.0.2883.91 Operating system Android 7.1.1 Software rendering list version 11.17 Driver bug list version 9.15 ANGLE commit id 4d208abb1926 2D graphics backend Skia/55 d1740f81c843c65acd58d1b571ce94b90fee99d0 Command Line Args --use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-pinch --enable-viewport --enable-overlay-scrollbar --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 --flag-switches-end --enable-instant-extended-api Driver Information Initialization time 295 In-process GPU false Sandboxed false GPU0 VENDOR = 0x0000 [Qualcomm], DEVICE= 0x0000 [Adreno (TM) 530] Optimus false AMD switchable false Driver vendor Driver version 145.0 Driver date Pixel shader version 3.20 Vertex shader version 3.20 Max. MSAA samples 4 Machine model name Pixel XL Machine model version GL_VENDOR Qualcomm GL_RENDERER Adreno (TM) 530 GL_VERSION OpenGL ES 3.2 V@145.0 (GIT@If5818605d9) GL_EXTENSIONS GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_half_float GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_compressed_ETC1_RGB8_texture GL_AMD_compressed_ATC_texture GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_OES_texture_compression_astc GL_OES_texture_npot GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_OES_texture_3D GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_QCOM_alpha_test GL_OES_depth24 GL_OES_packed_depth_stencil GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_EXT_sRGB GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_sRGB_decode GL_OES_element_index_uint GL_EXT_copy_image GL_EXT_geometry_shader GL_EXT_tessellation_shader GL_OES_texture_stencil8 GL_EXT_shader_io_blocks GL_OES_shader_image_atomic GL_OES_sample_variables GL_EXT_texture_border_clamp GL_EXT_multisampled_render_to_texture GL_OES_shader_multisample_interpolation GL_EXT_texture_cube_map_array GL_EXT_draw_buffers_indexed GL_EXT_gpu_shader5 GL_EXT_robustness GL_EXT_texture_buffer GL_EXT_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_OES_texture_storage_multisample_2d_array GL_OES_sample_shading GL_OES_get_program_binary GL_EXT_debug_label GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_QCOM_tiled_rendering GL_ANDROID_extension_pack_es31a GL_EXT_primitive_bounding_box GL_OES_standard_derivatives GL_OES_vertex_array_object GL_EXT_disjoint_timer_query GL_KHR_debug GL_EXT_YUV_target GL_EXT_sRGB_write_control GL_EXT_texture_norm16 GL_EXT_discard_framebuffer GL_OES_surfaceless_context GL_OVR_multiview GL_OVR_multiview2 GL_EXT_texture_sRGB_R8 GL_KHR_no_error GL_EXT_debug_marker GL_OES_EGL_image_external_essl3 GL_OVR_multiview_multisampled_render_to_texture GL_EXT_buffer_storage GL_EXT_blit_framebuffer_params GL_EXT_clip_cull_distance GL_EXT_protected_textures Disabled Extensions GL_OES_depth_texture 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 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 YVU_420 Software only YUV_420_BIPLANAR Software only UYVY_422 Software only Log Messages - [ERROR:gles2_cmd_decoder.cc(2379)] : [.RenderWorker-0xe381dc00]GL ERROR :GL_INVALID_OPERATION : GLES2DecoderImpl::DoBindTexImage2DCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(2379)] : [.RenderWorker-0xe381dc00]GL ERROR :GL_INVALID_OPERATION : GLES2DecoderImpl::DoBindTexImage2DCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:buffer_manager.cc(443)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(15604)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glCopyTextureCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:buffer_manager.cc(443)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(15604)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glCopyTextureCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(15604)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glCopyTextureCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:buffer_manager.cc(443)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(15604)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glCopyTextureCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(15604)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glCopyTextureCHROMIUM: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - [ERROR:buffer_manager.cc(443)] : [.Offscreen-MainThread-0xcd1fd400]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command - [ERROR:gles2_cmd_decoder.cc(7385)] : [.DisplayCompositor-0xbf153800]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2D: <- error from previous GL command - - - - [ERROR:logger.cc(46)] : Too many GL errors, not reporting any more for this context. use --disable-gl-error-limit to see all errors.
,
Jan 31 2017
Eric can you reproduce?
,
Jan 31 2017
Interestingly, on 55.0.2883.91 on n5x, I see an issue, but not the one reported (as I understand it). In my case, no video renders, but the two overlay elements appear to render fine. toufali.bureau@, can you confirm that in your case, you see the video, but the overlay elements have disappeared? Thanks! If I move to 56 beta, everything seems to work as expected.
,
Jan 31 2017
Confirmed - in my case on Pixel XL it's the overlay elements that disappear. In fact, in my case it's whatever element has mix-blend-mode applied: If I remove mix-blend-mode from the elements and apply it to the video and canvas, then the video and canvas both disappear and the elements remain (I had also moved video and canvas over top of the elements). I can also confirm this issue does NOT exist on my Moto X Pure. So far it appears to affect only certain devices (Nexus and Pixel)... Anyone else with a Pixel that might confirm?
,
Feb 6 2017
so... Do I have a defective device? Or is this a confirmed issue on all Pixel devices?
,
Feb 6 2017
toufali.bureau@, can you confirm whether the issue is fixed in M56, which was just released last week? This appears to fix the different, but likely related issue I saw on my Nexus 5. esprehn@, do you have a pixel? Can you try the site linked in #1 and see if you also experience this issue? Thanks!
,
Feb 7 2017
Just tested Chrome Beta M57 and the issue appears fixed. I haven't gotten the stable 56 yet, but will test as soon as I do! On Mon, Feb 6, 2017 at 3:08 PM, eri⦠via monorail <monorail+v2.1991082367@ chromium.org> wrote:
,
Feb 7 2017
On my Pixel XL the video doesn't seem to paint at all for me on stable, but on canary I see the blend layers over the video fine.
,
Feb 7 2017
Hmm, given that we're seeing video failing to render in a few cases (on my N5x and on exprehn@'s Pixel XL), looping in watk@. watk@, have you seen any video issues like this on the Pixel (or N5x)? On M55, the video in the example above reliably failed to render on my N5x. esprehn@ was seeing a similar results on a Pixel XL with stable (guessing M56? but maybe still M55 depending on roll-out).
,
Feb 7 2017
I can repro both the original report and #11 on my Pixel XL. On M56 I noticed that switching tabs seems to fix the video but hide the overlay as on M55. M57 appears to fix everything. chrome://media-internals doesn't indicate any sort of playback error. And I tried changing the video to a VP8 to force the software decoding path and I still see a bunch of GL_ERRORs in the logs. So I don't think this is video related. (VP8 version: https://jsfiddle.net/o01doxap/)
,
Feb 8 2017
i wonder if a vp9 video would fail the same way. it would use a TEXTURE_2D rather than EXTERNAL_OES to hold the video frame. turning on in-process gpu would have a similar effect to vp9 -- enables a texture copy in the renderer to 2D. my guess, in that case, is that mixed-blend-mode:screen is trying to sample from the external texture, and isn't doing it right. i'm not in the office today, so i can't test this myself.
,
Feb 8 2017
re 14: I verified with small res VP8 (libvpx) that the overlay is still not visible. So it shouldn't be related to OES textures.
,
Feb 8 2017
that's unexpected! re-reading the comments (OP "canvas" and #6), it makes me think that perhaps one could replace <video> with an image and see the same problem. actually, will canvas end up with its own weblayer like video does? maybe that's also required.
,
Feb 8 2017
watk@ and liberato@, thanks for the detailed analysis. I'm getting a pixel phone in tomorrow, so I'll do some debugging then as well. Re #8 - toufali.bureau@, it definitely seems like this repros on all Pixel devices.
,
Feb 8 2017
Thanks for the update ericrk@chromium.org <https://bugs.chromium.org/u/1991082367/> - I/we appreciate the work folks!
,
Jun 26 2017
Erik, just assigning to you per comment #17 but if you don't have time to debug this please un-assign.
,
Jun 28 2017
It turns out that this was fixed for M57 by https://chromium.googlesource.com/chromium/src/+/b5066b11a59f5b79aab006373533b8a191784a57 |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by tkent@chromium.org
, Jan 30 2017