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

Issue 634091 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

FPS Meter reports more FPS than Quartz Debug

Reported by the.sp...@gmail.com, Aug 3 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2817.0 Safari/537.36

Steps to reproduce the problem:
1. Install Quartz Debug and run it
2. Run http://david.li/fluid/, select a number of particles that make the rendering go 40-50FPS, open DevTools and enable FPS Meter
3. Compare FPS reported by Quartz Debug and Chrome

What is the expected behavior?
The FPS reported by Quartz should be equal or bigger than the FPS reported by Chrome.

What went wrong?
FPS seems to be creating more frames (confirmed by other measurements, like calls to rAF) than OSX is displaying.

Did this work before? No 

Chrome version: 54.0.2817.0  Channel: canary
OS Version: OS X 10.9.5
Flash Version: 

First snapshot is Stable, second is Canary.
 
Screen Shot 2016-08-03 at 21.35.17.png
1.8 MB View Download
Screen Shot 2016-08-03 at 21.33.21.png
1.7 MB View Download

Comment 1 by kbr@chromium.org, Aug 3 2016

Cc: erikc...@chromium.org ccameron@chromium.org
Components: Blink>WebGL Internals>GPU>Internals
Labels: Needs-Feedback
Status: Available (was: Unconfirmed)
Please provide about:gpu from the machine on which this behavior is reproduced. Copy/paste (plain text, no formatting) is fine. Thanks.

ccameron, erikchen: this is related to the issue of GPU back-pressure, and whether tools that developers write outside the browser can accurately measure frame rate.

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: Enabled
Native GpuMemoryBuffers: Hardware accelerated
Rasterization: Hardware accelerated
Video Decode: Hardware accelerated
Video Encode: Hardware accelerated
VPx Video Decode: Hardware accelerated
WebGL: Hardware accelerated
Driver Bug Workarounds
disable_framebuffer_cmaa
disable_multimonitor_multisampling
needs_offscreen_buffer_workaround
pack_parameters_workaround_with_pack_buffer
regenerate_struct_names
scalarize_vec_and_mat_constructor_args
set_zero_level_before_generating_mipmap
unfold_short_circuit_as_ternary_operation
unpack_alignment_workaround_with_unpack_buffer
unpack_overlapping_rows_separately_unpack_buffer
use_intermediary_for_copy_texture_image
use_shadowed_tex_level_params
validate_multisample_buffer_allocation
Problems Detected
There are display issues with GPU Raster on OSX 10.9: 611310
Disabled Features: gpu_rasterization
Work around a bug in offscreen buffers on NVIDIA GPUs on Macs: 89557
Applied Workarounds: needs_offscreen_buffer_workaround
Multisampling is buggy on OSX when multiple monitors are connected: 237931
Applied Workarounds: disable_multimonitor_multisampling
Multisampled renderbuffer allocation must be validated on some Macs: 290391
Applied Workarounds: validate_multisample_buffer_allocation
Unfold short circuit on Mac OS X: 307751
Applied Workarounds: unfold_short_circuit_as_ternary_operation
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Mac drivers handle struct scopes incorrectly: 403957
Applied Workarounds: regenerate_struct_names
glGenerateMipmap fails if the zero texture level is not set on some Mac drivers: 560499
Applied Workarounds: set_zero_level_before_generating_mipmap
Pack parameters work incorrectly with pack buffer bound: 563714
Applied Workarounds: pack_parameters_workaround_with_pack_buffer
Alignment works incorrectly with unpack buffer bound: 563714
Applied Workarounds: unpack_alignment_workaround_with_unpack_buffer
copyTexImage2D fails when reading from IOSurface on multiple GPU types.: 581777
Applied Workarounds: use_intermediary_for_copy_texture_image
Unpacking overlapping rows from unpack buffers is unstable on NVIDIA GL driver: 596774
Applied Workarounds: unpack_overlapping_rows_separately_unpack_buffer
Mac Drivers store texture level parameters on int16_t that overflow: 610153
Applied Workarounds: use_shadowed_tex_level_params
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Version Information
Data exported	8/3/2016, 9:51:25 PM
Chrome version	Chrome/54.0.2817.0
Operating system	Mac OS X 10.9.5
Software rendering list version	11.9
Driver bug list version	8.80
ANGLE commit id	5655b849d8fe
2D graphics backend	Skia/54 38d909ec2875f79952de08f36adfaac5680d2c53
Command Line Args	Chrome Canary.app/Contents/MacOS/Google Chrome Canary --flag-switches-begin --allow-insecure-localhost --enable-devtools-experiments --enable-experimental-web-platform-features --enable-extension-action-redesign --enable-gpu-rasterization --javascript-harmony --enable-tab-audio-muting --enable-web-bluetooth --enable-wasm --enable-webgl-draft-extensions --enable-experimental-extension-apis --flag-switches-end
Driver Information
Initialization time	43
In-process GPU	false
Sandboxed	true
GPU0	VENDOR = 0x10de, DEVICE= 0x0fe9 *ACTIVE*
GPU1	VENDOR = 0x8086, DEVICE= 0x0d26
Optimus	true
AMD switchable	false
Driver vendor	
Driver version	8.26.29 310.40.55f01
Driver date	
Pixel shader version	1.20
Vertex shader version	1.20
Max. MSAA samples	8
Machine model name	MacBookPro
Machine model version	11.3
GL_VENDOR	NVIDIA Corporation
GL_RENDERER	NVIDIA GeForce GT 750M OpenGL Engine
GL_VERSION	2.1 NVIDIA-8.26.29 310.40.55f01
GL_EXTENSIONS	GL_ARB_color_buffer_float GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_instanced_arrays GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_matrix GL_ARB_vertex_array_bgra GL_ARB_vertex_blend GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_APPLE_aux_depth_stencil GL_APPLE_client_storage GL_APPLE_element_array GL_APPLE_fence GL_APPLE_float_pixels GL_APPLE_flush_buffer_range GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_packed_pixels GL_APPLE_pixel_buffer GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_specular_vector GL_APPLE_texture_range GL_APPLE_transform_hint GL_APPLE_vertex_array_object GL_APPLE_vertex_array_range GL_APPLE_vertex_point_size GL_APPLE_vertex_program_evaluators GL_APPLE_ycbcr_422 GL_ATI_separate_stencil GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_ATI_texture_mirror_once GL_IBM_rasterpos_clip GL_NV_blend_square GL_NV_conditional_render GL_NV_depth_clamp GL_NV_fog_distance GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_light_max_exponent GL_NV_multisample_filter_hint GL_NV_point_sprite GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod
Disabled Extensions	
Window system binding vendor	
Window system binding version	
Window system binding extensions	
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	0
Compositor Information
Tile Update Mode	Zero-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	GPU_READ, SCANOUT
BGRX_8888	GPU_READ, SCANOUT
BGRA_8888	GPU_READ, SCANOUT, GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
YVU_420	Software only
YUV_420_BIPLANAR	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
UYVY_422	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT

