718 Commits

Author SHA1 Message Date
Ahsan Fayaz
616dca659a Update version to 1.5.1 1.5.1 2020-03-03 16:18:48 +00:00
Stephan Lachnit
d3e309b23b use upstream inih r48
Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2020-03-03 14:38:35 +00:00
seb128
1a598f53d2 Don't default to syslog logging
Let the preferred/configured logging system to be used instead
2020-02-26 18:26:09 +00:00
Stephan Lachnit
f0943ff431 prefer system installation of inih
Closes #195.

Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2020-02-26 18:24:50 +00:00
Ahsan Fayaz
065454bb4e Update version to 1.6 post-release 2020-01-22 14:51:00 +00:00
Ahsan Fayaz
d58c59c183 Update version to 1.5 1.5 2020-01-22 14:19:26 +00:00
afayaz-feral
9d34caa1fa Merge pull request #186 from xcom169/patch-1
Add SotTR
2020-01-13 12:12:13 +00:00
xcom169
c2846f4a77 Add SotTR
Add SotTR game to gamemode.
2020-01-12 12:04:02 +01:00
Ahsan Fayaz
78b326adb6 Update copyright year to 2020. 2020-01-10 17:37:35 +00:00
afayaz-feral
1576c2b39e Merge pull request #179 from jekstrand/igpu
Add an option for using a different governor for integrated GPUs
2020-01-10 10:12:26 +00:00
Jason Ekstrand
79d0c64ef1 Add systemctl try-restart polkit to bootstrap.sh
This makes it more properly install things so that you don't get the
nasty pkexec pop-ups with dev builds.
2020-01-09 11:11:22 -06:00
Jason Ekstrand
688373a260 Add an option for using a different governor for integrated GPUs
This commit adds two new configuration options: igpu_desiredgov and
igpu_power_threshold which allow for a different CPU governor when the
Intel integrated GPU is under load.  This currently only applies to
Intel integrated GPUs and not AMD APUs because it uses the Intel RAPL
infrastructure for getting power information.  If on a platform that
without an Intel integrated GPU or where the kernel does not support
RAPL, the new options will be ignored and it will fall back to the old
behavior.

One of the core principals of gamemoded to date has been that, when
playing a game, we want to use the "performance" CPU governor to
increase CPU performance and prevent CPU-limiting.  However, when the
integrated GPU is under load, this can be counter-productive because the
CPU and GPU share a thermal and power budget.  By throwing the CPU
governor to "performance" game mode currently makes the CPU frequency
management far too aggressive and it burns more power than needed.  With
a discrete GPU, this is fine because the worst that happens is a bit
more fan noise.  With an integrated GPU, however, the additional power
being burned by the CPU is power not available to the GPU and this can
cause the GPU to clock down and lead to significantly worse performance.

By using the "powersave" governor instead of the "performance" governor
while the integrated GPU is under load, we can save power on the CPU
side which lets the GPU clock up higher.  On my Razer Blade Stealth 13
with an i7-1065G7, this improves the performance of "Shadow of the Tomb
Raider" by around 25-30% according to its internal benchmark mode.
2020-01-09 10:49:19 -06:00
Jason Ekstrand
c1646ecdd9 Add helpers for getting RAPL power data from Intel CPUs 2020-01-09 10:49:19 -06:00
Jason Ekstrand
2023a2a1ef Move the get/set governor state machine to a helper 2020-01-09 10:41:10 -06:00
Ahsan Fayaz
8b8113fb80 Stick to meson version 0.52.0. Version 0.53.0 has compatibility issues with python 3.5.2 which is shipped with Ubuntu 16.04. Better stick to a specific version and only update after checking compatibility. See mesonbuild/meson#6427. 2020-01-09 15:03:47 +00:00
Alex Smith
57efe440c3 clang-format fix 2019-10-22 12:41:37 +01:00
Alex Smith
b2b09fbb83 Run "sleep 5" instead of "sh" for the gamemoderun test
Don't really want to try to run an interactive shell here.
2019-10-22 12:36:59 +01:00
Alex Smith
d25379e001 Increase a test timeout to avoid spurious failures 2019-10-22 12:31:53 +01:00
Alex Smith
514ab58be3 Merge pull request #173 from gicmo/pidfds
Introduce a new pidfd based set of D-Bus APIs
2019-10-22 12:31:00 +01:00
Christian Kellner
6f7df91b60 lib: support the new pidfd based APIs
Try to make API requests using the new pidfd based APIs. If getting
the pidfds fails or if the remote (daemon) does not support the new
pidfd based D-Bus API, transparently fall back to the old API.
2019-10-21 16:20:22 +02:00
Christian Kellner
b84d673aae meson: reorder lib and common subdir
So that lib can depend on the new library from common.
2019-10-18 13:19:30 +02:00
Christian Kellner
cd6c2ee612 common: create another lib tailored for the client
Use a small subset of the existing common files to create another
static library to be used from the client library.
2019-10-18 13:19:30 +02:00
Christian Kellner
a6552044cd daemon: add new pidfd based D-Bus API
Provide a new set of APIs with identical semantics as the existing
ByPID family of calls but instead of working with process ids, they
take pidfds, file descriptors representing processes, instead. The
fds can be translated back to pids (in the correct namespace) and
also be monitored via select/poll/epoll.
The current implementation translates them directly back to pids,
but in the future the monitoring code that watches processes (if
they are still alive) could be converted be event driven via pidfds.
2019-10-18 13:19:30 +02:00
Christian Kellner
5398dd1d19 common: add pidfd related methods
Add functions to open pidfds, i.e. file descriptors representing
processes, for process ids and vice versa. Both functions work
an array of fds/pids, stop on error and return the number of
successfully handled items.
2019-10-18 13:19:30 +02:00
Christian Kellner
4b59818fd4 common: add autofree helper
Much like the auto-closing helper for file descriptors, add a new
auto-free helper that is meant to be used with dynamically allocated
memory, a la:
  autofree char *data = NULL;
  ...
  data = malloc(size);
