History log of /frameworks/base/libs/surfaceflinger/LayerBase.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
83512d4dfc06137bc2d9db0cb62644c54f41a771 21-Apr-2010 Mathias Agopian <mathias@google.com> DO NOT MERGE fix [2557396] Adreno200: glDrawTexi() doesn't work with height <= 16

don't use glDrawTexi() anymore

Change-Id: If71334de39114b0edce7771366f8d8dc26f6911e
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
9c041bbd81789c209e2369ba958306979b67614f 17-Mar-2010 Mathias Agopian <mathias@google.com> fix [2511580] Window poop on screen - drop down list left some residual when it resized

Change-Id: Ib9a3622e7a568ba26717a93b5bfa4a191651f4d0
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
015b59756eecdbec46f9aeda620ad0de1c8c9a23 10-Mar-2010 Mathias Agopian <mathias@google.com> fix [2483456] Video orientation is wrong on Droid for some videos

Change-Id: I450191f1335f57bffc51aff3e27295395847dbc0
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
85b8d12207c12531d736c7ec836f10d1e6f448e4 09-Mar-2010 Mathias Agopian <mathias@google.com> improve SF logging/debugging a little bit

Change-Id: I6a57f89c25defc293fd748cc1fbd710031c02ec2
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
1d211f8ee0b422a3a741c3f88246c7c72ce483b0 08-Mar-2010 Mathias Agopian <mathias@google.com> fixes for [2474091] Saw Poor behaviour playing a video.

- fix a bug when hacking video buffers into gralloc buffers
where the buffer size was incorrect this was causing the
"direct-form-texture" mode to fail

- also when the above fails, make sure to revert to the
"mdp copy mode" before going to "slow mode"

- finally disable completely the "direct-from-texture" mode
for now. It cannot work because the allocated buffers can't
respect the GPU constraints (alignment and such). We'll
have to find a solution for that.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
5d26c1e38dabb3ad8b4b6e1000375f3b1a6b7693 02-Mar-2010 Mathias Agopian <mathias@google.com> Added a name to Surface created by SurfaceFlinger

Updated the window manager to use this new facility.
Surfaces name are now printed by "dumpsys".
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
ed2ab7f1062e002053e5a9d8c73672b74268dcbb 20-Feb-2010 Mathias Agopian <mathias@google.com> Initialize layer position
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
8f2423e8f394ae0666f1b61f83df4c0c7a4782d9 17-Feb-2010 Mathias Agopian <mathias@google.com> get rid off the YUV formats at the libui layer
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
ac127dc31bd071ed522f5cd48a910065756c8ded 23-Jan-2010 Chih-Chung Chang <chihchung@google.com> Add support for 180/270 degrees rotation.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
e1ceec234c618729cc7bd35fecb11744b52c1cc8 22-Jan-2010 Chih-Chung Chang <chihchung@google.com> Add an orientation parameter for overlay, so we can do camera preview in portrait mode.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
9042b4564de5477b18e680c7dce13b587a681dd9 27-Oct-2009 Mathias Agopian <mathias@google.com> fix [2143798] Need to figure out how to do video

Use EGLImageKHR instead of copybit directly.
We now have the basis to use streaming YUV textures (well, in fact
we already are). When/if we use the GPU instead of the MDP we'll
need to make sure it supports the appropriate YUV format.

Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
382e17d46fc54396a303593f2db3abe1fb911411 22-Oct-2009 Mathias Agopian <mathias@google.com> fix [2211532] improves sholes graphics performance

