aboutsummaryrefslogtreecommitdiff
path: root/games/RetroArch
diff options
context:
space:
mode:
authorHunter Sezen <orbea@fredslev.dk>2018-12-07 22:32:12 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2018-12-07 22:32:12 +0700
commit9f21d197105c7608ee9ba9ff11355a5fc2cf562a (patch)
tree38b2fe1cb7c41d315ab7de810d5c06d44ed25fc4 /games/RetroArch
parent37255c73c2ed1a969fc34b9adc7c6d6bae737e45 (diff)
games/RetroArch: Fix KMS mode bug.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'games/RetroArch')
-rw-r--r--games/RetroArch/RetroArch.SlackBuild12
-rw-r--r--games/RetroArch/kms.patch65
2 files changed, 74 insertions, 3 deletions
diff --git a/games/RetroArch/RetroArch.SlackBuild b/games/RetroArch/RetroArch.SlackBuild
index 861886605d60c..892174ec358bd 100644
--- a/games/RetroArch/RetroArch.SlackBuild
+++ b/games/RetroArch/RetroArch.SlackBuild
@@ -24,7 +24,7 @@
PRGNAM=RetroArch
VERSION=${VERSION:-1.7.5}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@@ -123,6 +123,12 @@ sed -e "s|# audio_filter_dir =|audio_filter_dir = ${filter_dir}/audio|" \
-e "$SED_CORE;$SED_INFO;$SED_MENU" \
-i retroarch.cfg
+# Fix KMS with OpenGL.
+# https://github.com/libretro/RetroArch/commit/5898f3e5d22b930a1050a59b61e98ecd07dd6977
+# https://github.com/libretro/RetroArch/issues/7119
+# https://github.com/libretro/RetroArch/pull/7708
+patch -p1 < $CWD/kms.patch
+
# Set $lib to a portable array
eval "set -- $lib"
@@ -161,8 +167,8 @@ done
mv $PKG/etc/retroarch.cfg $PKG/etc/retroarch.cfg.new
if [ $DEBUG = 0 ]; then
- find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" |
+ grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
fi
find $PKG/usr/man -type f -exec gzip -9 {} \;
diff --git a/games/RetroArch/kms.patch b/games/RetroArch/kms.patch
new file mode 100644
index 0000000000000..28ebb1e15e43d
--- /dev/null
+++ b/games/RetroArch/kms.patch
@@ -0,0 +1,65 @@
+From 5898f3e5d22b930a1050a59b61e98ecd07dd6977 Mon Sep 17 00:00:00 2001
+From: orbea <orbea@fredslev.dk>
+Date: Thu, 6 Dec 2018 08:31:01 -0800
+Subject: [PATCH] Fix KMS with OpenGL.
+
+All credit for this patch goes to dtsarr.
+
+Fixes https://github.com/libretro/RetroArch/issues/7119
+---
+ gfx/common/egl_common.c | 41 ++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 40 insertions(+), 1 deletion(-)
+
+diff --git a/gfx/common/egl_common.c b/gfx/common/egl_common.c
+index f3c579af21..ee7bca84b6 100644
+--- a/gfx/common/egl_common.c
++++ b/gfx/common/egl_common.c
+@@ -329,8 +329,47 @@ bool egl_init_context(egl_ctx_data_t *egl,
+
+ RARCH_LOG("[EGL]: EGL version: %d.%d\n", *major, *minor);
+
+- if (!eglChooseConfig(egl->dpy, attrib_ptr, &egl->config, 1, n) || *n != 1)
++ EGLint count = 0;
++ EGLint matched = 0;
++ EGLConfig *configs;
++ int config_index = -1;
++
++ if (!eglGetConfigs(egl->dpy, NULL, 0, &count) || count < 1)
++ {
++ RARCH_ERR("[EGL]: No cofigs to choose from.\n");
++ return false;
++ }
++
++ configs = malloc(count * sizeof *configs);
++ if (!configs) return false;
++
++ if (!eglChooseConfig(egl->dpy, attrib_ptr, configs, count, &matched) || !matched)
++ {
++ RARCH_ERR("[EGL]: No EGL configs with appropriate attributes.\n");
+ return false;
++ }
++
++ int i;
++ EGLint id;
++
++ for (i = 0; i < count; ++i)
++ {
++ if (!eglGetConfigAttrib(egl->dpy, configs[i], EGL_NATIVE_VISUAL_ID, &id))
++ continue;
++
++ if (id == GBM_FORMAT_XRGB8888) break;
++ }
++
++ if (id != GBM_FORMAT_XRGB8888)
++ {
++ RARCH_ERR("[EGL]: No EGL configs with format XRGB8888\n");
++ return false;
++ }
++
++ config_index = i;
++ if (config_index != -1) egl->config = configs[config_index];
++
++ free(configs);
+
+ egl->major = g_egl_major;
+ egl->minor = g_egl_minor;