mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
extra/mesa to 17.3.2-2
This commit is contained in:
parent
6d155da720
commit
0770032485
2 changed files with 81 additions and 2 deletions
|
@ -0,0 +1,74 @@
|
|||
From 897c54d522ab960a879b763a15e489f630c491ee Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Hellstrom <thellstrom@vmware.com>
|
||||
Date: Thu, 11 Jan 2018 10:19:23 +0100
|
||||
Subject: [PATCH] loader/dri3: Avoid freeing renderbuffers in use
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Upon reception of an event that lowered the number of active back buffers,
|
||||
the code would immediately try to free all back buffers with an id equal to or
|
||||
higher than the new number of active back buffers.
|
||||
|
||||
However, that could lead to an active or to-be-active back buffer being freed,
|
||||
since the old number of back buffers was used when obtaining an idle back
|
||||
buffer for use.
|
||||
|
||||
This lead to crashes when lowering the number of active back buffers by
|
||||
transitioning from page-flipping to non-page-flipping presents.
|
||||
|
||||
Fix this by computing the number of active back buffers only when trying to
|
||||
obtain a new back buffer.
|
||||
|
||||
Fixes: 15e208c4cc ("loader/dri3: Don't accidently free buffer holding new back content")
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104214
|
||||
Cc: "17.3" <mesa-stable@lists.freedesktop.org>
|
||||
Tested-by: Andriy.Khulap <andriy.khulap@globallogic.com>
|
||||
Tested-by: Vadym Shovkoplias <vadym.shovkoplias@globallogic.com>
|
||||
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
|
||||
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
|
||||
---
|
||||
src/loader/loader_dri3_helper.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
|
||||
index cc890bc923..8f8efcb646 100644
|
||||
--- a/src/loader/loader_dri3_helper.c
|
||||
+++ b/src/loader/loader_dri3_helper.c
|
||||
@@ -205,7 +205,6 @@ void
|
||||
loader_dri3_set_swap_interval(struct loader_dri3_drawable *draw, int interval)
|
||||
{
|
||||
draw->swap_interval = interval;
|
||||
- dri3_update_num_back(draw);
|
||||
}
|
||||
|
||||
/** dri3_free_render_buffer
|
||||
@@ -377,7 +376,6 @@ dri3_handle_present_event(struct loader_dri3_drawable *draw,
|
||||
draw->flipping = false;
|
||||
break;
|
||||
}
|
||||
- dri3_update_num_back(draw);
|
||||
|
||||
if (draw->vtable->show_fps)
|
||||
draw->vtable->show_fps(draw, ce->ust);
|
||||
@@ -402,7 +400,8 @@ dri3_handle_present_event(struct loader_dri3_drawable *draw,
|
||||
buf->busy = 0;
|
||||
|
||||
if (buf && draw->num_back <= b && b < LOADER_DRI3_MAX_BACK &&
|
||||
- draw->cur_blit_source != b) {
|
||||
+ draw->cur_blit_source != b &&
|
||||
+ !buf->busy) {
|
||||
dri3_free_render_buffer(draw, buf);
|
||||
draw->buffers[b] = NULL;
|
||||
}
|
||||
@@ -537,6 +536,7 @@ dri3_find_back(struct loader_dri3_drawable *draw)
|
||||
/* Check whether we need to reuse the current back buffer as new back.
|
||||
* In that case, wait until it's not busy anymore.
|
||||
*/
|
||||
+ dri3_update_num_back(draw);
|
||||
num_to_consider = draw->num_back;
|
||||
if (!loader_dri3_have_image_blit(draw) && draw->cur_blit_source != -1) {
|
||||
num_to_consider = 1;
|
||||
--
|
||||
2.15.1
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
pkgbase=mesa
|
||||
pkgname=('mesa' 'libva-mesa-driver')
|
||||
pkgver=17.3.1
|
||||
pkgver=17.3.2
|
||||
pkgrel=2
|
||||
arch=('x86_64')
|
||||
makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto'
|
||||
|
@ -17,10 +17,12 @@ url="https://www.mesa3d.org/"
|
|||
license=('custom')
|
||||
source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
|
||||
LICENSE
|
||||
0001-loader-dri3-Avoid-freeing-renderbuffers-in-use.patch
|
||||
0002-glvnd-fix-gl-dot-pc.patch)
|
||||
sha256sums=('9ae607e0998a586fb2c866cfc8e45e6f52d1c56cb1b41288253ea83eada824c1'
|
||||
sha256sums=('e2844a13f2d6f8f24bee65804a51c42d8dc6ae9c36cff7ee61d0940e796d64c6'
|
||||
'SKIP'
|
||||
'7fdc119cf53c8ca65396ea73f6d10af641ba41ea1dd2bd44a824726e01c8b3f2'
|
||||
'777a5cf59eefc51fb89d60e3f6a47a7b974b794d309f6532ab107c36cd0bad19'
|
||||
'64a77944a28026b066c1682c7258d02289d257b24b6f173a9f7580c48beed966')
|
||||
validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov@gmail.com>
|
||||
validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # Andres Gomez <tanty@igalia.com>
|
||||
|
@ -29,6 +31,9 @@ validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suáre
|
|||
prepare() {
|
||||
cd ${srcdir}/mesa-${pkgver}
|
||||
|
||||
# https://bugs.freedesktop.org/show_bug.cgi?id=104214
|
||||
patch -Np1 -i ../0001-loader-dri3-Avoid-freeing-renderbuffers-in-use.patch
|
||||
|
||||
# glvnd support patches - from Fedora
|
||||
# non-upstreamed ones
|
||||
patch -Np1 -i ../0002-glvnd-fix-gl-dot-pc.patch
|
||||
|
|
Loading…
Reference in a new issue