Instead of using glTex{Sub}Image2D() to refresh the textures, we're using an EGLImageKHR object
backed up by a gralloc buffer. The data is updated using memcpy(). This is faster than
glTex{Sub}Image2D() because the texture is not swizzled. It also uses less memory because
EGLImageKHW is not limited to power-of-two dimensions.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
6950e428feaccc8164b989ef64e771a99948797a 06-Oct-2009 Mathias Agopian <mathias@google.com> fix [2167050] glTexImage2D code path buggy in SurfaceFlinger

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.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
0c4cec7e4df87181486d280c98fba9c0f4774c37 03-Oct-2009 Mathias Agopian <mathias@google.com> Attempt to fix [2152536] ANR in browser

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.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
70cab91229c3c2ca4bb75ab63b552ac7d1a6a8bb 30-Sep-2009 Mathias Agopian <mathias@google.com> invalidate the surface when the physical changes
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
e1b6f24423d61b7892e4a59f5a65b04231526712 30-Sep-2009 Mathias Agopian <mathias@google.com> introduce the notion of the requested size in the Layer state
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
8851617aea7d2cd61fd8a8585bd4414a14d71653 30-Sep-2009 Mathias Agopian <mathias@google.com> remove unused code
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
45094a34f014fa79e78eea8ee2091021bf1de209 30-Sep-2009 Mathias Agopian <mathias@google.com> remove dead code
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
f2d28b74850ea0869aef2ce0727a6abb7b166a5c 24-Sep-2009 Mathias Agopian <mathias@google.com> minor SurfaceFlinger code cleanup and remove unnecessary tests
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
cc934763c3fc789f53edb64de16fc36d43c3705d 24-Sep-2009 Mathias Agopian <mathias@google.com> turn dithering off if it's not needed
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
44cac134655d5c3b2eeab2e42792c70a7aa8b92f 24-Sep-2009 Mathias Agopian <mathias@google.com> fix [2142193] disable GL_LINEAR when not needed
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
64a7c6bf5b73c1a401cb2aa8dfad3898166ae326 15-Sep-2009 Mathias Agopian <mathias@google.com> add support for RGBX_8888 surfaces in SurfaceFlinger
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
248b5bd51e325107f8119b564db6a06ac51c232a 11-Sep-2009 Mathias Agopian <mathias@google.com> fix [2112575] stuck on DequeueCondition for a surface that doesn't exist anymore

this also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
9779b221e999583ff89e0dfc40e56398737adbb3 08-Sep-2009 Mathias Agopian <mathias@google.com> fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly

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
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
7164b8d645f9463e36eda5eac3dd085e26427bda 05-Sep-2009 Mathias Agopian <mathias@google.com> fix [2098939] Smooth gradients show banding on Sholes
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
c8546781ff6fa26b3a7f2d1483db363f299a3898 02-Sep-2009 Rebecca Schultz Zavin <rebecca@android.com> Add colorkey to gl clear operation

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
18b6b49ea5235fb6c0802db9a0cc2c6dd20646cb 20-Aug-2009 Mathias Agopian <mathias@google.com> fix a bug that caused the PixelFormat viewed by Surface to be wrong.

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.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
5cec4742b3a1d7448bd32ae57cb4cf70b484c64c 12-Aug-2009 Mathias Agopian <mathias@google.com> second take, hopefully this time it doesn't break one of the builds: "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything."
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
64e89a8aff9a45a491f1d7064a655b9021fe644a 12-Aug-2009 Fred Quintana <fredq@google.com> Revert "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything."

This reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
8b76a0ac6fbf07254629ed1ea86af014d5abe050 11-Aug-2009 Mathias Agopian <mathias@google.com> SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.

