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

Issue 671280 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
OOO until 2019-01-24
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug

Blocked on:
issue 598902

Blocking:
issue 686727



Sign in to add a comment

WebGL 2.0 not supported on open-source AMD drivers on Linux

Project Member Reported by kbr@chromium.org, Dec 5 2016

Issue description

On the open-source Mesa / Gallium drivers on Linux for AMD GPUs, WebGL 2.0 is currently not supported. The reason is that the GL_ARB_gpu_shader5 extension isn't supported. The requirement for it was added in cf7b555abc38ee52485c0bbd0ae09a672f3348ce (see https://bugs.chromium.org/p/chromium/issues/detail?id=598902#c35 ).

The reason this was added is that ESSL 1.00 (from OpenGL ES 2.0) allows dynamic indexing of sampler arrays, but ESSL 3.00 (from OpenGL ES 3.0) forbids it. There was a thought that we didn't want to regress functionality compared to ESSL 1.00.

However, since ESSL 3.00's requirements are more strict than ESSL 1.00 in this area, it's actually not necessary to forbid creation of OpenGL ES 3.0 contexts in Chromium due to a lack of GL_ARB_gpu_shader5. For ES 2.0 contexts, we can leave the support for this functionality undefined (as it has been all along), and for ES 3.0 contexts, we don't need to require its presence.

Since this is a small change I'm marking it as R-B-S for M56 and will request a merge as soon as it lands on trunk.

 

Comment 1 by kbr@chromium.org, Dec 5 2016

