summaryrefslogtreecommitdiffstats
path: root/content/common/gpu/gpu_command_buffer_stub.h
Commit message (Collapse)AuthorAgeFilesLines
* Adding status to swap buffers completionachaulk2015-05-291-1/+3
| | | | | | | | | | | | | | This will give us more options than completing all swaps successfully, or losing context BUG=476966 TBR=torne - approved interface change Committed: https://crrev.com/c794eda78e9ba3c46b550b433e9fe5a248d40104 Cr-Commit-Position: refs/heads/master@{#331906} Review URL: https://codereview.chromium.org/1084173004 Cr-Commit-Position: refs/heads/master@{#331989}
* Revert of Adding status to swap complete (patchset #18 id:340001 of ↵vabr2015-05-291-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1084173004/) Reason for revert: Looks like this broke compilation on http://build.chromium.org/p/chromium.chromiumos/builders/Linux%20ChromiumOS%20Ozone%20Builder/builds/17401. Speculatively reverting for now. If confirmed, will file a bug with details, otherwise re-revert. Cheers, your's sheriff Original issue's description: > Adding status to swap buffers completion > > This will give us more options than completing all swaps successfully, or losing context > > BUG=476966 > TBR=torne - approved interface change > > Committed: https://crrev.com/c794eda78e9ba3c46b550b433e9fe5a248d40104 > Cr-Commit-Position: refs/heads/master@{#331906} TBR=alexst@chromium.org,danakj@chromium.org,dnicoara@chromium.org,nasko@chromium.org,piman@chromium.org,spang@chromium.org,torne@chromium.org,dcheng@chromium.org,achaulk@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=476966 Review URL: https://codereview.chromium.org/1166463004 Cr-Commit-Position: refs/heads/master@{#331939}
* Adding status to swap buffers completionachaulk2015-05-291-1/+3
| | | | | | | | | | | This will give us more options than completing all swaps successfully, or losing context BUG=476966 TBR=torne - approved interface change Review URL: https://codereview.chromium.org/1084173004 Cr-Commit-Position: refs/heads/master@{#331906}
* Change routing of UpdateVSyncParameters to the CommandBufferProxyImpl.danakj2015-02-201-1/+4
| | | | | | | | | | | | | This removes the BrowserCompositorOutputSurfaceProxy class. It adds a UpdateVSyncParameters callback to CommandBufferProxyImpl similar to its sibling SwapBuffersCompleted callback. R=sievers BUG=329552 Review URL: https://codereview.chromium.org/939373002 Cr-Commit-Position: refs/heads/master@{#317337}
* Cleanup: Update the path to gfx size headers.tfarina2015-01-031-1/+1
| | | | | | | | | | | | | The geometry headers were moved from /ui/gfx/ to ui/gfx/geometry, so we are updating the include paths to fix this. BUG=395370 TEST=compiles TBR=sky@chromium.org,danakj@chromium.org Review URL: https://codereview.chromium.org/832953002 Cr-Commit-Position: refs/heads/master@{#309873}
* Add optimization for CHROMIUM_subscribe_uniform extension.orglofch2014-12-151-0/+2
| | | | | | | | | | | We only pass ValueState updates via IPC if the Gpu Service has signalled that a Valuebuffer is subscribed to the respective target. BUG=422978 Review URL: https://codereview.chromium.org/780133002 Cr-Commit-Position: refs/heads/master@{#308389}
* Add mouse input forwarding to gpu serviceorglofch2014-12-031-0/+2
| | | | | | | | | | Required for the SubscribeUniform WebGL extension. BUG=422978 Review URL: https://codereview.chromium.org/634313002 Cr-Commit-Position: refs/heads/master@{#306555}
* Standardize usage of virtual/override/final in content/dcheng2014-10-211-9/+8
| | | | | | | | | | | | This patch was automatically generated by applying clang fixit hints generated by the plugin to the source tree. BUG=417463 TBR=avi@chromium.org Review URL: https://codereview.chromium.org/671663002 Cr-Commit-Position: refs/heads/master@{#300461}
* gpu: Compositor management of GpuMemoryBuffer instances.reveman2014-10-131-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | This is a refactor of the CHROMIUM_image extension that allows the compositor to map/unmap GpuMemoryBuffers on worker threads and potentially also allocate these buffers on worker threads. CreateImageCHROMIUM now takes an opaque ClientBuffer as first parameter. ClientBuffer is implementation specific and in the case of chromium a gfx::GpuMemoryBuffer. Or more specifically a content::GpuMemoryBufferImpl when used with the content layer. This allows the compositor to allocate and use GpuMemoryBuffers without a GLES2Interface. A GpuMemoryBufferManager interface has been introduced. This interface provides a mechanism for the compositor to allocate GpuMemoryBuffer instances in the renderer and browser process. BUG=418553 Review URL: https://codereview.chromium.org/634083002 Cr-Commit-Position: refs/heads/master@{#299360}
* Remove GpuHostMsg_FrameDrawn and replace with client channel swap acksievers2014-10-091-0/+2
| | | | | | | | | | | | This also makes it unnecessary to signal a sync point callback for swap completion for browser compositor surfaces which is skipped now. BUG=417945 Review URL: https://codereview.chromium.org/628703005 Cr-Commit-Position: refs/heads/master@{#298972}
* Replace OVERRIDE and FINAL with override and final in content/common/[a-s]*anand.ratn2014-10-071-7/+7
| | | | | | | | BUG=417463 Review URL: https://codereview.chromium.org/630853003 Cr-Commit-Position: refs/heads/master@{#298453}
* gpu: Remove Echo and SwapCompletion GL interfacessievers2014-10-021-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | This functionality can be implemented with sync point callbacks. Now that swap completion is entirely an implementation detail of the OutputSurface this also allows for eliminating some IPC message redundancy. Ideally SwapCompletion would be unsolicited and also include LatencyInfo (where needed/supported). Also remove the message pattern matching logic in gpu_channel.cc for Flush/Echo. This kind of matching does not work reliably, since OnMessageReceived races with HandleMessage (i.e. the next msg might or might not be in deferred_messages_). Also, the original motivation in bug 407529 is described as making sure SwapBuffers gets handled immediately, which was separately fixed by merging the LatencyInfo with the Flush IPC. BUG=417945 Review URL: https://codereview.chromium.org/619453002 Cr-Commit-Position: refs/heads/master@{#297869}
* Merge GpuCommandBufferMsg_SetLatencyInfo into GpuCommandBufferMsg_AsyncFlushmiletus2014-09-151-2/+2
| | | | | | | | | | | | | | GpuCommandBufferMsg_SetLatencyInfo is used to send current frame's latencyinfo to gpu. We can piggyback the latencyinfo in GpuCommandBufferMsg_AsyncFlush so eliminate the extra IPC. BUG=404650 TEST=check trace that now GLRenderer::SwapBuffers only sends 2 IPC messages, i.e. AsyncFlush and Echo. And LatencyInfo tracking is still working. Review URL: https://codereview.chromium.org/564903002 Cr-Commit-Position: refs/heads/master@{#294895}
* content: Add DeletedGpuMemoryBuffer IPC.reveman@chromium.org2014-07-231-1/+1
| | | | | | | | | | | | | | | | | | This IPC is used by the renderer to notify the browser when a GPU memory buffer instance is deleted. This allows the browser to maintain proper lifetime management of GPU memory buffers for which ownership can't be passed with IPC. This also renames the GpuCommandBufferMsg_DestroyGpuMemoryBuffer IPC to GpuCommandBufferMsg_UnregisterGpuMemoryBuffer to not be confused with real GPU memory buffer destruction, which doesn't necessarily happen at when the GLImage is destroyed. BUG= Review URL: https://codereview.chromium.org/409723003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284941 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Remove Create/DeleteImage IPC by adding an X11_PIXMAP_BUFFER ↵reveman@chromium.org2014-07-181-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | GpuMemoryBuffer type. This adds a new GpuMemoryBuffer type that can be used to create a GpuMemoryBuffer from an existing X11 pixmap. This removes Create/DeleteImage IPC and reduces complexity significantly as it allows the ImageManager to be moved to the decoder and simply track images. A new platform dependent GpuMemoryBufferFactory interface is introduced to allow this new type of buffer to be created on the GPU service side. To avoid the need for any global variables, this factory instance is also responsible for creating GLImage instances. The old factory interface used by android_webview is renamed InProcessGpuMemoryBufferFactory until it can be removed in favor of this new interface. BUG=368716 TEST=gpu_unittests, gl_tests --gtest_filter=GpuMemoryBufferTest.Lifecycle Review URL: https://codereview.chromium.org/331723003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284097 0039d316-1c4b-4281-b951-d872f2087c98
* Removed ManagedMemoryStats.vmpstr@chromium.org2014-06-191-1/+0
| | | | | | | | | | | | | As of r277056, the gpu memory manager is no longer using managed memory stats produced. This patch removes the managed memory stats calculation from the tile manager. As well, this patch removes ununsed gpu managed memory stats plumbing. BUG=377065 Review URL: https://codereview.chromium.org/342483007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278294 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Separate GpuControlService from GpuControlboliu@chromium.org2014-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Orignal goal of this CL is to make InProcessCommandBuffer::CreateGpuMemoryBuffer and DestroyGpuMemoryBuffer thread safe. Before this, Create runs on the client thread and Destroy runs on the service thread without any kind of synchronization. This change makes the division closer to the cross-process implementation, moving parts of the implementation from GpuControlService to GpuControl/InProcessViewRenderer. As a result, GpuControlService no longer needs to inherit GpuControl. And GLES2Decoder has enough information to decide on all gpu::Capabilities. Need to implement the bare minimum client GpuControl for gl_tests and gles2_conform_test. This currently involves some boilerplate and duplication. BUG=362346 Review URL: https://codereview.chromium.org/235563002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267753 0039d316-1c4b-4281-b951-d872f2087c98
* GpuChannelHost: allocate route IDs on the client (renderer) side.hshi@chromium.org2014-04-081-1/+4
| | | | | | | | | | | | | This avoids a timing-sensitive bug where the pattern of non-Host-allocated route IDs are in conflict with non-Host-initiated-first-IPC. BUG=360276 TEST=trybot and manual testing. R=fischman@chromium.org, palmer@chromium.org, piman@chromium.org Review URL: https://codereview.chromium.org/227433010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262553 0039d316-1c4b-4281-b951-d872f2087c98
* Add WaitForToken and WaitForGetOffset messages.jbauman@chromium.org2014-04-071-1/+10
| | | | | | | | | | These let the proxy wait for commands to complete without spinning on a GetStateFast message. BUG=349632 Review URL: https://codereview.chromium.org/215033004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262246 0039d316-1c4b-4281-b951-d872f2087c98
* Make VEA client of command buffer; move sync. IPC to VDA/VEA::Initialize()sheu@chromium.org2014-04-031-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Much refactoring of VDA/VEA. Issues: * Encoders will need to be able to synchronize with the 3D command buffer to support encoding from textures. * The IPC interface from GpuVideo{Decode,Encode}AcceleratorHost to GpuVideo{Decode,Encode}Accelerator collapses the creation and initialization IPC calls into one to save a round-trip. Unfortunately this synchronous IPC happens in the constructor, making the interface unwieldy (and requiring that initialization parameters be passed both on construction and initialization). Solutions: * Make the VEA a client of the command buffer. Harmonize GpuVideo{Decode,Encode}AcceleratorHost implementations to make codepaths parallel (and easier to reason about). * Move the synchronous IPC calls in the constructor of GpuV{D,E}AH into the Initialize() call, and remove the requirement that the initialization parameters be passed in the constructor. * Make VEA::Initialize() a 'bool' function call, as it is done in VDA, to allow Initialize() to be used synchronously. * (minor) remove SupportsWeakPtr from VDA interface. BUG=269312 TEST=local build, run, unittests on CrOS snow Review URL: https://codereview.chromium.org/185403020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261365 0039d316-1c4b-4281-b951-d872f2087c98
* [gpu] Remove StreamTexture(Manager) concept from command decodersievers@google.com2014-01-271-0/+1
| | | | | | | | | | | | | Instead add a simple GpuControl interface to attach a GLImage-wrapped SurfaceTexture ref to a texture which will provide the necessary hooks. BUG=282700,309162 R=palmer@chromium.org, piman@chromium.org, reveman@chromium.org Review URL: https://codereview.chromium.org/147463002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247334 0039d316-1c4b-4281-b951-d872f2087c98
* Remove gpu side LatencyInfo mergingmiletus@chromium.org2014-01-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This CL removes the LatecyInfo merging from the following path: Compsitor to GPU: CommandBufferProxyImpl::SetLatencyInfo() -> (GpuCommandBufferMsg_SetLatencyInfo) -> GpuCommandBufferStub::OnSetLatencyInfo() -> ImageTransportHelper::SetLatencyInfo() -> XXXImageTransportSurface:SetLatencyInfo() After swap buffers: XXXImageTransportSurface::SwapBuffers() -> (GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params/ GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params/ GpuHostMsg_FrameDrawn) -> RenderWidgetHostView BUG=246034 TEST=unittests pass. Tested on Pixel. chrome://tracing shows correct InputLatency tracking for various inputs. Review URL: https://codereview.chromium.org/123563002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245260 0039d316-1c4b-4281-b951-d872f2087c98
* Add GL entry points for DiscardBackbufferCHROMIUMjamesr@chromium.org2013-12-131-1/+0
| | | | | | | | | | | | This adds and uses a GL command buffer command for DiscardBackbufferCHROMIUM instead of having a WebGraphicsContext3D entry point + common/ IPC message. This is used to deallocate, if possible, the backbuffer when no longer in use. BUG=181120 Review URL: https://codereview.chromium.org/104823005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240583 0039d316-1c4b-4281-b951-d872f2087c98
* Report GPU memory usage to DevToolsalph@chromium.org2013-12-111-1/+3
| | | | | | | | | | Extract GPU memory usage statistics and pass it to DevTools. BUG=326497 Review URL: https://codereview.chromium.org/110883005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240084 0039d316-1c4b-4281-b951-d872f2087c98
* enable stencil buffer on mac; allows --force-direct-layer-drawing to workhumper@google.com2013-11-131-0/+2
| | | | | | | | BUG= Review URL: https://codereview.chromium.org/27212002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234868 0039d316-1c4b-4281-b951-d872f2087c98
* Move memory allocation/stats structs to gpu:: and remove bazillion copiesjamesr@chromium.org2013-10-291-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves the memory allocation / stats structs from content to gpu:: and eliminates many redundant copies of this information in different parts of the stack. This also moves the stats sending and allocation callbacks to gpu::ContextSupport / gpu::GpuControl to get rid of the bounce through WebKit::WebGraphicsContext3D. The new flow for cc to register for memory allocation changes and pass stats to the manager is this: cc:: registers for MemoryAllocationChanged callbacks and sends stats via the gpu::ContextSupport interface. Memory allocations are represented by a gpu::MemoryAllocation struct and memory statistics are sent in a gpu::ManagedMemoryStats struct. The implementation of gpu::ContextSupport (gpu::gles2::GLES2Implementation) forwards the calls to gpu::GpuControl. content::CommandBufferProxyImpl's implementation of these maps the calls to content IPCs that drive the memory manager implementation. This patch gets rid of the following things: *) WebKit::WebGraphicsMemory(Allocation|Stats) go away. These were used only because cc was not able to depend on the previous locations of the allocation/stats structs in content::. Now that these structs are in gpu::, the compositor (which is the only thing using these) can see them directly *) WebGraphicsContext3D::sendManagedMemoryStatsCHROMIUM / setMemoryAllocationChangedCallbackCHROMIUM go away. *) cc:ManagedMemoryPolicy's cutoff fields are now gpu::MemoryAllocation::PriorityCutoff enums instead of an (inconsistently named) copy. *) GpuMemoryAllocationForBrowser goes away and is managed directly in content. gpu::GpuMemoryAllocationForRenderer is renamed to just gpu::MemoryAllocation *) Many proxies and converters go away. cc::ManagedMemoryPolicy sticks around in this patch, even though it's largely the same as gpu::MemoryAllocation, since it's sometimes used by code that doesn't go through the gpu memory allocation path - such as android_webview - and it has some additional state (num_resource_limit) that's not applicable to a general gpu::MemoryAllocation. Chris tells me this struct is due for simplification as well, so maybe it'll make sense to fold it in in a future patch. Diffstat: 53 files changed, 345 insertions(+), 713 deletions(-) BUG=181120 R=piman,ccameron Review URL: https://codereview.chromium.org/45243002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231527 0039d316-1c4b-4281-b951-d872f2087c98
* Add multi-process GpuMemoryBuffer framework.reveman@chromium.org2013-10-221-0/+10
| | | | | | | | | | | | | | | | | | | | | | | This adds a multi-process framework for reading/writing directly to memory that the 3D graphics hardware can use for rendering without any costly copying having to be done on the GPU process side. A GpuMemoryBuffer is a type of shared memory that can be accessed by the GPU. The high level procedure required to allocate this type of memory is almost exactly the same as that for standard shared memory. Only the browser process can allocated the memory and it needs to be shared and registered with the GPU process before it can be used. This also adds a GpuMemoryBuffer type that is backed by standard shared memory for testing purposes. TEST=gpu_unittests --gtest_filter=MockGpuMemoryBufferTest.Lifecycle BUG=261649 Review URL: https://codereview.chromium.org/19762004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230248 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 220369 "Add content::SurfaceCapturer".hshi@chromium.org2013-10-171-2/+0
| | | | | | | | | | | | | Remove the unused SurfaceCapturer interface. Per discussion we will not be using this for desktop capture. BUG=NONE TEST=local build, trybots R=cdn@chromium.org, piman@chromium.org, sheu@chromium.org Review URL: https://codereview.chromium.org/26313003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229229 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Revert 224496 "Move ui/base/latency_info* to ui/events""ben@chromium.org2013-09-231-1/+1
| | | | | | | | | | | | | This reverts commit d1ec3f7f30d07132bf0f75e4938d50a508bc7637. Attempt at re-landing this previous change. Moves LatencyInfo from ui/base to ui/events. TBR=sky@chromium.org,jamesr@chromium.org,jschuh@chromium.org BUG=none Review URL: https://codereview.chromium.org/24257011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224769 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 224496 "Move ui/base/latency_info* to ui/events"ben@chromium.org2013-09-201-1/+1
| | | | | | | | | | | | | | | | | | > Move ui/base/latency_info* to ui/events > > Latest in a sequence of changes to extract ui/gfx as its own component and sever ties on ui/base from various should-be-lower-level components. > > TBR=jamesr@chromium.org, sky@chromium.org > > BUG=none > > Review URL: https://codereview.chromium.org/23464099 TBR=ben@chromium.org Review URL: https://codereview.chromium.org/24141009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224503 0039d316-1c4b-4281-b951-d872f2087c98
* Move ui/base/latency_info* to ui/eventsben@chromium.org2013-09-201-1/+1
| | | | | | | | | | | | Latest in a sequence of changes to extract ui/gfx as its own component and sever ties on ui/base from various should-be-lower-level components. TBR=jamesr@chromium.org, sky@chromium.org BUG=none Review URL: https://codereview.chromium.org/23464099 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224496 0039d316-1c4b-4281-b951-d872f2087c98
* FeatureInfo: Remove allowed_extensions and init workarounds earlysievers@chromium.org2013-09-051-2/+0
| | | | | | | | | | | This removes passing allowed_extensions all the way through, since it was ignored anyways. It also initializes the workarounds from the commandline during FeatureInfo construction so it can be used to make decisions before the first context is created and initialized. Review URL: https://chromiumcodereview.appspot.com/23660006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221438 0039d316-1c4b-4281-b951-d872f2087c98
* The SurfaceCapturer interface is for screen capturers that capturesheu@chromium.org2013-08-291-0/+2
| | | | | | | | | | | | | | | | contents directly from a surface. This change: * Adds the SurfaceCapturer interface * Adds GLSurfaceCapturer{,Host}, which expose the interface across IPC from the GPU process to the browser process. BUG=260210 BUG=221441 TEST=local build, run on CrOS snow Review URL: https://chromiumcodereview.appspot.com/22935009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220369 0039d316-1c4b-4281-b951-d872f2087c98
* Reland r209673: "gpu: Propagate lost context signal to all contexts"skyostil@chromium.org2013-07-111-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reland the patch with a fix for the StartupTest crashes observed on "Mac 10.6 Perf(2)". BUG=232449 > gpu: Propagate lost context signal to all contexts > > When any individual command buffer context encounters a context lost > event, propagate the context lost status to all other contexts if > gfx::GLContext::LosesAllContextsOnContextLost() is true. This allows > all command buffer clients to get notified of GPU resets. This is > useful with virtual contexts because the reset is generally picked > up by a random virtual context. > > Also, if virtual contexts are being used, all contexts should avoid > doing GL object cleanup during teardown because the real context has > already been lost at that point. > > BUG=232449 > TEST=https://www.khronos.org/registry/webgl/conformance-suites/1.0.1/extra/lots-of-polys-example.html > > Review URL: https://chromiumcodereview.appspot.com/17550012 Review URL: https://chromiumcodereview.appspot.com/18836003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210977 0039d316-1c4b-4281-b951-d872f2087c98
* content: Migrate from googleurl/ includes to url/ ones.tfarina@chromium.org2013-07-091-1/+1
| | | | | | | | | BUG=229660 TBR=darin@chromium.org Review URL: https://codereview.chromium.org/18868005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210626 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 209673 "gpu: Propagate lost context signal to all contexts"crogers@google.com2013-07-031-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Speculative revert to try to fix 256903 BUG=256903 > gpu: Propagate lost context signal to all contexts > > When any individual command buffer context encounters a context lost > event, propagate the context lost status to all other contexts if > gfx::GLContext::LosesAllContextsOnContextLost() is true. This allows > all command buffer clients to get notified of GPU resets. This is > useful with virtual contexts because the reset is generally picked > up by a random virtual context. > > Also, if virtual contexts are being used, all contexts should avoid > doing GL object cleanup during teardown because the real context has > already been lost at that point. > > BUG=232449 > TEST=https://www.khronos.org/registry/webgl/conformance-suites/1.0.1/extra/lots-of-polys-example.html > > Review URL: https://chromiumcodereview.appspot.com/17550012 TBR=skyostil@chromium.org Review URL: https://codereview.chromium.org/18647004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210011 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Propagate lost context signal to all contextsskyostil@chromium.org2013-07-021-0/+4
| | | | | | | | | | | | | | | | | | | | When any individual command buffer context encounters a context lost event, propagate the context lost status to all other contexts if gfx::GLContext::LosesAllContextsOnContextLost() is true. This allows all command buffer clients to get notified of GPU resets. This is useful with virtual contexts because the reset is generally picked up by a random virtual context. Also, if virtual contexts are being used, all contexts should avoid doing GL object cleanup during teardown because the real context has already been lost at that point. BUG=232449 TEST=https://www.khronos.org/registry/webgl/conformance-suites/1.0.1/extra/lots-of-polys-example.html Review URL: https://chromiumcodereview.appspot.com/17550012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209673 0039d316-1c4b-4281-b951-d872f2087c98
* Add signalQuery, to allow for a callback when the result of a query is ↵hubbe@chromium.org2013-06-251-0/+1
| | | | | | | | | | available. BUG=249925 Review URL: https://chromiumcodereview.appspot.com/16983007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208376 0039d316-1c4b-4281-b951-d872f2087c98
* [Aura] Added Support for rendering software compositor frames as ↵skaslev@chromium.org2013-06-081-1/+0
| | | | | | | | | | | | cc::TextureLayers through cc::TextureMailbox. BUG=161008 R=piman TBR=jschuh,ben Review URL: https://chromiumcodereview.appspot.com/15001027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205010 0039d316-1c4b-4281-b951-d872f2087c98
* Replace context parenting by sharing through mailboxespiman@chromium.org2013-06-051-3/+2
| | | | | | | | | | | | | | Instead of tying contexts together through the parenting mechanism, we can allow the client to produce the front buffer of an offscreen context into a mailbox, and use that in the "parent" context. It simplifies the code and the semantics wrt lost contexts, and we want to use mailboxes anyway. BUG=164095 Review URL: https://chromiumcodereview.appspot.com/15798014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204194 0039d316-1c4b-4281-b951-d872f2087c98
* Update content/ to use scoped_refptr<T>::get() rather than implicit ↵rsleevi@chromium.org2013-06-021-1/+1
| | | | | | | | | | | | | "operator T*" Linux fixes BUG=110610 TBR=darin Review URL: https://chromiumcodereview.appspot.com/16294003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203624 0039d316-1c4b-4281-b951-d872f2087c98
* pepper: simplify context creation/initializationpiman@chromium.org2013-05-311-5/+0
| | | | | | | | | | | | | | | This saves a round-trip. We don't need client-side info (e.g. shm buffer) any more before context initialization, so we can do the initialization completely on the renderer side before returning the resource, saving one sync round-trip. A side benefit is that now we can guarantee we only call SetParent after initialization, simplifying transient states. BUG=164095 Review URL: https://chromiumcodereview.appspot.com/15679013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203464 0039d316-1c4b-4281-b951-d872f2087c98
* Move cc/debug/latency_info to ui/base.jbauman@chromium.org2013-05-291-3/+3
| | | | | | | | | | This structure would be useful in ui/surface, which can't depend on cc/. BUG= Review URL: https://chromiumcodereview.appspot.com/14999012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202772 0039d316-1c4b-4281-b951-d872f2087c98
* GpuVideoDecodeAccelerator lifecycle fixes.sheu@chromium.org2013-04-271-5/+1
| | | | | | | | | | | | | | | | | | | | | | | * GpuVideoDecodeAccelerator clears its reference to its parent GpuCommandBufferStub on GpuVideoDecodeAccelerator::OnWillDestroy(), then only removes its IPC channel route on destruction if the stub reference is valid. This means the route is never actually removed, and so we leak the IPC route. Modify OnWillDestroy() to immediately delete the GpuVideoDecodeAccelerator object and remove the route. * GpuCommandBufferStub owns the GpuVideoDecodeAccelerator objects it creates, but does not destroy them when they are destroyed through the AcceleratedVideoDecoderMsg_Destroy IPC. This causes a leak of GpuVDA objects as long as the GpuCommandBufferStub is alive. Allow the OnDestroy() callback for AcceleratedVideoDecoderMsg_Destroy to destroy the GpuVDA directly, and remove the explicit owned list of GpuVDA objects from GpuCommandBufferStub to avoid double-deletion. BUG=234465 TEST=local build, run on CrOS snow, desktop Linux Review URL: https://chromiumcodereview.appspot.com/14444002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@196923 0039d316-1c4b-4281-b951-d872f2087c98
* Plumb cc::LatencyInfo through command buffer and output surfacejbauman@chromium.org2013-04-121-0/+9
| | | | | | | | | | This allows the LatencyInfo struct to pass from the compositor to the gpu process and up to the browser. It only works completely with the passthrough image transport surface at the moment, because that doesn't require passing data through some extra components. BUG=155367 Review URL: https://chromiumcodereview.appspot.com/12614013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193864 0039d316-1c4b-4281-b951-d872f2087c98
* Enable GL context virtualization for compositor contexts on Mac.ccameron@chromium.org2013-04-101-0/+2
| | | | | | | | | BUG=180463 NOTRY=true Review URL: https://chromiumcodereview.appspot.com/13689003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193397 0039d316-1c4b-4281-b951-d872f2087c98
* Delete the GpuCommandBufferMsg_DestroyVideoDecoder IPC message since it is ↵fischman@chromium.org2013-04-051-5/+4
| | | | | | | | never used(!) Review URL: https://chromiumcodereview.appspot.com/13521007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192463 0039d316-1c4b-4281-b951-d872f2087c98
* Remove routes for video decoders on GpuCommandBufferStub destructionsheu@chromium.org2013-03-191-3/+1
| | | | | | | | | | | | | | | | Prevents a dangling reference in the GpuChannel message router to a video decoder that has been destroyed, if the GpuCommandBufferStub does not receive a GpuCommandBufferMsg_DestroyVideoDecoder for the video decoder. BUG=196648 TEST=local build, run on snow, desktop Linux Change-Id: I2cab1b787e507157a6a9fcb001c5459daf9bc0e3 Review URL: https://chromiumcodereview.appspot.com/12832003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188902 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Implement idle async pixel transfers.reveman@chromium.org2013-03-161-0/+2
| | | | | | | | | | | | | This makes the fallback pixel transfer implementation perform texture uploads when command buffer is idle. BUG=161337 R=epenner@chromium.org Review URL: https://chromiumcodereview.appspot.com/12040049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188558 0039d316-1c4b-4281-b951-d872f2087c98
* Add per-profile disk caching of complied GPU shaders.dsinclair@chromium.org2013-03-131-0/+2
| | | | | | | | | | | | | | | | This CL adds a per-profile disk cache for any shaders that are complied while using the profile. When the profile is first opened the shaders will be loaded from disk and used to pre-populate the GPU memory shader cache. The disk cache takes the load time for From Dust from ~30 seconds to ~18 seconds on my Linux machine for any loads after the first. BUG=166763 Review URL: https://chromiumcodereview.appspot.com/12036056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187704 0039d316-1c4b-4281-b951-d872f2087c98