- Update to version 19.2.0 including changes to
* release-infastructure * the build * drivers: turnip, radv, android, intel and amd common code * new features: check Phoronix https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.2-Released - supersedes U_llvmpipe-Don-t-use-u_ringbuffer-for-lp_scene_queue.patch - adjusted n_drirc-disable-rgb10-for-chromium-on-amd.patch - supersedes n_glesv1_cm-glesv2.patch OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=877
This commit is contained in:
parent
9a69166f41
commit
a9aed9c539
@ -1,3 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 30 09:02:03 UTC 2019 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- Update to version 19.2.0 including changes to
|
||||
* release-infastructure
|
||||
* the build
|
||||
* drivers: turnip, radv, android, intel and amd common code
|
||||
* new features: check Phoronix
|
||||
https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.2-Released
|
||||
- supersedes U_llvmpipe-Don-t-use-u_ringbuffer-for-lp_scene_queue.patch
|
||||
- adjusted n_drirc-disable-rgb10-for-chromium-on-amd.patch
|
||||
- supersedes n_glesv1_cm-glesv2.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Sep 28 13:42:30 UTC 2019 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
%define glamor 1
|
||||
%define _name_archive mesa
|
||||
%define _version 19.1.7
|
||||
%define _version 19.2.0
|
||||
%define with_opencl 0
|
||||
%define with_vulkan 0
|
||||
%define with_llvm 0
|
||||
@ -110,7 +110,7 @@
|
||||
%endif
|
||||
|
||||
Name: Mesa-drivers
|
||||
Version: 19.1.7
|
||||
Version: 19.2.0
|
||||
Release: 0
|
||||
Summary: System for rendering 3-D graphics
|
||||
License: MIT
|
||||
@ -124,12 +124,10 @@ Source3: README.updates
|
||||
Source4: manual-pages.tar.bz2
|
||||
Source6: %{name}-rpmlintrc
|
||||
Source7: Mesa.keyring
|
||||
Patch0: U_llvmpipe-Don-t-use-u_ringbuffer-for-lp_scene_queue.patch
|
||||
Patch1: n_opencl_dep_libclang.patch
|
||||
# never to be upstreamed
|
||||
Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch
|
||||
Patch58: u_dep_xcb.patch
|
||||
Patch60: n_glesv1_cm-glesv2.patch
|
||||
|
||||
BuildRequires: bison
|
||||
BuildRequires: fdupes
|
||||
@ -724,7 +722,6 @@ programs against the XA state tracker.
|
||||
# remove some docs
|
||||
rm -rf docs/README.{VMS,WIN32,OS2}
|
||||
|
||||
%patch0 -p1
|
||||
%if 0%{with_llvm}
|
||||
if test $(llvm-config --version | cut -d "." -f1) -ge 9; then
|
||||
%patch1 -p1
|
||||
@ -732,7 +729,6 @@ fi
|
||||
%endif
|
||||
%patch54 -p1
|
||||
%patch58 -p1
|
||||
%patch60 -p1
|
||||
|
||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||
# disabling libglvnd build; ugly ...
|
||||
|
13
Mesa.changes
13
Mesa.changes
@ -1,3 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 30 09:02:03 UTC 2019 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- Update to version 19.2.0 including changes to
|
||||
* release-infastructure
|
||||
* the build
|
||||
* drivers: turnip, radv, android, intel and amd common code
|
||||
* new features: check Phoronix
|
||||
https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.2-Released
|
||||
- supersedes U_llvmpipe-Don-t-use-u_ringbuffer-for-lp_scene_queue.patch
|
||||
- adjusted n_drirc-disable-rgb10-for-chromium-on-amd.patch
|
||||
- supersedes n_glesv1_cm-glesv2.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Sep 28 13:42:30 UTC 2019 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
|
||||
%define glamor 1
|
||||
%define _name_archive mesa
|
||||
%define _version 19.1.7
|
||||
%define _version 19.2.0
|
||||
%define with_opencl 0
|
||||
%define with_vulkan 0
|
||||
%define with_llvm 0
|
||||
@ -109,7 +109,7 @@
|
||||
%endif
|
||||
|
||||
Name: Mesa
|
||||
Version: 19.1.7
|
||||
Version: 19.2.0
|
||||
Release: 0
|
||||
Summary: System for rendering 3-D graphics
|
||||
License: MIT
|
||||
@ -123,12 +123,10 @@ Source3: README.updates
|
||||
Source4: manual-pages.tar.bz2
|
||||
Source6: %{name}-rpmlintrc
|
||||
Source7: Mesa.keyring
|
||||
Patch0: U_llvmpipe-Don-t-use-u_ringbuffer-for-lp_scene_queue.patch
|
||||
Patch1: n_opencl_dep_libclang.patch
|
||||
# never to be upstreamed
|
||||
Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch
|
||||
Patch58: u_dep_xcb.patch
|
||||
Patch60: n_glesv1_cm-glesv2.patch
|
||||
|
||||
BuildRequires: bison
|
||||
BuildRequires: fdupes
|
||||
@ -723,7 +721,6 @@ programs against the XA state tracker.
|
||||
# remove some docs
|
||||
rm -rf docs/README.{VMS,WIN32,OS2}
|
||||
|
||||
%patch0 -p1
|
||||
%if 0%{with_llvm}
|
||||
if test $(llvm-config --version | cut -d "." -f1) -ge 9; then
|
||||
%patch1 -p1
|
||||
@ -731,7 +728,6 @@ fi
|
||||
%endif
|
||||
%patch54 -p1
|
||||
%patch58 -p1
|
||||
%patch60 -p1
|
||||
|
||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||
# disabling libglvnd build; ugly ...
|
||||
|
@ -1,186 +0,0 @@
|
||||
From 397d1a18ef78ddf46efda44d6783105f9fd87f7e Mon Sep 17 00:00:00 2001
|
||||
From: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
|
||||
Date: Wed, 12 Jun 2019 15:32:30 -0700
|
||||
Subject: [PATCH] llvmpipe: Don't use u_ringbuffer for lp_scene_queue
|
||||
|
||||
Inline the ring buffer and signal logic into lp_scene_queue instead of
|
||||
using a u_ringbuffer. The code ends up simpler since there's no need
|
||||
to handle serializing data from / to packets.
|
||||
|
||||
This fixes a crash when compiling Mesa with LTO, that happened because
|
||||
of util_ringbuffer_dequeue() was writing data after the "header
|
||||
packet", as shown below
|
||||
|
||||
struct scene_packet {
|
||||
struct util_packet header;
|
||||
struct lp_scene *scene;
|
||||
};
|
||||
|
||||
/* Snippet of old lp_scene_deque(). */
|
||||
packet.scene = NULL;
|
||||
ret = util_ringbuffer_dequeue(queue->ring,
|
||||
&packet.header,
|
||||
sizeof packet / 4,
|
||||
return packet.scene;
|
||||
|
||||
but due to the way aliasing analysis work the compiler didn't
|
||||
considered the "&packet->header" to alias with "packet->scene". With
|
||||
the aggressive inlining done by LTO, this would end up always
|
||||
returning NULL instead of the content read by
|
||||
util_ringbuffer_dequeue().
|
||||
|
||||
Issue found by Marco Simental and iThiago Macieira.
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110884
|
||||
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
|
||||
---
|
||||
src/gallium/drivers/llvmpipe/lp_scene_queue.c | 84 +++++++++++++++------------
|
||||
1 file changed, 48 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/drivers/llvmpipe/lp_scene_queue.c b/src/gallium/drivers/llvmpipe/lp_scene_queue.c
|
||||
index debc7a6fe18..5f267d04ca4 100644
|
||||
--- a/src/gallium/drivers/llvmpipe/lp_scene_queue.c
|
||||
+++ b/src/gallium/drivers/llvmpipe/lp_scene_queue.c
|
||||
@@ -32,25 +32,33 @@
|
||||
* which are produced by the "rast" code when it finishes rendering a scene.
|
||||
*/
|
||||
|
||||
-#include "util/u_ringbuffer.h"
|
||||
+#include "os/os_thread.h"
|
||||
#include "util/u_memory.h"
|
||||
#include "lp_scene_queue.h"
|
||||
+#include "util/u_math.h"
|
||||
|
||||
|
||||
|
||||
-#define MAX_SCENE_QUEUE 4
|
||||
+#define SCENE_QUEUE_SIZE 4
|
||||
+
|
||||
|
||||
-struct scene_packet {
|
||||
- struct util_packet header;
|
||||
- struct lp_scene *scene;
|
||||
-};
|
||||
|
||||
/**
|
||||
* A queue of scenes
|
||||
*/
|
||||
struct lp_scene_queue
|
||||
{
|
||||
- struct util_ringbuffer *ring;
|
||||
+ struct lp_scene *scenes[SCENE_QUEUE_SIZE];
|
||||
+
|
||||
+ mtx_t mutex;
|
||||
+ cnd_t change;
|
||||
+
|
||||
+ /* These values wrap around, so that head == tail means empty. When used
|
||||
+ * to index the array, we use them modulo the queue size. This scheme
|
||||
+ * works because the queue size is a power of two.
|
||||
+ */
|
||||
+ unsigned head;
|
||||
+ unsigned tail;
|
||||
};
|
||||
|
||||
|
||||
@@ -59,20 +67,19 @@ struct lp_scene_queue
|
||||
struct lp_scene_queue *
|
||||
lp_scene_queue_create(void)
|
||||
{
|
||||
+ /* Circular queue behavior depends on size being a power of two. */
|
||||
+ STATIC_ASSERT(SCENE_QUEUE_SIZE > 0);
|
||||
+ STATIC_ASSERT((SCENE_QUEUE_SIZE & (SCENE_QUEUE_SIZE - 1)) == 0);
|
||||
+
|
||||
struct lp_scene_queue *queue = CALLOC_STRUCT(lp_scene_queue);
|
||||
+
|
||||
if (!queue)
|
||||
return NULL;
|
||||
|
||||
- queue->ring = util_ringbuffer_create( MAX_SCENE_QUEUE *
|
||||
- sizeof( struct scene_packet ) / 4);
|
||||
- if (queue->ring == NULL)
|
||||
- goto fail;
|
||||
+ (void) mtx_init(&queue->mutex, mtx_plain);
|
||||
+ cnd_init(&queue->change);
|
||||
|
||||
return queue;
|
||||
-
|
||||
-fail:
|
||||
- FREE(queue);
|
||||
- return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +87,8 @@ fail:
|
||||
void
|
||||
lp_scene_queue_destroy(struct lp_scene_queue *queue)
|
||||
{
|
||||
- util_ringbuffer_destroy(queue->ring);
|
||||
+ cnd_destroy(&queue->change);
|
||||
+ mtx_destroy(&queue->mutex);
|
||||
FREE(queue);
|
||||
}
|
||||
|
||||
@@ -89,19 +97,25 @@ lp_scene_queue_destroy(struct lp_scene_queue *queue)
|
||||
struct lp_scene *
|
||||
lp_scene_dequeue(struct lp_scene_queue *queue, boolean wait)
|
||||
{
|
||||
- struct scene_packet packet;
|
||||
- enum pipe_error ret;
|
||||
+ mtx_lock(&queue->mutex);
|
||||
|
||||
- packet.scene = NULL;
|
||||
+ if (wait) {
|
||||
+ /* Wait for queue to be not empty. */
|
||||
+ while (queue->head == queue->tail)
|
||||
+ cnd_wait(&queue->change, &queue->mutex);
|
||||
+ } else {
|
||||
+ if (queue->head == queue->tail) {
|
||||
+ mtx_unlock(&queue->mutex);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- ret = util_ringbuffer_dequeue(queue->ring,
|
||||
- &packet.header,
|
||||
- sizeof packet / 4,
|
||||
- wait );
|
||||
- if (ret != PIPE_OK)
|
||||
- return NULL;
|
||||
+ struct lp_scene *scene = queue->scenes[queue->head++ % SCENE_QUEUE_SIZE];
|
||||
+
|
||||
+ cnd_signal(&queue->change);
|
||||
+ mtx_unlock(&queue->mutex);
|
||||
|
||||
- return packet.scene;
|
||||
+ return scene;
|
||||
}
|
||||
|
||||
|
||||
@@ -109,16 +123,14 @@ lp_scene_dequeue(struct lp_scene_queue *queue, boolean wait)
|
||||
void
|
||||
lp_scene_enqueue(struct lp_scene_queue *queue, struct lp_scene *scene)
|
||||
{
|
||||
- struct scene_packet packet;
|
||||
-
|
||||
- packet.header.dwords = sizeof packet / 4;
|
||||
- packet.header.data24 = 0;
|
||||
- packet.scene = scene;
|
||||
-
|
||||
- util_ringbuffer_enqueue(queue->ring, &packet.header);
|
||||
-}
|
||||
-
|
||||
-
|
||||
+ mtx_lock(&queue->mutex);
|
||||
|
||||
+ /* Wait for free space. */
|
||||
+ while (queue->tail - queue->head >= SCENE_QUEUE_SIZE)
|
||||
+ cnd_wait(&queue->change, &queue->mutex);
|
||||
|
||||
+ queue->scenes[queue->tail++ % SCENE_QUEUE_SIZE] = scene;
|
||||
|
||||
+ cnd_signal(&queue->change);
|
||||
+ mtx_unlock(&queue->mutex);
|
||||
+}
|
||||
--
|
||||
2.16.4
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e287920fdb38712a9fed448dc90b3ca95048c7face5db52e58361f8b6e0f3cd5
|
||||
size 10941152
|
Binary file not shown.
3
mesa-19.2.0.tar.xz
Normal file
3
mesa-19.2.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b060caa2a00f856431160ff7377d0e8f58f2aa48c16ee5a9e265ebdccb10852a
|
||||
size 11464180
|
BIN
mesa-19.2.0.tar.xz.sig
Normal file
BIN
mesa-19.2.0.tar.xz.sig
Normal file
Binary file not shown.
@ -1,10 +1,10 @@
|
||||
Index: mesa-19.1.2/src/util/00-mesa-defaults.conf
|
||||
Index: mesa-19.2.0/src/util/00-mesa-defaults.conf
|
||||
===================================================================
|
||||
--- mesa-19.1.2.orig/src/util/00-mesa-defaults.conf
|
||||
+++ mesa-19.1.2/src/util/00-mesa-defaults.conf
|
||||
@@ -451,6 +451,17 @@ TODO: document the other workarounds.
|
||||
<application name="Rayman Legends" executable="Rayman Legends.exe">
|
||||
<option name="dynamic_texture_workaround" value="true" />
|
||||
--- mesa-19.2.0.orig/src/util/00-mesa-defaults.conf
|
||||
+++ mesa-19.2.0/src/util/00-mesa-defaults.conf
|
||||
@@ -490,6 +490,17 @@ TODO: document the other workarounds.
|
||||
<option name="glx_disable_ext_buffer_age" value="true" />
|
||||
<option name="glx_disable_oml_sync_control" value="true" />
|
||||
</application>
|
||||
+
|
||||
+ <!-- This is workaround to prevent distorted colors on hardware accelerated video in Chromium. https://bugzilla.opensuse.org/show_bug.cgi?id=1113211 -->
|
||||
@ -18,5 +18,5 @@ Index: mesa-19.1.2/src/util/00-mesa-defaults.conf
|
||||
+ </application>
|
||||
+
|
||||
</device>
|
||||
<!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
|
||||
<device driver="vmwgfx">
|
||||
<device driver="radeonsi">
|
||||
<application name="ARK: Survival Evolved (and unintentionally the UE4 demo template)" executable="ShooterGame">
|
||||
|
Loading…
Reference in New Issue
Block a user