summaryrefslogtreecommitdiffstats
path: root/content/renderer/gpu/gpu_channel_host.cc
Commit message (Collapse)AuthorAgeFilesLines
* Retry 3 to split WebGraphicsContext3DCommandBufferImpl::initialize() into ↵nduca@chromium.org2011-09-131-1/+2
| | | | | | | | | | | | | | | | | | | two stages. This CL splits out creation of the context from channel creation. The WebGraphicsContext3D will not be fully initialized until MakeCurrent is called on it, at which point it is tied to the calling thread. As compared to previous land attempts, this has: - Protection against isContextLost being called on a dead context - WebKit-side protection to ensure that GraphicsContext3Ds get made current - Pepper modified to makeCurrent new contexts Original review URL: http://codereview.chromium.org/7713015 Review URL: http://codereview.chromium.org/7860028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100955 0039d316-1c4b-4281-b951-d872f2087c98
* Fix logic in GpuChannelHost::Send() during shutdown.sievers@chromium.org2011-09-081-3/+9
| | | | | | | | | | | | | | RenderThread::current() returns NULL after the ~AtExitManager() has processed its callbacks. However, contexts still referencing GpuChannelHost might get destroyed on the main thread only until later. In that case we want to avoid using the sync filter. Also fix unreached code/leak while the channel is gone. BUG=95734 Review URL: http://codereview.chromium.org/7841053 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100274 0039d316-1c4b-4281-b951-d872f2087c98
* Fix thread-checker debug code in GpuChannelHost::MessageFilter.sievers@chromium.org2011-09-061-7/+5
| | | | | | | | | | | | | | GpuChannelHost can actually outlive the GPUChannel instance (if there is still a context referencing it). Therefore filter destruction can legally happen on IO, main, or compositor thread. Put more explicit DCHECK()s to for the member function that must be called on the IO thread instead. BUG=95148 Review URL: http://codereview.chromium.org/7835010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99822 0039d316-1c4b-4281-b951-d872f2087c98
* Remove support for switching draw surfaces on a context.This was originally ↵apatrick@chromium.org2011-09-021-26/+0
| | | | | | | | intended to share canvas "back buffers" between the GPU process and the browser process. The plan is to issue all the GL calls in the GPU process now, with the browser process just doing the final present. Removing the redundant code. Review URL: http://codereview.chromium.org/7701021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99424 0039d316-1c4b-4281-b951-d872f2087c98
* Replace the use of an int32* with an explicit profile for decoder configuration.fischman@chromium.org2011-09-011-2/+2
| | | | | | | | | | | | | | Replaces the error-prone, overly-general, error-containing, and brittle manually-terminated array-of-ints holding name/value pairs (except for names that don't take values) with a simple profile parameter (specifying only information we actually use today). BUG=none TEST=trybots, ovdatest, gles2 Review URL: http://codereview.chromium.org/7779001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99111 0039d316-1c4b-4281-b951-d872f2087c98
* Allow cmdbuffer creation from compositor thread.sievers@chromium.org2011-08-231-46/+164
| | | | | | | | | | | | | | This adds a message filter on the IO thread which routes messages to the corresponding cmdbuffer proxy on the correct thread (main or compositor). The proxies become reference counted so that the filter can track them. When a context gets deleted, a flag gets set on the context to indicate they have become orphaned so we do not handle any incoming messages anymore (the callbacks etc. have become invalid when the context goes away). Review URL: http://codereview.chromium.org/7634019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97824 0039d316-1c4b-4281-b951-d872f2087c98
* Support multiple HW video decoders per context.fischman@chromium.org2011-08-171-0/+9
| | | | | | | | | | | | Enhanced gles2.cc to display two decoders in the same context to demo this capability. BUG=92598 TEST=ovdatest passes, gles2 works, trybots Review URL: http://codereview.chromium.org/7659001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97066 0039d316-1c4b-4281-b951-d872f2087c98
* Implement PPAPI VideoDecode out-of-process supportvrk@chromium.org2011-08-061-1/+1
| | | | | | | | | | | | | This CL implements the proxy necessary for out-of-process video decoding and introduces a shared base class between the PPB_VideoDecoder_Impl and the proxy. BUG=NONE TEST=gles2 plugin runs with or without --ppapi-out-of-process flag, no crashes Review URL: http://codereview.chromium.org/7545014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95724 0039d316-1c4b-4281-b951-d872f2087c98
* Implemented support for GL context share groups in the renderer process.I ↵apatrick@chromium.org2011-08-031-1/+9
| | | | | | | | put all compositor and canvas contexts in the same share group so they can share IDs. Review URL: http://codereview.chromium.org/7554015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95345 0039d316-1c4b-4281-b951-d872f2087c98
* Remove ReadWriteTokens from GpuVideoDecodeAccelerator + falloutvrk@google.com2011-07-281-2/+1
| | | | | | | | | | | | With apatrick's changes in r93066, we no longer need to manually sync up with the command buffer before handling IPC messages in GpuVideoDecodeAccelerator. BUG=none TEST=gles2 example runs without crashing Review URL: http://codereview.chromium.org/7521015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94561 0039d316-1c4b-4281-b951-d872f2087c98
* Remove GpuVideoServiceHost and move ownership of GVDAHosts to ↵vrk@google.com2011-07-121-9/+11
| | | | | | | | | | | | | | CommandBufferProxies Now communication between GpuVideoDecodeAccelerator and its host should be more or less symmetric, at least for creation. BUG=none TEST=none Review URL: http://codereview.chromium.org/7329012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92251 0039d316-1c4b-4281-b951-d872f2087c98
* Implement proper synchronization between HW video decode IPC and CommandBuffer.fischman@chromium.org2011-06-291-3/+3
| | | | | | | | | | | | | | | | | This is done by inserting tokens into the command-buffer stream when synchronization is needed, and adding a last-read/last-written token pair to each IPC message. This allowed me to remove the bogus FinishGL() calls from the gles2 sample pepper plugin. As part of this CL, the return value for VideoDecodeAccelerator::{Decode,Flush,Abort} changed from bool to void. These are all async methods so errors ought to be signaled using callbacks. BUG=none TEST=gles2 works, no crashes; trybots Review URL: http://codereview.chromium.org/7260008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90971 0039d316-1c4b-4281-b951-d872f2087c98
* GPU compositing surface handle is no longer sent to renderer process.apatrick@chromium.org2011-06-271-2/+1
| | | | | | | | | | | | | Instead it is stored in a map in RenderWidgetHelper indexed by RenderWidgetHost route ID. This allows the UI thread to maintain the mapping as windows are created and destroyed and the IO thread to lookup the mapping in order to create GL contexts that render to the windows. This avoids a race where JavaScript would open a popup window and immediately try to use an accelerated canvas to render to it (2D canvas or WebGL canvas). <-- This is no longer true of this patch. There was a potential deadlock. WebGL canvas used to work in this case only because it would fall back to using ReadPixels. This goes some way to fixing the bug referenced below but does not fix it completely.BUG=80703 Review URL: http://codereview.chromium.org/7136001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90617 0039d316-1c4b-4281-b951-d872f2087c98
* RendererGLContext supports reparenting a GL context.apatrick@chromium.org2011-06-201-6/+1
| | | | | | | | | | | | This will allow the parenting of offscreen canvas contexts to be deferred until the compositor's view context exists, which in some cases needs to be deferred until the window is asynchronously created by the browser's UI thread. An example is JavaScript opening a popup window and then immediately using canvas to attempt to render to it. This patch alone does not fix the bug. BUG=80703 Review URL: http://codereview.chromium.org/7205012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89715 0039d316-1c4b-4281-b951-d872f2087c98
* Set the unblock flag to false for all gpu->renderer IPCsjamesr@chromium.org2011-06-011-0/+3
| | | | | | | | | | | | | | | | The GPU process should never send sync IPCs to other processes so we don't need to set the unblock flag for any IPCs in order to avoid deadlocks. This patch sets the unblock flag to false for all renderer->GPU IPCs to preserve order, and adds some more DCHECK()s to enforce that the GPU process does not send any sync IPCs out to other processes. BUG=84065 TEST= Review URL: http://codereview.chromium.org/7104014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87427 0039d316-1c4b-4281-b951-d872f2087c98
* Moved GPU related files in content/renderer into gpu subdirectory.apatrick@chromium.org2011-05-251-0/+212
Also added an OWNERS file to that subdirectory. Review URL: http://codereview.chromium.org/7066035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86707 0039d316-1c4b-4281-b951-d872f2087c98