Commit d0c95aba authored by Mark Yacoub's avatar Mark Yacoub Committed by Commit Bot

Set ROTATE_0 bit when setting drm reflection values

- The kernel expects a rotation bit set even when a flip is required.
Set ROTATE_0 bit as well when flipping horizontally or vertically.

- Remove old ROTATE defines and use values from libdrm.

BUG=1015433
TEST=Krane gets overlay

Change-Id: Ia473bc3dee915c0b0fe5f13d8333738d7a14b7ef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1894156
Commit-Queue: Mark Yacoub <markyacoub@google.com>
Reviewed-by: default avatarDaniele Castagna <dcastagna@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712740}
parent 661a9631
......@@ -10,32 +10,21 @@
namespace ui {
namespace {
// TODO(dcastagna): Remove the following defines once they're in libdrm headers.
#if !defined(DRM_ROTATE_0)
#define BIT(n) (1 << (n))
#define DRM_ROTATE_0 BIT(0)
#define DRM_ROTATE_90 BIT(1)
#define DRM_ROTATE_180 BIT(2)
#define DRM_ROTATE_270 BIT(3)
#define DRM_REFLECT_X BIT(4)
#define DRM_REFLECT_Y BIT(5)
#endif
uint32_t OverlayTransformToDrmRotationPropertyValue(
gfx::OverlayTransform transform) {
switch (transform) {
case gfx::OVERLAY_TRANSFORM_NONE:
return DRM_ROTATE_0;
return DRM_MODE_ROTATE_0;
case gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL:
return DRM_REFLECT_X;
return DRM_MODE_REFLECT_X | DRM_MODE_ROTATE_0;
case gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL:
return DRM_REFLECT_Y;
return DRM_MODE_REFLECT_Y | DRM_MODE_ROTATE_0;
case gfx::OVERLAY_TRANSFORM_ROTATE_90:
return DRM_ROTATE_90;
return DRM_MODE_ROTATE_90;
case gfx::OVERLAY_TRANSFORM_ROTATE_180:
return DRM_ROTATE_180;
return DRM_MODE_ROTATE_180;
case gfx::OVERLAY_TRANSFORM_ROTATE_270:
return DRM_ROTATE_270;
return DRM_MODE_ROTATE_270;
default:
NOTREACHED();
}
......@@ -60,7 +49,7 @@ bool IsRotationTransformSupported(gfx::OverlayTransform transform) {
HardwareDisplayPlaneAtomic::HardwareDisplayPlaneAtomic(uint32_t id)
: HardwareDisplayPlane(id) {}
HardwareDisplayPlaneAtomic::~HardwareDisplayPlaneAtomic() {}
HardwareDisplayPlaneAtomic::~HardwareDisplayPlaneAtomic() = default;
bool HardwareDisplayPlaneAtomic::Initialize(DrmDevice* drm) {
if (!HardwareDisplayPlane::Initialize(drm))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment