diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-12-17 04:11:34 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-01-09 02:21:44 +0300 |
commit | 1a4b7ee28bf7413af6513fb45ad0d0736048f866 (patch) | |
tree | 79f6d8ea698cab8f2eaf4f54b793d2ca7a1451ce /meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch | |
parent | 5b9ede0403237c7dace972affa65cf64a1aadd0e (diff) | |
download | openbmc-1a4b7ee28bf7413af6513fb45ad0d0736048f866.tar.xz |
reset upstream subtrees to yocto 2.6
Reset the following subtrees on thud HEAD:
poky: 87e3a9739d
meta-openembedded: 6094ae18c8
meta-security: 31dc4e7532
meta-raspberrypi: a48743dc36
meta-xilinx: c42016e2e6
Also re-apply backports that didn't make it into thud:
poky:
17726d0 systemd-systemctl-native: handle Install wildcards
meta-openembedded:
4321a5d libtinyxml2: update to 7.0.1
042f0a3 libcereal: Add native and nativesdk classes
e23284f libcereal: Allow empty package
030e8d4 rsyslog: curl-less build with fmhttp PACKAGECONFIG
179a1b9 gtest: update to 1.8.1
Squashed OpenBMC subtree compatibility updates:
meta-aspeed:
Brad Bishop (1):
aspeed: add yocto 2.6 compatibility
meta-ibm:
Brad Bishop (1):
ibm: prepare for yocto 2.6
meta-ingrasys:
Brad Bishop (1):
ingrasys: set layer compatibility to yocto 2.6
meta-openpower:
Brad Bishop (1):
openpower: set layer compatibility to yocto 2.6
meta-phosphor:
Brad Bishop (3):
phosphor: set layer compatibility to thud
phosphor: libgpg-error: drop patches
phosphor: react to fitimage artifact rename
Ed Tanous (4):
Dropbear: upgrade options for latest upgrade
yocto2.6: update openssl options
busybox: remove upstream watchdog patch
systemd: Rebase CONFIG_CGROUP_BPF patch
Change-Id: I7b1fe71cca880d0372a82d94b5fd785323e3a9e7
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch')
-rw-r--r-- | meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch b/meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch new file mode 100644 index 000000000..3052168c5 --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch @@ -0,0 +1,90 @@ +From 65f8bca55aead676cd06fc3210aeffef1f2158c6 Mon Sep 17 00:00:00 2001 +From: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com> +Date: Thu, 19 Jan 2017 18:56:07 +0000 +Subject: [PATCH 13/18] Implement triple buffering for wayland + +Change from double to triple buffering for wayland. +This enables higher frame rates without tearing artifacts +by allowing both the glFinish and the buffer release +interlock to operate without pushing the frame period +to two vertical intervals + +Signed-off-by: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + interface/khronos/egl/egl_client.c | 3 ++- + interface/khronos/egl/egl_client_surface.c | 8 ++++++++ + interface/khronos/egl/egl_client_surface.h | 11 +++++++++++ + 3 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c +index 13a110c..0380274 100644 +--- a/interface/khronos/egl/egl_client.c ++++ b/interface/khronos/egl/egl_client.c +@@ -2323,7 +2323,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf) + + buffer_temp = surface->front_wl_buffer; + surface->front_wl_buffer = surface->back_wl_buffer; +- surface->back_wl_buffer = buffer_temp; ++ surface->back_wl_buffer = surface->middle_wl_buffer; ++ surface->middle_wl_buffer = buffer_temp; + + configid = egl_config_to_id(surface->config); + color = egl_config_get_color_format(configid); +diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c +index 9a9582c..10b3b04 100644 +--- a/interface/khronos/egl/egl_client_surface.c ++++ b/interface/khronos/egl/egl_client_surface.c +@@ -402,12 +402,14 @@ EGL_SURFACE_T *egl_surface_create( + if (type == WINDOW && wl_display) { + surface->wl_egl_window = (struct wl_egl_window*)win; + surface->front_wl_buffer = NULL; ++ surface->middle_wl_buffer = NULL; + surface->back_wl_buffer = allocate_wl_buffer( + surface->wl_egl_window, color); + resource = surface->back_wl_buffer->resource; + } else { + surface->wl_egl_window = NULL; + surface->front_wl_buffer = NULL; ++ surface->middle_wl_buffer = NULL; + surface->back_wl_buffer = NULL; + resource = DISPMANX_NO_HANDLE; + } +@@ -696,6 +698,12 @@ void egl_surface_free(EGL_SURFACE_T *surface) + surface->back_wl_buffer = 0; + } + ++ if (surface->middle_wl_buffer) { ++ wl_buffer_destroy(surface->middle_wl_buffer->wl_buffer); ++ free(surface->middle_wl_buffer); ++ surface->middle_wl_buffer = 0; ++ } ++ + if (surface->front_wl_buffer) { + wl_buffer_destroy(surface->front_wl_buffer->wl_buffer); + free(surface->front_wl_buffer); +diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h +index e328b77..58a3184 100644 +--- a/interface/khronos/egl/egl_client_surface.h ++++ b/interface/khronos/egl/egl_client_surface.h +@@ -312,6 +312,17 @@ typedef struct { + */ + struct wl_dispmanx_client_buffer *front_wl_buffer; + ++ /* ++ middle_wl_buffer ++ ++ Validity: ++ type == WINDOW ++ ++ Invariant: ++ client-side information about the wl_buffer in the middle ++ */ ++ struct wl_dispmanx_client_buffer *middle_wl_buffer; ++ + /* + back_wl_buffer + +-- +2.19.1 + |