Commit Graph

1350 Commits

Author SHA1 Message Date
milaq
40a48f42b3 dont call FORCE_COMPOSITION but keep API intact 2012-11-12 13:46:21 +01:00
Paras Morabia
00e6cb0616 hwc: Allow SurfaceFlinger to force composition.
Expose API for SurfaceFlinger to set force composition. The SurfaceFlinger
can set the force composition flag for avoiding skip composition.

CRs-fixed: 374830
(cherry picked from commit a3c5794b27d2bf7fbc539e3f13a8daaf74724d94)

Conflicts:

	libhwcomposer/a-family/hwcomposer.cpp
	libhwcomposer/hwcomposer.cpp
	libqcomui/qcom_ui.h

Change-Id: I277484ea5ab4ef8d2bccdd480785356d02f6efa8
2012-10-22 13:45:06 +02:00
andrew.boren
bb1ae5d198 Merge "ionalloc: Fix typo." into ics 2012-06-06 22:18:45 -05:00
Andrew Sutherland
7493d7c6cc libqcomui: convert *FormatInHW to a switch and ifdef it
caf removed this hack when the mdp driver was updated
for the YAMATO format. We dont have that yet so keep it around
but make it optional.
depends on BOARD_ADRENO_DECIDE_TEXTURE_TARGET
enable with BOARD_ADRENO_AVOID_EXTERNAL_TEXTURE:= true

Change-Id: I99b9a60d76d4515682db9717e3cb68bc17aff800
2012-06-04 22:08:52 -05:00
Andrew Sutherland
9af084283a Revert "Revert "Revert "libgenlock: add support for genlock_write_to_read locking semantics"""
This reverts commit 5e6e965be7.
2012-06-03 14:26:37 -05:00
andrew.boren
ac6e239175 ionalloc: Fix typo.
*Not sure if this is a typo, or had used this flag previously, but
  needs to be O_SYNC now.

Change-Id: I665aa2436009fcc735c1ffb9e0ab4bde79c5163d
2012-06-03 11:22:25 -07:00
Andrew Sutherland
3c6ccbef6d qcomui: ifdef decideTextureTarget
caf removed the decideTextureTarget function, however it is still useful for
old devices (8x50)

Change-Id: I8d5c7a821b1f2f75819cbcd6d7c65e17f1c1b0b1
2012-06-03 02:54:58 -05:00
Andrew Sutherland
d0ec96adaa qcomui: remove BYPASS_EGLIMAGE
this should have been removed when adding isGPUSupportedFormatInHW

Change-Id: I8dd60fb7837a7c3075bee0562355f9c399e1f6aa
2012-06-03 02:54:58 -05:00
Andrew Sutherland
ae4a02e746 copybit: fix ion define
Change-Id: I9d4005b30f16aa191d3eb4c8455e5dbe198d5607
2012-06-03 02:49:06 -05:00
Kyong Hwa Bae
e1ea460dc4 HWComposer: Set the transform value correctly
When using the bypass, read only last 4 bits of
the transfrom value regarding the change of
transform value in Layer::setGeometry().

(cherry picked from commit 7689940bec6440b78418cb15a9888312ab96ea04)

Change-Id: Ida5781e3e92929b8024947a41e5521f83164a4f7

Conflicts:
	libhwcomposer/hwcomposer.cpp
2012-06-03 02:49:06 -05:00
Steve Kondik
1ded1767f9 gralloc: Remove ifdef around assignment of perform
* Perform is used for more than HDMI, and without this set on devices
   that don't have HDMI enabled, crashes result.

Change-Id: I9029892a12ab09ffb66b3560f796ffb99ea57460
2012-06-03 02:49:06 -05:00
Saurabh Shah
6107e39aec Fix incorrect video overlay status update.
Status should be set to PREPARE_TO_CLOSE only if its OPEN.
Devices which rely on the status being CLOSED, if overlay
is unavailable, can crash.

(cherry picked from commit a6ee9945dedde6f2d119f0bdd8724fed20781f0e)

Conflicts:

	libhwcomposer/badger/hwcomposer.cpp

Change-Id: Iddf0ba1cc142e02fcf906d3b31f8f44a65def316

Conflicts:
	libhwcomposer/hwcomposer.cpp
