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

Issue 138088 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2012
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug

Restricted
  • Only users with EditIssue permission may comment.



Sign in to add a comment

Chrome returns black screen with no logged errors on WebGL examples.

Reported by phil...@gmail.com, Jul 19 2012

Issue description

Chrome Version       : 20.0.1132.57
OS Version: OS X 10.7.4
URLs (if applicable) :

http://www.senchalabs.org/philogl/PhiloGL/examples/lessons/14/

http://www.senchalabs.org/philogl/PhiloGL/examples/explorer/

http://www.senchalabs.org/philogl/PhiloGL/examples/worldFlights/

Other browsers tested:
  Add OK or FAIL after other browsers where you have tested this issue:
     Safari 5: OK
  Firefox 4.x: OK
     IE 7/8/9: Not applicable

What steps will reproduce the problem?
1. Open those URLs
2. In the last URL example, the blending appears to be broken.
3.

What is the expected result?

A WebGL rendering.

What happens instead?

A black screen. No errors logged in the console.

Please provide any additional information below. Attach a screenshot if
possible.

about:gpu info:

Graphics Feature Status
Canvas: Hardware accelerated
Compositing: Hardware accelerated
3D CSS: Hardware accelerated
CSS Animation: Software animated.
WebGL: Hardware accelerated
WebGL multisampling: Hardware accelerated
Problems Detected
Accelerated CSS animation has been disabled at the command line.
Version Information
Data exported	Thu Jul 19 2012 09:01:12 GMT-0700 (PDT)
Chrome version	20.0.1132.57 (Official Build 145807)
Operating system	Mac OS X 10.7.4
Software rendering list version	1.42
ANGLE revision	1046
2D graphics backend	Skia
Driver Information
Initialization time	18
Vendor Id	0x1002
Device Id	0x6740
Optimus	false
AMD switchable	false
Driver vendor	
Driver version	7.18.18
Driver date	
Pixel shader version	1.20
Vertex shader version	1.20
GL version	2.1
GL_VENDOR	ATI Technologies Inc.
GL_RENDERER	ATI Radeon HD 6770M OpenGL Engine
GL_VERSION	2.1 ATI-7.18.18
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_shadow_ambient 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_compiled_vertex_array GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample 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_blend_equation_separate GL_ATI_blend_weighted_minmax GL_ATI_separate_stencil GL_ATI_texture_compression_3dc 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_light_max_exponent GL_NV_texgen_reflection GL_SGI_color_matrix GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod





 
Screen Shot 2012-07-19 at 9.05.01 AM.png
279 KB View Download
Screen Shot 2012-07-19 at 9.03.13 AM.png
315 KB View Download
Screen Shot 2012-07-19 at 9.01.57 AM.png
24.5 KB View Download
Screen Shot 2012-07-19 at 9.05.51 AM.png
1.4 MB View Download

Comment 1 by kbr@chromium.org, Jul 19 2012

Cc: gman@chromium.org kbr@chromium.org zmo@chromium.org
Labels: -Area-Undefined Area-Internals Internals-Graphics Feature-GPU-WebGL

Comment 2 by mbollu@chromium.org, Jul 19 2012

Labels: Mstone-22 ReleaseBlock-Beta
Status: Untriaged
OS: Mac 10.7.4
Chrome: 20.0.1132.57 (Official Build 145807) & 22.0.1211.0 (Official Build 147395) canary

Findings: For all the 3 url's blending appears to be broken. See attachments.

Chrome://gpu:

Graphics Feature Status
Canvas: Hardware accelerated
Compositing: Hardware accelerated
3D CSS: Hardware accelerated
CSS Animation: Software animated.
WebGL: Hardware accelerated
WebGL multisampling: Hardware accelerated
Problems Detected
Accelerated CSS animation has been disabled at the command line.
Version Information
Data exported	Thu Jul 19 2012 10:45:58 GMT-0700 (PDT)
Chrome version	20.0.1132.57 (Official Build 145807)
Operating system	Mac OS X 10.7.4
Software rendering list version	1.42
ANGLE revision	1046
2D graphics backend	Skia

GL_VENDOR	NVIDIA Corporation
GL_RENDERER	NVIDIA GeForce 320M OpenGL Engine
GL_VERSION	2.1 NVIDIA-7.18.18

Flags Override software rendering list , GPU compositing on all pages doesn't help in rendering.

Comment 3 by mbollu@chromium.org, Jul 19 2012

This issue is reproducible on all OS.

On Windows/Mac for 1st URL popup is shown as 'There was an error creating the app'.
blurry-worldflights.png
530 KB View Download
blurry-surface explorer.png
204 KB View Download

Comment 4 by kbr@chromium.org, Jul 19 2012

Nicolas, there were two significant changes / bug fixes made to Chrome's WebGL implementation recently. One was that the DITHER state was not being enabled by default. I suspect your world flights sample may be assuming it isn't. The other was that Chrome will now allocate an RGB back buffer if alpha is false in the WebGL context creation attributes. Could you have been assuming that it was RGBA? This could affect copyTexImage2D/copyTexSubImage2D calls being made by the application.

Comment 5 by phil...@gmail.com, Jul 19 2012

Hi Ken,

Thanks for your quick reply. I tried both things (gl.disable(gl.DITHER); and alpha: true in the get context options) but neither worked. I managed to simplify the shader code enough so that the example of the 3D surface works in chrome. I'm still investigating.

Thanks,

Comment 6 by kbr@chromium.org, Jul 19 2012

Cc: twiz@chromium.org
Uh oh. Bisecting with http://www.senchalabs.org/philogl/PhiloGL/examples/lessons/14/ on OS X 10.7.4 and an NVIDIA GeForce GT 330M yields the following:

You are probably looking for a change made after 133208 (known good), but no later than 133216 (first known bad).
CHANGELOG URL:
  http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&range=133208%3A133216

Which points to:

http://src.chromium.org/viewvc/chrome?view=rev&revision=133213

Which was the introduction of an extension for accelerated Canvas -> WebGL uploads.

I'm also not able to reproduce this problem on 10.6.8 or Linux with an NVIDIA Quadro FX 380 and 295.53 drivers.

Comment 7 by phil...@gmail.com, Jul 19 2012

In the surface example removing:

attribute vec2 texCoord3;

varying vec2 vTexCoord3;

from the vertex shader and

varying vec2 vTexCoord3;

from the fragment shader make the example work again. AFAIK attribArrays are enabled/disabled properly in the javascript code.

You can find a copy of the non-working shaders here:

https://github.com/philogb/philogl/blob/master/examples/explorer/surface.vs.glsl

https://github.com/philogb/philogl/blob/master/examples/explorer/surface.fs.glsl

I hope this helps.



Comment 8 by phil...@gmail.com, Jul 19 2012

After playing a little bit more with the shaders my conclusion is that having an attribute array (like texCoord3) disabled breaks the app.

This issue and the world flights issue are separate I think. Maybe I should create a separate issue for this -i.e. one for attrib arrays not behaving correctly when disabled and another for a blending / depth testing issue)?

Comment 9 by kbr@chromium.org, Jul 19 2012

Yes, please file a separate bug. Also, please attach a zip archive containing the test case so that we have a stable version of the test to look at while triaging.

It looks like the GL_CHROMIUM_copy_texture change above was a red herring. I disabled that extension in my local build but the rendering artifacts with http://www.senchalabs.org/philogl/PhiloGL/examples/lessons/14/ and http://www.senchalabs.org/philogl/PhiloGL/examples/worldFlights/ still persist. Going to try another bisect against the world flights demo.

Comment 10 by kbr@chromium.org, Jul 19 2012

The dithering state isn't what's affecting the world flights demo either.

Comment 11 by kbr@chromium.org, Jul 19 2012

Bisecting the world flights demo yields:

You are probably looking for a change made after 133208 (known good), but no later than 133216 (first known bad).
CHANGELOG URL:
  http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&range=133208%3A133216

Same result as before. Maybe my attempted disabling of the GL_CHROMIUM_copy_texture extension was incorrect. I'll verify.

Comment 12 by phil...@gmail.com, Jul 19 2012

In the world flights example removing the burring operation in glow.fs.glsl (fragmentColor += things) makes the example work.

void main(void) {
  vec4 fragmentColor = vec4(0.0, 0.0, 0.0, 0.0);
  vec2 blurSize = vec2(0.002, 0.002);
  float dx;
  float dy;

//remove from here
  fragmentColor += texture2D(sampler1, vTexCoord1 - 4.0 * blurSize) * 0.05;
  fragmentColor += texture2D(sampler1, vTexCoord1 - 3.0 * blurSize) * 0.09;
  fragmentColor += texture2D(sampler1, vTexCoord1 - 2.0 * blurSize) * 0.12;
  fragmentColor += texture2D(sampler1, vTexCoord1 - 1.0 * blurSize) * 0.15;
  fragmentColor += texture2D(sampler1, vTexCoord1                 ) * 0.16;
  fragmentColor += texture2D(sampler1, vTexCoord1 + 1.0 * blurSize) * 0.15;
  fragmentColor += texture2D(sampler1, vTexCoord1 + 2.0 * blurSize) * 0.12;
  fragmentColor += texture2D(sampler1, vTexCoord1 + 3.0 * blurSize) * 0.09;
  fragmentColor += texture2D(sampler1, vTexCoord1 + 4.0 * blurSize) * 0.05;
//to here

  fragmentColor += texture2D(sampler2, vec2(vTexCoord1.s, vTexCoord1.t));
  gl_FragColor = vec4(fragmentColor.rgb, 1.0);
}


Comment 13 by kbr@chromium.org, Jul 19 2012

Labels: -Pri-2 Pri-1
Owner: kbr@chromium.org
Status: Started
The bug is in the change from RestoreStateForSimulatedAttrib0 to RestoreStateForAttrib in http://codereview.chromium.org/10124016/ . The new code attempts to be more correct by changing the enable/disable attrib array state but is not correct -- at least, it will destroy constant values set in the vertex attribute (as opposed to via glVertexAttribPointer).

I'm raising the priority of this bug. It's hard to believe it went unnoticed this long. We need a regression test for this as well as to figure out a fix. My initial reaction would be to roll out the patch, but there have been subsequent patches to this one, so I think we have to fix the bug and backport patches.

Comment 14 by phil...@gmail.com, Jul 19 2012

Thanks Ken. I opened a new issue related to the world flights example (I'm gessing your last comment is related to the other issue, the one with the black screen?). It's here: https://code.google.com/p/chromium/issues/detail?id=138146 . I also attached the example source code.

Please let me know if that's OK. Maybe we should change the title of this issue somewhere.

Thanks,

Comment 15 by kbr@chromium.org, Jul 19 2012

I was wrong above about the destroying of constant values for vertex attributes. The only bug is that on desktop GL, vertex attribute 0 was being disabled if it hadn't been enabled by the application. This was causing subsequent draw calls to do nothing.

Gregg expanded the test conformance/attribs/gl-vertex-attrib-zero-issues.html in the WebGL conformance suite to catch this bug. CL forthcoming.

Comment 16 by kbr@chromium.org, Jul 19 2012

 Issue 138146  has been merged into this issue.
Project Member

Comment 18 by bugdroid1@chromium.org, Jul 20 2012

The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=147584

------------------------------------------------------------------------
r147584 | kbr@chromium.org | 2012-07-20T01:03:14.603121Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/service/gles2_cmd_decoder.cc?r1=147584&r2=147583&pathrev=147584
   M http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc?r1=147584&r2=147583&pathrev=147584

On desktop GL, don't disable vertex attribute 0 when restoring state, or nothing will be drawn during subsequent draw calls.

BUG= 138088 
TEST=gpu_unittests; revised WebGL conformance test gl-vertex-attrib-zero-issues.html (will be pulled to GPU bots); test cases from bug report


Review URL: https://chromiumcodereview.appspot.com/10808041
------------------------------------------------------------------------

Comment 19 by kbr@chromium.org, Jul 20 2012

Labels: -Mstone-22 Mstone-21 Merge-Requested
Status: Fixed
Requesting to merge this fix back as far as possible, at least to M21, if not also M20. It's small, and is a clear and easily testable regression.

Comment 20 by kareng@google.com, Jul 23 2012

Labels: -Merge-Requested Merge-Approved

Comment 21 by kareng@google.com, Jul 23 2012

Labels: -Merge-Approved Merge-Merged merge-merged-1180
Project Member

Comment 22 by bugdroid1@chromium.org, Jul 24 2012

The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=147880

------------------------------------------------------------------------
r147880 | kbr@chromium.org | 2012-07-23T17:44:49.773002Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/branches/1180/src/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc?r1=147880&r2=147879&pathrev=147880
   M http://src.chromium.org/viewvc/chrome/branches/1180/src/gpu/command_buffer/service/gles2_cmd_decoder.cc?r1=147880&r2=147879&pathrev=147880

Merge 147584 - On desktop GL, don't disable vertex attribute 0 when restoring state, or nothing will be drawn during subsequent draw calls.

BUG= 138088 
TEST=gpu_unittests; revised WebGL conformance test gl-vertex-attrib-zero-issues.html (will be pulled to GPU bots); test cases from bug report


Review URL: https://chromiumcodereview.appspot.com/10808041

TBR=kbr@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10807072
------------------------------------------------------------------------
Status: Untriaged
The first example is still failing with the issue on Windows and Linux.Screenshot attached. 
On Mac 10.7.4 all the examples are working fine.
GPUIssue.png
118 KB View Download
The above Screenshot is form 21.0.1180.55. 

Comment 25 by kbr@chromium.org, Jul 25 2012

Status: Fixed
That error is unrelated and is likely an application bug. I'll contact the author. Re-closing this as Fixed.

Comment 26 by phil...@gmail.com, Jul 25 2012

It was a shader issue. I pushed a fixed now and it should be working now (in canary):

http://www.senchalabs.org/philogl/PhiloGL/examples/lessons/14/

Thanks,
Project Member

Comment 27 by bugdroid1@chromium.org, Oct 13 2012

Labels: Restrict-AddIssueComment-Commit
This issue has been closed for some time. No one will pay attention to new comments.
If you are seeing this bug or have new data, please click New Issue to start a new bug.
Project Member

Comment 28 by bugdroid1@chromium.org, Mar 10 2013

Labels: -Area-Internals -Internals-Graphics -Feature-GPU-WebGL -Mstone-21 Cr-Internals-GPU-WebGL Cr-Internals-Graphics M-21 Cr-Internals
Project Member

Comment 29 by bugdroid1@chromium.org, Mar 14 2013

Labels: -Restrict-AddIssueComment-Commit Restrict-AddIssueComment-EditIssue
Project Member

Comment 30 by bugdroid1@chromium.org, Apr 10 2013

Labels: -Cr-Internals-GPU-WebGL Cr-Blink-WebGL
Components: -Internals>Graphics Internals>GPU
Moving old issues out of Internal>Graphics to delete this obsolete component ( crbug.com/685425  for details)

Sign in to add a comment