New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 686415 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: 2017-02-13
OS: Android
Pri: 2
Type: Bug



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 description

Steps 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.
 

Comment 1 by tkent@chromium.org, Jan 30 2017

Components: -Blink Blink>Paint
Components: -Blink>Paint Mobile Internals>GPU
Labels: Needs-Feedback
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.
NextAction: 2017-02-13
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.
Cc: ericrk@chromium.org
Eric can you reproduce?

Comment 6 by ericrk@chromium.org, 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.
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?
so... Do I have a defective device?  Or is this a confirmed issue on all Pixel devices?
Cc: esprehn@chromium.org
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!
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:
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.
Cc: w...@chromium.org
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).

Comment 13 by w...@chromium.org, Feb 7 2017

Cc: liber...@chromium.org
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/)
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.

Comment 15 by w...@chromium.org, 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.
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.
Status: Available (was: Unconfirmed)
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.
Thanks for the update ericrk@chromium.org
<https://bugs.chromium.org/u/1991082367/> - I/we appreciate the work folks!
Labels: -Needs-Feedback
Owner: ericrk@chromium.org
Status: Assigned (was: Available)
Erik, just assigning to you per comment #17 but if you don't have time to debug this please un-assign.
Status: Fixed (was: Assigned)
It turns out that this was fixed for M57 by https://chromium.googlesource.com/chromium/src/+/b5066b11a59f5b79aab006373533b8a191784a57

Sign in to add a comment