DO NOT MERGE Set ContainerLayer for buffer-less surface

The container layers havn't buffers,but the buffer size
may beyond the GPU limit, need set those surface as
container layer

Test: Reboot device, rotate the screen, enter and exit multi window, check the UI is normal
           Dump SF layer and check the container layer is set successfully
Bug: 111164627
Change-Id: I6dd3bcb85ffe890c98ce82f2ef20a1576e8cd440
This commit is contained in:
yu.chen
2018-11-06 21:03:00 +08:00
committed by Isaac Lee
parent cb122ec8a5
commit ff674ee468
3 changed files with 5 additions and 2 deletions

View File

@@ -69,6 +69,7 @@ class AppWindowThumbnail implements Animatable {
.setFormat(PixelFormat.TRANSLUCENT) .setFormat(PixelFormat.TRANSLUCENT)
.setMetadata(appToken.windowType, .setMetadata(appToken.windowType,
window != null ? window.mOwnerUid : Binder.getCallingUid()) window != null ? window.mOwnerUid : Binder.getCallingUid())
.setBufferLayer()
.build(); .build();
if (SHOW_TRANSACTIONS) { if (SHOW_TRANSACTIONS) {

View File

@@ -773,7 +773,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
final SurfaceControl.Builder b = mService.makeSurfaceBuilder(mSession) final SurfaceControl.Builder b = mService.makeSurfaceBuilder(mSession)
.setSize(mSurfaceSize, mSurfaceSize) .setSize(mSurfaceSize, mSurfaceSize)
.setOpaque(true); .setOpaque(true)
.setContainerLayer(true);
mWindowingLayer = b.setName("Display Root").build(); mWindowingLayer = b.setName("Display Root").build();
mOverlayLayer = b.setName("Display Overlays").build(); mOverlayLayer = b.setName("Display Overlays").build();
@@ -3885,7 +3886,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
SurfaceSession s = child != null ? child.getSession() : getSession(); SurfaceSession s = child != null ? child.getSession() : getSession();
final SurfaceControl.Builder b = mService.makeSurfaceBuilder(s); final SurfaceControl.Builder b = mService.makeSurfaceBuilder(s);
b.setSize(mSurfaceSize, mSurfaceSize); b.setSize(mSurfaceSize, mSurfaceSize);
b.setContainerLayer(true);
if (child == null) { if (child == null) {
return b; return b;
} }

View File

@@ -104,6 +104,7 @@ class WindowSurfaceController {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "new SurfaceControl"); Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "new SurfaceControl");
final SurfaceControl.Builder b = win.makeSurface() final SurfaceControl.Builder b = win.makeSurface()
.setBufferLayer()
.setParent(win.getSurfaceControl()) .setParent(win.getSurfaceControl())
.setName(name) .setName(name)
.setSize(w, h) .setSize(w, h)