Comment 3 by kbr@chromium.org, Aug 3 2016

Labels: -Needs-Feedback
Thanks. That's an NVIDIA based MacBook Pro Retina.

Comment 4 by kbr@chromium.org, Aug 3 2016

Sorry, wait -- 10.9.5? I'm sorry, why are you not running 10.11? We don't test on older OSs on a regular basis.

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

Labels: Needs-Feedback
Ok, I'm going to update to 10.11, run everything again and report back. It's going to take a while.
I tried this on OS X 10.11.6, same GPU, same Chrome version, and saw no discrepancy between website's frame rate and Quartz Debug FPS meter.

Try running Chrome with --show-mac-overlay-borders so that we know whether this is using the new overlays path.
Just now updated to 10.11.6

Run tests again, I still see a difference.
Tried with --show-mac-overlay-borders, I'm attaching a snapshot

New about:gpu

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: Enabled
Native GpuMemoryBuffers: Hardware accelerated
Rasterization: Software only. Hardware acceleration disabled
Video Decode: Hardware accelerated
Video Encode: Hardware accelerated
WebGL: Hardware accelerated
Driver Bug Workarounds
disable_multimonitor_multisampling
init_varyings_without_static_use
needs_offscreen_buffer_workaround
pack_parameters_workaround_with_pack_buffer
regenerate_struct_names
scalarize_vec_and_mat_constructor_args
set_zero_level_before_generating_mipmap
unfold_short_circuit_as_ternary_operation
unpack_alignment_workaround_with_unpack_buffer
unpack_overlapping_rows_separately_unpack_buffer
use_intermediary_for_copy_texture_image
validate_multisample_buffer_allocation
Problems Detected
Work around a bug in offscreen buffers on NVIDIA GPUs on Macs: 89557
Applied Workarounds: needs_offscreen_buffer_workaround
Multisampling is buggy on OSX when multiple monitors are connected: 237931
Applied Workarounds: disable_multimonitor_multisampling
Multisampled renderbuffer allocation must be validated on some Macs: 290391
Applied Workarounds: validate_multisample_buffer_allocation
Unfold short circuit on Mac OS X: 307751
Applied Workarounds: unfold_short_circuit_as_ternary_operation
Mac drivers handle varyings without static use incorrectly: 322760
Applied Workarounds: init_varyings_without_static_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Mac drivers handle struct scopes incorrectly: 403957
Applied Workarounds: regenerate_struct_names
glGenerateMipmap fails if the zero texture level is not set on some Mac drivers: 560499
Applied Workarounds: set_zero_level_before_generating_mipmap
Pack parameters work incorrectly with pack buffer bound: 563714
Applied Workarounds: pack_parameters_workaround_with_pack_buffer
Alignment works incorrectly with unpack buffer bound: 563714
Applied Workarounds: unpack_alignment_workaround_with_unpack_buffer
copyTexImage2D fails when reading from IOSurface on multiple GPU types.: 581777
Applied Workarounds: use_intermediary_for_copy_texture_image
Unpacking overlapping rows from unpack buffers is unstable on NVIDIA GL driver: 596774
Applied Workarounds: unpack_overlapping_rows_separately_unpack_buffer
Accelerated rasterization has been disabled, either via blacklist, about:flags or the command line.
Disabled Features: rasterization
Version Information
Data exported	8/4/2016, 3:34:51 AM
Chrome version	Chrome/52.0.2743.116
Operating system	Mac OS X 10.11.6
Software rendering list version	11.7
Driver bug list version	8.78
ANGLE commit id	f07246f6a06d
2D graphics backend	Skia
Command Line Args	Chrome.app/Contents/MacOS/Google Chrome --flag-switches-begin --enable-devtools-experiments --mark-non-secure-as=non-secure --flag-switches-end
Driver Information
Initialization time	42
In-process GPU	false
Sandboxed	true
GPU0	VENDOR = 0x10de, DEVICE= 0x0fe9 *ACTIVE*
GPU1	VENDOR = 0x8086, DEVICE= 0x0d26
Optimus	true
AMD switchable	false
Driver vendor	
Driver version	10.10.13 310.42.25f01
Driver date	
Pixel shader version	1.20
Vertex shader version	1.20
Max. MSAA samples	8
Machine model name	MacBookPro
Machine model version	11.3
GL_VENDOR	NVIDIA Corporation
GL_RENDERER	NVIDIA GeForce GT 750M OpenGL Engine
GL_VERSION	2.1 NVIDIA-10.10.13 310.42.25f01
GL_EXTENSIONS	GL_ARB_color_buffer_float GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_instanced_arrays GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_matrix GL_ARB_vertex_array_bgra GL_ARB_vertex_blend GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_APPLE_aux_depth_stencil GL_APPLE_client_storage GL_APPLE_element_array GL_APPLE_fence GL_APPLE_float_pixels GL_APPLE_flush_buffer_range GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_packed_pixels GL_APPLE_pixel_buffer GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_specular_vector GL_APPLE_texture_range GL_APPLE_transform_hint GL_APPLE_vertex_array_object GL_APPLE_vertex_array_range GL_APPLE_vertex_point_size GL_APPLE_vertex_program_evaluators GL_APPLE_ycbcr_422 GL_ATI_separate_stencil GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_ATI_texture_mirror_once GL_IBM_rasterpos_clip GL_NV_blend_square GL_NV_conditional_render GL_NV_depth_clamp GL_NV_fog_distance GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_light_max_exponent GL_NV_multisample_filter_hint GL_NV_point_sprite GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod
Disabled Extensions	
Window system binding vendor	
Window system binding version	
Window system binding extensions	
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	0
Compositor Information
Tile Update Mode	Zero-copy
Partial Raster	Disabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	GPU_READ, SCANOUT
BGRX_8888	GPU_READ, SCANOUT
BGRA_8888	GPU_READ, SCANOUT, GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
YUV_420	Software only
YUV_420_BIPLANAR	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
UYVY_422	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
Screen Shot 2016-08-04 at 03.31.07.png
2.0 MB View Download
That's the non image-chromium path. Try the flag --enable-webgl-image-chromium
Tried with --enable-webgl-image-chromium 
and --show-mac-overlay-borders --enable-webgl-image-chromium
Same results, but I still see the same pink squares. How can I tell that flag is actually working (or how could you tell from the snapshot that it's the non-chromium path?)

Also, checking on Canary, seems to do a more reasonable thing, and framerates in Quarts Debug are reported around 60, 30, 15, 9, etc.
We want the red box around the WebGL content to turn into a pink box. If you're not getting a pink box around the WebGL content with --enable-webgl-image-chromium, then something must be wrong with the flag. Assuming that's the case...

A couple of milestones ago, we implicitly got backpressure for WebGL via a glFinish in ImageTransportSurfaceOverlayMac. ericrk@ changed this to a sync token, which has the same effect, except on some GPUs (like the 750M), where it behaves differently (details unclear). We don't see this problem in the image-chromium path, since we explicitly deschedule via DescheduleUntilFinishedCHROMIUM(). I think the appropriate solution is to call DescheduleUntilFinishedCHROMIUM() for WebGL contexts on Mac, regardless of whether image chromium is enabled. kbr@, wdyt?

If you still see framerate discrepancies when there's a pink box around the webgl content...then something really weird is going on.
Definitely I'm running --show-mac-overlay-borders --enable-webgl-image-chromium, and I see pink boxes everywhere except when WebGL content kicks in (in any page, it actually goes from a grid of pink squares to a single red square). I've reset the couple of -unrelated- flags I had in settings, results still the same. The GPU is a 750M and I'm forcing osx to use the discrete always.
Ooops, looks like that flag has no effect on Mac. :(
https://cs.chromium.org/chromium/src/content/child/runtime_features.cc?sq=package:chromium&rcl=1470251930&l=144

On my 750M, I've confirmed that I see this problem with Image Chromium turned off.

Let's try this flag instead...
--enable-features=WebGLImageChromium
With --enable-features=WebGLImageChromium, same result: border around WebGL content is red.
Cc: kbr@chromium.org ericrk@chromium.org asvitk...@chromium.org
Hey...asvitkine@, how do I force an experiment on? 

Maybe...?
--force-fieldtrials="WebGLImageChromium/Enabled" 

+kbr, ericrk for c#11.
Calling DescheduleUntilFinishedCHROMIUM for WebGL in all cases seems reasonable to me - unfortunate that the backpressure doesn't occur from the sync token/fences.

I see that DescheduleUntilFinishedCHROMIUM also uses a fence - is the issue that sync/fence works, but must be called on the WebGL GL context itself (as opposed to the compositor GL context being hit in my change?).
Given WebGLImageChromium is a base::Feature, comment 14 should be the correct way to enable it. I will note that it's actually enabled by default in the current code at TOT, so maybe disabling it is what you want to do?
Looking at the code, it seems that feature is gated on kEnableGpuMemoryBufferCompositorResources:

https://cs.chromium.org/chromium/src/content/child/runtime_features.cc?rcl=0&l=134

So you might need to specify --enable-gpu-memory-buffer-compositor-resources

Comment 19 by kbr@chromium.org, Aug 4 2016

Cc: reve...@chromium.org
erikchen@: re c#11:

> I think the appropriate solution is to call
> DescheduleUntilFinishedCHROMIUM() for WebGL contexts on Mac,
> regardless of whether image chromium is enabled. kbr@, wdyt?

Sounds good to me. The backpressure on the WebGLImageChromium path seems to be working well.

Is there a plan to enable "gpu memory buffer compositor resources" by default? (reveman@, ericrk@, ccameron@)

Owner: erikc...@chromium.org
Status: Assigned (was: Available)
By default, GMB compositor resources is enabled. 

https://cs.chromium.org/chromium/src/content/browser/gpu/compositor_util.cc?sq=package:chromium&dr=C&rcl=1470396217&l=230

the.spite is seeing the CA compositor work correctly when not on WebGL pages, so something is preventing WebGL from using the CA compositor...not sure what this is.
Project Member

Comment 21 by bugdroid1@chromium.org, Aug 5 2016

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

commit 367bd8108240919b3372cb800806ffde2be20223
Author: erikchen <erikchen@chromium.org>
Date: Fri Aug 05 20:41:37 2016

Always call DescheduleUntilFinished for WebGL on macOS.

This prevents WebGL from submitting too much work.

BUG= 634091 

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

[modify] https://crrev.com/367bd8108240919b3372cb800806ffde2be20223/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Status: Fixed (was: Assigned)
"--enable-features=WebGLImageChromium" works for me for enabling Image Chromium. I've also confirmed that the issue is fixed on 750M without ImageChromium.

the.spite: Please let us know if you are still experiencing problems on the latest Canary.
It's hard to tell. Running  Canary 54.0.2824.0 with --enable-features=WebGLImageChromium, it still look like there's about 5FPS of difference.
Screen Shot 2016-08-09 at 19.22.06.png
2.2 MB View Download
The screenshot you posted in c#8 is the really scary one - it shows Chrome trying to refresh content at 30 fps, but only 15 WindowServer fps. This means that Chrome is overwhelming the GPU.

The screenshot you posted in c#23 shows Chrome trying to refresh content at 19fps, but the WindowServer at 24fps. This is not-unreasonable, since drawing a new WebGL frame can be very expensive, but refreshing an existing frame from the WindowServer should be very cheap. I'd only be concerned if the WindowServer fps is lowing than the Chrome fps.
Exactly. In Canary it's been much closer to the actual performance. I also think that Quartz Debug smoothes values differently from Chrome, so it makes sense that with a variable framerate over time the discreet values are not the same.

Comment 26 by kbr@chromium.org, Aug 15 2016

Cc: bajones@chromium.org
 Issue 447032  has been merged into this issue.

Sign in to add a comment