| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This reverts commit 081bc5c47d8a980e6eafa70ddafcd89981586391.
|
|
|
|
|
|
|
| |
Make sure to not use GL_TEXTURE_EXTERNAL when it's not supported
by the GL. The error was harmless, but annoying.
Change-Id: I571a9a9b05d35da51420950a6a6e95629067efd0
|
|
|
|
|
|
| |
This will allow us to support YUV surfaces.
Change-Id: I2d4da75f1006a5285bdc552695d4caeecccf2183
|
|
|
|
|
|
|
|
|
| |
Surfaces can now be parcelized and sent to remote
processes. When a surface crosses a process
boundary, it looses its connection with the
current process and gets attached to the new one.
Change-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0
|
| |
|
|
|
|
| |
Change-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87
|
|
|
|
|
|
|
| |
simplified things a lot, the biggest change is that the concept
of "ClientID" is now gone, instead we simply use references.
Change-Id: Icbc57f80865884aa5f35ad0d0a0db26f19f9f7ce
|
|
|
|
|
|
|
| |
the most important change here is the renaming of
ISurfaceFlingerClient to ISurfaceComposerClient
Change-Id: I94e18b0417f50e06f21377446639c61f65f959b3
|
|
|
|
|
|
|
|
| |
this change introduces R/W locks in the right places.
on the server-side, it guarantees that setBufferCount()
is synchronized with "retire" and "resize".
on the client-side, it guarantees that setBufferCount()
is synchronized with "dequeue", "lockbuffer" and "queue"
|
|
|
|
|
|
|
| |
get rid of the "fake rtti" code, and use polymorphism instead.
also simplify how we log SF's state (using polymorphism)
Change-Id: I2bae7c98de4dd207a3e2b00083fa3fde7c467922
|
|
|
|
|
|
| |
get rid of the glDrawTexi path and use floating points instead of fixed point maths
Change-Id: I3aa9ce2dc082f702160e605a16ba5fe987cdf087
|
|
|
|
| |
Change-Id: If3b0774b70cbe943894c15ffa1da111ad887010f
|
|
|
|
|
|
| |
it resized
Change-Id: Ib9a3622e7a568ba26717a93b5bfa4a191651f4d0
|
|
|
|
| |
Change-Id: I6a57f89c25defc293fd748cc1fbd710031c02ec2
|
|
|
|
|
| |
the "freeze" timeout was not initialized properly which caused it
to kick-in immediately instead of after 5s
|
|
|
|
|
| |
Updated the window manager to use this new facility.
Surfaces name are now printed by "dumpsys".
|
|
|
|
| |
log SF's idea of the front buffer in dumpsys.
|
|
|
|
|
| |
libskia was only used for a small part of SkTransform. We now implement
Transform is surfaceflinger directly.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This feature is currently controled by a system property.
"ro.sf.hwrotation" can be set to either 90 or 270. It'll cause
SF to rotate the screen by 90 and 270 degres respectively.
That is, if the driver reports 800x480 for instance, and
ro.sf.hwrotation is set to 90, applications will "see" a
480x800 display and will run in portrait.
This is implemented by introducing an extra "display"
transformation in the GraphicPlane.
|
|
|
|
|
|
|
|
|
| |
There was bug in the logic that calculated the relative timeout, the start time was
reset each time an event was received, which caused the timeout to never occur if
an application was constantly redrawing.
Now we always check for a timeout when we come back from the waitEvent() and
process the "anti-freeze" if needed, regardless of whether an event was received.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When EGLImage extension is not available, SurfaceFlinger will fallback to using
glTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an
extra copy. However this code path has never been exercised and had some bugs
which this patch fix.
Mainly the scale factor wasn't computed right when falling back on glDrawElements.
We also fallback to this mode of operation if a buffer doesn't have the adequate
usage bits for EGLImage usage.
This changes only code that is currently not executed. Some refactoring was needed to
keep the change clean. This doesn't change anything functionaly.
|
|
|
|
|
|
|
|
|
|
|
| |
The ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.
When it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return
immediately in the above case. For some reason, the surface here wasn't marked as NO_INIT.
This change makes the code more robust by always (irregadless or errors) setting the NO_INIT status
in all code paths where a surface is removed from the list.
Additionaly added more information in the logs, should this happen again.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
We were emitting GL commands, calling composition complete and releasing clients
without ever calling eglSwapBuffers(), which is completely wrong on non-direct
renders. This could cause transient drawing artifacts when unfreezing the
screen (upon orientaion change for instance) and could also block the clients
for ever as they are waiting for their previous buffer to be rendered.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
frozen then runtime restart going to list view
Revert "workaround for [2113743] Sholes: frozen then runtime restart going to list view"
This reverts commit 4a06bb4f3355b0ef2b76aa883704da9d154c44ae.
|
| |
|
|
|
|
| |
a new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to
|
| |
|
| |
|
|
|
|
| |
this also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rewrote SurfaceFlinger's buffer management from the ground-up.
The design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.
The main new feature is to be able to dequeue all buffers at once (very important when there are only two).
A client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.
The current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.
eg. Allowed sequence: DQ, DQ, LOCK, Q, LOCK, Q
eg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q
|
| |
|
|
|
|
|
|
|
|
| |
(in this case the state is dumped without the proper locks held which could result to a crash)
in addition, the last transaction and swap times are printed to the dump as well as the time spent
*currently* in these function. For instance, if SF is unresponsive because eglSwapBuffers() is stuck,
this will show up here.
|
|
|
|
|
| |
what happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.
in particular this caused query(FORMAT) to return the requested format instead of the effective format.
|
|\ |
|
| | |
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| | |
layer bitmap size=4294938624
Merge commit '4d2dbebf3d08209f751585d8cc367369e2f6e32f'
* commit '4d2dbebf3d08209f751585d8cc367369e2f6e32f':
fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size=4294938624
|
| |
| |
| |
| | |
size=4294938624
|
| | |
|
| | |
|
| |
| |
| |
| | |
longer), client who have the buffers still mapped won't crash, btu may see garbage data
|
| | |
|
| | |
|
| |
| |
| |
| | |
debug binder codes too
|
| |
| |
| |
| | |
destroyed
|
| |
| |
| |
| | |
implicitely when the message is destroyed
|
| |
| |
| |
| | |
results)
|