2012-06-03 02:49:06 -05:00
Rajulu Ponnada
ce483cb074 hardware/qcom/display: Fixes corrupted display when using whith zero dirtyregion
An empty dirty region, which initiates tile rendering (non-preserved with full viewport)
but with no updates from the view hierarchy leading to uninitialized content on the screen

CR's Fixed:357662
(cherry picked from commit 66ceabd31fcd49c344b468a138438fe3d226f515)

Change-Id: Ieaa357ee2951aa8286ab1fe0f96b3d99bc424a3b
2012-06-03 02:49:06 -05:00
Kinjal Bhavsar
5309935986 Overlay: Enable rotator for external displays
(cherry picked from commit 8e12c41fe12a2b1fd21ce89663f4103f82547bc4)

Change-Id: If01d97877bda8d2e81e0e7c13bb334227fa07325
2012-06-03 02:49:06 -05:00
Sushil Chauhan
347121bfd8 Reset to initial state when Overlay startChannel() fails.
When Overlay startChannel fails due to some reason and overlay
channel is not yet up, state needs to be reset to initial value.

Change-Id: Iabc765f350bf999d8362f86a43b900ff7aed1bb3
CRs-Fixed: 354403
2012-06-03 02:49:06 -05:00
Arun Kumar K.R
d8abd6c8dc liboverlay: free rotator memory in a new function
- move freeing roator memory to a new function
- In queueBuffer, updateDataChannel, if memory allocation
  fails for the rotator, free the previous allocated memory

CRs-fixed: 353156

(cherry picked from commit 97de5b6dc39a8706ba90f4e8b191b18418cb0191)

Change-Id: Icc774b67678426ea7ba43520b1186ea148ce1281
2012-06-03 02:49:06 -05:00
Prabhanjan Kandula
d9420e6d78 libhwcomposer: Make fb width 32 aligned.
GPU need 32 aligned FB, and FB driver also expect the same.
It is mandatory for non-32 aligned FB resolutions like QHD panel.

CRs-fixed: 355814
(cherry picked from commit 2febae47ebd2bab247c7eeabb89bdf24438fe7db)

Change-Id: If82315bdf4ec2e7692d8b140efbb13f717dd34d1
2012-06-03 02:49:05 -05:00
Prabhanjan Kandula
72e6062ee9 libhwcomposer: Remove dimension Align checks for copybit
gralloc is already taking care of source buffer width alignment
based on the color format.Alignment should be based on source format,
But not dependent on FB format.

CRs-fixed: 344311 355814
(cherry picked from commit 8c8edc440288def7017eb12d93391cb785196f55)

Change-Id: Id83f926068d65896b6c7bb93dd086aa9d8c3b406
2012-06-03 02:49:05 -05:00
Saurabh Shah
3d6a8ffaf3 Implement single vsync for YUV + RGB content
-- For UI updates, mark the MDP pipe for single layer YUV to be NO_WAIT.
-- Remove premature unlocking of buffers, except error cases.
-- Unlock buffers only after a single Vsync (PAN or PLAY) and after pipe UNSET.

This ensures smooth transition from MDP to GPU and prevents tearing.

Change-Id: Icfcb770dae12d4a7e0ff96d04149b2eaf0c07121
CRs-fixed: 359140
2012-06-03 02:49:05 -05:00
Ramakrishna Prasad N
b942708b15 libhwcomposer: Wait for framebuffer post complete before releasing composition buffers on bypass failure.
When bypass fails, MDP keeps reading the last submitted buffers until
the next VSYNC i.e., until PAN_DISPLAY is called on framebuffer. So
the previous buffers can be released only after PAN_DISPLAY IOCTL
call returns.

CRs-fixed: 348953

(cherry picked from commit c3a7ed7db39609e8f4d7ce0d6a56e82303ddb7f1)

Conflicts:

	libhwcomposer/hwcomposer.cpp

Change-Id: I5fb5a9eb275006a3158a111aad1eafac79973095
2012-06-03 02:49:05 -05:00
Naseer Ahmed
6b64b4881e gralloc: Reduce log severity for invalid handles
The calling function logs the appropriate error

Change-Id: I41f446b1495e23995aff4778f1c1a488d83537fb
CRs-fixed: 361831
(cherry picked from commit 81fd358ee8b70946b306417064d104fa3341d6fa)
2012-06-03 02:49:05 -05:00
Saurabh Shah
7015a91bc8 framebuffer: Remove extraneous update on HDMI
HDMI should be updated only in conjunction with primary.
Which means on a resume from suspend (which is treated as
cable connect in HALs) we need not draw ahead of primary.

