Commit graph

14 commits

Author SHA1 Message Date
David Edmundson
3dc22d7d88 [platforms/hwcomposer] Add scaling support
Summary:
Despite plasma frameworks doing it's own scaling with fonts, it's been
requested to use kwin/wayland scaling.

Like DRM, when kscreen is not used, scale value is loaded from a config
file.

Config format is
[HWComposerOutputs][0]
Scale=N

The 0 is to map similarly to DRM and support multi-screen, but with a
screen index
rather than a UUID based on EDID.

Because we don't support multi screen this is always 0 for now.

Test Plan: Ran with the config value unset and with the config value at
Scale=3.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: bshah, romangg, nicolasfella, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18810
2019-02-22 00:47:08 +00:00
David Edmundson
062dfefafe [platforms/hwcomposer] Port to AbstractOutput
Summary:
This gives us XdgOutput support a requirement now that wayland server
reports that we support it and Qt5.12 then expects it to be sent.

It also provides an easy starting point for supporting wayland scaling
and a slight step towards multi-output.

Test Plan:
Ran on phone. Got output. Turning screen on and off works.
The double tap doesn't work great, but that was true before
(via bshah's hack to build on the current state)

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, nicolasfella, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18808
2019-02-20 13:20:02 +00:00
Bhushan Shah
48590783fa [platforms/hwcomposer] Set value of surfaceDamage.numRects to 0
Newer hwcomposer implementation seem to require this. This additional
fix is required in addition to 54565a94bd for newer hwcomposer
interface.
2017-11-02 10:21:37 +05:30
Bhushan Shah
54565a94bd [platforms/hwcomposer] Few fixes for hwcomposer platforms
Summary:
- Actually use double layered compositing, previously both layers were
of type HWC_FRAMEBUFFER, instead of 2nd layer being
HWC_FRAMEBUFFER_TARGET. Thanks to @NotKit on telegram for pointing this
out.

- Use sourceCropf instead of sourceCrop, as sourceCrop is legacy option.

Test Plan: have to test on actual device, but test_hwcomposer does have similar code.

Reviewers: #plasma, graesslin

Reviewed By: #plasma, graesslin

Subscribers: plasma-devel, kwin, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D8587
2017-11-01 13:32:33 +05:30
Bhushan Shah
8729ff25c9 [platforms/hwcomposer] Make createOutput a non-static method
Summary:
there is no need for createOutput to be static, make it non-static,
this also fixes the build failure introduced in commit
02d3daf28a.

Test Plan: builds

Reviewers: #kwin, graesslin, davidedmundson

Reviewed By: davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D8430
2017-10-23 13:42:26 +05:30
Martin Flöser
02d3daf28a Add physicalSize to the Screens API
Summary:
Allows to share the implementation in a better way and is a requirement
to get the Screen implementation in the QPA plugin to be based on
KWin::Screens instead of KWayland::Output.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D8344
2017-10-19 18:02:32 +02:00
Martin Gräßlin
5ab7b7e41e Fix typo 2017-01-02 20:13:30 +01:00
Bhushan Shah
62b4517f1d [platforms/hwcomposer] Use enum instead of the number for readable code
Summary: Enums taken from hardware/hwcomposer_defs.h header file

Test Plan: builds

Reviewers: #kwin, graesslin, mart

Reviewed By: mart

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D3699
2016-12-16 14:49:29 +05:30
Bhushan Shah
71b6ebcfef [platforms/hwcomposer] Fix indent to use space instead of tab
GIT_SILENT
2016-12-16 10:18:05 +05:30
Bhushan Shah
f906e21f3d [platforms/hwcomposer] Support for hwcomposer 1.4 and 1.5 version
Summary:
HWcomposer version 1.4 introduced setPowerMode, which replaces the
blank(). This adds support for it. There are various code paths
possible,

- If KWin is built against hwcomposer 1.3 headers, then setPowerMode
code is not compiled in, and it will use blank to turn display off.

- If KWin is built against hwcomposer 1.4 headers, it will have
setPowerMode code path compiled in. It will be used only on devices with
1.4 and 1.5 version of hwcomposer.

This is slightly insane, because Android can report hwcomposer 1.5 even
when headers are of 1.4 version..

Test Plan: Tested this on Nexus 5X which reports 1.5 version of hwcomposer

Reviewers: graesslin, #plasma

Reviewed By: graesslin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D3686
2016-12-16 09:22:48 +05:30
Bhushan Shah
c04e764369 [platforms/hwcomposer] Reset old brightness when turning screen back on
Summary:
Now powerdevil can adjust brightness using leds subsystem, however, kwin
as well sets brightness to 0 for turning off screen and 0xff when
turning screen back on. This resets the brightness set by the powerdevil
to 100%.

As a solution now kwin listens to brightnessChanged dbus signal of
brightnesscontrol and book-keeps the changed brightness, if screen is
turned off it sets brightness to 0 and when turning screen on, it resets
to old brightness.

If powermanagement service doesn't appear on dbus by default it restores
100% brightness.

Test Plan:
Appearantly this still doesn't work as-it-is on phone, because powerdevil
doesn't emit brightnessChanged dbus signal because of bug in the driver of
backlight control, driver doesn't seem to trigger uevents for changes in
backlight. But with hack in powerdevil to emit brightnessChanged when setting
brightness, this works

Reviewers: broulik, #plasma_on_wayland, graesslin

Reviewed By: #plasma_on_wayland, graesslin

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2468
2016-08-17 16:47:37 +05:30
Martin Gräßlin
a95be71ec1 [plugins/hwcomposer] Use an RGBA_8888 format for rendering surface
Summary:
When sharing surface and config used by the compositor scene with
QtQuick's OpenGL context an RGBA surface makes Qt way more happy.

Reviewers: #kwin, #plasma_on_wayland

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2232
2016-07-20 13:51:46 +02:00
Martin Gräßlin
64f7de4024 [platforms/hwcomposer] Remove integration with VirtualTerminal
The hwcomposer plugin doesn't need it. It was only created for the
need of libinput relying on it. As libinput doesn't need it any more,
hwcomposer doesn't need to integrate with VirtualTerminal.

Reviewers: #plasma

Subscribers: plasma-devel

Projects: #plasma

Differential Revision: https://phabricator.kde.org/D1444
2016-04-22 14:18:56 +02:00
Martin Gräßlin
2bff90976e Move backends/ to plugins/platforms/
Summary:
Source code reorganization:
The base class AbstractBackend got renamed to Platform, thus the
"backends" are "platforms" now. As they are plugins they should go
together with other KWin plugins which are nowadays in the folder
plugins.

So new location is plugins/platforms/

Reviewers: #plasma, sebas

Subscribers: plasma-devel

Projects: #plasma

Differential Revision: https://phabricator.kde.org/D1353
2016-04-12 08:01:27 +02:00
Renamed from backends/hwcomposer/hwcomposer_backend.cpp (Browse further)