summaryrefslogtreecommitdiff
path: root/drmhwctwo.cpp
AgeCommit message (Collapse)Author
2018-06-21drm_hwcomposer: Avoid filling the log with warnings when test compositions failJohn Stultz
We frequently test compositions that might fail due to various reasons. On db820 we see: W HwcComposer: command 0x4010000 generated error 8 E hwc-drm-display-compositor: Alpha is not supported on plane 29 E hwc-drm-two: Failed to apply the frame composition ret=-22 over and over So to avoid filling the log with errors when those test compsitions don't work out, this patch tries to quiet down those error messages when we are doing test compositions. Change-Id: Iab19628bd7488c7d104e2c775310989bb59e140d Signed-off-by: John Stultz <john.stultz@linaro.org>
2018-06-14drm_hwcomposer: Set client composition buffer at the bottom.Alexandru Gheorghe
Currently, we allocate layers to device composition from bottom to top and save the last DrmPlane from the top to be used by the client target buffer. However, we don't know much about client layer, so information for layers which we decided to set as ClientComposition, will be lost. For example, in BlendMode case if we have the following scene, with 2 DrmPlanes available. z0: LAYER0 AR24 BlendNone. z1: LAYER1 AR24 BlendPremulti. z2: LAYER2 AR24 BlendPremulti. We decide: z0: LAYER0 DeviceComposition z1: LAYER1 ClientComposition z2: LAYER2 ClientComposition LAYER1+LAYER2 will be in client target buffer, but we don't know nothing about the blending for client_target_layer. Which Android actually expects to be still BlendPremulti. So, we are kind of stucked we the default value which is BlendNone. I think there are two ways to solve this issue: 1) This commit, allocate layers as DeviceComposition from top to bottom and save the bottom for ClientComposition. 2) A smarter logic for detecting what should be the actual properties of client_layer_target, but I still think it makes more sense to actually have the client_layer_target at the bottom. Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
2018-05-30drm_hwcomposer: Support assigning planes in ValidateDisplayRob Herring
In order to assign planes to layers in ValidateDisplay, testing compositing with a DRM atomic modeset test is needed as PresentDisplay is too late. This means most of PresentDisplay needs to be run from ValidateDisplay, so refactor PresentDisplay to a common function adding a test only option. Signed-off-by: Rob Herring <robh@kernel.org>
2018-05-30drm_hwcomposer: Remove GL compositing supportRob Herring
The GL based compositing adds alot of complexity and was only ever well tested on closed stacks. It also only supports GLES3.x and still relies on sw_sync timeline which is now a debugfs feature. Those are just the known issues. Removing the GL compositor means everything related to squashing layers and pre-compositing can be removed. The planner is left as it may be useful when adding back support for overlay planes. With this change, only a single plane is supported until ValidateDisplay learns to do atomic modesetting test for overlay planes. Tested-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Rob Herring <robh@kernel.org>
2018-05-30Revert "drm_hwcomposer: Fall back to client compositon if the gl ↵Rob Herring
precompostior fails" This reverts commit acc4dcf1787b9fc43c5748ce06e79f045e07a3ff.
2018-05-17drm_hwcomposer: Remove gralloc from generic codeAndrii Chepurnyi
Clean up direct gralloc usage from generic code. Because of gralloc0/gralloc1 difference, it should be only used by platform* part. Signed-off-by: Andrii Chepurnyi <andrii_chepurnyi@epam.com>
2018-05-17drm_hwcomposer: Use GraphicBufferMapper for copy buffer handleAndrii Chepurnyi
Due to gralloc0/gralloc1 API incompatibility(register/unregister vs retain/release) it is preferred to use generic GraphicBufferMapper API for copy buffer handle. It will use an appropriate adapter for the present version of gralloc. For the reference: hardware/interfaces/graphics/mapper Change-Id: Ia4740ed3b2ffd43fa3c107eb22d792eaabd4df40 Signed-off-by: Andrii Chepurnyi <andrii_chepurnyi@epam.com>
2018-05-04drm_hwcomposer: Use 16 bit value for plane alphaStefan Schake
The upstream version of the alpha property uses 16 bits to make it future proof. Since HWC2 already passes in a float expand our internal representation instead of just shifting for DRM. Signed-off-by: Stefan Schake <stschake@gmail.com>
2018-04-27drm_hwcomposer: Fall back to client compositon if the gl precompostior failsJohn Stultz
If the gl precompositor isn't being used, we cannot accept every layer as a device composited layer. Thus this patch adds some extra logic in the validate function to fall back to client side compositing if the gl precompositor did not initialize properly. This does force everything to a single plane even if we have a few available, but a deeper rework of the validate step planning is needed before we can reliably make use of them. Credit to Rob Herring, who's single plane patch was what this was originally based on. Cc: Marissa Wall <marissaw@google.com> Cc: Sean Paul <seanpaul@google.com> Cc: Dmitry Shmidt <dimitrysh@google.com> Cc: Robert Foss <robert.foss@collabora.com> Cc: Matt Szczesiak <matt.szczesiak@arm.com> Cc: Liviu Dudau <Liviu.Dudau@arm.com> Cc: David Hanna <david.hanna11@gmail.com> Cc: Rob Herring <rob.herring@linaro.org> Cc: Alexandru-Cosmin Gheorghe <Alexandru-Cosmin.Gheorghe@arm.com> Cc: Alistair Strachan <astrachan@google.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: John Stultz <john.stultz@linaro.org>
2018-04-27drm_hwcomposer: Use log/log.h instead of cutils/log.hJohn Stultz
When enabling Treble, Android builds are complaining about using cutils/log.h so instead use log/log.h Cc: Marissa Wall <marissaw@google.com> Cc: Sean Paul <seanpaul@google.com> Cc: Dmitry Shmidt <dimitrysh@google.com> Cc: Robert Foss <robert.foss@collabora.com> Cc: Matt Szczesiak <matt.szczesiak@arm.com> Cc: Liviu Dudau <Liviu.Dudau@arm.com> Cc: David Hanna <david.hanna11@gmail.com> Cc: Rob Herring <rob.herring@linaro.org> Cc: Alexandru-Cosmin Gheorghe <Alexandru-Cosmin.Gheorghe@arm.com> Cc: Alistair Strachan <astrachan@google.com> Signed-off-by: John Stultz <john.stultz@linaro.org>
2017-11-30drm_hwcomposer: fix warnings on unused variables and parametersRob Herring
AOSP master now builds by default with -Werror, so fix all the warnings. All the warnings are related to unused variables and parameters. Reviewed-by: Robert Foss <robert.foss@collabora.com> Signed-off-by: Rob Herring <robh@kernel.org>
2017-10-09drm_hwcomposer: fix return values for ValidateDisplayRob Herring
According to the API documentation, if we've set num_types, then the return value should be HWC2::Error::HasChanges. Signed-off-by: Rob Herring <robh@kernel.org>
2017-09-28drm_hwcomposer: Remove threadingSean Paul
Since HWC2 doesn't require the use of threads to implement correct synchronization, remove some of these threads. Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Robert Foss <robert.foss@collabora.com>
2017-09-28drm_hwcomposer: Add out-fence supportRobert Foss
Add support for out-fences through the OUT_FENCE_PTR property. Out-fences signal when their associated buffer may be read by a device. Signed-off-by: Robert Foss <robert.foss@collabora.com> Reviewed-by: Sean Paul <seanpaul@chromium.org>
2017-05-04Merge "drm_hwcomposer: Add support for GetColorModes & SetCursorPosition"Sean Paul
2017-04-25drm_hwcomposer: refactor WorkerAdrian Salido
Make use of standard library mutex and conditions which simplifies use of condition variables and benefits from things like scoped locking. Also add tests to make sure it runs as expected. Change-Id: Iaf92e17e1f6757dce490eddee61f84cb1f953b0c
2017-04-25drm_hwcomposer: Add support for GetColorModes & SetCursorPositionKalyan Kondapally
For now we just return HAL_COLOR_MODE_NATIVE and store cursor position. BUG=None. TEST=None. Change-Id: Id6a7e157dbd9fc41fc53c0e33a6eb523632b9b7a Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com>
2017-04-13drm_hwcomposer: Partially implement HWC2 APISean Paul
Implement the HWC2 API for drm_hwcomposer. There are still a few TODOs sprinkled around, the biggest of which is virtual display support. Signed-off-by: Sean Paul <seanpaul@chromium.org> Change-Id: Ib3d48dabce1941b341d5a966d767baab8db1db10 Signed-off-by: Robert Foss <robert.foss@collabora.com>
2017-04-13drm_hwcomposer: Initial stub HWC2Sean Paul
This patch adds the HWC2 interface to drm_hwc, and stubs out all functionality. Change-Id: I65b09e7266e887dd184c0c345016d5a768f6349a Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Robert Foss <robert.foss@collabora.com>