A good way (already existing) is to call invalidate() on SF
on cable connect so that primary is updated and only then HDMI,
by a trigger from disp_loop thread.

Change-Id: I7d5268b2f0e27adb04aade757c36483cdfc1333e
CRs-fixed: 335763

Conflicts:

	libgralloc/framebuffer.cpp
	libhwcomposer/hwcomposer.cpp
2012-06-03 02:49:05 -05:00
Saurabh Shah
1e2be7b5b0 hardware/qcom/display: Add events for secure session setup
Change-Id: I0c0b5b7ae70d7ea8b341285479cd92750e1f6274

Conflicts:

	libgralloc/framebuffer.cpp
	libqcomui/qcom_ui.h
2012-06-03 02:49:05 -05:00
Ramakrishna Prasad N
5875b20445 libgralloc: Add API's to synchronize framebuffer update.
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
2012-06-03 02:49:05 -05:00
Arun Kumar K.R
ac786968e3 qcom/display: add perform function to fb/hwc HALS
- 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
2012-06-03 02:49:04 -05:00
Sudhir Sharma
5e6e965be7 Revert "Revert "libgenlock: add support for genlock_write_to_read locking semantics""
This reverts commit b419ca44a137f8f5bc9b80412c7a6459583addab.
2012-06-03 02:49:04 -05:00
Kinjal Bhavsar
7c05f8ce9d display: Fix Overlay state transitions
Trigger overlay state change for S3D format changes.

Close both overlay channels only when transition to/from 3D display
happen.

The closeChannel resets the Overlay state variables. Any changes to
the state variables prior to closechannel are lost. Update state
variables after calling closeChannel.

Remove unused variables.

Change-Id: Ia5aa84d02df1e1874df93530cf3e55298ebc81e3
CRs-fixed: 342350 342987 347382 350326
(cherry picked from commit 6706fd708dace780751a4602d6125e089851789f)
2012-06-02 23:39:24 -05:00
Naseer Ahmed
0371a6cfa9 display: Use a new flag for content protection
The GRALLOC_USAGE_PROTECTED flag that was used
earlier for content protection is also used for
some other use cases such as disabling of
screen captures. Define this new flag that
is explicitly used for allocating secured
buffers for DRM.

Change-Id: Ia33f79fa0dea7f2f16dd320f267203e6173af48e
CRs-fixed: 348454
(cherry picked from commit 440a996f13be732895524412762793f109681c11)
2012-06-02 23:39:24 -05:00
Naseer Ahmed
b904eeeec8 gralloc: Allow SF to use IOMMU heap
(cherry picked from commit 9ff9a8df77ce6887b6d45fdb7dc7400690d408c5)

Change-Id: Ia079f4c68b88201f638cfc2b4618de381d246e49
2012-06-02 23:39:24 -05:00
Arun Kumar K.R
9089a0e4ca liboverlay: check for flip when rotating 90 or 270 deg
- In setTransform, when rotating to 90 or 270 deg, also consider
  the case of current flip values(if any)
- This is needed when switching b/w front camera/back camera/
  camcorder

Change-Id: Ieae8f90438dda24006ede4cf925acf46ecec5b32
(cherry picked from commit c5defdb54862490c502f255d7811cf73b8962b8d)
2012-06-02 23:39:24 -05:00
Saurabh Shah
10d91371c2 Fix secure flags value in overlay.
Remove the member "secure" from overlay_buf_info.
This member was used to indicate secure content and this info was
later extracted out into existing flags. Now we use the same flags,
right from hwc to mark secure content.

The member above had junk value, since it wasnt initialized.
This caused, normal videos to fail with IOMMU. Removal of the member and
marking the existing flags fixes this.

Change-Id: Ib5a2439fde7114c20e478fbee5e4d276680c316a
2012-06-02 23:39:24 -05:00
Saurabh Shah
050ef1b611 liboverlay: Call overlay set ioctl, only if input params change.
Change-Id: I753c30be4062be10655d7072c795052ef65f87ae

Conflicts:

	liboverlay/overlayLibUI.cpp
