Age | Commit message (Collapse) | Author |
|
Adapting NV12 and BAYER system heap allocations to gralloc changes.
- NV12-1D format is no longer supported. Instead, we are using
existing NV12 format with the GRALLOC_USAGE_PRIVATE_0 usage
flag to signal to gralloc we want allocations to come from
the system heap. The same flag we are using for BAYER format
also.
Change-Id: Id47a8da1a5c0bde6e39125a8e0f243386cadabd5
Signed-off-by: Tyler Luu <tluu@ti.com>
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
Fix crash if IPP not set by default
Change-Id: I329f3bf49fef2db2ec136e7755c27a01bcab373f
Signed-off-by: Andriy Chepurnyy <x0155536@ti.com>
|
|
USBCameras support higher resolutions(above VGA) in MJPEG format only.
V4LCameraAdapter has been modified to use MJPEG as the default pixel format.
The incoming jpeg frames are decoded(into NV12) using libjpeg and
then sent for rendering.
Change-Id: Ie7f62abd7a7fad3bc1f01e048fe8f17f67890301
Signed-off-by: Saravanan Solaiyappan <saravanan.s@ti.com>
Signed-off-by: Andriy Chepurnyy <x0155536@ti.com>
Signed-off-by: Anu Sundararajan <sanuradha@ti.com>
|
|
Most of the USBCameras support higher resolutions in MJPEG format only.
To decode MJPEG frames, this patch adds support for libjpeg.
Change-Id: Ifef19a16fddcc8bd56894ed67829f76a63e86a97
Signed-off-by: Saravanan Solaiyappan <saravanan.s@ti.com>
Signed-off-by: Andriy Chepurnyy <x0155536@ti.com>
Signed-off-by: Anu Sundararajan <sanuradha@ti.com>
|
|
- Do not allow image buffer size query while in initialized
state. OMXCameraAdapter doesn't support this...
Change-Id: Id66ce67f5cb3667ce883c0ebbd482e958146be08
Signed-off-by: Tyler Luu <tluu@ti.com>
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- To write to a buffer, one needs WRITE_OFTEN.
Change-Id: I44ade4551c5f133960e51e7cd540c3a9adf57da4
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- In Bayer format set GRALLOC_USAGE_PRIVATE_0 usage flag
to the graphics buffer allocator.
Change-Id: I629803110ec6f18cc824c75c6d81450bb108dcff
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- Tell Camera hardware to release buffer sources
befor sestroying them.
Change-Id: I2a7e1c801516b14c9277a415d377131cc4443f6a
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- The buffer source adapters should be re-created
if changed some parameters.
Change-Id: Ifd9e2c406adf8fbab11dcb530b87a8d01e490341
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- Change camera_test to pre-set all buffer sources during
start preview instead of during takePicture/reprocess.
- Omit pre-setting tap-in/-outs if the client
doesn't use raw picture format.
Depends on frameworks/native change I20c0f4a8:
http://review.omapzoom.org/#/c/28901/
Change-Id: I8c0d29ffc5b21c56a2d79bc80cab910f55c7ca21
Signed-off-by: Tyler Luu <tluu@ti.com>
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- The Thread responsible for retrieving free buffers
from the tapout is possible to miss some incoming
signals and wait while buffers are available in the
ST. Solution is to count all outgoing buffers and
not wait on the condition when buffers are available.
Change-Id: I31526dd334a08f52f0c6069cea847ae14e2cffbc
Signed-off-by: Emilian Peev <epeev@mm-sol.com>
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- Will set burst frames to "1" if missing.
Change-Id: I3bf79a9d477b1e9a407b98b790258b85735655c0
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
- Fixed deadlock in the case when application has ommiting
to set shot parameters with any bracketing configuration
in CPCAM mode. Should handle properly single shot and
burst shot.
Change-Id: I4f3e2b4ee5bc0aa9072d03da6f9edc4ba86253d8
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
|
|
Keeping these two directories in sync will make it simpler to integrate
future TI camera HAL patches.
Change-Id: If9d01c214548acf4560936a802c75c046755102e
|
|
Framerate and resolution queries to V4L2 may return different formats
or may not be specified. Avoid accessing the data before validating
the return code, and avoid corrupt data on unusual formats.
Change-Id: I525935192f36c635cbab8abc8d446a9c84812dae
|
|
Bug: 6654403
Change-Id: I9c1b53774955f591bb3fd34a707f1c5151b5d556
|
|
TI says that the limit of 1 large layer may be obsolete in the current kernel
Change-Id: I6949079ccff6d8be03b055188c90e33f550746f6
|
|
The head of TI's hardware/ti/omap4xxx/camera repository at the time of the snapshot was:
commit 4447eaef6dc757aecab869054460ae87848e575e
Author: Vladimir Petrov <vppetrov@mm-sol.com>
Date: Thu Aug 16 19:13:03 2012 +0300
CameraHal: Add support to release tap in/outs
Change-Id: Ia6bfefb427fe171067eddcab6d896683ff2d149f
|
|
A previous change (fc13c9292160e3eb83fe5b4f191d1ccee2fd67d9) updated the
HWC to skip any large layer other than the first. However, the logic
in can_dss_render_all did not know about this rule. If there is
more than one large layer, can_dss_render_all would select DSS-only
composition, but some of the large layers would not be rendered.
Change-Id: I03718fcf25f6bc57b43f6d39546e50e8a9d6fde9
|
|
Change-Id: I8954125e75c1f0ee469ec035ebe0376139aef1e9
|
|
When the regionizer decides there are no blits as a result of a given
hwc geometry a -1 array index was being used to set the last blit
async, this needs to be avoided if there are no blits.
Change-Id: I3ce2f60a46096559c2ba308cf1d617a79731751e
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 8d486cd705ffc33d6048880189e16fed387338fd)
|
|
There are certain situations where the regionizer decides it can handle
all layers passed to it and no blits are generated as a result. This is
caused by receiving more than two times the same geometry in the
prepare, which makes the regionizer to not generate dirty regions
(hence no blits). When this situation happens we are losing the first
blit handle by assigning it to NULL incorrectly.
This patch fixes the issue by checking if the sgx will be used for
composition instead of checking if we have no blits.
Change-Id: I68e87c386c98a8ca5047e1723c6c43db7c143447
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit ac81898f605ba0a6b5359de4d6565c61fcc3a36a)
|
|
When scaling a layer, the blit is programmed in a way where the src
rectangle uses the whole cropping rectangle coordinates and
dimensions. However if the layer has a transform, the width and the
height need to be swapped not only in the geometry but also in the
src rectangle to match the new dimensions.
This patch adds the missing width and height swapping for the
src rectangle if the transformation is 90 or 270 degrees.
Change-Id: Ia9d822b6698210573fff662f2fcb129dfc048bf7
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit a80084da8fb2c63a2e44ef9d4ce7598b7cad853f)
|
|
Allow blitting layers that have scaling and a transformation now that
the GC driver supports it.
Change-Id: Iee5a34dc888656c47b3b514597b75868ccdc008a
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit c195634f79fb5a49b0caa33a4f9605a3aa40efe2)
|
|
Adds scaling support to the regionizer code.
Limitations:
+ When blending two layers with scaling two blits are issued
instead of one. This is due to a Bltsville API limitation
which prevents specifying two different scale modes for each
source.
+ Support for scaling and rotation on the same blit is not
possible yet due to a GC driver bug.
Change-Id: Ie53157e527dacf639e42a72e371ef962f888131c
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit ad4ba4604f3f9bafed27c83b3c0a49d8731dddd7)
|
|
This patch basically refactors the way the blit parameters are set
per subregion. The intention is to make the code ready to introduce
the scaling support easier and reduce greatly redundant code as well
Change-Id: I2b32056bf2fec1b636fda1c8df9964d90d51192c
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit d8cd439184093184b21291c37702b3eb7c9c836b)
|
|
It was observed during ADTF runs than we get repeated redraws when
there are no layers to render.
This is because the check in prepare() will reset force_sgx to 0
when there are 1 or less layers. The side effect of this is to
cause a redraw every idle period.
Instead of doing this, account for the number of overlays used
for the primary display before calling the invalidate() api. This
logic should be satisfactory most current usecases.
Change-Id: I4b9cb44ebe250a6a46a6da27a1db94e88d6f26f3
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit c044e832219dd2aa81ae11e4ec883d09bf2fb885)
|
|
When the buffers composed with DSS pipes use exactly the tiler1d
memory available (like 4 fullscreen layers on Tablet 2), the
prepare operation fails to assign a DSS pipe to the last buffer
(even if it was possible) making it to be rendered by the GPU
but without a pipe to show it. This patch fixes the incorrect
memory check that caused this problem.
Change-Id: Ibb147a468aa2e1622600a56f581013dc1e517777
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
Signed-off-by: Jonas Larsson <jonas.larsson@ti.com>
(cherry picked from commit a9606e762f54eb433880561548d0cb4498a3951e)
|
|
When HDMI is the default screen it may not be attached even
though the UI is active. UI compositions will keep coming but
the DSS manager will have problems if being programmed with
content incompatible with the intermediate display mode.
The last_mode variable is reset to "0" when hdmi panel is
not present. The on_tv variable indicates hdmi is default
panel. So if both are set then we need to make the overlay
number in composition to be "0".
OMAPLFB will skip posting the composition to dss driver when
overlay as "0".
There are still possibly compositions in the DSSCOMP queue
or in flight from PVR services to OMAPLFB so this behavior
doesn't cover all cases - so this should be considered a
work-around.
kernel dependency:
http://review.omapzoom.org/#/c/26982/
Change-Id: Idb6864aa57ebf6c403b91ea5b0e0865467008934
Signed-off-by: Dandawate Saket <dsaket@ti.com>
Signed-off-by: Tony Lofthouse <tony.lofthouse@ti.com>
(cherry picked from commit a4a35a6efdf146cad32d76e6e07327a983cec6a1)
|
|
This is a workaround for a performance degradation found while
a video is playing and the GC320 is used at the same time.
Avoid blitting if there is a NV12 layer in the hwc layer list.
Change-Id: I12e789b9dd95e8b0d435aac1ae67ff65d4511396
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 52aa03dd27808e773f2133910ae233a1e4d42106)
|
|
During the transition from the recents panel to a selected application
during the transition a layer which requires a scale down from 1920x1200
to 594x361 is generated. This satisfies the normal limits but with buffers
of this size and also blending another 1920x1200 framebuffer. A VID1
underflow occurs.
This work-around avoids scaling when layers are wider than 720p and
are 4 byte RGB.
These conditions have been reproduced in isolation with ADTF.
Change-Id: If8fbc8f639abb89a0d736a3beabd2c12312ac3ac
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit 9e71cf37889ee95d03a1ad200741752b5efa4b43)
|
|
Change-Id: I12d286ffe12c18bc9159a9bd1df65db43b63ac05
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit d98182ec972e6083daec80f2271d2678abcc7b28)
|
|
A scaling decision may need to account for the size of
a pixel as dss based scaling capability has a relationship
with memory bandwidth
Change-Id: Idd68e11317fb0bb9e5d19f0a0d5818744968a5ab
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit c53e458106e6c4346c092bf34d623ac11848f6bd)
|
|
Under certain circumstances the ICS SurfaceFlinger attempts to disable
the hwc module by calling prepare with the list set to NULL. This code
path is specifically used by the Electron Beam screen off animation.
Since blit_reset() is just checking for a geometry change, this patch
handles the list pointer null case.
Reproducible with:
service call SurfaceFlinger 8 i32 1
(Thanks Jon & Michael!)
Change-Id: I27114b173446729511115bc73e780e7fdca8722b
Signed-off-by: Tony Lofthouse <tony.lofthouse@ti.com>
(cherry picked from commit dfe13a6b856b8443e001f9d8ce51bb05aaf03499)
|
|
This patch removes the workaround introduced by the patch:
2cb90b8 hwc: rgz: Workaround for hdmi hotplug crash with 2D blitter enabled
Basically when the number of layers differ from the ones handled in the
previous frame, we don't trust anymore the region data and we need to
calculate it again. If the layers are the same in number and there has
not been a geometry change the region data can be reused for the same
frame
Change-Id: I4421ca5c7bc1b556cd54de888865ed83e957b919
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 3789ed446d031fbec5fd52ddc0dcde759129ce19)
|
|
It is possible when the HDMI cable is plugged in a geometry change
doesn't happen, hence the layers handled by the DSS and the
regionizer differ, since the dirty region counters are only reset
when a geometry change happens, this causes them to enter into
an invalid state leading to visual artifacts.
This fix compares if at any given time, the layers handled in the
regionizer differ in number from the previous frame, if that happens,
the dirty region counters are reset for all the layers.
Change-Id: If756b526cf52d66612729d7367c26d131c8a1ac0
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit f683df8b15dcc60d497ca1ef9e0bad2bf280fb5b)
|
|
When the ext display transform is different from the FB,
the mirroring/cloning is achived with the help of back-buffers,
which are allocated in TILER2D space to get the required
transformation. This patch adds support in HWC to detect
the ext display transform and allocate back buffers from
TILER2D space and program dsscomp accordingly.
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
hwc: make file fix for local include path
the local include path for ion is changed from base level
to local. this is required to allow compiling at hwc level.
Change-Id: Ie1e9e6688652fdc8aa496dfc367d385aca362a27
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
(cherry picked from commit 5d7b83b7ee03be090076d9aefd40dac294377aac)
Conflicts:
hwc/hwc.c
|
|
A region that is pixel wide is in the top-left corner of the screen
(0,0,1,1) makes the empty_rect function to return true, which
is wrong since the region is not an empty rectangle.
Since this function is being used in the moment the blits are
generated, the regionizer thinks the region is empty with no
intersections leading to error messages.
Change-Id: I5f838008a39dcd469e325cb3fdd834408aa91291
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit 7863b0c86de6bae53e2afb4294b32f2f9840f2b8)
|
|
Rebased from p-ics-mr1:
8323a55 hwc: publicly define omap specific usage flags
Change-Id: I3bd14ca2d88192299de731c49eba15a90084b3fe
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit 8a5ba6d5b8b3ff90f8e29b4ed8c407e032c53235)
|
|
The dirty region handling doesn't work properly when only one
layer is being blitted. The problem was the screen dirty state was
only set to zero when one layer reaches the dirty count to zero. In
case only one layer was being blitted the dirty region handling
is never triggered making the empty areas to be cleared on every
frame even if it was not needed.
This patch removes the screen dirty flag and instead introduces
a dirty count for the background and layers with the clear fb hint
as well, since we don't care about the handle, the dirty count
is decreased on every frame, in this way the dirty region handling
sees the background and layers with the clear fb hint as any other
layer.
Rebased from p-ics-mr1:
11e5f7e hwc: rgz: Fix dirty region not working when blitting only one layer
Change-Id: Ifbb111ce7738cd097e74ac01e2c48f3994857416
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
Conflicts:
hwc/rgz_2d.c
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit a79d46bbd0438140fb6500d6243b5e3aa392068b)
|
|
When the hdmi cable is connected a hotplug event is triggered, this
forces the DSS to exhaust the pipes available in most situations
so the 2D blitter is used to handle some layers.
When the cable is connected/disconnected it's highly possible a
geometry change doesn't happen right away (or it may not happen)
leading the region data to be invalid and not recalculated for an
instant, this ends up in sending to the blitter incorrect src
rectangle origins and sizes, most of the time this leads to L3
errors making the system unstable and unable to recover.
Rebased from p-ics-mr1:
104249c hwc: rgz: Workaround for hdmi hotplug crash with 2D blitter enabled
Change-Id: Ie1675d0a0dd03e69fac80dd51cee006fcd6f8791
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit d5907246f792b70e82db195b1c5fb5c1c5be9d5d)
|
|
There is a bug when rotating NV12 buffers with the GC driver,
disable this for now until it is fixed.
Rebased from p-ics-mr1:
7c46d80 hwc: rgz: Disable NV12 rotation support for the regionizer
Change-Id: Ia3add3266bd308fec34cb2b9140146d1da07f7ec
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 86e65069ed99621c0b9d6c46096bb0bf2fbe97ef)
|
|
Enables the regionizer to support rotation with Bltsville.
This patch doesn't enable horizontal/vertical flips yet.
Rebased from p-ics-mr1:
bd6d0b5 hwc: regionizer: Give support for rotation with Bltsville
Change-Id: I595debea076727ef2c442d7544c1e355aef04808
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
Signed-off-by: Tony Lofthouse <a0741364@ti.com>
(cherry picked from commit eb5940af48a3b9bd029a5c70d7838d89a03c302b)
|
|
Regionizer adds the BVFLAG_ASYNC to all the blits, except for the
last one which is made synchronous. The last blit acts like a
fence to let the previous asynchronous blits to finish first.
Support in the GC driver must be present for this feature to work
properly.
Rebased from p-ics-mr1:
822ec12 hwc: regionizer: Add asynchronous blits support
Change-Id: Iec32de51e7d0b95d1b780e60ed4848e8daf7977f
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 75bcf14b2937c1edbe83834ae93371995dd64b0f)
|
|
+ Removed BVBATCH_DST since the destination parameters (buffdesc
and geometry) are not changing while performing blending within
a batch.
+ Removed BVBATCH_SRC2RECT_SIZE, the rectangle size never changes
while constructing blits within a horizontal subregion.
+ Added BVBATCH_SRC1RECT_ORIGIN, it's highly possible the src1 origin
changes from a previous blit within the batch, a good example is the
volume pop blended on top of the widget and wallpaper layers in the
Android homescreen.
This change doesn't address batch flags while scaling, those will
be revisited later when the GC driver supports it.
Rebased from p-ics-mr1 (also cleaned up commit msg):
93b69ce hwc: regionizer: Batch flags fixes
Change-Id: I9b85dce832b391e347aab93800e0b22e67072227
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 29136475929f69250818d96cf106d28ed4e1cd80)
|
|
Allow the regionizer to ignore (and clear if needed) a region
with a layer requesting to clear the framebuffer with a hint.
This mimics what SurfaceFlinger does when the HWC requests to
clear a layer area with transparent pixels.
Rebased from p-ics-mr1:
3c9a753 hwc: rgz: support layers with the HWC_HINT_CLEAR_FB hint
Change-Id: If61a4f50d0315eb23119d7b97b0f2cb5f994806f
Signed-off-by: Gustavo Diaz Prado <a0273371@ti.com>
(cherry picked from commit 60d9c93b53b7133aca51d7a125f5d14666a772fe)
|
|
Fixes the following issue : when non-blended layers are composited
via overlays and blended layers are composited via FB, the idle timeout
does not yield invalidation and re-composition of the layers via SGX
resulting in the increased power consumption when the UI is idle.
The change simplifies the idle timeout logic as follows : SGX only
composition is forced after the idle timeout.
Rebased from p-ics-mr1:
4573812 hwc: fix and simplify the idle timeout logic
Change-Id: I37216892536a6900b5fb58c0e6ac616ef3f3ef72
Signed-off-by: Dima Svetlov <svetlov@ti.com>
(cherry picked from commit d62680abaf25e807070c2ba236cdc2d0cc935408)
|
|
Rebased from p-ics-mr1:
e2479b9 hwc: pass nv12 surfaces to gc320
Change-Id: I3f161273aa40da2ced869b7b60f2e9fe76cac3bf
Signed-off-by: Craig Stout <craig.stout@ti.com>
(cherry picked from commit ca5f8d664221423dd005f9333adf530aac51bc75)
|
|
Currently can_dss_render_all() doesn't consider docking mode for
decision making. In case of rotation on HDMI, current logic expects all
layers to be NV12 which is not true if in docking mode.
Adding logic to consider NV12 to be the dockable layer.
Rebased from p-ics-mr1:
6a5358f hwc: fix can_dss_render_all decision logic for docking mode
Change-Id: Ib56c88ef45293eb87e4db9bc1faa956ea96a533e
Signed-off-by: Muralidhar Dixit <murali.dixit@ti.com>
Signed-off-by: Varadarajan, Charulatha <charu@ti.com>
(cherry picked from commit c739886ef430dbb231357038410fbde6990bb19f)
|
|
Modified HWC hdmi best mode selection policy to consider Interlaced
modes as well.
DRT#OMAPS00262232 - HWC hal doesnt have support for interlaced timings for HDMI
Rebased from p-ics-mr1:
a11e07b hwc: Added Interlaced modes to the HDMI best mode selection logic
Change-Id: Ie7bbe55c5694c53cc669c39ec125a72f723c3920
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
(cherry picked from commit 3e8c057eac76d6a28abfb2cda9698b022b7328cc)
Conflicts:
hwc/hwc.c
|