This change makes SurfaceHolder.setType(GPU) obsolete (it's now ignored).
Added an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
f293b2ff78ce4adac28962d020a0313fdb509cd2 30-Jul-2009 Mathias Agopian <mathias@google.com> NPOT EGLimage without GL_ARB_texture_non_power_of_two would be improperly scalled

The current gralloc allocates buffer memory for render targets that will typically have NPOT dimensions. Assuming that the vendor driver supports converting the resulting NPOT android_native_buffer_t to a NPOT EGLImage, SurfaceFlinger calls glEGLImageTargetTexture2DOES(), and uses glGetError() to test whether the GL can support creating an EGL target texture with the specified NPOT EGLImage. If it is supported, the DIRECT_TEXTURE flag remains set, otherwise it is cleared.

Tangentially, if the driver advertises the GL_ARB_texture_non_power_of_two extension, the NPOT_EXTENSION flag is set, otherwise it is cleared.

If the driver supported creating an EGL target texture from a NPOT source EGLImage, it implicitly creates a NPOT texture. This does not need any glScalef() texture coordinate correction in LayerBase::drawWithOpenGL(). However, the same driver may not advertise the GL_ARB_texture_non_power_of_two extension nor generally support NPOT textures that were not derived from EGLImages. So SurfaceFlinger may flag only DIRECT_TEXTURE, not NPOT_EXTENSION.

Therefore, the test in LayerBase::drawWithOpenGL() should only perform the glScalef() if neither NPOT_EXTENSION or DIRECT_TEXTURE are flagged. Otherwise scaling is applied to NPOT EGL target textures when none is required.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
c6603951d45fc9b0d1776fec9444b6f31af92840 24-Jun-2009 Mathias Agopian <mathias@google.com> fix a bug causing push-buffer surfaces' identity to be garbage, which resulted in some attributes (size/pos) to fail to be set
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
999543ba26d10ff9879144965d0c0abcb400636a 24-Jun-2009 Mathias Agopian <mathias@google.com> checkpoint. bring back video/camera
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
6edf5af578c1ab1fcd44b7c08ca371456e4b7430 20-Jun-2009 Mathias Agopian <mathias@google.com> fix a memory corruption where a SF Client could be used after it's been destroyed
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
151e859e0fc3a930bdf6d270d275e69e9eba0cbf 16-Jun-2009 Mathias Agopian <mathias@google.com> new Permission class used to improve permission checks speed (by caching results)
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
947f4f4d384ea26eb2145cc070a3eed42c59534a 22-May-2009 Mathias Agopian <mathias@google.com> merge master to master_gl
6158b1bf0364da1582468a98ec09d004ba99deec 11-May-2009 Mathias Agopian <mathias@google.com> Region now has its own implementation instead of relying on SkRegion, which allows us to break libui's dependency on libcorecg.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
dff8e58d47ede6e748c0b02e128ca33b42a4f362 04-May-2009 Mathias Agopian <mathias@google.com> update surfaceflinger, libui and libagl to the new gralloc api

- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.
- factor all the lock/unlock code in SurfaceBuffer.
- fixed "showupdate" so it works even when we don't have preserving eglSwapBuffers().
- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.
- make use of LightRefBase() where needed, instead of duplicating its implementation
- add LightRefBase::getStrongCount()
- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp

- disabled copybits test, since it clashes with the new gralloc api

- Camera/Video will be fixed later when we rework the overlay apis
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
81b0aa696ac954180caec6cb8cc1bb97440e03b5 23-Apr-2009 Mathias Agopian <mathias@google.com> get rid of an old hack to work around a bug around glDeleteTextures() in the adreno drivers
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
6cf0db228ca275dfcda57d79c55e5fa306809632 18-Apr-2009 Mathias Agopian <mathias@google.com> more Surface lifetime management

Surfaces are now destroyed once all references from the clients are gone, but they go through a partial destruction as soon as the window manager requests it.
This last part is still buggy. see comments in SurfaceFlinger::destroySurface()
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
1473f46cbc82aa6f0ba744cc896a36923823d55b 10-Apr-2009 Mathias Agopian <mathias@google.com> Integrate from //sandbox/mathias/donut/...@145728

SurfaceFlinger rework for new EGL driver model support.
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
da996f390e17e16f2dfa60e972e7ebc4f868f37e 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
b798689749c64baba81f02e10cf2157c747d6b46 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/frameworks/base/libs/surfaceflinger/LayerBase.cpp
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/libs/surfaceflinger/LayerBase.cpp