2012-06-02 23:39:24 -05:00
Arun Kumar K.R
0358ea0b84 qcom/display: Add support for video rotation on HDMI
- Enable rotator for HDMI for video
- cleanup updateOverlaySource API, it does not need
  orientation info

Change-Id: Id53a42cbc4265015ea2714d25df1b02af60ee5e4
CRs-fixed: 341691, 330719, 342199, 344308
2012-06-02 23:39:24 -05:00
Sushil Chauhan
8f3c0e6d8c liboverlay: Remove evening-out of layer destination coords.
Evening-out of layer destination coords causes a noticeable up & down
shift in the screen when video layer drawing switches between Overlay
and GPU. This is most easily observed during video playback or pause,
when a UI layer (like Menu) is displayed / hidden. Remove evening-out
of layer destination coords to fix the video layer "twitching" issue.

Change-Id: I3f43b53a7609c9ad8cc983c353fba6dc97460158
CRs-fixed: 348856 350073
2012-06-02 23:39:23 -05:00
Arun Kumar K.R
73b4678d06 liboverlay: set correct flags for external display channel
When external display is connected during video playback, the
flags to overlay was not set properly.
Pass the flags which comes from the hwc, by just changing the
WAIT_FOR_VSYNC(external should not wait for vsync)

(cherry picked from commit 857cfcba2d120d5da4916c7cb4fe119a08d1ce68)

Change-Id: I13100bebd223780eb9c709f384f0e4644e8295dc
2012-06-02 23:39:23 -05:00
Prabhanjan Kandula
70139de6a2 libgralloc: fix the calculation of fb virtual y resolution
calculate the yresolution virtual according to the hole
introduced by 4k alignment of frame buffer.

CRs-fixed: 325134

(cherry picked from commit 464443a5d3b216e06e644d0e41c234490c3c46c2)

Change-Id: Id7a93e11e2f3c1d52a26ec3669a9d710c369bf41
2012-06-02 23:38:31 -05:00
Prabhanjan Kandula
e80c89a867 libgralloc: fb size alignment to pagesize
Align framebuffer size and offset to pagesize, calculate
framebuffer size based on this alignment and use it for
mapping framebuffer in userspace and page flipping.

CRs-fixed: 332175

(cherry picked from commit d89b0493b4651fbaaeccccf0ae880cbf1a3a3479)

Change-Id: I7840f7f3c5c42852087cb9df6ae85680c971c601
2012-06-02 23:38:31 -05:00
Harshad Bhutada
58676afccd hardware/qcom/display: Fix overcounting frames with CALC_FPS
With a recent change, debug.gr.calcfps was enabled, frames were
being overcounted. This change fixes it.

CRs-fixed: 350335
(cherry picked from commit e8ea630b6b629403ad713b8cb3d912c4d54e7699)

Change-Id: I863072f3311c584edd30f7be74a3ab8122f05f01
2012-06-02 23:38:31 -05:00
Arun Kumar K.R
9a02b8e9d6 framebuffer: In enableHDMI, check if target supports true mirroring.
- check if the target supports true mirroring in fb_enableHDMIOutput
  instead of framebuffer HAL initialization.
- We check if the target can support true mirroring by using the RGB1
  pipe, with new driver changes, RGB1 pipe is allocated only after
  first display update.
- Hence moved this call to fb_enableHDMIOutput

(cherry picked from commit db5225cc97b7c42871d5674702e1ca48a5a27904)

Change-Id: I9838fb0bfe6d49c5de3a7b1f4c116bd93c7b375c
Signed-off-by: Sudhir Sharma <sudsha@codeaurora.org>
2012-06-02 23:38:31 -05:00
Andrew Sutherland
f6d6c9b301 qsd8k: hwcomposer: update drawLayerUsingCopybit
fe623a3 libhwcomposer: Remove dimension Align checks for copybit
5ceafe7 libhwcomposer: Make fb width 32 aligned.
4c56f52 Display/hwcomposer:Add support for intermediate down scaling

Change-Id: Id52e04db2055f1f58543eaf3a9b84e103af739b5
2012-06-02 23:38:31 -05:00
Arun Kumar K.R
98d413ef13 hwcomposer: fix blank screen on external display.
fixes the black screen when external display is connected
during bypass and when video is paused.

(cherry picked from commit 2ffc188a6cad26a347e565211564640173f340ac)

