My favorites | Sign in
Project Home Downloads Wiki Issues Code Search
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 53165: Resizing looks broken when accelerated drawing path is used
7 people starred this issue and may be notified of changes. Back to list
 
Project Member Reported by thakis@chromium.org, Aug 23, 2010
What steps will reproduce the problem?
1. Start with --enable-accelerated-compositing
2. Open poster circle demo
3. Open task manager
4. Resize window like crazy.

What is the expected result?

Mostly constant memory usage, no drawing artifacts.

What happens instead?

Memory usage goes up and to the right, drawing artifacts are visible while resizing happens.


(This is not a regression caused by the glview cl for a change :-P)
Aug 24, 2010
#1 pinkerton@chromium.org
(No comment was entered for this change.)
Labels: -Pri-2 Pri-1
Aug 24, 2010
#2 lafo...@chromium.org
(No comment was entered for this change.)
Status: Assigned
Aug 24, 2010
#3 thakis@chromium.org
Theory about the visual brokenness: when the window is resized,
1. a new IOSurface is allocated
2. the rwhv is notified of the new surface
3. the IOSurface is drawn into for the first time by the gpu process (or the plugin process)

If the rwhv paints after 2, it will show uninitialized memory.
Aug 24, 2010
#4 thakis@chromium.org
Having a (lock-protected) boolean suppressPainting that's set to true in AcceleratedSurfaceSetIOSurface and to false in AcceleratedSurfaceBuffersSwapped gets rid of the garbage. Of course, this means that sometimes nothing's there to draw during resizing (in the interval between us getting the new surface and the new surface getting painted), and the window becomes transparent during that time :-P

But at least the cause for the garbage is identified. Still stumped about the memory leak. Doesn't help that the IOSurface stuff isn't very documented.
Aug 24, 2010
#5 kbr@chromium.org
Great. Thanks for tracking down the root cause of the garbage. We should probably try to figure out how to preserve the IOSurface's current contents when allocating the new one and discarding the old one.

Does it look like we're properly CFRelease'ing the IOSurface handles in both the GPU and browser processes during the resizing operation?

Aug 24, 2010
#6 thakis@google.com
We're releasing in both processes at first glance (I'm a bit surprised it's required in the browser process; doesn't mesh with the "create rule" naming convention – maybe we should retain in the browser process. but that won't help with leaks).

I didn't check where/how retain counts change; will do that next.
Aug 24, 2010
#7 thakis@chromium.org
I printed retain counts for the iosurfaces in AcceleratedSurfaceContainerMac::ReleaseIOSurface() / AcceleratedSurfaceContainerMac::SetSizeAndIOSurface() and in AcceleratedSurface::SetSurfaceSize(). They look sane.

AcceleratedSurface has this comment:

  // The FBO and texture objects will be destroyed when the OpenGL context,
  // and any other contexts sharing resources with it, is. We don't want to
  // make the context current one last time here just in order to delete
  // these objects.

However, I checked that only one texture object is allocated and that it is reused.

I uncommented the call to CGLTexImageIOSurface2D() in the gpu process; that didn't change anything.
Aug 24, 2010
#8 thakis@chromium.org
$  vmmap -d 10 76141
Virtual Memory Map of process 76141 (Chromium Helper)
Output report format:  2.2  -- 32-bit process

========= Regions in 1st snapshot not in 2nd ==========
==== Non-writable regions for process 76141
MALLOC (admin)         083db000-083dc000 [    4K] r--/rwx SM=PRV  

