Open Bug 1256960 Opened 9 years ago Updated 5 months ago

Input latency when drawing on WebGL with D3D11

Categories

(Core :: Graphics: CanvasWebGL, defect, P3)

42 Branch
Unspecified
Windows
defect

Tracking

()

Tracking Status
firefox45 --- wontfix
firefox46 --- wontfix
firefox47 --- wontfix
firefox48 --- wontfix
firefox49 --- wontfix
firefox50 --- wontfix
firefox51 --- wontfix
firefox52 --- fix-optional
firefox53 --- wontfix
firefox54 --- wontfix
firefox55 --- wontfix
firefox56 --- wontfix
firefox57 --- fix-optional

People

(Reporter: pinggi, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: regression, Whiteboard: gfx-noted)

Attachments

(1 file, 1 obsolete file)

1.41 MB, video/mp4
Details
Attached video lag.avi (obsolete) —
User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0 Build ID: 20160303134406 Steps to reproduce: Try to draw a line on http://thj.no/personal/latency_test_case.html Actual results: The drawn line has significant delay after mouse move. Very bad latency :-( Expected results: The line should be smoothly drawn without a lag. The line should be immediately drawn right next to a mouse cursor. The attached video shows in the first half Chromium and in the second half Firefox. The video doesn't have high fps so it's chopped little bit, but you can see the difference. In real Chromium is really smooth without any lag while Firefox has horrible delay :-(( Firefox 45 (32 bit and 64 bit too) Chromium 49.0.2623.87 (64-bit) Windows 7
Component: Untriaged → Canvas: WebGL
Product: Firefox → Core
Summary: input latency → Input latency when drawing on WebGL
Attachment #8730883 - Attachment is obsolete: true
regression range: https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=292fbdb78dde3dee31472afc83b865e4d77891d1&tochange=79637e9bcdaa0657cd79732b095936b377e262b4 Jeff Muizelaar — Bug 1183341. Reenable ANGLE w/ D3D11 on newer Intel GPUs. r=bas My about:support: Adapter Description Intel(R) HD Graphics 3000 Adapter Description (GPU #2) NVIDIA GeForce GT 550M Adapter Drivers igdumd64 igd10umd64 igd10umd64 igdumd32 igd10umd32 igd10umd32 Adapter Drivers (GPU #2) nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um Adapter RAM Unknown Adapter RAM (GPU #2) 2048 Asynchronous Pan/Zoom wheel input enabled; touch input enabled ClearType Parameters Gamma: 2200 Pixel Structure: R ClearType Level: 100 Enhanced Contrast: 50 Device ID 0x0116 Device ID (GPU #2) 0x0df6 Direct2D Enabled true DirectWrite Enabled true (6.2.9200.17568) Driver Date 5-26-2015 Driver Date (GPU #2) 2-23-2016 Driver Version 9.17.10.4229 Driver Version (GPU #2) 10.18.13.6200 GPU #2 Active false GPU Accelerated Windows 1/1 Direct3D 11 (OMTC) Subsys ID 17121043 Subsys ID (GPU #2) 17121043 Supports Hardware H264 Decoding Yes Vendor ID 0x8086 Vendor ID (GPU #2) 0x10de WebGL Renderer Google Inc. -- ANGLE (Intel(R) HD Graphics 3000 Direct3D11 vs_4_1 ps_4_1) windowLayerManagerRemote true AzureCanvasAccelerated 0 AzureCanvasBackend direct2d 1.1 AzureContentBackend direct2d 1.1 AzureFallbackCanvasBackend cairo
Blocks: 1183341
Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: needinfo?(jmuizelaar)
Keywords: regression
OS: Unspecified → Windows
Version: 45 Branch → 42 Branch
pinggi, can you copy here the section "graphics" from the page about:support, please.
Flags: needinfo?(pinggi)
If you disable angle d3d11 does the situation improve?
(In reply to Jeff Muizelaar [:jrmuizel] from comment #4) > If you disable angle d3d11 does the situation improve? Yes, it's smooth with webgl.angle.try-d3d11=false in 48.
Whiteboard: gfx-noted
@Loic sure, here is my about:support: Adapter Description ATI Radeon HD 4290 Adapter Drivers aticfx64 aticfx64 aticfx32 aticfx32 atiumd64 atidxx64 atiumdag atidxx32 atiumdva atiumd6a atitmm64 Adapter RAM 624 Asynchronous Pan/Zoom none Device ID 0x9714 Direct2D Enabled true DirectWrite Enabled true (6.2.9200.16492) Driver Date 4-29-2013 Driver Version 8.970.100.1100 GPU #2 Active false GPU Accelerated Windows 1/1 Direct3D 11 (OMTC) Subsys ID 00000000 Supports Hardware H264 Decoding No; DXVA2D3D9 crashes detected in the past Vendor ID 0x1002 WebGL Renderer Google Inc. -- ANGLE (ATI Radeon HD 4290 Direct3D11 vs_4_1 ps_4_1) windowLayerManagerRemote true AzureCanvasBackend direct2d 1.1 AzureContentBackend direct2d 1.1 AzureFallbackCanvasBackend cairo AzureSkiaAccelerated 0 (#0) Error DXVA2D3D9 video decoding is disabled due to a previous crash. I tried changing the option webgl.angle.try-d3d11 to false and it's big difference - smooth as chromium, maybe better!
Flags: needinfo?(pinggi)
I can reproduce this as well. I have no guesses yet as to what the problem might be.
Flags: needinfo?(jmuizelaar)
The problem is that when "webgl.angle.try-d3d11" is set to false, then webgl does not work with: http://alteredqualia.com/xg/examples/forward_performance_shadowmap.html
Flags: needinfo?(howareyou322)
Need info daosheng to check
Flags: needinfo?(howareyou322) → needinfo?(dmu)
Here is my support, and I can't reproduce this problem. The result on my device is smooth. Name Firefox Version 46.0.1 Graphics Adapter Description NVIDIA GeForce GT 730 Adapter Drivers nvd3dumx,nvwgf2umx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um,nvwgf2um Adapter RAM 2048 Asynchronous Pan/Zoom none Device ID 0x1287 Direct2D Enabled true DirectWrite Enabled true (10.0.10586.0) Driver Date 5-9-2016 Driver Version 10.18.13.6519 GPU #2 Active false GPU Accelerated Windows 1/1 Direct3D 11 (OMTC) Subsys ID 00000000 Supports Hardware H264 Decoding Yes Vendor ID 0x10de WebGL Renderer Google Inc. -- ANGLE (NVIDIA GeForce GT 730 Direct3D11 vs_5_0 ps_5_0) windowLayerManagerRemote true AzureCanvasBackend direct2d 1.1 AzureContentBackend direct2d 1.1 AzureFallbackCanvasBackend cairo AzureSkiaAccelerated 0 Not sure if it would not happen on NV cards?
Pinggi, can you help check your Chrome Angle setting at this site? http://www.browserleaks.com/webgl I would like to know if your device uses d3d11 as well? In my case, it is Miscellaneous : Antialiasing Available ANGLE Yes, Direct3D 11 Major Performance Caveat No
Flags: needinfo?(dmu) → needinfo?(pinggi)
Yes, anytime. It's the same for me: Antialiasing Available ANGLE Yes, Direct3D 11 Major Performance Caveat No if you're interested in full info: WebGL Support Detection Does Your Browser Supports WebGL? ✔ Yes Is WebGL Enabled in Your Browser? ✔ Yes What about WebGL 2.0 Support? × No Browser User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 WebGL Context Info Supported Context Name(s) webgl, experimental-webgl GL Version WebGL 1.0 Shading Language Version WebGL GLSL ES 1.0 Vendor Mozilla Renderer Mozilla Debug Renderer Info Unmasked Vendor Not Available Unmasked Renderer Not Available Vertex Shader Max Vertex Attributes 16 Max Vertex Uniform Vectors 1024 Max Vertex Texture Image Units 16 Max Varying Vectors 30 Best Float Precision [-2127, 2127] (23) Rasterizer Aliased Line Width Range [1, 1] Aliased Point Size Range [1, 1024] Fragment Shader Max Fragment Uniform Vectors 1024 Max Texture Image Units 16 Float/Int Precision: highp/highp Best Float Precision [-2127, 2127] (23) Framebuffer Max Color Buffers: 8 RGBA Bits [8, 8, 8, 8] Depth / Stencil Bits: [24, 8] Max Render Buffer Size 8192 Max Viewport Dimensions [16383, 16383] Textures Max Texture Size 8192 Max Cube Map Texture Size 8192 Max Combined Texture Image Units 32 Max Anisotropy 16 Miscellaneous : Antialiasing Available ANGLE Yes, Direct3D 11 Major Performance Caveat No Supported WebGL Extensions ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_shader_texture_lod EXT_texture_filter_anisotropic OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context MOZ_WEBGL_lose_context MOZ_WEBGL_compressed_texture_s3tc MOZ_WEBGL_depth_texture Do you have any idea already what could be the cause?
(In reply to pinggi from comment #12) > Yes, anytime. > > It's the same for me: > > Antialiasing Available > ANGLE Yes, Direct3D 11 > Major Performance Caveat No > > if you're interested in full info: > > WebGL Support Detection > Does Your Browser Supports WebGL? ✔ Yes > Is WebGL Enabled in Your Browser? ✔ Yes > What about WebGL 2.0 Support? × No > Browser User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) > Gecko/20100101 Firefox/46.0 > > WebGL Context Info > Supported Context Name(s) webgl, experimental-webgl > GL Version WebGL 1.0 > Shading Language Version WebGL GLSL ES 1.0 > Vendor Mozilla > Renderer Mozilla > > Debug Renderer Info > Unmasked Vendor Not Available > Unmasked Renderer Not Available > > Vertex Shader > Max Vertex Attributes 16 > Max Vertex Uniform Vectors 1024 > Max Vertex Texture Image Units 16 > Max Varying Vectors 30 > Best Float Precision [-2127, 2127] (23) > > Rasterizer > Aliased Line Width Range [1, 1] > Aliased Point Size Range [1, 1024] > Fragment Shader > Max Fragment Uniform Vectors 1024 > Max Texture Image Units 16 > Float/Int Precision: highp/highp > Best Float Precision [-2127, 2127] (23) > > Framebuffer > Max Color Buffers: 8 > RGBA Bits [8, 8, 8, 8] > Depth / Stencil Bits: [24, 8] > Max Render Buffer Size 8192 > Max Viewport Dimensions [16383, 16383] > > Textures > Max Texture Size 8192 > Max Cube Map Texture Size 8192 > Max Combined Texture Image Units 32 > Max Anisotropy 16 > > Miscellaneous : > Antialiasing Available > ANGLE Yes, Direct3D 11 > Major Performance Caveat No > Supported WebGL Extensions ANGLE_instanced_arrays > EXT_blend_minmax > EXT_color_buffer_half_float > EXT_frag_depth > EXT_shader_texture_lod > EXT_texture_filter_anisotropic > OES_element_index_uint > OES_standard_derivatives > OES_texture_float > OES_texture_float_linear > OES_texture_half_float > OES_texture_half_float_linear > OES_vertex_array_object > WEBGL_color_buffer_float > WEBGL_compressed_texture_etc1 > WEBGL_compressed_texture_s3tc > WEBGL_depth_texture > WEBGL_draw_buffers > WEBGL_lose_context > MOZ_WEBGL_lose_context > MOZ_WEBGL_compressed_texture_s3tc > MOZ_WEBGL_depth_texture > > Do you have any idea already what could be the cause? Sorry, pinggi. Could you help me use Google Chrome to dump the info from the same link, http://www.browserleaks.com/webgl. Thanks. I wounder if Google Chrome doesn't enable DX11 for intel GPUs.
Here's the Chromium output: Antialiasing Available ANGLE Yes, Direct3D 9 Major Performance Caveat No and the full dump: WebGL Support Detection Does Your Browser Supports WebGL? ✔ Yes Is WebGL Enabled in Your Browser? ✔ Yes What about WebGL 2.0 Support? × No Browser User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 WebGL Context Info Supported Context Name(s) webgl, experimental-webgl GL Version WebGL 1.0 (OpenGL ES 2.0 Chromium) Shading Language Version WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium) Vendor WebKit Renderer WebKit WebGL Debug Renderer Info Unmasked Vendor ! Google Inc. Unmasked Renderer ! ANGLE (ATI Radeon HD 4290 Direct3D9Ex vs_3_0 ps_3_0) Vertex Shader Max Vertex Attributes 16 Max Vertex Uniform Vectors 253 Max Vertex Texture Image Units 4 Max Varying Vectors 9 Best Float Precision [-2127, 2127] (23) Rasterizer Aliased Line Width Range [1, 1] Aliased Point Size Range [1, 256] Fragment Shader Max Fragment Uniform Vectors 221 Max Texture Image Units 16 Float/Int Precision: highp/highp Best Float Precision [-2127, 2127] (23) Framebuffer Max Color Buffers: 1 RGBA Bits [8, 8, 8, 8] Depth / Stencil Bits: [24, 8] Max Render Buffer Size 8192 Max Viewport Dimensions [8192, 8192] Textures Max Texture Size 8192 Max Cube Map Texture Size 8192 Max Combined Texture Image Units 20 Max Anisotropy 16 Miscellaneous : Antialiasing Available ANGLE Yes, Direct3D 9 Major Performance Caveat No Supported WebGL Extensions ANGLE_instanced_arrays EXT_blend_minmax EXT_frag_depth EXT_shader_texture_lod EXT_texture_filter_anisotropic WEBKIT_EXT_texture_filter_anisotropic OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_compressed_texture_s3tc WEBKIT_WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBKIT_WEBGL_lose_context
So the difference is: Chrome vs Firefox Max Vertex Uniform Vectors 253 vs 1024 Max Vertex Texture Image Units 4 vs 16 Max Varying Vectors 9 vs 30 Aliased Point Size Range [1, 256] vs [1, 1024] Max Fragment Uniform Vectors 221 vs 1024 Max Color Buffers: 1 vs 8 Max Viewport Dimensions [8192, 8192] vs [16383, 16383] Max Combined Texture Image Units 20 vs 32 ANGLE Yes, Direct3D 9 vs Yes, Direct3D 11 Supported WebGL Extensions Unique for Chrome WEBKIT_EXT_texture_filter_anisotropic WEBKIT_WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBKIT_WEBGL_lose_context Unique for Firefox EXT_color_buffer_half_float WEBGL_compressed_texture_etc1 MOZ_WEBGL_compressed_texture_s3tc WEBGL_depth_texture WEBGL_draw_buffers MOZ_WEBGL_lose_context MOZ_WEBGL_depth_texture
It seems that Firefox adds more overhead by using Direct3D 11 or is there something else odd? Is it possible to set WebGL in Firefox to use Direct3D 9?
Mmm, I didi second attempt to set "webgl.angle.try-d3d11" to "false", restarted Firefox and now Firefox uses Direct3D 9. The only difference on http://www.browserleaks.com/webgl between Firefox and Chrome is in Supported WebGL Extensions: Firefox: EXT_color_buffer_half_float WEBGL_color_buffer_float MOZ_WEBGL_lose_context MOZ_WEBGL_compressed_texture_s3tc Chrome: WEBKIT_EXT_texture_filter_anisotropic WEBKIT_WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBKIT_WEBGL_lose_context I tested both sites... http://thj.no/personal/latency_test_case.html http://alteredqualia.com/xg/examples/forward_performance_shadowmap.html ...again with surprise that all is working now. The first one is smooth and the second one work. So now I'm using WebGL with Direct3D 9. So definitely WebGL with Direct3D 11 introduces some latency on the latency test web page.
It's probably worth trying to disable shared surface support and see if the problem still happens. Setting keyedMutex to null here: https://dxr.mozilla.org/mozilla-central/rev/c4449eab07d39e20ea315603f1b1863eeed7dcfe/gfx/gl/SharedSurfaceANGLE.cpp#73 should do the trick.
(In reply to Jeff Muizelaar [:jrmuizel] from comment #18) > It's probably worth trying to disable shared surface support and see if the > problem still happens. > Setting keyedMutex to null here: > https://dxr.mozilla.org/mozilla-central/rev/ > c4449eab07d39e20ea315603f1b1863eeed7dcfe/gfx/gl/SharedSurfaceANGLE.cpp#73 > should do the trick. I have tried to set keyedMutex to null on my NVIDIA-PC that uses Angle-Dx11. My canvas is gray that seems to ANGLE sharedsurface does not be ready to copy to my framebuffer.
Flags: needinfo?(pinggi)
Change tile based on comment 17.
Summary: Input latency when drawing on WebGL → Input latency when drawing on WebGL with D3D11
I can't reproduce this issue with Intel HD 4000. Jeff, which video card you use to reproduce this issue? I saw pinggi is using ATI 4290.
Flags: needinfo?(jmuizelaar)
I can't reproduce with Windows Intel HD 4600 as well. By the way, I check this in Chromium. It uses ANGLE (Intel(R) HD Graphics 4600 Direct3D11 vs_5_0 ps_5_0) that is the same to Firefox 46. Therefore, I don't think it would not be a Dx11 issue. It is ATI and HD 3000 Dx11 driver issues.
(In reply to Peter Chang[:pchang] from comment #21) > I can't reproduce this issue with Intel HD 4000. Jeff, which video card you > use to reproduce this issue? I saw pinggi is using ATI 4290. I can reproduce this on a Intel HD 4000 on Windows 10 with the 10.18.10.4276 driver. Can you reproduce in that configuration?
Flags: needinfo?(jmuizelaar)
I rollback my driver of Intel HD 4600 on Windows 10 to 10.18.10.4276. It still can't be reproduced...Btw, it uses Dx11 as well.
Jeff, can we still reproduce this?
Flags: needinfo?(jmuizelaar)
Andrei can your team reproduce this with the older driver? Milan, might we want to block the older driver if so?
Flags: needinfo?(milan)
Flags: needinfo?(andrei.vaida)
Hi Liz, I have reproduced this issue using Firefox RC 45.0 build 1 (id: 20160301003640) on a Windows 7 Pro (x64) machine that uses ATI RADEON 3000 graphics card and has the 8.970.100.3000 driver and Direct3D 11. Please ni? me if further testing is needed on the issue.
Flags: needinfo?(andrei.vaida)
I talked to Jeff about this, right now it's still not clear why it reproduces in some places and not others. In order to figure this out, we need more information on what configurations it reproduces on and what configurations it doesn't reproduce on. Andrei, could you check on a range of hardware to see what configurations this issue can be reproduced on, and which ones don't have the problem? Hopefully that will give us some idea of what the pattern is.
Flags: needinfo?(milan)
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(andrei.vaida)
Hello, I have tested some more hardware for this issue and it seems that the problem is on ATI graphics cards that have the driver version under "10". Since we are limited on the hardware that we have here I've managed to get the following results: 1. Win 7 x64 - GPU AMD 760G - driver 8.723.0.0 - Firefox 45.0 RC & Nightly 51 - REPRODUCIBLE 2. Win XP x64 - GPU AMD R7 - driver 13.251.0.0 - Firefox 45.0 RC & Nightly 51 - Not reproducible
Flags: needinfo?(andrei.vaida)
Jeff, does comment 29 help any?
Flags: needinfo?(jmuizelaar)
Milan, can you help move this along?
Too late for a fix for 53, as we are in the last week of the 53 beta cycle.
Too late for 54, let's see if we can fix it in 55.
Dropping stale needinfo
Flags: needinfo?(jmuizelaar)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: