summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer
Commit message (Collapse)AuthorAgeFilesLines
* Rework FlushSync to return early if commands have been processed since the ↵piman@google.com2011-04-2815-53/+79
| | | | | | | | | | | last update BUG=80480 TEST= Review URL: http://codereview.chromium.org/6883179 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83442 0039d316-1c4b-4281-b951-d872f2087c98
* Removed "compositor" child window that was created by the GPU ↵apatrick@chromium.org2011-04-272-7/+38
| | | | | | | | process.Removed the sync IPC that it used to ask the browser process to resize on Linux. Adapted windows to use the same mechanism.TEST=test webgl pages on windows (ANGLE and GL), linux and mac, run try job on windows, linux, mac. checkdeps failure look unrelated to patch.BUG=77536 Review URL: http://codereview.chromium.org/6880218 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83248 0039d316-1c4b-4281-b951-d872f2087c98
* Add a yield command to the command buffer.piman@google.com2011-04-239-11/+73
| | | | | | | | | | | This allows more graceful scheduling so that waiting on the previous frame's swapbuffers doesn't end up being a Finish. BUG=none TEST=check in about:gpu and verify that SwapBuffers in the renderer process actually only waits for the previous SwapBuffers in the gpu process. Review URL: http://codereview.chromium.org/6899037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82759 0039d316-1c4b-4281-b951-d872f2087c98
* Update DCHECK() usage to utilize the more expressive debugging functions.kushi.p@gmail.com2011-04-221-2/+2
| | | | | | | | BUG=58409 Review URL: http://codereview.chromium.org/6891008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82639 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Add traces for some gl calls that can be slowpiman@google.com2011-04-221-0/+4
| | | | | | | | | BUG=none TEST=about:gpu Review URL: http://codereview.chromium.org/6897001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82625 0039d316-1c4b-4281-b951-d872f2087c98
* Chrome displays the wrong thing if FBO is left bound in WebGL.zmo@google.com2011-04-201-9/+12
| | | | | | | | | | Fix a webgl bug in command buffer: if a user created fbo is bound, compositor doesn't get the correct frame. The issue is that currently multisampled framebuffer blit is incorrectly skipped if a user created fbo is bound. BUG=79750 TEST=bots green, test case attached in bug 79750 behaves correctly. Review URL: http://codereview.chromium.org/6873099 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82201 0039d316-1c4b-4281-b951-d872f2087c98
* With latch support and higher level frame throttling, we no longer need to ↵jbates@chromium.org2011-04-205-62/+11
| | | | | | | | | | | limit SwapBuffers calls by using glSet/TestFenceNV in GpuScheduler. BUG=79940 TEST=open page with CSS 3D transform animation; open about:gpu and start tracing; verify that between frames, there are not many short calls to ProcessCommands Review URL: http://codereview.chromium.org/6873095 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82197 0039d316-1c4b-4281-b951-d872f2087c98
* instrumented gles2 commands that call glFinish so that they show up in ↵jbates@chromium.org2011-04-191-0/+21
| | | | | | | | | | | about:gpu trace. BUG=79929 TEST=start trace in about:gpu; load shiny teapot demo; stop trace and verify occurrence of various "GLES2::" commands in the trace. Review URL: http://codereview.chromium.org/6883057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82155 0039d316-1c4b-4281-b951-d872f2087c98
* Updated event trace code to stop on buffer full condition for any child ↵jbates@chromium.org2011-04-192-0/+6
| | | | | | | | | | | process. Added more trace events to show expensive blocking IPCs in renderer process. BUG=79510 TEST=start trace in about:gpu; open some WebGL windows; when trace Buffer usage reaches 100%, verify that the trace is ended Review URL: http://codereview.chromium.org/6870020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82115 0039d316-1c4b-4281-b951-d872f2087c98
* GpuScheduler no longer spins when it is waiting on a latch.jbates@chromium.org2011-04-186-7/+36
| | | | | | | | | BUG=79632 TEST=run trace in about:gpu; observe the number of times the GPU process sequentially calls WaitLatch; verify it is not spinning. Review URL: http://codereview.chromium.org/6874029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82033 0039d316-1c4b-4281-b951-d872f2087c98
* Command buffer: fix a wrong error for glDrawArrays/glDrawElements/glClear if ↵zmo@google.com2011-04-151-1/+1
| | | | | | | | | | the framebuffer is not complete. BUG=none TEST=none Review URL: http://codereview.chromium.org/6861008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81766 0039d316-1c4b-4281-b951-d872f2087c98
* Landing issue 6828049 on behalf of KushalP.apatrick@chromium.org2011-04-1414-148/+148
| | | | | | | | | | | | | http://codereview.chromium.org/6826049/ Original message: Renaming GPUProcessor to GpuScheduler TEST=try BUG=76585 Review URL: http://codereview.chromium.org/6853027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81667 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a regression in command buffer TexSubImage2D.zmo@google.com2011-04-141-1/+2
| | | | | | | | | BUG=79507 TEST=none TBR=gman@google.com Review URL: http://codereview.chromium.org/6858003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81665 0039d316-1c4b-4281-b951-d872f2087c98
* Trace whenever renderer waits for command buffer space.jbauman@chromium.org2011-04-141-11/+18
| | | | | | | | | | | This lets us determine whether the renderer is spinning waiting for command buffer space to open up. BUG= TEST= Review URL: http://codereview.chromium.org/6833005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81655 0039d316-1c4b-4281-b951-d872f2087c98
* Handle the situation in command buffer when texImage2D fails. Current ↵zmo@google.com2011-04-1310-130/+177
| | | | | | | | | | implementation breaks texImage2D into texImage2D with null data and one or more texSubImage2D calls. If the first texImage2D call fails, all the related texSubImage2D calls should be cancelled. However, at the moment they still get called, thus generates GL errors that shouldn't be generated. This CL fixes this issue. BUG=79172 TEST=unittest, texture-npot.html green Review URL: http://codereview.chromium.org/6839003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81510 0039d316-1c4b-4281-b951-d872f2087c98
* Adds GLContext::LosesAllContextsOnContextLost.amarinichev@chromium.org2011-04-131-3/+4
| | | | | | | | | | | | | | | GLContext::LosesAllContextsOnContextLost specifies whether or not all contexts need to be destroyed when recovering from lost context condition. GpuCommandBufferStub::OnFlush and GpuCommandBufferStub::OnAsyncFlush will instruct soon-to-be-renamed GpuRenderThread to close all channels when the context is lost and LosesAllContextsOnContextLost returns true. From the EGL 1.4 spec: "...On detection of this error, the application must destroy all contexts (by calling eglDestroyContext for each context). To continue rendering the application must recreate any contexts it requires, and subsequently restore any client API state and objects it wishes to use." However even with this change Angle still doesn't recover correctly. BUG=76753 TEST=breakpoint on eglDestroyContext Review URL: http://codereview.chromium.org/6813010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81437 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the incorrect method name override.jbates@chromium.org2011-04-131-0/+3
| | | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/6820079 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81338 0039d316-1c4b-4281-b951-d872f2087c98
* implemented latch support in renderer process. this corresponds with a ↵jbates@chromium.org2011-04-1219-85/+122
| | | | | | | | | | | | | webkit patch. https://bugs.webkit.org/show_bug.cgi?id=58003 BUG=72671 TEST=see attachment in bug for test. only green should be seen. Review URL: http://codereview.chromium.org/6810009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81295 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor: Move app/gfx/gl ==> ui/gfx/glbacker@chromium.org2011-03-2812-21/+21
| | | | | | | | | | | This is the final patch in the sequence. Note that gl.gyp is introduced because dependency checking on the Mac is done on a per file (rather than per target) basis. BUG=none TEST=trybots Review URL: http://codereview.chromium.org/6722026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79599 0039d316-1c4b-4281-b951-d872f2087c98
* Initialize a few uninitialized members in GPU classes.finnur@chromium.org2011-03-286-10/+18
| | | | | | | | | BUG=None TEST=None CID=12914, 15729, 12761, 8585, 14365, 15761, 14796, 15865. Review URL: http://codereview.chromium.org/6713127 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79544 0039d316-1c4b-4281-b951-d872f2087c98
* Move some files from base to base/memory.levin@chromium.org2011-03-2821-43/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | raw_scoped_refptr_mismatch_checker.h ref_counted.cc ref_counted.h ref_counted_memory.cc ref_counted_memory.h ref_counted_unittest.cc scoped_callback_factory.h scoped_comptr_win.h scoped_handle.h scoped_native_library.cc scoped_native_library.h scoped_native_library_unittest.cc scoped_nsobject.h scoped_open_process.h scoped_ptr.h scoped_ptr_unittest.cc scoped_temp_dir.cc scoped_temp_dir.h scoped_temp_dir_unittest.cc scoped_vector.h singleton.h singleton_objc.h singleton_unittest.cc linked_ptr.h linked_ptr_unittest.cc weak_ptr.cc weak_ptr.h weak_ptr_unittest.cc BUG=None TEST=Compile Review URL: http://codereview.chromium.org/6714032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79524 0039d316-1c4b-4281-b951-d872f2087c98
* Workground for glGenerateMipmap bug in some drivers.gman@chromium.org2011-03-265-2/+67
| | | | | | | | | | | TEST=unit tests BUG=72601 R=zmo@chromium.org Review URL: http://codereview.chromium.org/6749014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79499 0039d316-1c4b-4281-b951-d872f2087c98
* Make Command Buffer limit count for glUniformXXv calls.gman@chromium.org2011-03-2510-83/+474
| | | | | | | | | | | TEST=unit tests BUG=77233 R=zmo@chromium.org, Review URL: http://codereview.chromium.org/6713094 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79421 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor: Move app/surface to ui/gfx/surface.backer@chromium.org2011-03-251-2/+2
| | | | | | | | | | | | | This is progress towards moving app/gfx/gl to ui/gfx/gl. Currently, surface depends on gl, but gl depends on app_base (which contains surface). This refactor gets rid of this potential cyclic dependency. surface.gyp is in a separate file (not a .gypi include) because cyclic dependency checking is at the file level (not target level). BUG=none TEST=by hand and try bots Review URL: http://codereview.chromium.org/6718027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79396 0039d316-1c4b-4281-b951-d872f2087c98
* Implement latch system to help with GPU compositing flow control.gman@chromium.org2011-03-2417-9/+291
| | | | | | | | | TEST=unit tests BUG=none Review URL: http://codereview.chromium.org/6719014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79218 0039d316-1c4b-4281-b951-d872f2087c98
* Fix bug in shader and program managers.gman@chromium.org2011-03-236-29/+112
| | | | | | | | | | | | | | | | | The bug was that the code would search by id instead of by pointer. This meant it was possible to free the wrong thing (ie, pass in an info with id=4 and free a different info that also happened to have id=4). This was most likely to happen when calling MarkAsDeleted since MarkAsDelete sets the id to 0. TEST=unit tests BUG=75629 R=apatrick@chromium.org Review URL: http://codereview.chromium.org/6721010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79130 0039d316-1c4b-4281-b951-d872f2087c98
* Take the ANGLE path for glRenderbufferStorageMultisample when on ANGLE.bsalomon@google.com2011-03-231-2/+7
| | | | | | Review URL: http://codereview.chromium.org/6724004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79121 0039d316-1c4b-4281-b951-d872f2087c98
* Check the GPU watchdog after processing every 3D command.jbauman@chromium.org2011-03-232-2/+13
| | | | | | | | | | | Reduce the chance that a long stream of expensive 3D commands will cause the watchdog to go off by checking the watchdog after every 3D command. BUG=76603 TEST=none Review URL: http://codereview.chromium.org/6715006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79097 0039d316-1c4b-4281-b951-d872f2087c98
* Resubmit of reverted CL: http://codereview.chromium.org/6677105twiz@chromium.org2011-03-211-0/+4
| | | | | | | | | Addition of GL-redirecting mechanism for the Skia/GPU back-end. During execution of the layout tests (DumpRenderTree), all GL-calls are invoked via Mesa. A GL re-direction mechanism was added to skia in revision (http://code.google.com/p/skia/source/detail?r=937) These changes populate the skia re-direction interface with the gl implementation currently in use in Chrome: The app\gfx\gl bindings. R=kbr, bsalomon Review URL: http://codereview.chromium.org/6708066 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78941 0039d316-1c4b-4281-b951-d872f2087c98
* Change GL_EXT_texture_compression_s3tc to GL_CHROMIUM_texture_compression_dxt3gman@chromium.org2011-03-213-11/+32
| | | | | | | | | | | | and GL_CHROMIUM_texture_compression_dxt5 because we don't support all the features of GL_EXT_texture_compression_s3tc. TEST=unit tests BUG=none Review URL: http://codereview.chromium.org/6715005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78926 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 78801 - Addition of GL-redirecting mechanism for the Skia/GPU ↵bradnelson@google.com2011-03-191-4/+0
| | | | | | | | | | | | | back-end. During execution of the layout tests (DumpRenderTree), all GL-calls are invoked via Mesa. A GL re-direction mechanism was added to skia in revision (http://code.google.com/p/skia/source/detail?r=937) These changes populate the skia re-direction interface with the gl implementation currently in use in Chrome: The app\gfx\gl bindings. R=kbr, bsalomon Review URL: http://codereview.chromium.org/6677105 TBR=twiz@chromium.org R=* Review URL: http://codereview.chromium.org/6712050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78808 0039d316-1c4b-4281-b951-d872f2087c98
* Addition of GL-redirecting mechanism for the Skia/GPU back-end. During ↵twiz@chromium.org2011-03-191-0/+4
| | | | | | | | execution of the layout tests (DumpRenderTree), all GL-calls are invoked via Mesa. A GL re-direction mechanism was added to skia in revision (http://code.google.com/p/skia/source/detail?r=937) These changes populate the skia re-direction interface with the gl implementation currently in use in Chrome: The app\gfx\gl bindings. R=kbr, bsalomon Review URL: http://codereview.chromium.org/6677105 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78801 0039d316-1c4b-4281-b951-d872f2087c98
* Fix renderbuffer width, height issuesgman@chromium.org2011-03-198-20/+85
| | | | | | | | | TEST=unit tests BUG=76497 Review URL: http://codereview.chromium.org/6708016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78784 0039d316-1c4b-4281-b951-d872f2087c98
* Validate that a GPU transfer buffer's size is valid when it is registered ↵apatrick@chromium.org2011-03-191-28/+27
| | | | | | | | | | | | | | rather than when it is mapped. This cleaned up the code a little because it now doesn't check whether the memory is mapped every time the address and size are requested. Also fixed a very unlikely memory leak of a SharedMemory object. TEST=WebGL/compositor works, try BUG=none Review URL: http://codereview.chromium.org/6688048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78778 0039d316-1c4b-4281-b951-d872f2087c98
* GPU process - parent GL context does not delete the textures it shares with ↵apatrick@chromium.org2011-03-184-6/+38
| | | | | | | | | | | | child contexts. The child contexts create them and are then responsible for deleting them. This fixed a crash where the child contexts were passing an invalid texture ID to glBlitFramebufferANGLE. TEST=can't reproduce bug locally anymore, trybots BUG=75661 Review URL: http://codereview.chromium.org/6670074 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78642 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed bug in DetachShader.gman@chromium.org2011-03-166-11/+22
| | | | | | | | | TEST=unit tests BUG=none Review URL: http://codereview.chromium.org/6677089 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78467 0039d316-1c4b-4281-b951-d872f2087c98
* Introduce gpu_trace_event for gpu performance analysis.nduca@chromium.org2011-03-151-0/+2
| | | | | | | | | | | | | | | | This changelist is a lightweight version of issue 6551019, but with the code change confined to the gpu subsystem. The intent of this change is to enable forward progress on gpu tracing. Work on the aformentioned issue, i.e. fusing gpu_trace_event and trace_event, will continue. BUG= TEST= Review URL: http://codereview.chromium.org/6691013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78300 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for ANGLE and readpixels.gman@chromium.org2011-03-151-0/+2
| | | | | | | | | TEST=webgl conformance tests pass BUG=76093 Review URL: http://codereview.chromium.org/6677024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78132 0039d316-1c4b-4281-b951-d872f2087c98
* Fix clang buildbotjbauman@chromium.org2011-03-142-0/+4
| | | | | | | | | | | Apparently FeatureInfo is now complex enough to require an explicit destructor BUG=none TEST=none Review URL: http://codereview.chromium.org/6686055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78074 0039d316-1c4b-4281-b951-d872f2087c98
* Connect up --disable-gl-multisampling to command bufferjbauman@chromium.org2011-03-1417-55/+111
| | | | | | | | | | | Plumb the --disable-gl-multisampling flag in to the command buffer, so it won't report the extension to any consumers. BUG=75181 TEST=webgl antialias test Review URL: http://codereview.chromium.org/6686024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78067 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 77899 - Connect up --disable-gl-multisampling to command bufferkinuko@chromium.org2011-03-1217-111/+55
| | | | | | | | | | | | | | | Plumb the --disable-gl-multisampling flag in to the command buffer, so it won't report the extension to any consumers. BUG=75181 TEST=webgl antialias test TBR=jbauman Review URL: http://codereview.chromium.org/6623063 TBR=jbauman@chromium.org Review URL: http://codereview.chromium.org/6685022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77901 0039d316-1c4b-4281-b951-d872f2087c98
* Connect up --disable-gl-multisampling to command bufferjbauman@chromium.org2011-03-1217-55/+111
| | | | | | | | | | | Plumb the --disable-gl-multisampling flag in to the command buffer, so it won't report the extension to any consumers. BUG=75181 TEST=webgl antialias test Review URL: http://codereview.chromium.org/6623063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77899 0039d316-1c4b-4281-b951-d872f2087c98
* Make readPixels work around bug in OSX drivers that don't alwaysgman@chromium.org2011-03-104-14/+123
| | | | | | | | | | | set Alpha to 255 when reading an RGB backbuffer as RGBA. TEST=unit tests BUG=72598 Review URL: http://codereview.chromium.org/6646006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77662 0039d316-1c4b-4281-b951-d872f2087c98
* Support caching resources in GLES2 calls in NaCl.neb@chromium.org2011-03-021-1/+1
| | | | | | | | | BUG=none TEST=NaCl GLES2 generated bindings use fast lookups. Review URL: http://codereview.chromium.org/6580018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76590 0039d316-1c4b-4281-b951-d872f2087c98
* Moved creation of GPU command buffer shared memory into the browser process.apatrick@chromium.org2011-02-285-20/+53
| | | | | | | | | | | This is to allow the GPU process to be sandboxed on all platforms. TEST=try, run WebGL app on win and mac. BUG=none Review URL: http://codereview.chromium.org/6588029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76307 0039d316-1c4b-4281-b951-d872f2087c98
* Check for excessive dimensions.cevans@chromium.org2011-02-251-0/+7
| | | | | | | | | BUG=72173 TEST=none Review URL: http://codereview.chromium.org/6576032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76028 0039d316-1c4b-4281-b951-d872f2087c98
* Moved creation of GPU transfer buffers into the browser process.apatrick@chromium.org2011-02-245-16/+57
| | | | | | | | | | | | | Transfer buffer creation was previously done in the GPU process. This is one step required to sandbox the GPU process. Rather than the GPU process opening a renderer process's handle by PID, which can't been done when sandboxed on Windows, the browser process passes the handle to the GPU process via the renderer process. TEST=try BUG=none Review URL: http://codereview.chromium.org/6557006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75980 0039d316-1c4b-4281-b951-d872f2087c98
* In r74071, the number of outstanding SwapBuffer/CopyTextureToParentTexture ↵senorblanco@chromium.org2011-02-151-1/+1
| | | | | | | | | | | calls was changed from 2 to 1. Although this reduced jank slightly, it also regressed performance on accelerated 2D canvas by up to 60%. This change restores it to 2. Although this reintroduces a slight amount of jank, we'll have to live with that until we come up with a better solution. BUG=68735 TEST=see bug Review URL: http://codereview.chromium.org/6526017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74984 0039d316-1c4b-4281-b951-d872f2087c98
* Fix small incompatibility issues with Visual Studio 2010.jeanluc@chromium.org2011-02-141-2/+1
| | | | | | | | | BUG=25628 TEST=Compile all.sln cleanly Review URL: http://codereview.chromium.org/6512012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74778 0039d316-1c4b-4281-b951-d872f2087c98
* Share PPAPI out-of-process plugins between renderer processes.brettw@chromium.org2011-02-1312-20/+29
| | | | | | | | | | | | | This provides the hook-up for plugin sharing but not shutdown or cleanup from errors. There is still a lot of work to do cleaning up in the plugin and the browser when a renderer dies, or cleaning up in the renderer and browser when a plugin dies. Currently, even the normal exit case crashes in the browser. But fixing it in this patch would be too complicated to write or review, so I'm going to do shutdown & error handling in a followup. Review URL: http://codereview.chromium.org/6486034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74766 0039d316-1c4b-4281-b951-d872f2087c98