==== Writable regions for process 76141
__OBJC                 03945000-03961000 [  112K] rw-/rwx SM=PRV  /Volumes/MacintoshHD2/src/chrome-git/src/xcodebuild/Debug/Chromium.app/Contents/Versions/7.0.505.0/Chromium Framework.framework/Chromium Framework
MALLOC (admin)         083de000-083df000 [    4K] rw-/rwx SM=PRV  
MALLOC (admin)         083e1000-083e7000 [   24K] rw-/rwx SM=PRV  
MALLOC_TINY            08400000-08500000 [ 1024K] rw-/rwx SM=COW  DefaultMallocZone_0x83c9000
MALLOC_TINY            08600000-08700000 [ 1024K] rw-/rwx SM=PRV  DispatchContinuations_0x83de000
MALLOC (admin)         0870b000-0870c000 [    4K] rw-/rwx SM=PRV  
MALLOC_TINY (freed)    13900000-13a00000 [ 1024K] rw-/rwx SM=PRV  DispatchContinuations_0x83de000
MALLOC_TINY (freed)    13e00000-13f00000 [ 1024K] rw-/rwx SM=PRV  DispatchContinuations_0x83de000
IOKit                  1505d000-16879000 [ 24.1M] rw-/rw- SM=ALI  
IOKit                  16b79000-16c79000 [ 1024K] rw-/rw- SM=SHM  
MALLOC_TINY (freed)    16e00000-16f00000 [ 1024K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
MALLOC_LARGE           17489000-175ad000 [ 1168K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
MALLOC_LARGE (freed)   175ad000-176c2000 [ 1108K] rw-/rwx SM=PRV  
IOKit                  176c2000-17725000 [  396K] rw-/rw- SM=SHM  
MALLOC_LARGE (freed)   17825000-1787f000 [  360K] rw-/rwx SM=PRV  
IOKit                  17a35000-18254000 [ 8316K] rw-/rw- SM=SHM  
IOKit                  18b00000-19000000 [ 5120K] rw-/rw- SM=SHM  
MALLOC_SMALL           19000000-19800000 [ 8192K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
MALLOC_SMALL           1a000000-1a800000 [ 8192K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  1a800000-1aa00000 [ 2048K] rw-/rw- SM=SHM  
IOKit                  1ab00000-1ac00000 [ 1024K] rw-/rw- SM=SHM  

========= Regions in 2nd snapshot not in 1st ==========
==== Non-writable regions for process 76141
MALLOC (admin)         083db000-083dc000 [    4K] r--/rwx SM=COW  

==== Writable regions for process 76141
__OBJC                 03945000-03961000 [  112K] rw-/rwx SM=COW  /Volumes/MacintoshHD2/src/chrome-git/src/xcodebuild/Debug/Chromium.app/Contents/Versions/7.0.505.0/Chromium Framework.framework/Chromium Framework
MALLOC (admin)         083de000-083df000 [    4K] rw-/rwx SM=COW  
MALLOC (admin)         083e1000-083e7000 [   24K] rw-/rwx SM=COW  
MALLOC_TINY            08400000-08411000 [   68K] rw-/rwx SM=COW  DefaultMallocZone_0x83c9000
MALLOC_TINY (freed)    08411000-08500000 [  956K] rw-/rwx SM=COW  DefaultMallocZone_0x83c9000
MALLOC_TINY            08600000-08700000 [ 1024K] rw-/rwx SM=COW  DispatchContinuations_0x83de000
MALLOC (admin)         0870b000-0870c000 [    4K] rw-/rwx SM=COW  
IOKit                  087e0000-087f2000 [   72K] rw-/rw- SM=ALI  
MALLOC_TINY (freed)    13900000-13a00000 [ 1024K] rw-/rwx SM=COW  DispatchContinuations_0x83de000
IOKit                  13a00000-13b00000 [ 1024K] rw-/rw- SM=SHM  
MALLOC_TINY (freed)    13e00000-13f00000 [ 1024K] rw-/rwx SM=COW  DispatchContinuations_0x83de000
IOKit                  1505d000-1555d000 [ 5120K] rw-/rw- SM=SHM  
IOKit                  155f5000-157f5000 [ 2048K] rw-/rw- SM=SHM  
IOKit                  157f5000-15b55000 [ 3456K] rw-/rw- SM=ALI  
MALLOC_TINY (freed)    15c00000-15d00000 [ 1024K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  15d00000-15f25000 [ 2196K] rw-/rw- SM=ALI  
IOKit                  15f87000-16087000 [ 1024K] rw-/rw- SM=SHM  
IOKit                  1609b000-1619b000 [ 1024K] rw-/rw- SM=SHM  
MALLOC_TINY (freed)    16200000-16300000 [ 1024K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  16300000-16800000 [ 5120K] rw-/rw- SM=SHM  
IOKit                  16a79000-16c79000 [ 2048K] rw-/rw- SM=SHM  
MALLOC_TINY            16e00000-16f00000 [ 1024K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  16f00000-17300000 [ 4096K] rw-/rw- SM=SHM  
IOKit                  175ad000-176ad000 [ 1024K] rw-/rw- SM=SHM  
IOKit                  176c2000-17825000 [ 1420K] rw-/rw- SM=SHM  
IOKit                  179c6000-17bc6000 [ 2048K] rw-/rw- SM=SHM  
IOKit                  17bd5000-17dd5000 [ 2048K] rw-/rw- SM=SHM  
IOKit                  17df7000-17ff7000 [ 2048K] rw-/rw- SM=SHM  
MALLOC_LARGE (freed)   17ff7000-181e1000 [ 1960K] rw-/rwx SM=PRV  
IOKit                  181e5000-182e5000 [ 1024K] rw-/rw- SM=SHM  
IOKit                  18700000-18800000 [ 1024K] rw-/rw- SM=SHM  
IOKit                  18900000-19000000 [ 7168K] rw-/rw- SM=SHM  
MALLOC_SMALL (freed)   19000000-19800000 [ 8192K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
MALLOC_SMALL (freed)   1a000000-1a800000 [ 8192K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  1a800000-1ac00000 [ 4096K] rw-/rw- SM=SHM  
IOKit                  1ac00000-1ae25000 [ 2196K] rw-/rw- SM=ALI  
IOKit                  1af72000-1b0ad000 [ 1260K] rw-/rw- SM=ALI  
MALLOC_TINY (freed)    1b100000-1b200000 [ 1024K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  1b200000-1b34d000 [ 1332K] rw-/rw- SM=ALI  
IOKit                  1b425000-1b991000 [ 5552K] rw-/rw- SM=ALI  
IOKit                  1ba82000-1bb9b000 [ 1124K] rw-/rw- SM=ALI  
IOKit                  1bc3e000-1c43e000 [ 8192K] rw-/rw- SM=SHM  
IOKit                  1c44d000-1cb04000 [ 6876K] rw-/rw- SM=ALI  
IOKit                  1cb04000-1ce91000 [ 3636K] rw-/rw- SM=SHM  
IOKit                  1d37c000-1d47c000 [ 1024K] rw-/rw- SM=SHM  
IOKit                  1d6dd000-1d7dd000 [ 1024K] rw-/rw- SM=SHM  
MALLOC_LARGE (freed)   1d878000-1daf3000 [ 2540K] rw-/rwx SM=PRV  
IOKit                  1daf3000-1e1aa000 [ 6876K] rw-/rw- SM=ALI  
MALLOC_LARGE (freed)   1e495000-1e67f000 [ 1960K] rw-/rwx SM=PRV  
IOKit                  1e67f000-1ed36000 [ 6876K] rw-/rw- SM=ALI  
MALLOC_SMALL (freed)   1f000000-1f800000 [ 8192K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
MALLOC_LARGE (freed)   1f800000-1fa7b000 [ 2540K] rw-/rwx SM=PRV  
IOKit                  1fa7b000-1fe08000 [ 3636K] rw-/rw- SM=ALI  
MALLOC_SMALL           20000000-20800000 [ 8192K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  20800000-20b8d000 [ 3636K] rw-/rw- SM=ALI  
IOKit                  20e5d000-21a03000 [ 11.6M] rw-/rw- SM=ALI  
MALLOC_LARGE (freed)   21a03000-21d78000 [ 3540K] rw-/rwx SM=PRV  
MALLOC_LARGE (freed)   2233e000-226b3000 [ 3540K] rw-/rwx SM=PRV  
MALLOC_LARGE (freed)   22d84000-23054000 [ 2880K] rw-/rwx SM=PRV  
IOKit                  23054000-23887000 [ 8396K] rw-/rw- SM=ALI  
MALLOC_LARGE (reused)  23978000-23c48000 [ 2880K] rw-/rwx SM=PRV  
IOKit                  23c48000-24c55000 [ 16.1M] rw-/rw- SM=ALI  
IOKit                  27380000-27549000 [ 1828K] rw-/rw- SM=ALI  
MALLOC_TINY (freed)    29300000-29400000 [ 1024K] rw-/rwx SM=PRV  DefaultMallocZone_0x83c9000
IOKit                  29cee000-29eb7000 [ 1828K] rw-/rw- SM=ALI  

==== Legend
SM=sharing mode:  
	COW=copy_on_write PRV=private NUL=empty ALI=aliased 
	SHM=shared ZER=zero_filled S/A=shared_alias

Aug 24, 2010
#9 thakis@chromium.org
It still happens if I uncomment IOSurface creation in both processes and return early from  GpuCommandBufferStub::OnSetWindowSize() and  GPUProcessor::SetWindowSizeForIOSurface().

Since this is leaking shared memory, maybe it's leaking data that's being sent from the renderer?

I checked that this doesn't happen on windows; haven't checked linux yet.
Aug 25, 2010
#10 kbr@chromium.org
That's a great find. It's certainly possible that not all of the old rendering paths are being properly disabled when the compositor is active, and we're still allocating (and not freeing) TransportDIB backing store for the RWHV or something similar. CC'ing vangelis.

Cc: vange...@chromium.org
Aug 25, 2010
#11 thakis@chromium.org
After some more investigation, the gpu process might leak a bit faster when iosurfaces are enabled.

Another way how the repainting bug manifests itself: During resizing, the bottom right edges of the window might temporarily become transparent (the gl-hosting view is resized immediately, but the gl surface needs a while to catch up). If the fix is to send the resize notification only when the surface has been painted to, nothing needs to be done to fix this (well, maybe the rwhvmac needs to be told to not paint the backing store when compositing is active). If the fix is to keep up to two IOSurfaces around in the browser, then gl needs to draw some padding.
Aug 25, 2010
#12 vangelis@chromium.org
This check-in:
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host.cc?r1=57359&r2=57358

should have eliminated unnecessary dib allocations.
Cc: nd...@chromium.org
Aug 25, 2010
#13 thakis@google.com
That's in the browser. The GPU process is leaking; I was thinking maybe it leaks the image data the renderer sends to it.
Aug 30, 2010
#14 thakis@google.com
Ran ioclasscount before and after resizing a lot and looked at the diff

--- ioclasscount0.txt	2010-08-30 18:13:43.000000000 -0700
+++ ioclasscount1.txt	2010-08-30 18:14:41.000000000 -0700
@@ -399,7 +399,7 @@
 IOBootFramebuffer = 0
 IOBootNDRV = 0
 IOBreaker = 0
-IOBufferMemoryDescriptor = 1319
+IOBufferMemoryDescriptor = 1798
 IOCatalogue = 1
 IOCDBlockStorageDevice = 1
 IOCDBlockStorageDriver = 1
@@ -525,7 +525,7 @@
 IOFWWriteCommand = 0
 IOFWWriteQuadCommand = 0
 IOGatedOutputQueue = 1
-IOGeneralMemoryDescriptor = 431
+IOGeneralMemoryDescriptor = 449
 IOGraphicsDevice = 1
 IOGraphicsWorkLoop = 2
 IOGUIDPartitionScheme = 2
@@ -594,7 +594,7 @@
 IOMediaBSDClient = 6
 IOMemoryCursor = 2
 IOMemoryDescriptor = 2
-IOMemoryMap = 2270
+IOMemoryMap = 2806
 IOModemSerialStreamSync = 1
 IOMultiMemoryDescriptor = 0
 IONaturalMemoryCursor = 1
@@ -725,7 +725,7 @@
 NV2DContext = 2
 nvChannel = 2
 nvChannelManager = 1
-nvContiguousPhysBlockList = 153
+nvContiguousPhysBlockList = 158
 nvCudaContext = 0
 nvCurieChannelManager = 0
 nvCurieDisplayManager = 0
@@ -754,7 +754,7 @@
 NVKernel = 1
 NVMemory = 1
 NVOCDContext = 0
-nvPhysBlockList = 60
+nvPhysBlockList = 74
 NVPipelineProfile = 1
 nvPushBuffer = 8
 nvRingBuffer = 7
@@ -772,11 +772,11 @@
 nvTeslaSurface = 20
 nvTimerAction = 4
 nvTimerManager = 1
-OSArray = 6204
+OSArray = 6680
 OSBoolean = 2
 OSCollection = 4
 OSCollectionIterator = 34
-OSData = 53695
+OSData = 54192
 OSDictionary = 16048
 OSIterator = 3
 OSKext = 115
@@ -786,7 +786,7 @@
 OSOrderedSet = 36
 OSSerialize = 1
 OSSerializer = 7
-OSSet = 1496
+OSSet = 1972
 OSString = 9703
 OSSymbol = 3963
 PMHaltWorker = 0


~400 IOBufferMemoryDescriptor,
~500 IOMemoryMap
~400 OSArray
~500 OSData
~500 OSSet
Aug 31, 2010
#15 kbr@chromium.org
Is the above ioclasscount output with all of the code paths enabled, or with IOSurface allocation/deallocation commented out?

If it's with all of the code paths enabled, maybe we could try gathering the same information without allocating IOSurfaces at all (breaking rendering) and seeing if the same leaks are present. We could also try doing the same with the compositor disabled. It seems almost certain to me that we are leaking TransportDIBs when the compositor is on.

Aug 31, 2010
#16 thakis@google.com
That was with all code paths enabled. Good idea.
Sep 1, 2010
#17 thakis@chromium.org
Attached is the output of the following dtrace script:

#!/usr/sbin/dtrace -s
fbt::mach_vm_map:entry
/ arg2 > 1000*1000 && pid == $target /
{
  printf("Size: %s %d\n",
      execname,
      arg2
      );
  ustack();
  stack();
}


Called as follows:

    sudo dtrace -s vmmap.d -p 70791

(70791 was the pid of the GPU process).

Looks like most allocations are done by glTexSubImage2D() calls or IOSurfaceCreate() calls. (Didn't check if any of those get unmapped again yet.)

We probably want to do some kind of resize-ack scheme, like the browser and renderer do, to keep memory traffic under control here.
Sep 1, 2010
#18 thakis@chromium.org
(No comment was entered for this change.)
memory.txt
113 KB   View   Download
Sep 3, 2010
#19 bugdroid1@gmail.com
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=58504 

------------------------------------------------------------------------
r58504 | thakis@chromium.org | 2010-09-03 10:56:03 -0700 (Fri, 03 Sep 2010) | 10 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view_mac.h?r1=58504&r2=58503
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view_mac.mm?r1=58504&r2=58503

Mac: Make resizing the window larger nicer when compositor is active

We need to fill the part of the RWHVMac not covered by the compositor subview with white.

Resizing smaller is still a bit jumpy. We also still paint an uninitialized IOSurface every now and then.

BUG=53165
TEST=Enable compositor, make window larger. Right bottom part of window shouldn't be transparent.

Review URL: http://codereview.chromium.org/3319004
------------------------------------------------------------------------

Sep 3, 2010
#20 thakis@chromium.org
I can no longer see the memory leak. I installed the OS X graphics update over autoupdate recently. Weird.

(I noticed that I can no longer see the leak in chrome after I wrote two small programs exchanging IOSurfaces to have a minimal repro.)
Sep 8, 2010
#21 thakis@chromium.org
What's left to do here is to not draw IOSurfaces that haven't been painted to yet. Approaches for that are either only sending IOSurfaces from the GPU process after their contents are valid, or keeping two IOSurfaces (last painted IOSurface, current IOSurface – most of the time these two will be the same object, but not during resizing) and only drawing the last painted surface.
Sep 10, 2010
#22 pinkerton@chromium.org
(No comment was entered for this change.)
Labels: -Mstone-7 Mstone-8
Sep 29, 2010
#23 thakis@chromium.org
rohitbm informed me that "pop out" on hulu also triggers this for plugins. I guess that makes this m7?
Summary: Resizing looks broken when accelerated drawing path is used
Sep 29, 2010
#24 stuartmorgan@chromium.org
It would definitely be nice to get for M7, but I don't think it's critical; a brief flash of garbage doesn't cause any serious usability issues.
Oct 2, 2010
#25 jean_pec...@noos.fr
I tried the repro steps and after some scary graphic corruption, the Chrome window goes white and Chrome becomes unresponsive (have to force quit). This is reproducible. 
The morphing power cube demo results in a dead tab "Snap!".  
These bugs look serious, but my Chrome version may not have the latest fix. 
I'm on 7.0.536.2 dev, OS X 10.6.4 with graphics update, Geforce 9400M.

Jean
Oct 2, 2010
#26 thakis@google.com
comment 25: The white window is issue 55754. It's fixed, but the fix is not in the current dev channel. The next dev channel should have the fix. Can you give me a link to that power cube demo?
Oct 11, 2010
#27 vangelis@chromium.org
Changing milestone from Mstone8 to Mstone-9
Labels: Mstone-9
Oct 15, 2010
#28 jean_pec...@noos.fr
Link to the morphing cubes demo:
http://webkit.org/blog-files/3d-transforms/morphing-cubes.html

Chrome 8.0.552.0 dev shows scary artifacts when you resize the window. 
Oct 28, 2010
#29 bugdroid1@gmail.com
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=64317

------------------------------------------------------------------------
r64317 | thakis@chromium.org | Thu Oct 28 14:39:14 PDT 2010

Changed paths:
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_manager_mac.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/gpu_messages_internal.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_manager_mac.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/gpu_process_host.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/test/test_render_view_host.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/gpu/gpu_command_buffer_stub.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/gpu_process_host.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/plugin_messages_internal.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/test/test_render_view_host.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_mac.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_mac.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/app/surface/accelerated_surface_mac.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_view.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view_mac.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/app/surface/accelerated_surface_mac.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_view.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/service/gpu_processor.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/plugin/webplugin_proxy.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/render_messages_internal.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/plugin/webplugin_proxy.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/webplugin_delegate_proxy.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/plugin/webplugin_accelerated_surface_proxy_mac.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/webplugin_delegate_proxy.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/service/gpu_processor_mac.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view.h?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/plugin/command_buffer_stub.cc?r1=64317&r2=64316&pathrev=64317
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view_mac.mm?r1=64317&r2=64316&pathrev=64317

Let every "accelerated IO surface swapped" message have an identifier of the surface.

Currently, this is only used to DCHECK a currently implicit invariant, but I want to use this to let every surface container only remember its last painted-to surface, and not its last created surface.

No behavior change.

BUG=53165
TEST=none

Review URL: http://codereview.chromium.org/4142004
------------------------------------------------------------------------
Nov 1, 2010
#30 thakis@chromium.org
 Issue 61483  has been merged into this issue.
Cc: kr...@chromium.org rohi...@chromium.org tha...@chromium.org
Nov 1, 2010
#31 vangelis@chromium.org
 Issue 59801  has been merged into this issue.
Nov 1, 2010
#33 hbridge@google.com
(No comment was entered for this change.)
Labels: -Feature-GPU Feature-GPU-Compositing
Nov 1, 2010
#34 deep...@chromium.org
 Issue 59805  has been merged into this issue.
Nov 1, 2010
#35 thakis@chromium.org
(No comment was entered for this change.)
Status: Started
Nov 2, 2010
#36 backer@chromium.org
(No comment was entered for this change.)
Cc: bac...@chromium.org
Nov 5, 2010
#37 bugdroid1@gmail.com
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=65220

------------------------------------------------------------------------
r65220 | thakis@chromium.org | Fri Nov 05 11:07:26 PDT 2010

Changed paths:
 M http://src.chromium.org/viewvc/chrome/trunk/src/app/surface/io_surface_support_mac.cc?r1=65220&r2=65219&pathrev=65220
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_manager_mac.cc?r1=65220&r2=65219&pathrev=65220
 M http://src.chromium.org/viewvc/chrome/trunk/src/app/surface/io_surface_support_mac.h?r1=65220&r2=65219&pathrev=65220
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_mac.cc?r1=65220&r2=65219&pathrev=65220
 M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/accelerated_surface_container_mac.h?r1=65220&r2=65219&pathrev=65220

Mac/gpu: Don't show uninitialized surfaces while resizing plugins / composited tabs.

BUG=53165
TEST=Go to http://webkit.org/blog/386/3d-transforms/. Resize window. Watch a youtube video click the "make bigger" button. No garbage should appear. There are still some funky artifacts at the top/right border during resizing caused by clamping the texture instead of filling with white, and sometimes (rarely) the tab flashes black/white but I'd like to tackle that in follow-up CLs. This is already much better than what's in the tree currently.

Review URL: http://codereview.chromium.org/4101002
------------------------------------------------------------------------
Nov 5, 2010
#38 thakis@chromium.org
D'oh, forgot to update the CL description before submitting. There are no artifacts at the top/right border; stuart made me fix this in that CL.

The only thing left here is to sync-wait for 50ms or so during resizing to make the tearing at the border less visible.
Nov 8, 2010
#39 thakis@chromium.org
I filed  issue 62350  for the remaining work.
Status: Fixed
Nov 8, 2010
#40 bugdroid1@gmail.com
Verified label updated by AutoAllocator, contact AmolK or KrisR for details
Labels: Verifier-Rohitbm
Nov 15, 2010
#41 rohi...@chromium.org
9.0.583.0 (Official Build 66097)
Status: Verified
Oct 12, 2012
#42 bugdroid1@chromium.org
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.
Labels: Restrict-AddIssueComment-Commit
Blocking: -chromium:57645 chromium:57645
Mar 10, 2013
#43 bugdroid1@chromium.org
(No comment was entered for this change.)
Labels: -Area-UI -Mstone-9 -Feature-GPU-Compositing M-9 Cr-Internals-GPU-Compositing Cr-UI
Mar 13, 2013
#44 bugdroid1@chromium.org
(No comment was entered for this change.)
Labels: -Restrict-AddIssueComment-Commit Restrict-AddIssueComment-EditIssue
Apr 5, 2013
#45 bugdroid1@chromium.org
(No comment was entered for this change.)
Labels: -Cr-Internals-GPU-Compositing Cr-Internals-Compositing
Sign in to add a comment

Powered by Google Project Hosting