summaryrefslogtreecommitdiffstats
path: root/ui/gl/gl_context_cgl.cc
Commit message (Collapse)AuthorAgeFilesLines
* Force GPU switch with CGLSetVirtualScreen only for compositorccameron@chromium.org2013-04-101-26/+37
| | | | | | | | | | | | | | | | | | | | | | | | Only compositor contexts are known to use only the subset of GL that can be safely migrated between the iGPU and the dGPU. Mark those contexts as safe to forcibly transition between the GPUs. In particular, Intel GPUs support using a GL_STENCIL_INDEX8 attachment with no depth buffer, but NV GPUs don't. Skia will use this FBO combo if it is listed as available. If we use this combo on the iGPU and then forcibly transition the GL context using this combo from the iGPU to the dGPU, corruption occurs on NV, and a hang happens on AMD. Further, if we cache complete FBO combos, then we will cache this combo as valid when using the iGPU, and claim that it's valid when using the dGPU, resulting in GL errors. BUG=180876 Review URL: https://chromiumcodereview.appspot.com/13746002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193302 0039d316-1c4b-4281-b951-d872f2087c98
* Wait some time before switching to integrated GPU.jbauman@chromium.org2013-03-231-1/+6
| | | | | | | | | | | Switching between the discrete GPU and integrated GPU is expensive (and probably buggy), so delay switching back from the discrete GPU to the integrated GPU for 10 seconds after a context is deleted in case a new context will soon request the discrete GPU. BUG=156986 Review URL: https://chromiumcodereview.appspot.com/12619009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190096 0039d316-1c4b-4281-b951-d872f2087c98
* Don't migrate contexts that require the discrete GPU off it.jbauman@chromium.org2013-03-131-2/+6
| | | | | | | | | | | There's a race condition when a context that requires a GPU is created, causing it to be migrated to the integrated GPU which was where the context in the browser process last presented from. Fix this by not migrating contexts that require the discrete GPU, and clearing out the current renderer id when creating a context that requires the discrete GPU. BUG=181629 Review URL: https://chromiumcodereview.appspot.com/12771022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187789 0039d316-1c4b-4281-b951-d872f2087c98
* Switch all contexts in a share group to be on the same screen as the window ↵jbauman@chromium.org2013-03-061-24/+69
| | | | | | | | | | | | | | | they present to. When OS X switches GPUs, some contexts that were created beforehand and aren't associated with an NSView can be left behind on the old GPU, which will cause problems when other contexts attempt to share textures with them. To fix this, track what renderer is being used to present to the screen, transmit that to the IOSurfaceImageTransportSurface in the GPU process, and change every context in the same share group to use that renderer. BUG=174149 Review URL: https://chromiumcodereview.appspot.com/12383042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186388 0039d316-1c4b-4281-b951-d872f2087c98
* Virtual GLgman@chromium.org2012-11-071-0/+1
| | | | | | | | | BUG=155557 Review URL: https://chromiumcodereview.appspot.com/11275120 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166442 0039d316-1c4b-4281-b951-d872f2087c98
* gl: Move GpuSwitchingManager into ui namespace.tfarina@chromium.org2012-10-081-3/+3
| | | | | | | | | BUG=127983 TBR=apatrick@chromium.org Review URL: https://codereview.chromium.org/11013008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@160728 0039d316-1c4b-4281-b951-d872f2087c98
* Move force_discrete GPU on older MacBookPro models to GpuBlacklistzmo@google.com2012-10-011-14/+3
| | | | | | | | | | | | | | Before we hardwired the forcing. Also, we refactor the SupportsDualGpus() code so it's only checked on browser process, mainly the part we check the availability of online/offline renderers. We suspect calling the renderer detection code at the same time in browser/gpu processes might cause GPU driver crashes on certain Mac systems (mostly 10.8 from crash reports). This refactoring hopefully will fix the issue. BUG=151741,131276 TEST=tree, manual on dual GPU systems (10.7 and 10.8) Review URL: https://codereview.chromium.org/10995002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159579 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 158211 - Revert 158076 - Implement blacklist's force GPU capability ↵tzik@chromium.org2012-09-231-11/+4
| | | | | | | | | | | | | | | | | | | in dual GPU machines. This is part 2. In part one we implement the semantics in blacklist. Now we hook it up with the "real" forcing code. For now we only hook it up with Mac CGL port. BUG=140114,131276,111720 TEST=tree Review URL: https://codereview.chromium.org/10909221 TBR=zmo@chromium.org Review URL: https://codereview.chromium.org/10959061 TBR=tzik@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158213 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 158076 - Implement blacklist's force GPU capability in dual GPU machines.tzik@chromium.org2012-09-231-4/+11
| | | | | | | | | | | | | | | This is part 2. In part one we implement the semantics in blacklist. Now we hook it up with the "real" forcing code. For now we only hook it up with Mac CGL port. BUG=140114,131276,111720 TEST=tree Review URL: https://codereview.chromium.org/10909221 TBR=zmo@chromium.org Review URL: https://codereview.chromium.org/10959061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158211 0039d316-1c4b-4281-b951-d872f2087c98
* Honor --gpu-switching=force_discrete to always stay on discrete GPU.zmo@google.com2012-09-221-0/+11
| | | | | | | | | | | | | | | | | | | Before we only stays on discrete GPU if any GL contexts are active. Now we truly stay on discrete GPU, always. This CL also remove --disable-gpu-switching; use --gpu-switching=force_integrated/force_discrete instead. Also, user's --gpu-switching option will overwrite the hardwired force_discrete decision, i.e., if a user wants to stay on integrated GPU and save battery, we honor that. BUG=140114,131276,111720 TEST=tree Review URL: https://codereview.chromium.org/10959050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158128 0039d316-1c4b-4281-b951-d872f2087c98
* Implement blacklist's force GPU capability in dual GPU machines.zmo@chromium.org2012-09-211-11/+4
| | | | | | | | | | | | This is part 2. In part one we implement the semantics in blacklist. Now we hook it up with the "real" forcing code. For now we only hook it up with Mac CGL port. BUG=140114,131276,111720 TEST=tree Review URL: https://codereview.chromium.org/10909221 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158076 0039d316-1c4b-4281-b951-d872f2087c98
* Get real GPU memory values on NV+Linux and OS X. Add an interface to ↵ccameron@chromium.org2012-09-211-0/+58
| | | | | | | | | | | | | | | GLContext to query the GPU's total video memory. Note that this is the amount of video memory on the currently-rendering GPU, so different contexts will give different values, and the same context may give different values over time (for instance, on a Macbook Pro with graphics switching). Of note is that on a Macbook Pro with graphics switching enabled, the contexts don't move together between GPUs -- some stay on the integrated GPU while others use the discrete GPU. BUG=132994 Review URL: https://chromiumcodereview.appspot.com/10957009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157879 0039d316-1c4b-4281-b951-d872f2087c98
* Only specify kCGLPFAAllowOfflineRenderers on systems that support dual GPUsjbauman@chromium.org2012-06-161-3/+4
| | | | | | | | | | | | This was causing issues with silverlight on 10.6 machines. BUG=132235 TEST= Review URL: https://chromiumcodereview.appspot.com/10539178 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142570 0039d316-1c4b-4281-b951-d872f2087c98
* Don't destroy channels when switching GPUsjbauman@chromium.org2012-06-091-12/+24
| | | | | | | | | | | | It looks like OS X automatically migrates old contexts onto the discrete GPU when it's using the discrete GPU. Therefore, instead of destroying the entire channel and all its contexts to switch GPUs, we can create a pixelformat that requires the discrete GPU before creating the new context, which will force every context onto the discrete GPU for the duration. BUG=129258 TEST= Review URL: https://chromiumcodereview.appspot.com/10545077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141347 0039d316-1c4b-4281-b951-d872f2087c98
* ui: Move gl/ directory out of gfx/, up to ui/.tfarina@chromium.org2012-05-121-0/+163
BUG=104040 R=ben@chromium.org TBR=tony@chromium.org Review URL: https://chromiumcodereview.appspot.com/10392068 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136777 0039d316-1c4b-4281-b951-d872f2087c98