When data goes out of scope, cleanup_free will be called with &data,
i.e. cleanup_free(&data), which in turn will call free(3) data. In
order to work with all types, e.g. 'char *' (resulting in char **
being passed to cleanup_free) or 'int *' (resulting in int ** being
passed to cleanup_free), cleanup_free is defined to work with void *,
hence the odd-looking cast: void *target = *(void **) ptr.
2019-10-18 13:19:30 +02:00
Christian Kellner
35fb7f5baf meson: include dir in daemon_common dependency
Specify the include directory in the link_daemon_common dependency
and thus everything that includes that as a dependency will get
the proper include directory automatically.
2019-10-18 13:19:30 +02:00
Christian Kellner
b7dc1dc10c daemon: small fix for code comments
Comments were not reflecting the what they were describing.
2019-10-18 13:19:30 +02:00
Christian Kellner
b513bc65ae lib: extract dbus messaging code
Separate the D-Bus messaging code from gamemode_request().
2019-10-18 13:19:30 +02:00
Christian Kellner
f6220a2d6e lib: do flatpak check only once
Either we are in a flatpak or not, this doesn't change, so we can
just remember the result.
2019-10-18 13:19:30 +02:00
Kai Krakow
24f054659c gamemode-context: Avoid GameModeClient *cl being NULL
There's no need in defining it at the top of the function. During
rebase, I had one `if` accessing `cl->executable` too early but we were
only storing the path in `executable` at that point.

This change avoids accessing `cl` while it might be NULL.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2019-10-18 09:42:06 +01:00
Alex Smith
0668e3b4da Change Lutris instructions to say that it will enable GameMode by default when available 2019-08-12 08:40:53 +01:00
Alex Smith
30ae8d71f0 Adjust install prompt
Now reads: "Install to $prefix? [y/N]" to indicate that the default
choice if pressing enter without any extra input will be no. Suggested
by #169.
2019-08-11 10:14:46 +01:00
Alex Smith
509ae3593a Merge pull request #165 from Aurnytoraink/patch-1
Add Lutris instructions
2019-08-11 10:00:30 +01:00
Alex Smith
5add7f41b3 Merge pull request #168 from highvoltage/master
Fix typo s/Coudn't/Couldn't/g
2019-08-11 09:57:29 +01:00
Jonathan Carter
8182edc048 Fix typo s/Coudn't/Couldn't/g 2019-08-05 09:50:32 +00:00
Mathieu H
86473bea0a Add Lutris instructions 2019-07-29 16:41:07 +02:00
Alex Smith
711e5e9995 Merge pull request #163 from akien-mga/mageia-package
Mention Mageia package in README
2019-07-22 14:45:45 +01:00
Rémi Verschelde
33f8be9557 Mention Mageia package in README
http://madb.mageia.org/package/show/application/0/name/gamemode
2019-07-21 13:19:21 +02:00
Alex Smith
24687f960b Update version to 1.5-dev post-release 2019-07-21 10:39:11 +01:00
Alex Smith
acb57735fc Update version to 1.4 1.4 2019-07-21 10:24:18 +01:00
Christian Kellner
5c1b2d0c74 daemon: export GameModeClient::Requester on D-Bus
Expose the requeter process identifier as 'Requester' property
of the com.feralinteractive.GameMode.Game interface.
2019-07-16 19:00:35 +01:00
Christian Kellner
cfe0fb4f17 daemon: add requester to GameModeClient
Record the requester process id in the GameModeClient struct and
add a getter for it.
2019-07-16 19:00:33 +01:00
Christian Kellner
288b3a005e daemon: export GameModeClient::Timestamp on D-Bus
Expose the timestamp that a client was created as 'Timestamp'
property of the com.feralinteractive.GameMode.Game interface.
2019-07-16 18:59:44 +01:00
Christian Kellner
52367772c8 daemon: add creation timestamp to GameModeClient
Record the time a client was created, i.e. registered, in the
GameModeClient struct and add a getter for it.

(Alex Smith: Fixed up function documentation comments)
2019-07-16 18:59:01 +01:00
Christian Kellner
6f39ecbc9b meson: display util building status
We show the status for examples & daemon, also show it for 'util'.
2019-07-16 18:58:11 +01:00
Alex Smith
ffea085396 Follow up improvements to documentation for GAMEMODERUNEXEC 2019-07-16 08:17:35 +01:00
Stephan Lachnit
47db83e509 Add hybrid GPU support
Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2019-07-14 16:45:33 +02:00
Alex Smith
c7c464bea6 Merge pull request #158 from gicmo/objs_fix
daemon: properly report error in error case
2019-07-13 09:57:25 +01:00
Alex Smith
c6d1b45bfb Use the appropriate library path for whether the app is 32- or 64-bit in gamemoderun (#156) 2019-07-13 09:50:25 +01:00
Christian Kellner
9075829526 daemon: fix typo in Game.Executable dbus property
Fix spelling for the 'Executable' property in the interface
com.feralinteractive.GameMode.Game.
2019-07-12 17:01:01 +02:00