abe815dd69
We're not using IMemoryHeap as a transport anymore, instead we're providing a CpuConsumer and use the IGraphicBufferProducer version of the screenshot API. However, some GPU drivers don't support properly a GPU to CPU path, to work around this, we use a temporary BufferQueue on the server side for the GL rendering, and we use glReadPixels into the CpuConsumer (we're now using a CPU to CPU path which is always supported). Currently this "wrapping" is always performed, but it can be bypassed on devices that support the GPU to CPU path. This also addresses a DoS attack vector on SurfaceFlinger, where an application could consume all of SF's filedescriptors by creating a lot of screenshots in a row. Bug: 8390553 Change-Id: I9e81514c2a7711b9bb393f74305be7d2abe08f1c |
||
---|---|---|
.. | ||
DisplayHardware | ||
tests | ||
Android.mk | ||
Barrier.h | ||
Client.cpp | ||
Client.h | ||
clz.cpp | ||
clz.h | ||
DdmConnection.cpp | ||
DdmConnection.h | ||
DisplayDevice.cpp | ||
DisplayDevice.h | ||
EventThread.cpp | ||
EventThread.h | ||
FrameTracker.cpp | ||
FrameTracker.h | ||
GLExtensions.cpp | ||
GLExtensions.h | ||
Layer.cpp | ||
Layer.h | ||
LayerDim.cpp | ||
LayerDim.h | ||
MessageQueue.cpp | ||
MessageQueue.h | ||
MODULE_LICENSE_APACHE2 | ||
SurfaceFlinger.cpp | ||
SurfaceFlinger.h | ||
SurfaceFlingerConsumer.cpp | ||
SurfaceFlingerConsumer.h | ||
SurfaceTextureLayer.cpp | ||
SurfaceTextureLayer.h | ||
Transform.cpp | ||
Transform.h |