about:gpu from an affected system (thanks to @Benjamin5Reilly):

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: Force enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Hardware accelerated
Video Decode: Software only, hardware acceleration unavailable
Video Encode: Hardware accelerated
VPx Video Decode: Software only, hardware acceleration unavailable
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
adjust_src_dst_region_for_blitframebuffer
clear_uniforms_before_first_program_use
count_all_in_varyings_packing
decode_encode_srgb_for_generatemipmap
disable_framebuffer_cmaa
disable_post_sub_buffers_for_onscreen_surfaces
dont_remove_invariant_for_fragment_input
force_cube_map_positive_x_allocation
init_texture_max_anisotropy
regenerate_struct_names
remove_invariant_and_centroid_for_essl3
scalarize_vec_and_mat_constructor_args
Problems Detected
Accelerated video decode is unavailable on Linux: 137247
Disabled Features: accelerated_video_decode
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Mesa drivers in Linux handle varyings without static use incorrectly: 333885
Applied Workarounds: count_all_in_varyings_packing
Linux AMD drivers incorrectly return initial value of 1 for TEXTURE_MAX_ANISOTROPY: 348237
Applied Workarounds: init_texture_max_anisotropy
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Linux AMD drivers handle struct scopes incorrectly: 403957
Applied Workarounds: regenerate_struct_names
Linux ATI drivers crash on binding incomplete cube map texture to FBO: 518889
Applied Workarounds: force_cube_map_positive_x_allocation
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Disable partial swaps on Mesa drivers (detected with GL_VERSION): 339493
Applied Workarounds: disable_post_sub_buffers_for_onscreen_surfaces
Decode and encode before generateMipmap for srgb format textures on os except macosx: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap
adjust src/dst region if blitting pixels outside read framebuffer on Linux AMD: 664740
Applied Workarounds: adjust_src_dst_region_for_blitframebuffer
AMD drivers in Linux require invariant qualifier to match between vertex and fragment shaders: 659326
Applied Workarounds: dont_remove_invariant_for_fragment_input
Mesa driver GL 3.3 requires invariant and centroid to match between shaders: 639760, 641129
Applied Workarounds: remove_invariant_and_centroid_for_essl3
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Version Information
Data exported5/12/2016, 18:59:28
Chrome versionChrome/56.0.2924.14
Operating systemLinux 4.8.10-300.fc25.x86_64
Software rendering list version12.03
Driver bug list version9.16
ANGLE commit id555009cefe4c
2D graphics backendSkia/56 82589494dacdc3eb562a328daa28dd2655edb787
Command Line Args--user-data-dir=/home/mauro/.config/google-chrome-unstable --user-data-dir=/home/mauro/.config/google-chrome-unstable --flag-switches-begin --enable-es3-apis --enable-gpu-rasterization --num-raster-threads=4 --enable-overlay-scrollbar --flag-switches-end
Driver Information
Initialization time66
In-process GPUfalse
Sandboxedfalse
GPU0VENDOR = 0x1002, DEVICE= 0x9505
Optimusfalse
AMD switchablefalse
Driver vendorMesa
Driver version12.0.3
Driver date
Pixel shader version3.30
Vertex shader version3.30
Max. MSAA samples8
Machine model name
Machine model version
GL_VENDORX.Org
GL_RENDERERGallium 0.4 on AMD RV670 (DRM 2.46.0 / 4.8.10-300.fc25.x86_64, LLVM 3.8.0)
GL_VERSION3.3 (Core Profile) Mesa 12.0.3
GL_EXTENSIONSGL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_performance_monitor GL_AMD_pinned_memory GL_AMD_shader_stencil_export GL_AMD_shader_trinary_minmax GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clip_control GL_ARB_compressed_texture_pixel_storage GL_ARB_conditional_render_inverted GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_shader GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_occlusion_query2 GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_sprite GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_robustness GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_objects GL_ARB_shader_stencil_export GL_ARB_shader_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shader_texture_lod GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_texture_barrier GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression_rgtc GL_ARB_texture_float GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_binding GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ATI_blend_equation_separate GL_ATI_meminfo GL_ATI_texture_float GL_ATI_texture_mirror_once GL_EXT_abgr GL_EXT_blend_equation_separate GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_sRGB GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_polygon_offset_clamp GL_EXT_provoking_vertex GL_EXT_shader_integer_mix GL_EXT_texture_array GL_EXT_texture_compression_rgtc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_IBM_multimode_draw_arrays GL_KHR_context_flush_control GL_KHR_debug GL_MESA_pack_invert GL_MESA_texture_signed_rgba GL_NVX_gpu_memory_info GL_NV_conditional_render GL_NV_depth_clamp GL_NV_packed_depth_stencil GL_NV_texture_barrier GL_OES_EGL_image GL_OES_read_format
Disabled Extensions
Window system binding vendorSGI
Window system binding version1.4
Window system binding extensionsGLX_ARB_create_context GLX_ARB_create_context_profile GLX_ARB_fbconfig_float GLX_ARB_framebuffer_sRGB GLX_ARB_multisample GLX_EXT_create_context_es_profile GLX_EXT_create_context_es2_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_libglvnd GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_copy_sub_buffer GLX_OML_swap_method GLX_SGI_make_current_read GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group
Window managerGNOME Shell
XDG_CURRENT_DESKTOPGNOME
GDMSESSIONgnome
Compositing managerYes
Direct renderingYes
Reset notification strategy0x8261
GPU process crash count0
System visual ID36
RGBA visual ID85
Compositor Information
Tile Update ModeOne-copy
Partial RasterEnabled
GpuMemoryBuffers Status
ATCSoftware only
ATCIASoftware only
DXT1Software only
DXT5Software only
ETC1Software only
R_8Software only
RG_88Software only
BGR_565Software only
RGBA_4444Software only
RGBX_8888Software only
RGBA_8888Software only
BGRX_8888Software only
BGRA_8888Software only
YVU_420Software only
YUV_420_BIPLANARSoftware only
UYVY_422Software only
Log Messages
[2720:2720:1205/185925:ERROR:sandbox_linux.cc(343)] : InitializeSandbox() called with multiple threads in process gpu-process.
[2720:2720:1205/185926:ERROR:gles2_cmd_decoder.cc(3110)] : ES3 is blacklisted/disabled/unsupported by driver.

Project Member

Comment 2 by bugdroid1@chromium.org, Dec 5 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2bd1f057280fea281637bb63265225303c35850a

commit 2bd1f057280fea281637bb63265225303c35850a
Author: kbr <kbr@chromium.org>
Date: Mon Dec 05 20:41:19 2016

Don't require GL_ARB_gpu_shader5 in order to support ES 3.0.

ES 3.0 and ESSL 3.00 expressly forbid dynamic indexing of sampler
arrays, so don't impose a stricter requirement on the desktop OpenGL
drivers than needed.

BUG= 671280 

