Canvas.GetContext('webgl', ...) returning null on machine with blacklisted driver - is this expected?

630 views
Skip to first unread message

David Deutsch

unread,
Sep 7, 2018, 1:25:13 PM9/7/18
to Chromium HTML5
A user of our software has an old, blacklisted AMD driver (id 144 in software_rendering_list.json) which I thought would simply cause Chromium to fallback to software rendering for WebGL, but instead causes Canvas.GetContext('webgl', attributes) to return null, with the attributes object being:


{
   
"failIfMajorPerformanceCaveat": false,
   
"preserveDrawingBuffer": false,
   
"antialias": false,
   
"alpha": true,
   
"stencil": true,
   
"depth": true
}

We have asked the user to update to the latest driver (which, being released after 2010, should not be blacklisted), but in the meantime I was wondering if someone could tell me if my assumption about software rendering fallback is correct, and if it is, what other avenues should I investigate? Even if the driver update fixes his problem, I want to make sure I have an accurate understanding of how Chromium handles blacklisted cards/drivers in case we encounter this in the future. 

Now, it is possible that the blacklist issue is a red herring, as the user was not able to see our WebGL map (mapbox) even after disabling the blacklist, and in addition the blacklist specifies WebGL2, whereas mapbox is trying to access WebGL. 

Since the user is a customer and not on site, I unfortunately cannot easily get too much information from him, but below is the output of his chrome://gpu. Apologies for the lack of more complete information; even a pointer to some resources/documentation that would help be better understand these types of issues would be greatly appreciated.



Graphics Feature Status
•	Canvas: Software only, hardware acceleration unavailable
•	Flash: Software only. Hardware acceleration disabled
•	Flash Stage3D: Software only. Hardware acceleration disabled
•	Flash Stage3D Baseline profile: Software only. Hardware acceleration disabled
•	Compositing: Software only. Hardware acceleration disabled
•	Multiple Raster Threads: Enabled
•	Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
•	Hardware Protected Video Decode: Disabled
•	Rasterization: Software only. Hardware acceleration disabled
•	Skia Deferred Display List: Disabled
•	Skia Renderer: Disabled
•	Surface Synchronization: Enabled
•	Video Decode: Software only. Hardware acceleration disabled
•	Viz Service Display Compositor: Disabled
•	WebGL: Software only, hardware acceleration unavailable
•	WebGL2: Software only, hardware acceleration unavailable
Problems Detected
•	Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
•	Viz service display compositor is not enabled by default.
Disabled Features: viz_display_compositor
•	Skia renderer is not used by default.
Disabled Features: skia_renderer
•	Skia deferred display list is not used by default.
Disabled Features: skia_deferred_display_list
Version Information
Data exported	2018-09-07T13:18:42.977Z
Chrome version	Chrome/68.0.3440.106
Operating system	Windows NT 6.1.7601 SP1
Software rendering list URL	https://chromium.googlesource.com/chromium/src/+/1c32c539ce0065a41cb79da7bfcd2c71af1afe62/gpu/config/software_rendering_list.json

Driver bug list URL	https://chromium.googlesource.com/chromium/src/+/1c32c539ce0065a41cb79da7bfcd2c71af1afe62/gpu/config/gpu_driver_bug_list.json

ANGLE commit id	ba1627086779
2D graphics backend	Skia/68 1e419fead7ff3b5247102b29b982b6472a60cd4d-
Command Line	"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	610
In-process GPU	false
Passthrough Command Decoder	false
Direct Composition	false
Supports overlays	false
Sandboxed	true
GPU0	VENDOR = 0x1002, DEVICE= 0x95cd
GPU1	VENDOR = 0x1002, DEVICE= 0x95cd
Optimus	false
AMD switchable	false
Desktop compositing	none
Diagonal Monitor Size of \\.\DISPLAY1
21.9"
Diagonal Monitor Size of \\.\DISPLAY2
21.9"
Diagonal Monitor Size of \\.\DISPLAY4
21.5"
Diagonal Monitor Size of \\.\DISPLAY3
23.0"
Driver D3D12 feature level	Not supported
Driver Vulkan API version	Not supported
Driver vendor	ATI Technologies Inc.
Driver version	8.580.0.0
Driver date	1-15-2009
Pixel shader version	1.00
Vertex shader version	1.00
Max. MSAA samples	4
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	Google SwiftShader
GL_VERSION	OpenGL ES 2.0 SwiftShader 4.0.0.6
GL_EXTENSIONS	GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_framebuffer_object GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_texture_3D GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_draw_buffers GL_EXT_instanced_arrays GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_ARB_texture_rectangle GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_texture_format_BGRA8888 GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_texture_filtering_hint GL_NV_fence GL_NV_framebuffer_blit GL_NV_read_depth GL_EXT_color_buffer_float
Disabled Extensions	
Disabled WebGL Extensions	
Window system binding vendor	Google Inc.
Window system binding version	1.4 SwiftShader 4.0.0.6
Window system binding extensions	EGL_KHR_create_context EGL_KHR_get_all_proc_addresses EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_KHR_image_base EGL_KHR_surfaceless_context EGL_ANGLE_iosurface_client_buffer EGL_ANDROID_framebuffer_target EGL_ANDROID_recordable
Direct rendering	Yes
Reset notification strategy	0x0000
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	GPU_READ, SCANOUT
RGBA_8888	GPU_READ, SCANOUT
BGRX_8888	Software only
BGRX_1010102	Software only
RGBX_1010102	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only
Display(s) Information
Info	Display[2528732444] bounds=[240,-1050 1680x1050], workarea=[240,-1050 1680x1050], scale=1, external.
Color space information	{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}
Bits per color component	8
Bits per pixel	24
Info	Display[2779098405] bounds=[1920,-1050 1680x1050], workarea=[1920,-1050 1680x1050], scale=1, external.
Color space information	{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}
Bits per color component	8
Bits per pixel	24
Info	Display[2841568472] bounds=[1920,0 1920x1080], workarea=[1920,0 1920x1080], scale=1, external.
Color space information	{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}
Bits per color component	8
Bits per pixel	24
Info	Display[2480450848] bounds=[0,0 1920x1080], workarea=[0,0 1920x1040], scale=1, external.
Color space information	{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}
Bits per color component	8
Bits per pixel	24
Video Acceleration Information