Change-Id: I6caeda8bbc744a45164e2ae139345ba4aab55dab
CRs-fixed: 346284
2012-06-02 21:09:46 -07:00
Neti Ravi Kumar
3e189158c5 Unlock overlay buffers before going to suspend
In video playback through overlay, it is observed that, during
suspend/resume, genlock TIMEOUT errors are seen at the component
level.

drawLayerUsingOverlay() function locks buffers, but doesn't unlock
them, before going to suspend, making the genlock_lock_buffer calls
from video component to fail.

Unlock any overlay buffers before going to suspend.

CRs-fixed: 342878
(cherry picked from commit 4ffcd156710184fe492294fd55beea7d5f412116)

Change-Id: Id0165f370d05d9b4bdf71ddaea15cf00caa65896
2012-06-02 21:07:47 -07:00
Ramakant Singh
d80af4df03 Display/hwcomposer:Add support for intermediate down scaling
Copybit module has a limited stretch to up/down scale.
Hence we need to do a intermediate stretch before going
to final stretch.
CRs-fixed: 341196

Change-Id: Ic547fdb8e88072f9f89032f047d04a7a26bddf71
(cherry picked from commit 256bde19b8f912388e19390570e5ea36f0208cfe)
2012-06-02 21:03:06 -07:00
Jeykumar Sankaran
beb7795769 libhwcomposer: Implement register_proc in HWC
register_proc in HWC is used by SurfaceFlinger to register
callback functions with HWC. This can be used by HWC to invoke
SurfaceFlinger functions. Currently invalidate is the only function
registerd and can be used by HWC to trigger a screen re-draw.

CRs-Fixed: 342060
(cherry picked from commit 03a5cf4b9c52da2bfbd9706e85fddae63110ee9b)

Change-Id: I464370ebf63b93e0ce238395b5c165647d777575
2012-06-02 20:59:01 -07:00
Raj Kamal
3853e4180a Avoid 3D video layer for GPU composition
libhwcomposer: Donot mark the 3D layer below HWC_SKIP_LAYER
for GPU composition. In these cases, let the layer be
composed through composition type decided in hwc_prepare.
This helps us in avoiding the cases where 3D videos
cannot be composed through GPU.

CRs-Fixed: 346973

(cherry picked from commit 0331f07ed4b5a3cf5a2e358c8417ac9e8103bc07)

Change-Id: I9f6c53cc2da35109fe789074a9d1accc11372dd8
2012-06-02 20:57:48 -07:00
Steve Kondik
02cb316eef hwcomposer: Add workaround for cropped layers during bypass
* Some hardware cannot handle cropping during bypass, or reports
   invalid rects during orientation change. If the invalid rect is
   cropped, MDP gets into a weird broken state where layers turn
   transparent, display blinks, etc.
 * Also use the VG pipe for 2 layers instead of just 1 in this case, it
   eliminates flicker when unlocking the device.

Change-Id: Ia5cb1a368bcc8949ba224a8510f577450449f22e
2012-06-02 20:57:17 -07:00
Saurabh Shah
272e6ecb11 Fix heap corruption in overlay clients.
Fix heap corruption in overlay clients, caused by missing
compilation flags. All libraries using overlayLib.h should
have flags used for conditional member declaration in overlay.

CRs-fixed: 342959
(cherry picked from commit 42120b29500560ebedbd897e2e7adf7369eb0a21)

Change-Id: Idf613861c4dc67e96ecadf7ce7e37472cb4e4daf
2012-06-02 20:57:09 -07:00
Ricardo Cerqueira
87284fc92f hwcomposer: Let the external display header be overloaded
Individual devices may want a different header

Change-Id: Ic2d9524dc2dfc4ff76e0516ac7cd02432f9c95f6
2012-06-02 20:54:40 -07:00
Sushil Chauhan
574e446d42 libhwcomposer: Set bypass transition flag before invalidate()
Set flag to ensure HWComposer::invalidate() does not draw with
bypass still enabled. Also, log comp bypass transition due to
idle-timeout.

Change-Id: I3343d092a92c9677d0b9d50ced094c96d229474a
(cherry picked from commit f27aebd66249d165c0a3342abf4064a5dc350a6d)
2012-06-02 20:52:57 -07:00
Sudhir Sharma
7d978483ed libhwcomposer: Implement idletimeout fallback for MDP composition .
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
2012-06-02 20:52:29 -07:00