Review-Url: https://codereview.chromium.org/2555513002
Cr-Commit-Position: refs/heads/master@{#436392}

[modify] https://crrev.com/2bd1f057280fea281637bb63265225303c35850a/ui/gl/gl_version_info.cc

Comment 3 by kbr@chromium.org, Dec 5 2016

Labels: Merge-Request-56
Status: Fixed (was: Started)
Requesting merge to M56. I am pretty sure this will solve the user's problem.

Project Member

Comment 4 by bugdroid1@chromium.org, Dec 5 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/729a9c974499e5cd9606bbeced50f14a42534e99

commit 729a9c974499e5cd9606bbeced50f14a42534e99
Author: Corentin Wallez <cwallez@chromium.org>
Date: Mon Dec 05 19:22:47 2016

Don't require GL_ARB_gpu_shader5 in order to support ES 3.0.

ES 3.0 doesn't require non-constant sampler array indexing, and we
can't require it for ES 2 without breaking WebGL for some users.

BUG= 671280 

Change-Id: Ib04446284acc92410a90c683a3d222871de554a8
Reviewed-on: https://chromium-review.googlesource.com/416195
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>

[modify] https://crrev.com/729a9c974499e5cd9606bbeced50f14a42534e99/src/compiler/translator/TranslatorGLSL.cpp
[modify] https://crrev.com/729a9c974499e5cd9606bbeced50f14a42534e99/src/libANGLE/renderer/gl/renderergl_utils.cpp

Comment 5 by dimu@chromium.org, Dec 6 2016

Labels: -Merge-Request-56 Merge-Approved-56 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M56 (branch: 2924)
Project Member

Comment 6 by bugdroid1@chromium.org, Dec 6 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/17a173972b70030cd2e278c6adac8bcbe40ac78b

commit 17a173972b70030cd2e278c6adac8bcbe40ac78b
Author: geofflang <geofflang@chromium.org>
Date: Tue Dec 06 21:40:50 2016

Roll ANGLE ced53ae..729a9c9

https://chromium.googlesource.com/angle/angle.git/+log/ced53ae..729a9c9

BUG=None,chromium:661857,671280

TBR=cwallez@chromium.org

TEST=bots

CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2555763002
Cr-Commit-Position: refs/heads/master@{#436741}

[modify] https://crrev.com/17a173972b70030cd2e278c6adac8bcbe40ac78b/DEPS

Thanks for the fix.

M56 Beta promotion is scheduled on Dec-8 & RC cut on Wednesday,Dec 7 @ 4.00 PM PST.Please ensure to verify the fix and merge your change ASAP so that we could take it for next release.
***BULK EDIT***

Your change has been approved for M56. Please ensure to verify the fix and merge ASAP so that we could take it for next Beta Release.

If the change is already merged and no pending work please remove Merge-Approved-56 label and add merge-merged-2924.
Project Member

Comment 9 by bugdroid1@chromium.org, Dec 9 2016

Labels: -merge-approved-56 merge-merged-2924
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d09e35b60a6888deb59a1bc13a2748a209dc3e29

commit d09e35b60a6888deb59a1bc13a2748a209dc3e29
Author: Kenneth Russell <kbr@chromium.org>
Date: Fri Dec 09 02:59:15 2016

Don't require GL_ARB_gpu_shader5 in order to support ES 3.0.

ES 3.0 and ESSL 3.00 expressly forbid dynamic indexing of sampler
arrays, so don't impose a stricter requirement on the desktop OpenGL
drivers than needed.

BUG= 671280 

Review-Url: https://codereview.chromium.org/2555513002
Cr-Commit-Position: refs/heads/master@{#436392}
(cherry picked from commit 2bd1f057280fea281637bb63265225303c35850a)

Review URL: https://codereview.chromium.org/2560113002 .

Cr-Commit-Position: refs/branch-heads/2924@{#424}
Cr-Branched-From: 3a87aecc31cd1ffe751dd72c04e5a96a1fc8108a-refs/heads/master@{#433059}

[modify] https://crrev.com/d09e35b60a6888deb59a1bc13a2748a209dc3e29/ui/gl/gl_version_info.cc

Comment 10 by kbr@chromium.org, Dec 13 2016

Status: Verified (was: Fixed)
Submitter verified that this is working now on his system.

Comment 11 by kbr@chromium.org, Jan 30 2017

Blocking: 686727

Sign in to add a comment