This change introduces API's in gralloc to allow clients
to synchronize with framebuffer posts.
CRs-fixed: 348953
(cherry picked from commit f81de75b1adb78018c0bd54b7f27901ba467defd)
Conflicts:
libgralloc/framebuffer.cpp
libqcomui/qcom_ui.h
Change-Id: I98b6a2b3243f520138cb5d1c76493cdfa3af60b6
- Add perform function to framebuffer and HWComposer HALS
- This will be used communicate custom events(external display,
video overlay, orientation, etc.,) to HALS
- remove setActionsafe API(not used)
CRs-Fixed: 341947
(cherry picked from commit 31999628ddd4a6c0996e22e9fbf1f311d6efb160)
Change-Id: I221f2ab49770e8db7602bb1881ef9972567b7780
Background: On MDP compositon, MDP keeps reading contents from the
pipes even on Idle Screen i.e. even when HWC is not queueing any new
buffers to MDP. Above data traffic leads to high power consumption.
Implementation: This change introduces a timer in HWC which will
timeout if there are no updates in bypass composition path for
the period specified via debug.bypass.idletime. Also SurfaceFlinger
will be notified to redraw the current frame which will be composed
into FB.
Conflicts:
libhwcomposer/hwcomposer.cpp
Change-Id: Ic3a467596068fa553271b5cd8c2831e544e3211d
(cherry picked from commit ad1d9a019234ab03dbc79b1ddb73c86e560e3e74)
Conflicts:
libhwcomposer/hwcomposer.cpp
- Add external_display_type to differentiate WFD and HDMI
- based on the display type, handle wifi display and HDMI
concurrency
Change-Id: I2bf928dcd232f2ea39c4fa8dca812a26112076b2
(cherry picked from commit 8e7490026832d8df6758f4aa615039f91ac0f5ff)
(cherry picked from commit 7c6b7979bf2d7ab12ff528be75b5e008405acbda)
-Introduce utils folder in qcomUI lib for all Qcom
implemented utility classes.
-Move FPS calculation profiler class into utils
folder.
CRs-Fixed: 342060
(cherry picked from commit e9469022741642cfd8483839de96e809f4d94f1e)
Change-Id: Ie0af0c0cc10b5304814b4f26aed581ea93ce7f5f
Log a frame-by-frame succession of HWComposer layers' data and write
their buffers, if any, into raw or png files based on system property
values.
CRs-fixed: 339748
Change-Id: I171a9891a0867548b34d45c0561f25f66cf0580c
(cherry picked from commit 8166b062df4765af0b0d9f95d55fa14dd4b75b8d)
this brings us inline with cafs ics_chocolate branch
per: f696608c9d9e3b6b60a92423338f08d59d19d746
Change-Id: Ibaff05220e7d7f0ddd1b4d7507626a38d717340c
The current composition bypass implementation prevents the app frame rate from
being decoupled with vsync. As a result when a graphics application requests
EGL swap interval zero it is still limited by vsync. This change disables
composition bypass if any layers being composited for the frame are in
asynchronous mode.
CRs-Fixed: 335498
(cherry picked from commit 8e1a74ffff6a07ac9ef649347b7ac23be143f2ea)
Change-Id: Ia0b6b14fbc953b04616667a494d98fcca99932f9
Add support for external-only display. Layer buffers
marked with GRALLOC_USAGE_EXTERNAL_ONLY will be
displayed on external panel only, if available.
In addition if the layer buffer also has the flag
GRALLOC_USAGE_EXTERNAL_BLOCK then only that layer
will be displayed on external (During suspend).
When this mode is on, the default mirror mode for
external is stopped.
Conflicts:
libhwcomposer/hwcomposer.cpp
Change-Id: I8ea2920384c5b68311ee3fe00707d01ab6568b52
This change allows 3 or less layer use cases to get bypassed completely via MDP pipes.
If more than 3 layers, all of them gets composited on FB.
Intended FB fallback cases:
1) 4 or more layers
2) Any MDP pipe is in use
3) Any layer needs rotation
4) Any layer is allocated from non-pmem
Change-Id: Ieb2b30b8ab9893fd68c7fc61ec889ac9a01cb7dd
(cherry picked from commit 001ffcfef1d63948926b1be67c4977d13ae1b159)
Conflicts:
libhwcomposer/hwcomposer.cpp
- HDMI has priority over Wifi display, if HDMI is connected during
Wifi, close the session for Wifi and start one for HDMI.
- the enableHDMIOutput parameter externaltype - HDMI/WIFI/OFF
Change-Id: If2cd9143fc7a953db49f38a6c166f9425ba5266e
Conflicts:
libqcomui/qcom_ui.cpp
The new class QCBaseLayer has been added. It implementsthe composition
of S3D UI when 3D video is playing. HWC adds hints to UIlayers for
composing them in S3D format when running S3D video.
Compose them in requested format.
(cherry picked from commit 080e303a70f89a1b0601a45c0815042addb7ac63)
Change-Id: I1d33a1419914b8e06618acd335f89808dc692742
This change allows the application to set the S3D format for the surface.
With this change application would be specifying 3D format and that would
be handled by hwcomposer would handle it appropriately.
Change-Id: I6b7b33712ab85b8a94231bd65a19709b3c2cd606
Conflicts:
libqcomui/qcom_ui.cpp
Add null check for incoming buffer in updateBufferS3DFormat function.
return invalid value if buffer is NULL
Change-Id: I97c535ae7291ee12648a92bff843c0c500bce4df
(cherry picked from commit e009dff7644d9b0663f3939e48ad1e955b1f76b5)
Conflicts:
libqcomui/qcom_ui.cpp
This change is done to reduce the CPU utilization by SurfaceFlinger
thread. This feature may be turned On/Off using a compile time flag
(cherry picked from commit 9691e73556e5c0b66553aa55eb504b9ebb0fd400)
Change-Id: I1cb5b5c8abef135bc520c6e39c6ccf236b2270c3
Conflicts:
libqcomui/Android.mk
Do not choose GL_EXTERNAL_TEXTURE_OES for all formats, instead,
select between GL_EXTERNAL_TEXTURE_OES, and GL_TEXTURE_2D based
on the pixel format.
This change is done to reduce composition times.
Change-Id: I17edd78cdfa051f88ed6bd4e585c7a9b0705aa3a
CRs-fixed: 328074
This is a helper function that will return false if the given format is
supported by adreno drivers but not supported in GPU HW. For these
formats, adreno will use software color conversion routines to convert
them to acceptable format by the GPU HW. This may be required if we
want to avoid creating texture for certain formats when not absolutely
necessary. Could be defaulted to return true depending on a compile
time flag.
Change-Id: Idb2200b5ed13bb8c184288d44340ed1aefeaa8df
For 2 bytes per pixel format the width might be not alligned to 4
So for such cases we need to use memset16
Change-Id: I22a6c673439c44447ce33faf2ed0615febd70a28
Implement clearRegion for C2D/MDP/CPU composition. This prevents
glClear and therefore the glFinish from being called, thus
improving performance.
Change-Id: I03d9230e03cce11d9fe7e2bd34e4df8328ad2e00
Add support for updating the qcom specific layer flags. Add support for
getting the per frame HWC flags based on the layer flags.
Change-Id: I5f7759a6a7fae6d4f70dd26f380a9b08e48e9475
Add support for updating the buffer geometry without any reallocation
of memory. The buffer geometry is updated in the GraphicBuffer as well
as in the buffer handle.
Change-Id: I3fdb4f6a737277ab63fcbdb42e9c955ea7471760
Add libQComUI which is used to perform operations specified by
SurfaceTextures.
The operation currently supported by this library is SET_BUFFER_SIZE
which deallocates and reallocates memory if the size allocated for the
buffer does not match the size requested by the client.
Change-Id: I370b94a91f5acf373f7040742aad7c2e7bb586fe