Diagnostics
... loading ...
Driver Information for Hardware GPU
Initialization time	417
In-process GPU	false
Passthrough Command Decoder	false
Direct Composition	false
Supports overlays	false
Sandboxed	true
GPU0	VENDOR = 0x1002, DEVICE= 0x95cd
GPU1	VENDOR = 0x1002, DEVICE= 0x95cd
Optimus	false
AMD switchable	false
Desktop compositing	none
Diagonal Monitor Size of \\.\DISPLAY1
21.9"
Diagonal Monitor Size of \\.\DISPLAY2
21.9"
Diagonal Monitor Size of \\.\DISPLAY4
21.5"
Diagonal Monitor Size of \\.\DISPLAY3
23.0"
Driver D3D12 feature level	Not supported
Driver Vulkan API version	Not supported
Driver vendor	ATI Technologies Inc.
Driver version	8.580.0.0
Driver date	1-15-2009
Pixel shader version	1.00
Vertex shader version	1.00
Max. MSAA samples	4
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	Google SwiftShader
GL_VERSION	OpenGL ES 2.0 SwiftShader 4.0.0.6
GL_EXTENSIONS	GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_framebuffer_object GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_texture_3D GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_draw_buffers GL_EXT_instanced_arrays GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_ARB_texture_rectangle GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_texture_format_BGRA8888 GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_texture_filtering_hint GL_NV_fence GL_NV_framebuffer_blit GL_NV_read_depth GL_EXT_color_buffer_float
Disabled Extensions	
Disabled WebGL Extensions	
Window system binding vendor	Google Inc.
Window system binding version	1.4 SwiftShader 4.0.0.6
Window system binding extensions	EGL_KHR_create_context EGL_KHR_get_all_proc_addresses EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_KHR_image_base EGL_KHR_surfaceless_context EGL_ANGLE_iosurface_client_buffer EGL_ANDROID_framebuffer_target EGL_ANDROID_recordable
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	0
Graphics Feature Status for Hardware GPU
•	Canvas: Software only, hardware acceleration unavailable
•	Flash: Software only. Hardware acceleration disabled
•	Flash Stage3D: Software only. Hardware acceleration disabled
•	Flash Stage3D Baseline profile: Software only. Hardware acceleration disabled
•	Compositing: Software only. Hardware acceleration disabled
•	Multiple Raster Threads: Enabled
•	Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
•	Hardware Protected Video Decode: Disabled
•	Rasterization: Software only. Hardware acceleration disabled
•	Skia Deferred Display List: Disabled
•	Skia Renderer: Disabled
•	Surface Synchronization: Enabled
•	Video Decode: Software only. Hardware acceleration disabled
•	Viz Service Display Compositor: Disabled
•	WebGL: Software only, hardware acceleration unavailable
•	WebGL2: Software only, hardware acceleration unavailable
Problems Detected for Hardware GPU
•	Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
•	Viz service display compositor is not enabled by default.
Disabled Features: viz_display_compositor
•	Skia renderer is not used by default.
Disabled Features: skia_renderer
•	Skia deferred display list is not used by default.
Disabled Features: skia_deferred_display_list
Log Messages
•	GpuProcessHostUIShim: The GPU process exited normally. Everything is okay.

Ken Russell

unread,
Sep 7, 2018, 7:20:25 PM9/7/18
to da...@reverenddave.com, Chromium HTML5
It's possible there's a bug in how this blacklist entry is being applied and that it's causing WebGL to be completely disabled rather than to fall back to SwiftShader. I can't immediately reproduce this though. I tried adding and using a blacklist entry similar to 144, and it correctly disabled just WebGL 2.0 support; WebGL 1.0 worked fine.

Your customer may get better functionality by disabling GPU support altogether, but their best bet is to upgrade their system. Their graphics driver is 7 years old.

-Ken


--
You received this message because you are subscribed to the Google Groups "Chromium HTML5" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-html...@chromium.org.
To post to this group, send email to chromiu...@chromium.org.
Visit this group at https://groups.google.com/a/chromium.org/group/chromium-html5/.
For more options, visit https://groups.google.com/a/chromium.org/d/optout.

David Deutsch

unread,
Sep 9, 2018, 1:31:07 PM9/9/18
to Chromium HTML5, da...@reverenddave.com
Thanks for the info. I have since found that Direct3D 11 is also disabled for pre-2011 AMD drivers, so I agree that the best bet is to just have the customer update to the latest driver (which for this particular card is from 2012, which gives you an idea of how old their system is) and be done with it.

Thanks again,
   - Dave
Reply all
Reply to author
Forward
0 new messages