chrome 37不支持WEBGL_draw_buffers

时间:2014-08-31 20:03:07

标签: google-chrome webgl windows-8.1 webgl-extensions

我在Chrome上获取webgl扩展程序WEBGL_draw_buffers时遇到问题。我的GPU绝对应该支持多个绘制缓冲区,Firefox支持扩展,但Chrome不会列出它。缺少支持是否有任何理由?

一般信息

  • 浏览器:Chrome浏览器37.0.2062.102 m(与版本36和38相同)
  • 浏览器命令行:Files (x86)\Google\Chrome\Application\chrome.exe" --flag-switches-begin --js-flags=--harmony --enable-webgl-draft-extensions --flag-switches-end
  • 操作系统:Windows 8.1 Pro
  • GPU:NVS 3100M(驱动程序版本327.02)
  • 笔记本:ThinkPad T410
  • 其他人似乎在Chrome上获得WEBGL_draw_buffers支持
  • 我没有找到任何与禁用多个绘制缓冲区相关的Chrome错误信息。

可用的webgl扩展

GL_OES_element_index_uint GL_OES_packed_depth_stencil GL_OES_get_program_binary GL_OES_rgb8_rgba8 NV_pixel_buffer_object GL_OES_mapbuffer GL_EXT_map_buffer_range GL_OES_standard_derivatives GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_float GL_OES_texture_float_linear GL_EXT_texture_rg GL_OES_texture_npot GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_storage GL_EXT_frag_depth GL_EXT_blend_minmax GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_pack_reverse_row_order GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_NV_fence

chrome://报告了gpu问题

Problems Detected
GPU rasterization is whitelisted on N4, N5, N7 and Moto X: 362779
Disabled Features: gpu_rasterization
Additional GPU rasterization whitelist for field trial: 380694
Disabled Features: gpu_rasterization_field_trial
Always call glUseProgram after a successful link to avoid a driver bug: 349137
Applied Workarounds: use_current_program_after_successful_link
Some drivers are unable to reset the D3D device in the GPU process sandbox
Applied Workarounds: exit_on_context_lost
TexSubImage2D() is faster for full uploads on ANGLE
Applied Workarounds: texsubimage2d_faster_than_teximage2d
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Threaded rasterization has not been enabled or is not supported by the current system.
Disabled Features: threaded_rasterization

2 个答案:

答案 0 :(得分:0)

根据webgl stats site,只有大约20%的用户启用了WEBGL_draw_buffers扩展程序,因此默认情况下并非所有Chrome版本都支持这些扩展程序。

如果GPU支持多个渲染目标,则所有Linux和Mac版本的Chrome都应启用它。对于Windows,只有部分版本的Chrome支持该扩展程序。对于使用D3D11渲染后端的所有用户,Windows上的Chrome无法正常工作,在大多数情况下仍然使用D3D9后端,并且它不支持多个渲染目标。

您可以强制Chrome使用带有--enable-d3d11标记的D3D11后端。

答案 1 :(得分:0)

我不知道确切的原因,但正如Jan指出的那样,它们并不广泛可用

这不仅仅是关于GPU是否支持它。很长一段时间,如果MRT设置不正确,OSX会使操作系统崩溃,因此OSX上没有启用它。在运行10.9.4(OSX Mavericks)的Retina MBP上仍未启用它们

输入

document.createElement("canvas").getContext("webgl").getSupportedExtensions().join("\n")
JavaScript控制台中的

打印

"ANGLE_instanced_arrays
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_depth_texture
WEBKIT_WEBGL_depth_texture
WEBGL_lose_context
WEBKIT_WEBGL_lose_context"

所以我猜他们仍然没有找到办法阻止操作系统在MRT设置错误时崩溃。婊子苹果和其他驱动程序制造商。

游戏和应用程序没有这个问题,因为他们当然不想让您的计算机崩溃,而且因为您手动安装它们但浏览器不允许随机网页崩溃您的计算机,因此他们无法启用这些功能直到他们找到一种方法来防止崩溃或直到驱动程序/操作系统在使用时停止崩溃。