From 4acb18d6d937de944f3a319dfec66f65f5ae8b79 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Tue, 14 Feb 2017 08:56:18 +0300 Subject: [PATCH 01/15] btyacc:rebuild --- programming/misc/btyacc/pspec.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/programming/misc/btyacc/pspec.xml b/programming/misc/btyacc/pspec.xml index 7552d780b3..682a6aa6c7 100644 --- a/programming/misc/btyacc/pspec.xml +++ b/programming/misc/btyacc/pspec.xml @@ -29,6 +29,13 @@ + + 2017-02-14 + 3.0 + Release Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 3.0 From c68b7f508727893ce5f29e7af27281aba4b51762 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Tue, 14 Feb 2017 08:56:44 +0300 Subject: [PATCH 02/15] firebird:v.bump to 3.0.1 --- server/database/firebird/pspec.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/database/firebird/pspec.xml b/server/database/firebird/pspec.xml index f4209190a0..1af10b266e 100644 --- a/server/database/firebird/pspec.xml +++ b/server/database/firebird/pspec.xml @@ -15,7 +15,7 @@ library A relational database offering many ANSI SQL-99 features Firebird is an open source relational database management system offering many ANSI SQL-99 features. - http://sourceforge.net/projects/firebird/files/firebird/2.5.4-Release/Firebird-2.5.4.26856-0.tar.bz2 + http://sourceforge.net/projects/firebird/files/firebird/3.0.1-Release/Firebird-3.0.1.32609-0.tar.bz2 icu4c-devel btyacc @@ -102,6 +102,13 @@ + + 2017-02-14 + 3.0.1.32609 + Version Bump + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + 2016-06-08 2.5.4.26856 From e2e70386d4d59a98e7c114818d533fd099961ada Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 11:26:47 +0300 Subject: [PATCH 03/15] multimedia:some packages update and rebuild --- multimedia/plugin/ladspa-sdk/pspec.xml | 7 +++++++ multimedia/stream/darkice/pspec.xml | 9 ++++++++- multimedia/stream/icecast/pspec.xml | 7 +++++++ multimedia/stream/libmms/pspec.xml | 7 +++++++ multimedia/stream/live555/pspec.xml | 9 ++++++++- multimedia/stream/rtmpdump/pspec.xml | 7 +++++++ 6 files changed, 44 insertions(+), 2 deletions(-) diff --git a/multimedia/plugin/ladspa-sdk/pspec.xml b/multimedia/plugin/ladspa-sdk/pspec.xml index 06cc6716ca..077b5f1b68 100644 --- a/multimedia/plugin/ladspa-sdk/pspec.xml +++ b/multimedia/plugin/ladspa-sdk/pspec.xml @@ -47,6 +47,13 @@ + + 2017-02-15 + 1.13 + Rebuild + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 1.13 diff --git a/multimedia/stream/darkice/pspec.xml b/multimedia/stream/darkice/pspec.xml index 0ea3375679..ac3e6ceebe 100644 --- a/multimedia/stream/darkice/pspec.xml +++ b/multimedia/stream/darkice/pspec.xml @@ -12,7 +12,7 @@ app:console Live audio streamer DarkIce as a live audio streamer. It records audio from an audio interface (e.g. sound card), encodes it and sends it to a streaming server. - https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/darkice/darkice-1.2.tar.gz + https://sourceforge.net/projects/darkice/files/darkice/1.3/darkice-1.3.tar.gz pulseaudio-libs-devel lame-devel @@ -52,6 +52,13 @@ + + 2017-02-15 + 1.3 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 1.2 diff --git a/multimedia/stream/icecast/pspec.xml b/multimedia/stream/icecast/pspec.xml index 31d46dd955..7e6ff6e265 100644 --- a/multimedia/stream/icecast/pspec.xml +++ b/multimedia/stream/icecast/pspec.xml @@ -65,6 +65,13 @@ + + 2017-02-15 + 2.4.3 + Rebuild + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 2.4.3 diff --git a/multimedia/stream/libmms/pspec.xml b/multimedia/stream/libmms/pspec.xml index b22e1d5d44..d6a9277555 100644 --- a/multimedia/stream/libmms/pspec.xml +++ b/multimedia/stream/libmms/pspec.xml @@ -37,6 +37,13 @@ + + 2017-02-15 + 0.6.4 + Rebuild + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 0.6.4 diff --git a/multimedia/stream/live555/pspec.xml b/multimedia/stream/live555/pspec.xml index 28af7d433a..81bef05050 100644 --- a/multimedia/stream/live555/pspec.xml +++ b/multimedia/stream/live555/pspec.xml @@ -15,7 +15,7 @@ - http://distfiles.alpinelinux.org/distfiles/live.2014.05.08.tar.gz + http://distfiles.alpinelinux.org/distfiles/live.2016.10.21.tar.gz shared-config.patch @@ -45,6 +45,13 @@ + + 2016-06-09 + 2016.10.21 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 2014.05.08 diff --git a/multimedia/stream/rtmpdump/pspec.xml b/multimedia/stream/rtmpdump/pspec.xml index 82abff7089..2e4fc15a72 100644 --- a/multimedia/stream/rtmpdump/pspec.xml +++ b/multimedia/stream/rtmpdump/pspec.xml @@ -51,6 +51,13 @@ + + 2017-02-15 + 20150115 + Rebuild + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 20150115 From b0fdfa91522c142727f0f331ac4b4748629cf0da Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 12:53:41 +0300 Subject: [PATCH 04/15] multimedia:some packages rebuild and update --- multimedia/graphics/GraphicsMagick/pspec.xml | 7 +++++++ multimedia/graphics/enblend/pspec.xml | 9 ++++++++- multimedia/graphics/hugin/pspec.xml | 9 ++++++++- multimedia/graphics/imagemagick/pspec.xml | 11 +++++++++-- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/multimedia/graphics/GraphicsMagick/pspec.xml b/multimedia/graphics/GraphicsMagick/pspec.xml index 3425518421..0fc1eb05e5 100644 --- a/multimedia/graphics/GraphicsMagick/pspec.xml +++ b/multimedia/graphics/GraphicsMagick/pspec.xml @@ -98,6 +98,13 @@ + + 2017-02-15 + 1.3.25 + Rebuild. + Stefan Gronewold(groni) + groni@pisilinux.org + 2016-11-06 1.3.25 diff --git a/multimedia/graphics/enblend/pspec.xml b/multimedia/graphics/enblend/pspec.xml index ad0bca6ca2..bddabeca44 100644 --- a/multimedia/graphics/enblend/pspec.xml +++ b/multimedia/graphics/enblend/pspec.xml @@ -12,7 +12,7 @@ app:console Image blending with multiresolution splines enblend is a tool for compositing images. Given a set of images that overlap in some irregular way, enblend overlays them in such a way that the seam between the images is invisible, or at least very difficult to see. - mirrors://sourceforge/enblend/enblend-enfuse/enblend-enfuse-4.1/enblend-enfuse-4.1.3.tar.gz + mirrors://sourceforge/enblend/enblend-enfuse/enblend-enfuse-4.2/enblend-enfuse-4.2.tar.gz cmake gsl-devel @@ -49,6 +49,13 @@ + + 2017-02-15 + 4.2 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 4.1.3 diff --git a/multimedia/graphics/hugin/pspec.xml b/multimedia/graphics/hugin/pspec.xml index 0ecec57963..6cca2bcf48 100644 --- a/multimedia/graphics/hugin/pspec.xml +++ b/multimedia/graphics/hugin/pspec.xml @@ -14,7 +14,7 @@ library A panoramic photo stitcher hugin can be used to stitch multiple images together. The resulting image can span 360 degrees. Another common use is the creation of very high resolution pictures by combining multiple images. - mirrors://sourceforge/hugin/hugin/hugin-2015.0/hugin-2015.0.0.tar.bz2 + mirrors://sourceforge/hugin/hugin/hugin-2016.2/hugin-2016.2.0.tar.bz2 swig cmake @@ -92,6 +92,13 @@ + + 2017-02-15 + 2016.2.0 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 2015.0.0 diff --git a/multimedia/graphics/imagemagick/pspec.xml b/multimedia/graphics/imagemagick/pspec.xml index ea66bafd41..84d3c44d46 100644 --- a/multimedia/graphics/imagemagick/pspec.xml +++ b/multimedia/graphics/imagemagick/pspec.xml @@ -12,7 +12,7 @@ app:gui A collection of tools and libraries for many image file formats ImageMagick is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. You can use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves. - ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-7.0.3-5.tar.xz + ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-7.0.4-9.tar.xz ghostscript-devel fontconfig-devel @@ -31,7 +31,7 @@ libpng-devel - perlmagick.rpath.patch + @@ -93,6 +93,13 @@ + + 2017-02-15 + 7.0.4.9 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + 2016-11-06 7.0.3.5 From a2fbc97b8ef95e8f89927f554ba27d34f3699cf8 Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 13:48:00 +0300 Subject: [PATCH 05/15] mesa:update --- ...iff => N_01-WIP-nouveau-add-locking.patch} | 469 ++++++++---------- ...s-done-with-the-push-mutex-acquired.patch} | 30 +- ...eb2.diff => N_03-nv30-locking-fixes.patch} | 54 +- ...-lock-in-nv50_hw_sm_get_query_result.patch | 24 + ..._condition-in-nv50_blitctx_post_blit.patch | 29 ++ ..._Define-GLAPIVAR-separate-from-GLAPI.patch | 40 ++ ...C-libs-Replace-hardlinks-with-copies.patch | 52 ++ x11/library/mesa/pspec.xml | 12 +- 8 files changed, 427 insertions(+), 283 deletions(-) rename x11/library/mesa/files/{2e6b0e24cfb0f467e8b6d6f394730442a72dcdaf.diff => N_01-WIP-nouveau-add-locking.patch} (73%) rename x11/library/mesa/files/{2733e5483e1c2b80e4b0ae21187ec5e3e1579397.diff => N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch} (81%) rename x11/library/mesa/files/{940b3a773f264f3f52574160f0d06c48f8e8aeb2.diff => N_03-nv30-locking-fixes.patch} (83%) create mode 100644 x11/library/mesa/files/N_04-nv50-Fix-double-lock-in-nv50_hw_sm_get_query_result.patch create mode 100644 x11/library/mesa/files/N_05-Use-nv50_render_condition-in-nv50_blitctx_post_blit.patch create mode 100644 x11/library/mesa/files/n_Define-GLAPIVAR-separate-from-GLAPI.patch create mode 100644 x11/library/mesa/files/n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch diff --git a/x11/library/mesa/files/2e6b0e24cfb0f467e8b6d6f394730442a72dcdaf.diff b/x11/library/mesa/files/N_01-WIP-nouveau-add-locking.patch similarity index 73% rename from x11/library/mesa/files/2e6b0e24cfb0f467e8b6d6f394730442a72dcdaf.diff rename to x11/library/mesa/files/N_01-WIP-nouveau-add-locking.patch index c12843c38b..9fffa59b95 100644 --- a/x11/library/mesa/files/2e6b0e24cfb0f467e8b6d6f394730442a72dcdaf.diff +++ b/x11/library/mesa/files/N_01-WIP-nouveau-add-locking.patch @@ -1,8 +1,6 @@ -diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c -index 7c1421b..58fa453 100644 --- a/src/gallium/drivers/nouveau/nouveau_buffer.c +++ b/src/gallium/drivers/nouveau/nouveau_buffer.c -@@ -380,6 +380,7 @@ nouveau_buffer_transfer_map(struct pipe_context *pipe, +@@ -380,6 +380,7 @@ struct pipe_transfer **ptransfer) { struct nouveau_context *nv = nouveau_context(pipe); @@ -10,7 +8,7 @@ index 7c1421b..58fa453 100644 struct nv04_resource *buf = nv04_resource(resource); struct nouveau_transfer *tx = MALLOC_STRUCT(nouveau_transfer); uint8_t *map; -@@ -427,14 +428,19 @@ nouveau_buffer_transfer_map(struct pipe_context *pipe, +@@ -427,14 +428,19 @@ buf->data = NULL; } nouveau_transfer_staging(nv, tx, false); @@ -31,7 +29,7 @@ index 7c1421b..58fa453 100644 } } return buf->data ? (buf->data + box->x) : tx->map; -@@ -479,7 +485,9 @@ nouveau_buffer_transfer_map(struct pipe_context *pipe, +@@ -479,7 +485,9 @@ if (unlikely(usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE)) { /* Discarding was not possible, must sync because * subsequent transfers might use UNSYNCHRONIZED. */ @@ -41,7 +39,7 @@ index 7c1421b..58fa453 100644 } else if (usage & PIPE_TRANSFER_DISCARD_RANGE) { /* The whole range is being discarded, so it doesn't matter what was -@@ -488,10 +496,13 @@ nouveau_buffer_transfer_map(struct pipe_context *pipe, +@@ -488,10 +496,13 @@ map = tx->map; } else if (nouveau_buffer_busy(buf, PIPE_TRANSFER_READ)) { @@ -57,13 +55,14 @@ index 7c1421b..58fa453 100644 } else { /* It is expected that the returned buffer be a representation of the * data in question, so we must copy it over from the buffer. */ -@@ -515,9 +526,13 @@ nouveau_buffer_transfer_flush_region(struct pipe_context *pipe, +@@ -515,9 +526,13 @@ { struct nouveau_transfer *tx = nouveau_transfer(transfer); struct nv04_resource *buf = nv04_resource(transfer->resource); -+ struct nouveau_screen *screen = nouveau_context(pipe)->screen; - +- - if (tx->map) ++ struct nouveau_screen *screen = nouveau_context(pipe)->screen; ++ + if (tx->map) { + pipe_mutex_lock(screen->push_mutex); nouveau_transfer_write(nouveau_context(pipe), tx, box->x, box->width); @@ -72,7 +71,7 @@ index 7c1421b..58fa453 100644 util_range_add(&buf->valid_buffer_range, tx->base.box.x + box->x, -@@ -537,11 +552,15 @@ nouveau_buffer_transfer_unmap(struct pipe_context *pipe, +@@ -537,11 +552,15 @@ struct nouveau_context *nv = nouveau_context(pipe); struct nouveau_transfer *tx = nouveau_transfer(transfer); struct nv04_resource *buf = nv04_resource(transfer->resource); @@ -89,11 +88,9 @@ index 7c1421b..58fa453 100644 util_range_add(&buf->valid_buffer_range, tx->base.box.x, tx->base.box.x + tx->base.box.width); -diff --git a/src/gallium/drivers/nouveau/nouveau_fence.c b/src/gallium/drivers/nouveau/nouveau_fence.c -index 691553a..9cbfc2a 100644 --- a/src/gallium/drivers/nouveau/nouveau_fence.c +++ b/src/gallium/drivers/nouveau/nouveau_fence.c -@@ -71,12 +71,14 @@ nouveau_fence_emit(struct nouveau_fence *fence) +@@ -71,12 +71,14 @@ ++fence->ref; @@ -108,7 +105,7 @@ index 691553a..9cbfc2a 100644 screen->fence.emit(&screen->base, &fence->sequence); -@@ -90,6 +92,9 @@ nouveau_fence_del(struct nouveau_fence *fence) +@@ -90,6 +92,9 @@ struct nouveau_fence *it; struct nouveau_screen *screen = fence->screen; @@ -118,7 +115,7 @@ index 691553a..9cbfc2a 100644 if (fence->state == NOUVEAU_FENCE_STATE_EMITTED || fence->state == NOUVEAU_FENCE_STATE_FLUSHED) { if (fence == screen->fence.head) { -@@ -123,6 +128,7 @@ nouveau_fence_update(struct nouveau_screen *screen, bool flushed) +@@ -123,6 +128,7 @@ return; screen->fence.sequence_ack = sequence; @@ -126,7 +123,7 @@ index 691553a..9cbfc2a 100644 for (fence = screen->fence.head; fence; fence = next) { next = fence->next; sequence = fence->sequence; -@@ -144,6 +150,7 @@ nouveau_fence_update(struct nouveau_screen *screen, bool flushed) +@@ -144,6 +150,7 @@ if (fence->state == NOUVEAU_FENCE_STATE_EMITTED) fence->state = NOUVEAU_FENCE_STATE_FLUSHED; } @@ -134,7 +131,7 @@ index 691553a..9cbfc2a 100644 } #define NOUVEAU_FENCE_MAX_SPINS (1 << 31) -@@ -198,18 +205,27 @@ nouveau_fence_wait(struct nouveau_fence *fence, struct pipe_debug_callback *debu +@@ -198,11 +205,19 @@ uint32_t spins = 0; int64_t start = 0; @@ -149,12 +146,12 @@ index 691553a..9cbfc2a 100644 if (!nouveau_fence_kick(fence)) return false; - -+ pipe_mutex_unlock(screen->push_mutex); + ++ pipe_mutex_unlock(screen->push_mutex); + do { if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED) { - if (debug && debug->debug_message) +@@ -210,6 +225,7 @@ pipe_debug_message(debug, PERF_INFO, "stalled %.3f ms waiting for fence", (os_time_get_nano() - start) / 1000000.f); @@ -162,17 +159,17 @@ index 691553a..9cbfc2a 100644 return true; } if (!spins) -@@ -227,6 +243,8 @@ nouveau_fence_wait(struct nouveau_fence *fence, struct pipe_debug_callback *debu +@@ -226,6 +242,8 @@ + debug_printf("Wait on fence %u (ack = %u, next = %u) timed out !\n", fence->sequence, screen->fence.sequence_ack, screen->fence.sequence); - -+ pipe_mutex_lock(screen->push_mutex); + ++ pipe_mutex_lock(screen->push_mutex); + return false; } - -diff --git a/src/gallium/drivers/nouveau/nouveau_fence.h b/src/gallium/drivers/nouveau/nouveau_fence.h -index f10016d..98d021e 100644 + + --- a/src/gallium/drivers/nouveau/nouveau_fence.h +++ b/src/gallium/drivers/nouveau/nouveau_fence.h @@ -2,6 +2,7 @@ @@ -183,7 +180,7 @@ index f10016d..98d021e 100644 #include "util/u_inlines.h" #include "util/list.h" -@@ -47,10 +48,10 @@ static inline void +@@ -47,10 +48,10 @@ nouveau_fence_ref(struct nouveau_fence *fence, struct nouveau_fence **ref) { if (fence) @@ -196,11 +193,14 @@ index f10016d..98d021e 100644 nouveau_fence_del(*ref); } -diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c -index 2c421cc..634fdc3 100644 + +src/gallium/drivers/nouveau/nouveau_screen.c +Diff +Switch to side-by-side view + --- a/src/gallium/drivers/nouveau/nouveau_screen.c +++ b/src/gallium/drivers/nouveau/nouveau_screen.c -@@ -73,10 +73,14 @@ nouveau_screen_fence_finish(struct pipe_screen *screen, +@@ -74,10 +74,14 @@ struct pipe_fence_handle *pfence, uint64_t timeout) { @@ -216,17 +216,17 @@ index 2c421cc..634fdc3 100644 } -@@ -153,6 +157,9 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev) +@@ -153,6 +157,9 @@ + char *nv_dbg = getenv("NOUVEAU_MESA_DEBUG"); if (nv_dbg) nouveau_mesa_debug = atoi(nv_dbg); - ++ + pipe_mutex_init(screen->push_mutex); + pipe_mutex_init(screen->fence.list_mutex); -+ + /* These must be set before any failure is possible, as the cleanup * paths assume they're responsible for deleting them. - */ -@@ -253,6 +260,9 @@ nouveau_screen_fini(struct nouveau_screen *screen) +@@ -254,6 +261,9 @@ nouveau_device_del(&screen->device); nouveau_drm_del(&screen->drm); close(fd); @@ -236,8 +236,6 @@ index 2c421cc..634fdc3 100644 } static void -diff --git a/src/gallium/drivers/nouveau/nouveau_screen.h b/src/gallium/drivers/nouveau/nouveau_screen.h -index 28c4760..28c8620 100644 --- a/src/gallium/drivers/nouveau/nouveau_screen.h +++ b/src/gallium/drivers/nouveau/nouveau_screen.h @@ -3,6 +3,7 @@ @@ -248,7 +246,7 @@ index 28c4760..28c8620 100644 #ifdef DEBUG # define NOUVEAU_ENABLE_DRIVER_STATISTICS -@@ -22,6 +23,7 @@ struct nouveau_screen { +@@ -22,6 +23,7 @@ struct nouveau_object *channel; struct nouveau_client *client; struct nouveau_pushbuf *pushbuf; @@ -256,7 +254,7 @@ index 28c4760..28c8620 100644 int refcount; -@@ -39,6 +41,7 @@ struct nouveau_screen { +@@ -39,6 +41,7 @@ struct nouveau_fence *head; struct nouveau_fence *tail; struct nouveau_fence *current; @@ -264,11 +262,9 @@ index 28c4760..28c8620 100644 u32 sequence; u32 sequence_ack; void (*emit)(struct pipe_screen *, u32 *sequence); -diff --git a/src/gallium/drivers/nouveau/nv30/nv30_clear.c b/src/gallium/drivers/nouveau/nv30/nv30_clear.c -index c8fa38e..3a72354 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_clear.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_clear.c -@@ -58,8 +58,11 @@ nv30_clear(struct pipe_context *pipe, unsigned buffers, +@@ -58,8 +58,11 @@ struct pipe_framebuffer_state *fb = &nv30->framebuffer; uint32_t colr = 0, zeta = 0, mode = 0; @@ -281,7 +277,7 @@ index c8fa38e..3a72354 100644 if (buffers & PIPE_CLEAR_COLOR && fb->nr_cbufs) { colr = pack_rgba(fb->cbufs[0]->format, color->f); -@@ -96,6 +99,7 @@ nv30_clear(struct pipe_context *pipe, unsigned buffers, +@@ -96,6 +99,7 @@ PUSH_DATA (push, mode); nv30_state_release(nv30); @@ -289,7 +285,7 @@ index c8fa38e..3a72354 100644 } static void -@@ -125,11 +129,15 @@ nv30_clear_render_target(struct pipe_context *pipe, struct pipe_surface *ps, +@@ -126,11 +130,15 @@ rt_format |= NV30_3D_RT_FORMAT_TYPE_LINEAR; } @@ -297,7 +293,7 @@ index c8fa38e..3a72354 100644 + refn.bo = mt->base.bo; refn.flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_WR; - if (nouveau_pushbuf_space(push, 16, 1, 0) || + if (nouveau_pushbuf_space(push, 32, 1, 0) || - nouveau_pushbuf_refn (push, &refn, 1)) + nouveau_pushbuf_refn (push, &refn, 1)) { + pipe_mutex_unlock(nv30->screen->base.push_mutex); @@ -306,7 +302,7 @@ index c8fa38e..3a72354 100644 BEGIN_NV04(push, NV30_3D(RT_ENABLE), 1); PUSH_DATA (push, NV30_3D_RT_ENABLE_COLOR0); -@@ -154,6 +162,8 @@ nv30_clear_render_target(struct pipe_context *pipe, struct pipe_surface *ps, +@@ -155,6 +163,8 @@ NV30_3D_CLEAR_BUFFERS_COLOR_B | NV30_3D_CLEAR_BUFFERS_COLOR_A); @@ -315,7 +311,7 @@ index c8fa38e..3a72354 100644 nv30->dirty |= NV30_NEW_FRAMEBUFFER | NV30_NEW_SCISSOR; } -@@ -189,11 +199,15 @@ nv30_clear_depth_stencil(struct pipe_context *pipe, struct pipe_surface *ps, +@@ -191,11 +201,15 @@ if (buffers & PIPE_CLEAR_STENCIL) mode |= NV30_3D_CLEAR_BUFFERS_STENCIL; @@ -332,7 +328,7 @@ index c8fa38e..3a72354 100644 BEGIN_NV04(push, NV30_3D(RT_ENABLE), 1); PUSH_DATA (push, 0); -@@ -219,6 +233,8 @@ nv30_clear_depth_stencil(struct pipe_context *pipe, struct pipe_surface *ps, +@@ -221,6 +235,8 @@ BEGIN_NV04(push, NV30_3D(CLEAR_BUFFERS), 1); PUSH_DATA (push, mode); @@ -341,11 +337,9 @@ index c8fa38e..3a72354 100644 nv30->dirty |= NV30_NEW_FRAMEBUFFER | NV30_NEW_SCISSOR; } -diff --git a/src/gallium/drivers/nouveau/nv30/nv30_context.c b/src/gallium/drivers/nouveau/nv30/nv30_context.c -index 3ed0889..fbc4136 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_context.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_context.c -@@ -201,6 +201,8 @@ nv30_context_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -201,6 +201,8 @@ if (!nv30) return NULL; @@ -354,7 +348,7 @@ index 3ed0889..fbc4136 100644 nv30->screen = screen; nv30->base.screen = &screen->base; nv30->base.copy_data = nv30_transfer_copy_data; -@@ -226,6 +228,7 @@ nv30_context_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -226,6 +228,7 @@ ret = nouveau_bufctx_new(nv30->base.client, 64, &nv30->bufctx); if (ret) { nv30_context_destroy(pipe); @@ -362,7 +356,7 @@ index 3ed0889..fbc4136 100644 return NULL; } -@@ -259,10 +262,13 @@ nv30_context_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -259,10 +262,13 @@ nv30->blitter = util_blitter_create(pipe); if (!nv30->blitter) { nv30_context_destroy(pipe); @@ -376,11 +370,9 @@ index 3ed0889..fbc4136 100644 + return pipe; } -diff --git a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c -index c6f6965..389bfaa 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c -@@ -130,10 +130,12 @@ nv30_resource_copy_region(struct pipe_context *pipe, +@@ -130,10 +130,12 @@ struct nv30_context *nv30 = nv30_context(pipe); struct nv30_rect src, dst; @@ -393,7 +385,7 @@ index c6f6965..389bfaa 100644 return; } -@@ -143,6 +145,7 @@ nv30_resource_copy_region(struct pipe_context *pipe, +@@ -143,6 +145,7 @@ src_box->width, src_box->height, &dst); nv30_transfer_rect(nv30, NEAREST, &src, &dst); @@ -401,7 +393,7 @@ index c6f6965..389bfaa 100644 } static void -@@ -163,6 +166,7 @@ nv30_resource_resolve(struct nv30_context *nv30, +@@ -163,6 +166,7 @@ y1 = src.y1; /* On nv3x we must use sifm which is restricted to 1024x1024 tiles */ @@ -409,7 +401,7 @@ index c6f6965..389bfaa 100644 for (y = src.y0; y < y1; y += h) { h = y1 - y; if (h > 1024) -@@ -193,6 +197,7 @@ nv30_resource_resolve(struct nv30_context *nv30, +@@ -193,6 +197,7 @@ nv30_transfer_rect(nv30, BILINEAR, &src, &dst); } } @@ -417,7 +409,7 @@ index c6f6965..389bfaa 100644 } void -@@ -308,8 +313,12 @@ nv30_miptree_transfer_map(struct pipe_context *pipe, struct pipe_resource *pt, +@@ -308,8 +313,12 @@ tx->tmp.y1 = tx->tmp.h; tx->tmp.z = 0; @@ -431,7 +423,7 @@ index c6f6965..389bfaa 100644 if (tx->tmp.bo->map) { *ptransfer = &tx->base; -@@ -340,11 +349,13 @@ nv30_miptree_transfer_unmap(struct pipe_context *pipe, +@@ -340,11 +349,13 @@ struct nv30_transfer *tx = nv30_transfer(ptx); if (ptx->usage & PIPE_TRANSFER_WRITE) { @@ -445,11 +437,9 @@ index c6f6965..389bfaa 100644 } else { nouveau_bo_ref(NULL, &tx->tmp.bo); } -diff --git a/src/gallium/drivers/nouveau/nv30/nv30_query.c b/src/gallium/drivers/nouveau/nv30/nv30_query.c -index aa9a12f..a047e15 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_query.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_query.c -@@ -152,6 +152,7 @@ nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq) +@@ -152,6 +152,7 @@ struct nv30_query *q = nv30_query(pq); struct nouveau_pushbuf *push = nv30->base.pushbuf; @@ -457,7 +447,7 @@ index aa9a12f..a047e15 100644 switch (q->type) { case PIPE_QUERY_TIME_ELAPSED: q->qo[0] = nv30_query_object_new(nv30->screen); -@@ -161,7 +162,7 @@ nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq) +@@ -161,7 +162,7 @@ } break; case PIPE_QUERY_TIMESTAMP: @@ -466,7 +456,7 @@ index aa9a12f..a047e15 100644 default: BEGIN_NV04(push, NV30_3D(QUERY_RESET), 1); PUSH_DATA (push, q->report); -@@ -172,6 +173,7 @@ nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq) +@@ -172,6 +173,7 @@ BEGIN_NV04(push, SUBC_3D(q->enable), 1); PUSH_DATA (push, 1); } @@ -474,7 +464,7 @@ index aa9a12f..a047e15 100644 return true; } -@@ -183,6 +185,7 @@ nv30_query_end(struct pipe_context *pipe, struct pipe_query *pq) +@@ -183,6 +185,7 @@ struct nv30_query *q = nv30_query(pq); struct nouveau_pushbuf *push = nv30->base.pushbuf; @@ -482,7 +472,7 @@ index aa9a12f..a047e15 100644 q->qo[1] = nv30_query_object_new(screen); if (q->qo[1]) { BEGIN_NV04(push, NV30_3D(QUERY_GET), 1); -@@ -194,6 +197,7 @@ nv30_query_end(struct pipe_context *pipe, struct pipe_query *pq) +@@ -194,6 +197,7 @@ PUSH_DATA (push, 0); } PUSH_KICK (push); @@ -490,7 +480,7 @@ index aa9a12f..a047e15 100644 return true; } -@@ -248,9 +252,11 @@ nv40_query_render_condition(struct pipe_context *pipe, +@@ -248,9 +252,11 @@ nv30->render_cond_mode = mode; nv30->render_cond_cond = condition; @@ -502,7 +492,7 @@ index aa9a12f..a047e15 100644 return; } -@@ -262,6 +268,7 @@ nv40_query_render_condition(struct pipe_context *pipe, +@@ -262,6 +268,7 @@ BEGIN_NV04(push, SUBC_3D(0x1e98), 1); PUSH_DATA (push, 0x02000000 | q->qo[1]->hw->start); @@ -510,11 +500,9 @@ index aa9a12f..a047e15 100644 } static void -diff --git a/src/gallium/drivers/nouveau/nv30/nv30_vbo.c b/src/gallium/drivers/nouveau/nv30/nv30_vbo.c -index bc9b9a1..8e3fdee 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_vbo.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_vbo.c -@@ -563,6 +563,8 @@ nv30_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -563,6 +563,8 @@ if (nv30->vbo_push_hint != !!nv30->vbo_fifo) nv30->dirty |= NV30_NEW_ARRAYS; @@ -523,7 +511,7 @@ index bc9b9a1..8e3fdee 100644 push->user_priv = &nv30->bufctx; if (nv30->vbo_user && !(nv30->dirty & (NV30_NEW_VERTEX | NV30_NEW_ARRAYS))) nv30_update_user_vbufs(nv30); -@@ -570,10 +572,12 @@ nv30_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -570,10 +572,12 @@ nv30_state_validate(nv30, ~0, true); if (nv30->draw_flags) { nv30_render_vbo(pipe, info); @@ -536,7 +524,7 @@ index bc9b9a1..8e3fdee 100644 return; } -@@ -630,6 +634,7 @@ nv30_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -630,6 +634,7 @@ nv30_state_release(nv30); nv30_release_user_vbufs(nv30); @@ -544,11 +532,9 @@ index bc9b9a1..8e3fdee 100644 } void -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_compute.c b/src/gallium/drivers/nouveau/nv50/nv50_compute.c -index d781f6f..3c174e4 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_compute.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_compute.c -@@ -249,9 +249,11 @@ nv50_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) +@@ -249,9 +249,11 @@ struct nv50_program *cp = nv50->compprog; bool ret; @@ -560,7 +546,7 @@ index d781f6f..3c174e4 100644 return; } -@@ -284,6 +286,8 @@ nv50_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) +@@ -284,6 +286,8 @@ BEGIN_NV04(push, SUBC_CP(NV50_GRAPH_SERIALIZE), 1); PUSH_DATA (push, 0); @@ -569,11 +555,11 @@ index d781f6f..3c174e4 100644 /* bind a compute shader clobbers fragment shader state */ nv50->dirty_3d |= NV50_NEW_3D_FRAGPROG; } -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_context.c b/src/gallium/drivers/nouveau/nv50/nv50_context.c -index fc852d7..84b5e3f 100644 + + --- a/src/gallium/drivers/nouveau/nv50/nv50_context.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_context.c -@@ -37,7 +37,9 @@ nv50_flush(struct pipe_context *pipe, +@@ -37,7 +37,9 @@ if (fence) nouveau_fence_ref(screen->fence.current, (struct nouveau_fence **)fence); @@ -583,7 +569,7 @@ index fc852d7..84b5e3f 100644 nouveau_context_update_frame_stats(nouveau_context(pipe)); } -@@ -47,10 +49,12 @@ nv50_texture_barrier(struct pipe_context *pipe) +@@ -47,10 +49,12 @@ { struct nouveau_pushbuf *push = nv50_context(pipe)->base.pushbuf; @@ -596,7 +582,7 @@ index fc852d7..84b5e3f 100644 } static void -@@ -107,6 +111,7 @@ nv50_emit_string_marker(struct pipe_context *pipe, const char *str, int len) +@@ -107,6 +111,7 @@ data_words = string_words; else data_words = string_words + !!(len & 3); @@ -604,7 +590,7 @@ index fc852d7..84b5e3f 100644 BEGIN_NI04(push, SUBC_3D(NV04_GRAPH_NOP), data_words); if (string_words) PUSH_DATAp(push, str, string_words); -@@ -115,6 +120,7 @@ nv50_emit_string_marker(struct pipe_context *pipe, const char *str, int len) +@@ -115,6 +120,7 @@ memcpy(&data, &str[string_words * 4], len & 3); PUSH_DATA (push, data); } @@ -612,16 +598,16 @@ index fc852d7..84b5e3f 100644 } void -@@ -291,6 +297,8 @@ nv50_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -290,6 +296,8 @@ + if (!nv50) return NULL; pipe = &nv50->base.pipe; - -+ pipe_mutex_lock(screen->base.push_mutex); + ++ pipe_mutex_lock(screen->base.push_mutex); + if (!nv50_blitctx_create(nv50)) goto out_err; - -@@ -384,9 +392,12 @@ nv50_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -384,9 +392,12 @@ util_dynarray_init(&nv50->global_residents); @@ -634,11 +620,9 @@ index fc852d7..84b5e3f 100644 if (nv50->bufctx_3d) nouveau_bufctx_del(&nv50->bufctx_3d); if (nv50->bufctx_cp) -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_context.h b/src/gallium/drivers/nouveau/nv50/nv50_context.h -index cb94c8e..ba005e1 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_context.h +++ b/src/gallium/drivers/nouveau/nv50/nv50_context.h -@@ -219,6 +219,11 @@ void nv50_default_kick_notify(struct nouveau_pushbuf *); +@@ -222,6 +222,11 @@ /* nv50_draw.c */ extern struct draw_stage *nv50_draw_render_stage(struct nv50_context *); @@ -650,11 +634,9 @@ index cb94c8e..ba005e1 100644 /* nv50_shader_state.c */ void nv50_vertprog_validate(struct nv50_context *); void nv50_gmtyprog_validate(struct nv50_context *); -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query.c b/src/gallium/drivers/nouveau/nv50/nv50_query.c -index 9a1397a..c90e20e 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_query.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_query.c -@@ -70,7 +70,7 @@ nv50_get_query_result(struct pipe_context *pipe, struct pipe_query *pq, +@@ -70,7 +70,7 @@ return q->funcs->get_query_result(nv50_context(pipe), q, wait, result); } @@ -663,7 +645,7 @@ index 9a1397a..c90e20e 100644 nv50_render_condition(struct pipe_context *pipe, struct pipe_query *pq, boolean condition, uint mode) -@@ -145,6 +145,16 @@ nv50_render_condition(struct pipe_context *pipe, +@@ -145,6 +145,16 @@ } static void @@ -680,7 +662,7 @@ index 9a1397a..c90e20e 100644 nv50_set_active_query_state(struct pipe_context *pipe, boolean enable) { } -@@ -160,7 +170,7 @@ nv50_init_query_functions(struct nv50_context *nv50) +@@ -160,7 +170,7 @@ pipe->end_query = nv50_end_query; pipe->get_query_result = nv50_get_query_result; pipe->set_active_query_state = nv50_set_active_query_state; @@ -689,11 +671,9 @@ index 9a1397a..c90e20e 100644 nv50->cond_condmode = NV50_3D_COND_MODE_ALWAYS; } -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c b/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c -index 727b509..9067bcc 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c -@@ -129,6 +129,7 @@ nv50_hw_begin_query(struct nv50_context *nv50, struct nv50_query *q) +@@ -129,6 +129,7 @@ { struct nouveau_pushbuf *push = nv50->base.pushbuf; struct nv50_hw_query *hq = nv50_hw_query(q); @@ -701,7 +681,7 @@ index 727b509..9067bcc 100644 if (hq->funcs && hq->funcs->begin_query) return hq->funcs->begin_query(nv50, hq); -@@ -154,6 +155,7 @@ nv50_hw_begin_query(struct nv50_context *nv50, struct nv50_query *q) +@@ -154,6 +155,7 @@ if (!hq->is64bit) hq->data[0] = hq->sequence++; /* the previously used one */ @@ -709,16 +689,17 @@ index 727b509..9067bcc 100644 switch (q->type) { case PIPE_QUERY_OCCLUSION_COUNTER: case PIPE_QUERY_OCCLUSION_PREDICATE: -@@ -193,10 +195,13 @@ nv50_hw_begin_query(struct nv50_context *nv50, struct nv50_query *q) +@@ -193,10 +195,13 @@ break; default: assert(0); - return false; -+ ret = false; -+ break; - } +- } - hq->state = NV50_HW_QUERY_STATE_ACTIVE; - return true; ++ ret = false; ++ break; ++ } + pipe_mutex_unlock(nv50->screen->base.push_mutex); + if (ret) + hq->state = NV50_HW_QUERY_STATE_ACTIVE; @@ -726,7 +707,7 @@ index 727b509..9067bcc 100644 } static void -@@ -212,6 +217,7 @@ nv50_hw_end_query(struct nv50_context *nv50, struct nv50_query *q) +@@ -212,6 +217,7 @@ hq->state = NV50_HW_QUERY_STATE_ENDED; @@ -734,7 +715,7 @@ index 727b509..9067bcc 100644 switch (q->type) { case PIPE_QUERY_OCCLUSION_COUNTER: case PIPE_QUERY_OCCLUSION_PREDICATE: -@@ -264,6 +270,7 @@ nv50_hw_end_query(struct nv50_context *nv50, struct nv50_query *q) +@@ -264,6 +270,7 @@ assert(0); break; } @@ -742,7 +723,7 @@ index 727b509..9067bcc 100644 if (hq->is64bit) nouveau_fence_ref(nv50->screen->base.fence.current, &hq->fence); } -@@ -286,16 +293,21 @@ nv50_hw_get_query_result(struct nv50_context *nv50, struct nv50_query *q, +@@ -286,16 +293,21 @@ nv50_hw_query_update(q); if (hq->state != NV50_HW_QUERY_STATE_READY) { @@ -765,11 +746,9 @@ index 727b509..9067bcc 100644 } hq->state = NV50_HW_QUERY_STATE_READY; -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c -index bcfba9f..31445eb 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c -@@ -176,6 +176,7 @@ nv50_hw_sm_begin_query(struct nv50_context *nv50, struct nv50_hw_query *hq) +@@ -176,6 +176,7 @@ return false; } @@ -777,7 +756,7 @@ index bcfba9f..31445eb 100644 assert(cfg->num_counters <= 4); PUSH_SPACE(push, 4 * 4); -@@ -208,6 +209,7 @@ nv50_hw_sm_begin_query(struct nv50_context *nv50, struct nv50_hw_query *hq) +@@ -208,6 +209,7 @@ BEGIN_NV04(push, NV50_CP(MP_PM_SET(c)), 1); PUSH_DATA (push, 0); } @@ -785,7 +764,7 @@ index bcfba9f..31445eb 100644 return true; } -@@ -237,6 +239,7 @@ nv50_hw_sm_end_query(struct nv50_context *nv50, struct nv50_hw_query *hq) +@@ -237,6 +239,7 @@ screen->pm.prog = prog; } @@ -793,7 +772,7 @@ index bcfba9f..31445eb 100644 /* disable all counting */ PUSH_SPACE(push, 8); for (c = 0; c < 4; c++) { -@@ -260,6 +263,7 @@ nv50_hw_sm_end_query(struct nv50_context *nv50, struct nv50_hw_query *hq) +@@ -260,6 +263,7 @@ PUSH_SPACE(push, 2); BEGIN_NV04(push, SUBC_CP(NV50_GRAPH_SERIALIZE), 1); PUSH_DATA (push, 0); @@ -801,7 +780,7 @@ index bcfba9f..31445eb 100644 pipe->bind_compute_state(pipe, screen->pm.prog); input[0] = hq->bo->offset + hq->base_offset; -@@ -276,6 +280,7 @@ nv50_hw_sm_end_query(struct nv50_context *nv50, struct nv50_hw_query *hq) +@@ -276,6 +280,7 @@ nouveau_bufctx_reset(nv50->bufctx_cp, NV50_BIND_CP_QUERY); @@ -809,7 +788,7 @@ index bcfba9f..31445eb 100644 /* re-active other counters */ PUSH_SPACE(push, 8); mask = 0; -@@ -302,6 +307,7 @@ nv50_hw_sm_end_query(struct nv50_context *nv50, struct nv50_hw_query *hq) +@@ -302,6 +307,7 @@ | cfg->ctr[i].unit | cfg->ctr[i].mode); } } @@ -817,7 +796,7 @@ index bcfba9f..31445eb 100644 } static inline bool -@@ -343,7 +349,9 @@ nv50_hw_sm_get_query_result(struct nv50_context *nv50, struct nv50_hw_query *hq, +@@ -343,7 +349,9 @@ cfg = nv50_hw_sm_query_get_cfg(nv50, hq); @@ -827,11 +806,9 @@ index bcfba9f..31445eb 100644 if (!ret) return false; -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_surface.c b/src/gallium/drivers/nouveau/nv50/nv50_surface.c -index fbb5129..164ec72 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_surface.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_surface.c -@@ -204,10 +204,13 @@ nv50_resource_copy_region(struct pipe_context *pipe, +@@ -204,10 +204,13 @@ bool m2mf; unsigned dst_layer = dstz, src_layer = src_box->z; @@ -845,7 +822,7 @@ index fbb5129..164ec72 100644 return; } -@@ -247,6 +250,7 @@ nv50_resource_copy_region(struct pipe_context *pipe, +@@ -247,6 +250,7 @@ else srect.base += src_mt->layer_stride; } @@ -853,7 +830,7 @@ index fbb5129..164ec72 100644 return; } -@@ -270,6 +274,7 @@ nv50_resource_copy_region(struct pipe_context *pipe, +@@ -270,6 +274,7 @@ break; } nouveau_bufctx_reset(nv50->bufctx, NV50_BIND_2D); @@ -861,7 +838,7 @@ index fbb5129..164ec72 100644 } static void -@@ -288,14 +293,18 @@ nv50_clear_render_target(struct pipe_context *pipe, +@@ -289,14 +294,18 @@ assert(dst->texture->target != PIPE_BUFFER); @@ -873,24 +850,24 @@ index fbb5129..164ec72 100644 PUSH_DATAf(push, color->f[2]); PUSH_DATAf(push, color->f[3]); -- if (nouveau_pushbuf_space(push, 32 + sf->depth, 1, 0)) -+ if (nouveau_pushbuf_space(push, 32 + sf->depth, 1, 0)) { +- if (nouveau_pushbuf_space(push, 64 + sf->depth, 1, 0)) ++ if (nouveau_pushbuf_space(push, 64 + sf->depth, 1, 0)) { + pipe_mutex_unlock(nv50->screen->base.push_mutex); return; + } PUSH_REFN(push, bo, mt->base.domain | NOUVEAU_BO_WR); -@@ -353,6 +362,8 @@ nv50_clear_render_target(struct pipe_context *pipe, - BEGIN_NV04(push, NV50_3D(COND_MODE), 1); - PUSH_DATA (push, nv50->cond_condmode); +@@ -358,6 +367,8 @@ + PUSH_DATA (push, nv50->cond_condmode); + } + pipe_mutex_unlock(nv50->screen->base.push_mutex); + nv50->dirty_3d |= NV50_NEW_3D_FRAMEBUFFER | NV50_NEW_3D_SCISSOR; } -@@ -376,6 +387,8 @@ nv50_clear_depth_stencil(struct pipe_context *pipe, +@@ -382,6 +393,8 @@ assert(dst->texture->target != PIPE_BUFFER); assert(nouveau_bo_memtype(bo)); /* ZETA cannot be linear */ @@ -899,28 +876,28 @@ index fbb5129..164ec72 100644 if (clear_flags & PIPE_CLEAR_DEPTH) { BEGIN_NV04(push, NV50_3D(CLEAR_DEPTH), 1); PUSH_DATAf(push, depth); -@@ -388,8 +401,10 @@ nv50_clear_depth_stencil(struct pipe_context *pipe, +@@ -394,8 +407,10 @@ mode |= NV50_3D_CLEAR_BUFFERS_S; } -- if (nouveau_pushbuf_space(push, 32 + sf->depth, 1, 0)) -+ if (nouveau_pushbuf_space(push, 32 + sf->depth, 1, 0)) { +- if (nouveau_pushbuf_space(push, 64 + sf->depth, 1, 0)) ++ if (nouveau_pushbuf_space(push, 64 + sf->depth, 1, 0)) { + pipe_mutex_unlock(nv50->screen->base.push_mutex); return; + } PUSH_REFN(push, bo, mt->base.domain | NOUVEAU_BO_WR); -@@ -436,6 +451,8 @@ nv50_clear_depth_stencil(struct pipe_context *pipe, - BEGIN_NV04(push, NV50_3D(COND_MODE), 1); - PUSH_DATA (push, nv50->cond_condmode); - -+ pipe_mutex_unlock(nv50->screen->base.push_mutex); +@@ -445,6 +460,8 @@ + BEGIN_NV04(push, NV50_3D(COND_MODE), 1); + PUSH_DATA (push, nv50->cond_condmode); + } + ++ pipe_mutex_unlock(nv50->screen->base.push_mutex); + nv50->dirty_3d |= NV50_NEW_3D_FRAMEBUFFER | NV50_NEW_3D_SCISSOR; } - -@@ -524,9 +541,12 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers, +@@ -534,9 +551,12 @@ unsigned i, j, k; uint32_t mode = 0; @@ -934,7 +911,7 @@ index fbb5129..164ec72 100644 /* We have to clear ALL of the layers, not up to the min number of layers * of any attachment. */ -@@ -592,6 +612,7 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers, +@@ -602,6 +622,7 @@ /* restore the array mode */ BEGIN_NV04(push, NV50_3D(RT_ARRAY_MODE), 1); PUSH_DATA (push, nv50->rt_array_mode); @@ -942,7 +919,7 @@ index fbb5129..164ec72 100644 } static void -@@ -719,14 +740,18 @@ nv50_clear_buffer(struct pipe_context *pipe, +@@ -729,14 +750,18 @@ assert(size % data_size == 0); @@ -962,28 +939,28 @@ index fbb5129..164ec72 100644 } elements = size / data_size; -@@ -742,8 +767,10 @@ nv50_clear_buffer(struct pipe_context *pipe, +@@ -752,8 +777,10 @@ PUSH_DATAf(push, color.f[2]); PUSH_DATAf(push, color.f[3]); -- if (nouveau_pushbuf_space(push, 32, 1, 0)) -+ if (nouveau_pushbuf_space(push, 32, 1, 0)) { +- if (nouveau_pushbuf_space(push, 64, 1, 0)) ++ if (nouveau_pushbuf_space(push, 64, 1, 0)) { + pipe_mutex_unlock(nv50->screen->base.push_mutex); return; + } PUSH_REFN(push, buf->bo, buf->domain | NOUVEAU_BO_WR); -@@ -798,6 +825,8 @@ nv50_clear_buffer(struct pipe_context *pipe, +@@ -807,6 +834,8 @@ + nv50_clear_buffer_push(pipe, res, offset, width * data_size, data, data_size); } - -+ pipe_mutex_unlock(nv50->screen->base.push_mutex); + ++ pipe_mutex_unlock(nv50->screen->base.push_mutex); + nv50->dirty_3d |= NV50_NEW_3D_FRAMEBUFFER | NV50_NEW_3D_SCISSOR; } - -@@ -1714,6 +1743,8 @@ nv50_blit(struct pipe_context *pipe, const struct pipe_blit_info *info) +@@ -1724,6 +1753,8 @@ info->src.box.height != -info->dst.box.height)) eng3d = true; @@ -992,7 +969,7 @@ index fbb5129..164ec72 100644 if (nv50->screen->num_occlusion_queries_active) { BEGIN_NV04(push, NV50_3D(SAMPLECNT_ENABLE), 1); PUSH_DATA (push, 0); -@@ -1728,6 +1759,8 @@ nv50_blit(struct pipe_context *pipe, const struct pipe_blit_info *info) +@@ -1738,6 +1769,8 @@ BEGIN_NV04(push, NV50_3D(SAMPLECNT_ENABLE), 1); PUSH_DATA (push, 1); } @@ -1001,11 +978,9 @@ index fbb5129..164ec72 100644 } static void -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_transfer.c b/src/gallium/drivers/nouveau/nv50/nv50_transfer.c -index 8209f1f..c751ade 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_transfer.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_transfer.c -@@ -304,6 +304,7 @@ nv50_miptree_transfer_map(struct pipe_context *pctx, +@@ -304,6 +304,7 @@ unsigned base = tx->rect[0].base; unsigned z = tx->rect[0].z; unsigned i; @@ -1013,7 +988,7 @@ index 8209f1f..c751ade 100644 for (i = 0; i < box->depth; ++i) { nv50_m2mf_transfer_rect(nv50, &tx->rect[1], &tx->rect[0], tx->nblocksx, tx->nblocksy); -@@ -313,6 +314,9 @@ nv50_miptree_transfer_map(struct pipe_context *pctx, +@@ -313,6 +314,9 @@ tx->rect[0].base += mt->layer_stride; tx->rect[1].base += size; } @@ -1023,7 +998,7 @@ index 8209f1f..c751ade 100644 tx->rect[0].z = z; tx->rect[0].base = base; tx->rect[1].base = 0; -@@ -349,6 +353,7 @@ nv50_miptree_transfer_unmap(struct pipe_context *pctx, +@@ -349,6 +353,7 @@ unsigned i; if (tx->base.usage & PIPE_TRANSFER_WRITE) { @@ -1031,7 +1006,7 @@ index 8209f1f..c751ade 100644 for (i = 0; i < tx->base.box.depth; ++i) { nv50_m2mf_transfer_rect(nv50, &tx->rect[0], &tx->rect[1], tx->nblocksx, tx->nblocksy); -@@ -362,6 +367,7 @@ nv50_miptree_transfer_unmap(struct pipe_context *pctx, +@@ -362,6 +367,7 @@ /* Allow the copies above to finish executing before freeing the source */ nouveau_fence_work(nv50->screen->base.fence.current, nouveau_fence_unref_bo, tx->rect[1].bo); @@ -1039,11 +1014,11 @@ index 8209f1f..c751ade 100644 } else { nouveau_bo_ref(NULL, &tx->rect[1].bo); } -diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c -index a11cdf8..f73329c 100644 + + --- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c -@@ -767,6 +767,8 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -767,6 +767,8 @@ bool tex_dirty = false; int s; @@ -1052,7 +1027,7 @@ index a11cdf8..f73329c 100644 /* NOTE: caller must ensure that (min_index + index_bias) is >= 0 */ nv50->vb_elt_first = info->min_index + info->index_bias; nv50->vb_elt_limit = info->max_index - info->min_index; -@@ -827,6 +829,7 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -827,6 +829,7 @@ nv50_push_vbo(nv50, info); push->kick_notify = nv50_default_kick_notify; nouveau_pushbuf_bufctx(push, NULL); @@ -1060,18 +1035,19 @@ index a11cdf8..f73329c 100644 return; } -@@ -886,4 +889,6 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -886,4 +889,6 @@ nv50_release_user_vbufs(nv50); nouveau_pushbuf_bufctx(push, NULL); +-} + + pipe_mutex_unlock(nv50->screen->base.push_mutex); - } -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c -index 10a4c83..53a0711 100644 ++} + + --- a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c -@@ -423,13 +423,17 @@ void +@@ -424,13 +424,17 @@ nvc0_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) { struct nvc0_context *nvc0 = nvc0_context(pipe); @@ -1089,18 +1065,17 @@ index 10a4c83..53a0711 100644 return; } -@@ -497,4 +501,6 @@ nvc0_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) +@@ -498,4 +502,6 @@ nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_SUF); nvc0->dirty_cp |= NVC0_NEW_CP_SURFACES; nvc0->images_dirty[5] |= nvc0->images_valid[5]; +-} + + pipe_mutex_unlock(screen->base.push_mutex); - } -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.c b/src/gallium/drivers/nouveau/nvc0/nvc0_context.c -index 1137e6c..28d6fec 100644 ++} --- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.c -@@ -38,7 +38,9 @@ nvc0_flush(struct pipe_context *pipe, +@@ -38,7 +38,9 @@ if (fence) nouveau_fence_ref(screen->fence.current, (struct nouveau_fence **)fence); @@ -1110,7 +1085,7 @@ index 1137e6c..28d6fec 100644 nouveau_context_update_frame_stats(&nvc0->base); } -@@ -48,8 +50,10 @@ nvc0_texture_barrier(struct pipe_context *pipe) +@@ -48,8 +50,10 @@ { struct nouveau_pushbuf *push = nvc0_context(pipe)->base.pushbuf; @@ -1121,16 +1096,16 @@ index 1137e6c..28d6fec 100644 } static void -@@ -59,6 +63,8 @@ nvc0_memory_barrier(struct pipe_context *pipe, unsigned flags) +@@ -58,6 +62,8 @@ + struct nvc0_context *nvc0 = nvc0_context(pipe); struct nouveau_pushbuf *push = nvc0->base.pushbuf; int i, s; - -+ pipe_mutex_lock(nvc0_context(pipe)->screen->base.push_mutex); + ++ pipe_mutex_lock(nvc0_context(pipe)->screen->base.push_mutex); + if (flags & PIPE_BARRIER_MAPPED_BUFFER) { for (i = 0; i < nvc0->num_vtxbufs; ++i) { - if (!nvc0->vtxbuf[i].buffer) -@@ -108,6 +114,8 @@ nvc0_memory_barrier(struct pipe_context *pipe, unsigned flags) +@@ -108,6 +114,8 @@ nvc0->cb_dirty = true; if (flags & (PIPE_BARRIER_VERTEX_BUFFER | PIPE_BARRIER_INDEX_BUFFER)) nvc0->base.vbo_dirty = true; @@ -1139,7 +1114,7 @@ index 1137e6c..28d6fec 100644 } static void -@@ -124,6 +132,7 @@ nvc0_emit_string_marker(struct pipe_context *pipe, const char *str, int len) +@@ -124,6 +132,7 @@ data_words = string_words; else data_words = string_words + !!(len & 3); @@ -1147,7 +1122,7 @@ index 1137e6c..28d6fec 100644 BEGIN_NIC0(push, SUBC_3D(NV04_GRAPH_NOP), data_words); if (string_words) PUSH_DATAp(push, str, string_words); -@@ -132,6 +141,7 @@ nvc0_emit_string_marker(struct pipe_context *pipe, const char *str, int len) +@@ -132,6 +141,7 @@ memcpy(&data, &str[string_words * 4], len & 3); PUSH_DATA (push, data); } @@ -1155,7 +1130,7 @@ index 1137e6c..28d6fec 100644 } static void -@@ -362,6 +372,8 @@ nvc0_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -365,6 +375,8 @@ return NULL; pipe = &nvc0->base.pipe; @@ -1164,7 +1139,7 @@ index 1137e6c..28d6fec 100644 if (!nvc0_blitctx_create(nvc0)) goto out_err; -@@ -465,9 +477,12 @@ nvc0_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags) +@@ -468,9 +480,12 @@ util_dynarray_init(&nvc0->global_residents); @@ -1177,11 +1152,9 @@ index 1137e6c..28d6fec 100644 if (nvc0) { if (nvc0->bufctx_3d) nouveau_bufctx_del(&nvc0->bufctx_3d); -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h -index f6d535a..f169b7f 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h -@@ -294,6 +294,11 @@ uint32_t nvc0_program_symbol_offset(const struct nvc0_program *, +@@ -299,6 +299,11 @@ uint32_t label); void nvc0_program_init_tcp_empty(struct nvc0_context *); @@ -1193,11 +1166,9 @@ index f6d535a..f169b7f 100644 /* nvc0_shader_state.c */ void nvc0_vertprog_validate(struct nvc0_context *); void nvc0_tctlprog_validate(struct nvc0_context *); -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query.c -index 91fb72f..55d1dc1 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_query.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query.c -@@ -92,7 +92,7 @@ nvc0_get_query_result_resource(struct pipe_context *pipe, +@@ -92,7 +92,7 @@ index, resource, offset); } @@ -1206,7 +1177,7 @@ index 91fb72f..55d1dc1 100644 nvc0_render_condition(struct pipe_context *pipe, struct pipe_query *pq, boolean condition, uint mode) -@@ -161,6 +161,16 @@ nvc0_render_condition(struct pipe_context *pipe, +@@ -161,6 +161,16 @@ PUSH_DATA (push, hq->bo->offset + hq->offset); } @@ -1223,7 +1194,7 @@ index 91fb72f..55d1dc1 100644 int nvc0_screen_get_driver_query_info(struct pipe_screen *pscreen, unsigned id, -@@ -272,6 +282,6 @@ nvc0_init_query_functions(struct nvc0_context *nvc0) +@@ -272,6 +282,6 @@ pipe->get_query_result = nvc0_get_query_result; pipe->get_query_result_resource = nvc0_get_query_result_resource; pipe->set_active_query_state = nvc0_set_active_query_state; @@ -1231,11 +1202,9 @@ index 91fb72f..55d1dc1 100644 + pipe->render_condition = nvc0_render_condition_locked; nvc0->cond_condmode = NVC0_3D_COND_MODE_ALWAYS; } -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c -index 4c34593..f2584cb 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c -@@ -154,6 +154,7 @@ nvc0_hw_begin_query(struct nvc0_context *nvc0, struct nvc0_query *q) +@@ -154,6 +154,7 @@ } hq->sequence++; @@ -1243,7 +1212,7 @@ index 4c34593..f2584cb 100644 switch (q->type) { case PIPE_QUERY_OCCLUSION_COUNTER: case PIPE_QUERY_OCCLUSION_PREDICATE: -@@ -198,6 +199,7 @@ nvc0_hw_begin_query(struct nvc0_context *nvc0, struct nvc0_query *q) +@@ -198,6 +199,7 @@ default: break; } @@ -1251,7 +1220,7 @@ index 4c34593..f2584cb 100644 hq->state = NVC0_HW_QUERY_STATE_ACTIVE; return ret; } -@@ -221,6 +223,7 @@ nvc0_hw_end_query(struct nvc0_context *nvc0, struct nvc0_query *q) +@@ -221,6 +223,7 @@ } hq->state = NVC0_HW_QUERY_STATE_ENDED; @@ -1259,7 +1228,7 @@ index 4c34593..f2584cb 100644 switch (q->type) { case PIPE_QUERY_OCCLUSION_COUNTER: case PIPE_QUERY_OCCLUSION_PREDICATE: -@@ -276,6 +279,7 @@ nvc0_hw_end_query(struct nvc0_context *nvc0, struct nvc0_query *q) +@@ -276,6 +279,7 @@ default: break; } @@ -1267,7 +1236,7 @@ index 4c34593..f2584cb 100644 if (hq->is64bit) nouveau_fence_ref(nvc0->screen->base.fence.current, &hq->fence); } -@@ -298,16 +302,21 @@ nvc0_hw_get_query_result(struct nvc0_context *nvc0, struct nvc0_query *q, +@@ -298,16 +302,21 @@ nvc0_hw_query_update(nvc0->screen->base.client, q); if (hq->state != NVC0_HW_QUERY_STATE_READY) { @@ -1290,7 +1259,7 @@ index 4c34593..f2584cb 100644 NOUVEAU_DRV_STAT(&nvc0->screen->base, query_sync_count, 1); } hq->state = NVC0_HW_QUERY_STATE_READY; -@@ -374,6 +383,8 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0, +@@ -374,6 +383,8 @@ assert(!hq->funcs || !hq->funcs->get_query_result); @@ -1299,7 +1268,7 @@ index 4c34593..f2584cb 100644 if (index == -1) { /* TODO: Use a macro to write the availability of the query */ if (hq->state != NVC0_HW_QUERY_STATE_READY) -@@ -382,6 +393,7 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0, +@@ -382,6 +393,7 @@ nvc0->base.push_cb(&nvc0->base, buf, offset, result_type >= PIPE_QUERY_TYPE_I64 ? 2 : 1, ready); @@ -1307,7 +1276,7 @@ index 4c34593..f2584cb 100644 return; } -@@ -469,6 +481,8 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0, +@@ -469,6 +481,8 @@ 4 | NVC0_IB_ENTRY_1_NO_PREFETCH); } @@ -1316,11 +1285,9 @@ index 4c34593..f2584cb 100644 if (buf->mm) { nouveau_fence_ref(nvc0->screen->base.fence.current, &buf->fence); nouveau_fence_ref(nvc0->screen->base.fence.current, &buf->fence_wr); -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_sm.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_sm.c -index 27cbbc4..d416e00 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_sm.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_sm.c -@@ -1662,6 +1662,7 @@ nve4_hw_sm_begin_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1662,6 +1662,7 @@ return false; } @@ -1328,7 +1295,7 @@ index 27cbbc4..d416e00 100644 assert(cfg->num_counters <= 4); PUSH_SPACE(push, 4 * 8 * + 6); -@@ -1710,6 +1711,7 @@ nve4_hw_sm_begin_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1710,6 +1711,7 @@ BEGIN_NVC0(push, NVE4_CP(MP_PM_SET(c)), 1); PUSH_DATA (push, 0); } @@ -1336,7 +1303,7 @@ index 27cbbc4..d416e00 100644 return true; } -@@ -1733,6 +1735,7 @@ nvc0_hw_sm_begin_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1733,6 +1735,7 @@ return false; } @@ -1344,7 +1311,7 @@ index 27cbbc4..d416e00 100644 assert(cfg->num_counters <= 8); PUSH_SPACE(push, 8 * 8 + 2); -@@ -1779,6 +1782,7 @@ nvc0_hw_sm_begin_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1779,6 +1782,7 @@ BEGIN_NVC0(push, NVC0_CP(MP_PM_SET(c)), 1); PUSH_DATA (push, 0); } @@ -1352,7 +1319,7 @@ index 27cbbc4..d416e00 100644 return true; } -@@ -1866,6 +1870,7 @@ nvc0_hw_sm_end_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1866,6 +1870,7 @@ if (unlikely(!screen->pm.prog)) screen->pm.prog = nvc0_hw_sm_get_program(screen); @@ -1360,7 +1327,7 @@ index 27cbbc4..d416e00 100644 /* disable all counting */ PUSH_SPACE(push, 8); for (c = 0; c < 8; ++c) -@@ -1893,6 +1898,7 @@ nvc0_hw_sm_end_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1893,6 +1898,7 @@ /* upload input data for the compute shader which reads MP counters */ nvc0_hw_sm_upload_input(nvc0, hq); @@ -1368,7 +1335,7 @@ index 27cbbc4..d416e00 100644 pipe->bind_compute_state(pipe, screen->pm.prog); for (i = 0; i < 3; i++) { -@@ -1906,6 +1912,7 @@ nvc0_hw_sm_end_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1906,6 +1912,7 @@ nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_QUERY); @@ -1376,7 +1343,7 @@ index 27cbbc4..d416e00 100644 /* re-activate other counters */ PUSH_SPACE(push, 16); mask = 0; -@@ -1930,6 +1937,7 @@ nvc0_hw_sm_end_query(struct nvc0_context *nvc0, struct nvc0_hw_query *hq) +@@ -1930,6 +1937,7 @@ PUSH_DATA (push, (cfg->ctr[i].func << 4) | cfg->ctr[i].mode); } } @@ -1384,11 +1351,9 @@ index 27cbbc4..d416e00 100644 } static inline bool -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c -index e0bfd3b..2a36d42 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c -@@ -494,7 +494,9 @@ nvc0_screen_destroy(struct pipe_screen *pscreen) +@@ -507,7 +507,9 @@ * _current_ one, and remove both. */ nouveau_fence_ref(screen->base.fence.current, ¤t); @@ -1398,11 +1363,9 @@ index e0bfd3b..2a36d42 100644 nouveau_fence_ref(NULL, ¤t); nouveau_fence_ref(NULL, &screen->base.fence.current); } -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_surface.c b/src/gallium/drivers/nouveau/nvc0/nvc0_surface.c -index 7556e71..8a965fce 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_surface.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_surface.c -@@ -206,11 +206,14 @@ nvc0_resource_copy_region(struct pipe_context *pipe, +@@ -206,11 +206,14 @@ bool m2mf; unsigned dst_layer = dstz, src_layer = src_box->z; @@ -1417,7 +1380,7 @@ index 7556e71..8a965fce 100644 return; } NOUVEAU_DRV_STAT(&nvc0->screen->base, tex_copy_count, 1); -@@ -251,6 +254,7 @@ nvc0_resource_copy_region(struct pipe_context *pipe, +@@ -251,6 +254,7 @@ else srect.base += src_mt->layer_stride; } @@ -1425,7 +1388,7 @@ index 7556e71..8a965fce 100644 return; } -@@ -273,6 +277,7 @@ nvc0_resource_copy_region(struct pipe_context *pipe, +@@ -273,6 +277,7 @@ break; } nouveau_bufctx_reset(nvc0->bufctx, 0); @@ -1433,7 +1396,7 @@ index 7556e71..8a965fce 100644 } static void -@@ -290,8 +295,12 @@ nvc0_clear_render_target(struct pipe_context *pipe, +@@ -291,8 +296,12 @@ assert(dst->texture->target != PIPE_BUFFER); @@ -1447,8 +1410,8 @@ index 7556e71..8a965fce 100644 PUSH_REFN (push, res->bo, res->domain | NOUVEAU_BO_WR); -@@ -354,6 +363,8 @@ nvc0_clear_render_target(struct pipe_context *pipe, - IMMED_NVC0(push, NVC0_3D(COND_MODE), nvc0->cond_condmode); +@@ -357,6 +366,8 @@ + IMMED_NVC0(push, NVC0_3D(COND_MODE), nvc0->cond_condmode); nvc0->dirty_3d |= NVC0_NEW_3D_FRAMEBUFFER; + @@ -1456,7 +1419,7 @@ index 7556e71..8a965fce 100644 } static void -@@ -539,8 +550,11 @@ nvc0_clear_buffer(struct pipe_context *pipe, +@@ -542,8 +553,11 @@ assert(size % data_size == 0); @@ -1468,7 +1431,7 @@ index 7556e71..8a965fce 100644 return; } -@@ -550,8 +564,10 @@ nvc0_clear_buffer(struct pipe_context *pipe, +@@ -553,8 +567,10 @@ nvc0_clear_buffer_push(pipe, res, offset, fixup_size, data, data_size); offset += fixup_size; size -= fixup_size; @@ -1480,7 +1443,7 @@ index 7556e71..8a965fce 100644 } elements = size / data_size; -@@ -561,8 +577,10 @@ nvc0_clear_buffer(struct pipe_context *pipe, +@@ -564,8 +580,10 @@ width &= ~0xff; assert(width > 0); @@ -1492,7 +1455,7 @@ index 7556e71..8a965fce 100644 PUSH_REFN (push, buf->bo, buf->domain | NOUVEAU_BO_WR); -@@ -610,6 +628,8 @@ nvc0_clear_buffer(struct pipe_context *pipe, +@@ -613,6 +631,8 @@ } nvc0->dirty_3d |= NVC0_NEW_3D_FRAMEBUFFER; @@ -1501,7 +1464,7 @@ index 7556e71..8a965fce 100644 } static void -@@ -631,8 +651,11 @@ nvc0_clear_depth_stencil(struct pipe_context *pipe, +@@ -635,8 +655,11 @@ assert(dst->texture->target != PIPE_BUFFER); @@ -1514,8 +1477,8 @@ index 7556e71..8a965fce 100644 PUSH_REFN (push, mt->base.bo, mt->base.domain | NOUVEAU_BO_WR); -@@ -679,6 +702,8 @@ nvc0_clear_depth_stencil(struct pipe_context *pipe, - IMMED_NVC0(push, NVC0_3D(COND_MODE), nvc0->cond_condmode); +@@ -685,6 +708,8 @@ + IMMED_NVC0(push, NVC0_3D(COND_MODE), nvc0->cond_condmode); nvc0->dirty_3d |= NVC0_NEW_3D_FRAMEBUFFER; + @@ -1523,7 +1486,7 @@ index 7556e71..8a965fce 100644 } void -@@ -692,9 +717,13 @@ nvc0_clear(struct pipe_context *pipe, unsigned buffers, +@@ -698,9 +723,13 @@ unsigned i, j, k; uint32_t mode = 0; @@ -1538,7 +1501,7 @@ index 7556e71..8a965fce 100644 if (buffers & PIPE_CLEAR_COLOR && fb->nr_cbufs) { BEGIN_NVC0(push, NVC0_3D(CLEAR_COLOR(0)), 4); -@@ -753,6 +782,8 @@ nvc0_clear(struct pipe_context *pipe, unsigned buffers, +@@ -759,6 +788,8 @@ (j << NVC0_3D_CLEAR_BUFFERS_LAYER__SHIFT)); } } @@ -1547,7 +1510,7 @@ index 7556e71..8a965fce 100644 } -@@ -1157,8 +1188,8 @@ nvc0_blitctx_post_blit(struct nvc0_blitctx *blit) +@@ -1163,8 +1194,8 @@ nvc0->samplers_dirty[4] |= 3; if (nvc0->cond_query && !blit->render_condition_enable) @@ -1558,7 +1521,7 @@ index 7556e71..8a965fce 100644 nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_VTX_TMP); nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_FB); -@@ -1620,6 +1651,8 @@ nvc0_blit(struct pipe_context *pipe, const struct pipe_blit_info *info) +@@ -1626,6 +1657,8 @@ if (info->num_window_rectangles > 0 || info->window_rectangle_include) eng3d = true; @@ -1567,20 +1530,18 @@ index 7556e71..8a965fce 100644 if (nvc0->screen->num_occlusion_queries_active) IMMED_NVC0(push, NVC0_3D(SAMPLECNT_ENABLE), 0); -@@ -1631,6 +1664,8 @@ nvc0_blit(struct pipe_context *pipe, const struct pipe_blit_info *info) +@@ -1636,6 +1669,8 @@ + if (nvc0->screen->num_occlusion_queries_active) IMMED_NVC0(push, NVC0_3D(SAMPLECNT_ENABLE), 1); - -+ pipe_mutex_unlock(nvc0->screen->base.push_mutex); + ++ pipe_mutex_unlock(nvc0->screen->base.push_mutex); + NOUVEAU_DRV_STAT(&nvc0->screen->base, tex_blit_count, 1); } - -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_transfer.c b/src/gallium/drivers/nouveau/nvc0/nvc0_transfer.c -index 14fb53c..6cb39a9 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_transfer.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_transfer.c -@@ -342,16 +342,18 @@ nvc0_mt_sync(struct nvc0_context *nvc0, struct nv50_miptree *mt, unsigned usage) +@@ -342,16 +342,18 @@ return !mt->base.fence_wr || nouveau_fence_wait(mt->base.fence_wr, &nvc0->base.debug); } @@ -1607,7 +1568,7 @@ index 14fb53c..6cb39a9 100644 struct nv50_miptree *mt = nv50_miptree(res); struct nvc0_transfer *tx; uint32_t size; -@@ -465,9 +467,29 @@ nvc0_miptree_transfer_map(struct pipe_context *pctx, +@@ -465,9 +467,29 @@ return tx->rect[1].bo->map; } @@ -1640,7 +1601,7 @@ index 14fb53c..6cb39a9 100644 { struct nvc0_context *nvc0 = nvc0_context(pctx); struct nvc0_transfer *tx = (struct nvc0_transfer *)transfer; -@@ -507,6 +529,18 @@ nvc0_miptree_transfer_unmap(struct pipe_context *pctx, +@@ -507,6 +529,18 @@ FREE(tx); } @@ -1659,11 +1620,11 @@ index 14fb53c..6cb39a9 100644 /* This happens rather often with DTD9/st. */ static void nvc0_cb_push(struct nouveau_context *nv, -diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c -index 4e40ff5..cae621c 100644 + + --- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c -@@ -940,6 +940,8 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -940,6 +940,8 @@ struct nvc0_screen *screen = nvc0->screen; int s; @@ -1672,7 +1633,7 @@ index 4e40ff5..cae621c 100644 /* NOTE: caller must ensure that (min_index + index_bias) is >= 0 */ nvc0->vb_elt_first = info->min_index + info->index_bias; nvc0->vb_elt_limit = info->max_index - info->min_index; -@@ -1033,6 +1035,7 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -1033,6 +1035,7 @@ nvc0_push_vbo(nvc0, info); push->kick_notify = nvc0_default_kick_notify; nouveau_pushbuf_bufctx(push, NULL); @@ -1680,17 +1641,16 @@ index 4e40ff5..cae621c 100644 return; } -@@ -1085,4 +1088,5 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -1085,4 +1088,5 @@ nvc0_release_user_vbufs(nvc0); nouveau_pushbuf_bufctx(push, NULL); +-} + pipe_mutex_unlock(screen->base.push_mutex); - } -diff --git a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c -index 27301a1..1c0528c 100644 ++} --- a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c +++ b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c -@@ -530,12 +530,15 @@ void +@@ -604,11 +604,14 @@ nve4_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) { struct nvc0_context *nvc0 = nvc0_context(pipe); @@ -1700,15 +1660,16 @@ index 27301a1..1c0528c 100644 uint64_t desc_gpuaddr; struct nouveau_bo *desc_bo; int ret; - -+ pipe_mutex_lock(screen->base.push_mutex); + ++ pipe_mutex_lock(screen->base.push_mutex); + desc = nve4_compute_alloc_launch_desc(&nvc0->base, &desc_bo, &desc_gpuaddr); if (!desc) { - ret = -1; -@@ -616,6 +619,7 @@ nve4_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) +@@ -690,6 +693,7 @@ NOUVEAU_ERR("Failed to launch grid !\n"); nouveau_scratch_done(&nvc0->base); nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_DESC); + pipe_mutex_unlock(screen->base.push_mutex); -} \ No newline at end of file + } + + diff --git a/x11/library/mesa/files/2733e5483e1c2b80e4b0ae21187ec5e3e1579397.diff b/x11/library/mesa/files/N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch similarity index 81% rename from x11/library/mesa/files/2733e5483e1c2b80e4b0ae21187ec5e3e1579397.diff rename to x11/library/mesa/files/N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch index 46ad03d16e..5cc8f148e4 100644 --- a/x11/library/mesa/files/2733e5483e1c2b80e4b0ae21187ec5e3e1579397.diff +++ b/x11/library/mesa/files/N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch @@ -1,5 +1,23 @@ +From: Ilia Mirkin +Date: Mon Jun 6 20:30:48 2016 -0400 +Subject: [PATCH 2/5]nouveau: more locking - make sure that fence work is always done with the push mutex acquired +Patch-mainline: N/A +References: boo#997171 +Signed-off-by: Max Staudt + +Cherry-picked from 2733e5483e1c2b80e4b0ae21187ec5e3e1579397 + at https://github.com/imirkin/mesa.git + +Signed-off-by: Max Staudt +--- + src/gallium/drivers/nouveau/nouveau_buffer.c | 4 ++++ + src/gallium/drivers/nouveau/nv50/nv50_miptree.c | 7 +++++-- + src/gallium/drivers/nouveau/nv50/nv50_query_hw.c | 5 ++++- + src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c | 5 ++++- + 4 files changed, 17 insertions(+), 4 deletions(-) + diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c -index 58fa453..a006e9f 100644 +index b54c19b..a5a06cf 100644 --- a/src/gallium/drivers/nouveau/nouveau_buffer.c +++ b/src/gallium/drivers/nouveau/nouveau_buffer.c @@ -80,6 +80,8 @@ release_allocation(struct nouveau_mm_allocation **mm, @@ -12,12 +30,12 @@ index 58fa453..a006e9f 100644 nouveau_fence_work(buf->fence, nouveau_fence_unref_bo, buf->bo); buf->bo = NULL; @@ -89,6 +91,8 @@ nouveau_buffer_release_gpu_storage(struct nv04_resource *buf) - + if (buf->mm) release_allocation(&buf->mm, buf->fence); + if (buf->fence) + pipe_mutex_unlock(buf->fence->screen->push_mutex); - + if (buf->domain == NOUVEAU_BO_VRAM) NOUVEAU_DRV_STAT_RES(buf, buf_obj_current_bytes_vid, -(uint64_t)buf->base.width0); diff --git a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c @@ -27,7 +45,7 @@ index 7450119..38e4faf 100644 @@ -163,10 +163,13 @@ nv50_miptree_destroy(struct pipe_screen *pscreen, struct pipe_resource *pt) { struct nv50_miptree *mt = nv50_miptree(pt); - + - if (mt->base.fence && mt->base.fence->state < NOUVEAU_FENCE_STATE_FLUSHED) + if (mt->base.fence && mt->base.fence->state < NOUVEAU_FENCE_STATE_FLUSHED) { + pipe_mutex_lock(nouveau_screen(pscreen)->push_mutex); @@ -37,7 +55,7 @@ index 7450119..38e4faf 100644 + } else { nouveau_bo_ref(NULL, &mt->base.bo); + } - + nouveau_fence_ref(NULL, &mt->base.fence); nouveau_fence_ref(NULL, &mt->base.fence_wr); diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c b/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c @@ -75,4 +93,4 @@ index f2584cb..4b51a67 100644 + } } } -if (size) { \ No newline at end of file + if (size) { diff --git a/x11/library/mesa/files/940b3a773f264f3f52574160f0d06c48f8e8aeb2.diff b/x11/library/mesa/files/N_03-nv30-locking-fixes.patch similarity index 83% rename from x11/library/mesa/files/940b3a773f264f3f52574160f0d06c48f8e8aeb2.diff rename to x11/library/mesa/files/N_03-nv30-locking-fixes.patch index b4cbcaca36..36dda63bc3 100644 --- a/x11/library/mesa/files/940b3a773f264f3f52574160f0d06c48f8e8aeb2.diff +++ b/x11/library/mesa/files/N_03-nv30-locking-fixes.patch @@ -1,11 +1,27 @@ +From: Ilia Mirkin +Date: Tue Jun 21 22:59:50 2016 -0400 +Subject: [PATCH 3/5]nv30 locking fixes +Patch-mainline: N/A +References: boo#997171 +Signed-off-by: Max Staudt + +Cherry-picked from 940b3a773f264f3f52574160f0d06c48f8e8aeb2 + at https://github.com/imirkin/mesa.git + +Signed-off-by: Max Staudt +--- + src/gallium/drivers/nouveau/nv30/nv30_draw.c | 20 ++++++++++++++++++-- + src/gallium/drivers/nouveau/nv30/nv30_fragprog.c | 4 ++++ + 2 files changed, 22 insertions(+), 2 deletions(-) + diff --git a/src/gallium/drivers/nouveau/nv30/nv30_draw.c b/src/gallium/drivers/nouveau/nv30/nv30_draw.c -index 10c9f56..c5761a3 100644 +index 7b0d074..1c71534 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_draw.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_draw.c @@ -127,6 +127,8 @@ nv30_render_draw_elements(struct vbuf_render *render, struct nouveau_pushbuf *push = nv30->screen->base.pushbuf; unsigned i; - + + pipe_mutex_lock(nv30->screen->base.push_mutex); + BEGIN_NV04(push, NV30_3D(VTXBUF(0)), r->vertex_info.num_attribs); @@ -14,13 +30,13 @@ index 10c9f56..c5761a3 100644 @@ -134,8 +136,10 @@ nv30_render_draw_elements(struct vbuf_render *render, NOUVEAU_BO_LOW | NOUVEAU_BO_RD, 0, NV30_3D_VTXBUF_DMA1); } - + - if (!nv30_state_validate(nv30, ~0, false)) + if (!nv30_state_validate(nv30, ~0, false)) { + pipe_mutex_unlock(nv30->screen->base.push_mutex); return; + } - + BEGIN_NV04(push, NV30_3D(VERTEX_BEGIN_END), 1); PUSH_DATA (push, r->prim); @@ -160,6 +164,8 @@ nv30_render_draw_elements(struct vbuf_render *render, @@ -30,12 +46,12 @@ index 10c9f56..c5761a3 100644 + + pipe_mutex_unlock(nv30->screen->base.push_mutex); } - + static void @@ -172,6 +178,8 @@ nv30_render_draw_arrays(struct vbuf_render *render, unsigned start, uint nr) unsigned ps = fn + (pn ? 1 : 0); unsigned i; - + + pipe_mutex_lock(nv30->screen->base.push_mutex); + BEGIN_NV04(push, NV30_3D(VTXBUF(0)), r->vertex_info.num_attribs); @@ -44,13 +60,13 @@ index 10c9f56..c5761a3 100644 @@ -179,8 +187,10 @@ nv30_render_draw_arrays(struct vbuf_render *render, unsigned start, uint nr) NOUVEAU_BO_LOW | NOUVEAU_BO_RD, 0, NV30_3D_VTXBUF_DMA1); } - + - if (!nv30_state_validate(nv30, ~0, false)) + if (!nv30_state_validate(nv30, ~0, false)) { + pipe_mutex_unlock(nv30->screen->base.push_mutex); return; + } - + BEGIN_NV04(push, NV30_3D(VERTEX_BEGIN_END), 1); PUSH_DATA (push, r->prim); @@ -197,6 +207,8 @@ nv30_render_draw_arrays(struct vbuf_render *render, unsigned start, uint nr) @@ -60,21 +76,21 @@ index 10c9f56..c5761a3 100644 + + pipe_mutex_unlock(nv30->screen->base.push_mutex); } - + static void -@@ -386,6 +398,8 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) - +@@ -383,6 +395,8 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) + nv30_render_validate(nv30); - + + pipe_mutex_unlock(nv30->screen->base.push_mutex); + if (nv30->draw_dirty & NV30_NEW_VIEWPORT) draw_set_viewport_states(draw, 0, 1, &nv30->viewport); if (nv30->draw_dirty & NV30_NEW_RASTERIZER) -@@ -451,6 +465,8 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) +@@ -448,6 +462,8 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) if (transfer[i]) pipe_buffer_unmap(pipe, transfer[i]); - + + pipe_mutex_lock(nv30->screen->base.push_mutex); + nv30->draw_dirty = 0; @@ -87,18 +103,18 @@ index 6de61bc..fd21f99 100644 @@ -38,6 +38,8 @@ nv30_fragprog_upload(struct nv30_context *nv30) struct nv30_fragprog *fp = nv30->fragprog.program; struct pipe_context *pipe = &nv30->base.pipe; - + + pipe_mutex_unlock(nv->screen->push_mutex); + if (unlikely(!fp->buffer)) fp->buffer = pipe_buffer_create(pipe->screen, 0, 0, fp->insn_len * 4); - + @@ -60,6 +62,8 @@ nv30_fragprog_upload(struct nv30_context *nv30) - + if (nv04_resource(fp->buffer)->domain != NOUVEAU_BO_VRAM) nouveau_buffer_migrate(nv, nv04_resource(fp->buffer), NOUVEAU_BO_VRAM); + + pipe_mutex_lock(nv->screen->push_mutex); } - -void \ No newline at end of file + + void diff --git a/x11/library/mesa/files/N_04-nv50-Fix-double-lock-in-nv50_hw_sm_get_query_result.patch b/x11/library/mesa/files/N_04-nv50-Fix-double-lock-in-nv50_hw_sm_get_query_result.patch new file mode 100644 index 0000000000..796f5a9ff8 --- /dev/null +++ b/x11/library/mesa/files/N_04-nv50-Fix-double-lock-in-nv50_hw_sm_get_query_result.patch @@ -0,0 +1,24 @@ +From: Max Staudt +Date: Wed Oct 5 18:49:41 2016 +0200 +Subject: [PATCH 4/5]nv50: Fix double lock in nv50_hw_sm_get_query_result() +Patch-mainline: N/A +References: boo#997171 +Signed-off-by: Max Staudt + +Signed-off-by: Max Staudt +--- + src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c +index 31445eb..acc64ac 100644 +--- a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c ++++ b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c +@@ -351,7 +351,7 @@ nv50_hw_sm_get_query_result(struct nv50_context *nv50, struct nv50_hw_query *hq, + + pipe_mutex_lock(nv50->screen->base.push_mutex); + ret = nv50_hw_sm_query_read_data(count, nv50, wait, hq, cfg, mp_count); +- pipe_mutex_lock(nv50->screen->base.push_mutex); ++ pipe_mutex_unlock(nv50->screen->base.push_mutex); + if (!ret) + return false; \ No newline at end of file diff --git a/x11/library/mesa/files/N_05-Use-nv50_render_condition-in-nv50_blitctx_post_blit.patch b/x11/library/mesa/files/N_05-Use-nv50_render_condition-in-nv50_blitctx_post_blit.patch new file mode 100644 index 0000000000..fd9ad2e337 --- /dev/null +++ b/x11/library/mesa/files/N_05-Use-nv50_render_condition-in-nv50_blitctx_post_blit.patch @@ -0,0 +1,29 @@ +From: Max Staudt +Date: Wed Oct 5 18:51:38 2016 +0200 +Subject: [PATCH 5/5]Use nv50_render_condition() in nv50_blitctx_post_blit() +Patch-mainline: N/A +References: boo#997171 +Signed-off-by: Max Staudt + +Analogous to what happens in nvc0_blitctx_post_blit() + +Signed-off-by: Max Staudt +--- + src/gallium/drivers/nouveau/nv50/nv50_surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/gallium/drivers/nouveau/nv50/nv50_surface.c b/src/gallium/drivers/nouveau/nv50/nv50_surface.c +index d6b9de0..36cd72b 100644 +--- a/src/gallium/drivers/nouveau/nv50/nv50_surface.c ++++ b/src/gallium/drivers/nouveau/nv50/nv50_surface.c +@@ -1328,8 +1328,8 @@ nv50_blitctx_post_blit(struct nv50_blitctx *blit) + nv50->samplers[2][1] = blit->saved.sampler[1]; + + if (nv50->cond_query && !blit->render_condition_enable) +- nv50->base.pipe.render_condition(&nv50->base.pipe, nv50->cond_query, +- nv50->cond_cond, nv50->cond_mode); ++ nv50_render_condition(&nv50->base.pipe, nv50->cond_query, ++ nv50->cond_cond, nv50->cond_mode); + + nouveau_bufctx_reset(nv50->bufctx_3d, NV50_BIND_3D_FB); + nouveau_bufctx_reset(nv50->bufctx_3d, NV50_BIND_3D_TEXTURES); diff --git a/x11/library/mesa/files/n_Define-GLAPIVAR-separate-from-GLAPI.patch b/x11/library/mesa/files/n_Define-GLAPIVAR-separate-from-GLAPI.patch new file mode 100644 index 0000000000..92816bc9cf --- /dev/null +++ b/x11/library/mesa/files/n_Define-GLAPIVAR-separate-from-GLAPI.patch @@ -0,0 +1,40 @@ +From: Egbert Eich +Date: Fri Mar 11 13:29:43 2016 +0100 +Subject: [PATCH]Define GLAPIVAR separate from GLAPI +Patch-mainline: never +Git-commit: 88dda160564c8c23cb533b0eb258404f1687a2e8 + +References: bsc# +Signed-off-by: Egbert Eich + +GLAPI doesn't contain 'extern' in some environments. +This is needed for variables (GLw). + +Signed-off-by: Egbert Eich +--- + Mesa-10.0.3/include/GL/gl.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/include/GL/gl.h b/Mesa-10.0.3/include/GL/gl.h +index b484b96..5189008 100644 +--- a/include/GL/gl.h ++++ b/include/GL/gl.h +@@ -59,6 +59,7 @@ + #elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) + # define GLAPI __attribute__((visibility("default"))) + # define GLAPIENTRY ++# define GLAPIVAR extern GLAPI + #endif /* WIN32 && !CYGWIN */ + + /* +@@ -80,6 +81,10 @@ + #define GLAPI extern + #endif + ++#ifndef GLAPIVAR ++#define GLAPIVAR extern ++#endif ++ + #ifndef GLAPIENTRY + #define GLAPIENTRY + #endif diff --git a/x11/library/mesa/files/n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch b/x11/library/mesa/files/n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch new file mode 100644 index 0000000000..ac7c79c9d0 --- /dev/null +++ b/x11/library/mesa/files/n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch @@ -0,0 +1,52 @@ +From a9af1af5f1f9aa9fdea9e73135a92f053478f849 Mon Sep 17 00:00:00 2001 +From: Stefan Dirsch +Date: Wed, 20 Jan 2016 16:10:15 +0100 +Subject: [PATCH] VDPAU/XVMC libs: Replace hardlinks with copies + +Since these are packaged separately in (open)SUSE anyway, one can use +copies as well. This makes debug packages possible again. (bnc #962609) + +Signed-off-by: Stefan Dirsch +--- + src/gallium/targets/vdpau/Makefile.am | 4 ++-- + src/gallium/targets/xvmc/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/gallium/targets/vdpau/Makefile.am b/src/gallium/targets/vdpau/Makefile.am +index d388f8b..c9cc534 100644 +--- a/src/gallium/targets/vdpau/Makefile.am ++++ b/src/gallium/targets/vdpau/Makefile.am +@@ -86,7 +86,7 @@ all-local: $(vdpau_LTLIBRARIES) + j=libvdpau_gallium.$(LIB_EXT); \ + k=libvdpau_$${i}.$(LIB_EXT); \ + l=$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0; \ +- ln -f .libs/$${j}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0 \ ++ cp -a .libs/$${j}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0 \ + $${link_dir}/$${l}; \ + ln -sf $${l} \ + $${link_dir}/$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR); \ +@@ -111,7 +111,7 @@ install-data-hook: + j=libvdpau_gallium.$(LIB_EXT); \ + k=libvdpau_$${i}.$(LIB_EXT); \ + l=$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0; \ +- ln -f $${dest_dir}/$${j}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0 \ ++ cp -a $${dest_dir}/$${j}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0 \ + $${dest_dir}/$${l}; \ + ln -sf $${l} \ + $${dest_dir}/$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR); \ +diff --git a/src/gallium/targets/xvmc/Makefile.am b/src/gallium/targets/xvmc/Makefile.am +index fdc5f4b..93ef230 100644 +--- a/src/gallium/targets/xvmc/Makefile.am ++++ b/src/gallium/targets/xvmc/Makefile.am +@@ -73,7 +73,7 @@ install-data-hook: + j=libXvMCgallium.$(LIB_EXT); \ + k=libXvMC$${i}.$(LIB_EXT); \ + l=$${k}.$(XVMC_MAJOR).$(XVMC_MINOR).0; \ +- ln -f $${dest_dir}/$${j}.$(XVMC_MAJOR).$(XVMC_MINOR).0 \ ++ cp -a $${dest_dir}/$${j}.$(XVMC_MAJOR).$(XVMC_MINOR).0 \ + $${dest_dir}/$${l}; \ + ln -sf $${l} \ + $${dest_dir}/$${k}.$(XVMC_MAJOR).$(XVMC_MINOR); \ +-- +2.6.2 + diff --git a/x11/library/mesa/pspec.xml b/x11/library/mesa/pspec.xml index 793141170f..c1eed0f69d 100644 --- a/x11/library/mesa/pspec.xml +++ b/x11/library/mesa/pspec.xml @@ -40,9 +40,13 @@ libxshmfence-devel - - 2733e5483e1c2b80e4b0ae21187ec5e3e1579397.diff - 940b3a773f264f3f52574160f0d06c48f8e8aeb2.diff + n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch + n_Define-GLAPIVAR-separate-from-GLAPI.patch + N_01-WIP-nouveau-add-locking.patch + N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch + N_03-nv30-locking-fixes.patch + N_04-nv50-Fix-double-lock-in-nv50_hw_sm_get_query_result.patch + N_05-Use-nv50_render_condition-in-nv50_blitctx_post_blit.patch @@ -177,7 +181,7 @@ - 2017-02-12 + 2017-02-15 13.0.4 llvm rebuild Alihan Öztürk From 23fd4d048255ae78d59650abbc5a065e7cf0e6d8 Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 13:52:22 +0300 Subject: [PATCH 06/15] some packages update and rebuild --- multimedia/misc/gd/actions.py | 2 +- .../misc/gd/files/gd-2.1.0-multilib.patch | 34 +++++++++++++ multimedia/misc/gd/files/gd-2.2.3-tests.patch | 42 +++++++++++++++ .../misc/gd/files/gd-2.2.4-upstream.patch | 51 +++++++++++++++++++ multimedia/misc/gd/pspec.xml | 15 +++++- multimedia/misc/jansson/pspec.xml | 9 +++- multimedia/misc/libass/pspec.xml | 27 ++++++---- multimedia/misc/libbluray/pspec.xml | 9 +++- multimedia/misc/libcdr/pspec.xml | 9 +++- 9 files changed, 182 insertions(+), 16 deletions(-) create mode 100644 multimedia/misc/gd/files/gd-2.1.0-multilib.patch create mode 100644 multimedia/misc/gd/files/gd-2.2.3-tests.patch create mode 100644 multimedia/misc/gd/files/gd-2.2.4-upstream.patch diff --git a/multimedia/misc/gd/actions.py b/multimedia/misc/gd/actions.py index 941499b607..0422280235 100644 --- a/multimedia/misc/gd/actions.py +++ b/multimedia/misc/gd/actions.py @@ -26,4 +26,4 @@ def install(): autotools.rawInstall("DESTDIR=%s" % get.installDIR()) pisitools.dohtml(".") - pisitools.dodoc("COPYING", "NEWS", "ChangeLog") + pisitools.dodoc("COPYING", "README*") diff --git a/multimedia/misc/gd/files/gd-2.1.0-multilib.patch b/multimedia/misc/gd/files/gd-2.1.0-multilib.patch new file mode 100644 index 0000000000..28c3d12795 --- /dev/null +++ b/multimedia/misc/gd/files/gd-2.1.0-multilib.patch @@ -0,0 +1,34 @@ +diff -up gd-2.1.0/config/gdlib-config.in.multilib gd-2.1.0/config/gdlib-config.in +--- gd-2.1.0/config/gdlib-config.in.multilib 2013-04-21 16:58:17.820010758 +0200 ++++ gd-2.1.0/config/gdlib-config.in 2013-04-21 16:59:27.896317922 +0200 +@@ -7,9 +7,10 @@ + # installation directories + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ ++libdir=`pkg-config gdlib --variable=libdir` + includedir=@includedir@ + bindir=@bindir@ ++ldflags=`pkg-config gdlib --variable=ldflags` + + usage() + { +@@ -68,7 +69,7 @@ while test $# -gt 0; do + echo @GDLIB_REVISION@ + ;; + --ldflags) +- echo @LDFLAGS@ ++ echo $ldflags + ;; + --libs) + echo -lgd @LIBS@ @LIBICONV@ +@@ -83,7 +84,7 @@ while test $# -gt 0; do + echo "GD library @VERSION@" + echo "includedir: $includedir" + echo "cflags: -I@includedir@" +- echo "ldflags: @LDFLAGS@" ++ echo "ldflags: $ldflags" + echo "libs: @LIBS@ @LIBICONV@" + echo "libdir: $libdir" + echo "features: @FEATURES@" + diff --git a/multimedia/misc/gd/files/gd-2.2.3-tests.patch b/multimedia/misc/gd/files/gd-2.2.3-tests.patch new file mode 100644 index 0000000000..079506e2b7 --- /dev/null +++ b/multimedia/misc/gd/files/gd-2.2.3-tests.patch @@ -0,0 +1,42 @@ +From 2b3dd57a6ccb2940f2e9119ae04e14362e2a1f61 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Fri, 22 Jul 2016 08:14:12 +0200 +Subject: [PATCH] Fix gd2/gd2_read.c:8:6: error: 'error' may be used + uninitialized in this function [-Werror=maybe-uninitialized] + +Also report about any error, not only the last one. +--- + tests/gd2/gd2_read.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/tests/gd2/gd2_read.c b/tests/gd2/gd2_read.c +index 94fe069..8ce8bd1 100644 +--- a/tests/gd2/gd2_read.c ++++ b/tests/gd2/gd2_read.c +@@ -5,7 +5,7 @@ + + int main(int argc, char *argv[]) + { +- int error, i = 0; ++ int error = 0, i = 0; + gdImagePtr im, exp; + FILE *fp; + char *path[] = { +@@ -40,8 +40,6 @@ int main(int argc, char *argv[]) + gdTestErrorMsg("image %s differs from expected result\n", path[i]); + gdImageDestroy(im); + error = 1; +- } else { +- error = 0; + } + if (exp) { + gdImageDestroy(exp); +@@ -52,8 +50,6 @@ int main(int argc, char *argv[]) + gdTestErrorMsg("image %s should have failed to be loaded\n", path[i]); + gdImageDestroy(im); + error = 1; +- } else { +- error = 0; + } + } + i++; \ No newline at end of file diff --git a/multimedia/misc/gd/files/gd-2.2.4-upstream.patch b/multimedia/misc/gd/files/gd-2.2.4-upstream.patch new file mode 100644 index 0000000000..a40c766cbb --- /dev/null +++ b/multimedia/misc/gd/files/gd-2.2.4-upstream.patch @@ -0,0 +1,51 @@ +From c9b601a658a79e6ea2aad29fbf60ca6e24ccef1e Mon Sep 17 00:00:00 2001 +From: "Christoph M. Becker" +Date: Wed, 18 Jan 2017 13:59:02 +0100 +Subject: [PATCH] Fix build issue regarding INT_MAX + +For portability gd_gd2.c needs to include . +--- + src/gd_gd2.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/gd_gd2.c b/src/gd_gd2.c +index c2904ca..049c4c5 100644 +--- a/src/gd_gd2.c ++++ b/src/gd_gd2.c +@@ -74,6 +74,7 @@ + + /* 2.0.29: no more errno.h, makes windows happy */ + #include ++#include + #include + #include "gd.h" + #include "gd_errors.h" + + +From 55ac28a293eaa8c531870c8bb8ecc04b333975f4 Mon Sep 17 00:00:00 2001 +From: "Christoph M. Becker" +Date: Thu, 19 Jan 2017 01:02:58 +0100 +Subject: [PATCH] Fix #357: 2.2.4: Segfault in test suite. + +We make sure to never pass a negative `int` as argument to a `size_t` +parameter. +--- + src/gd_io_dp.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/gd_io_dp.c b/src/gd_io_dp.c +index eda2eeb..cb38794 100644 +--- a/src/gd_io_dp.c ++++ b/src/gd_io_dp.c +@@ -292,6 +292,10 @@ static int dynamicGetbuf(gdIOCtxPtr ctx, void *buf, int len) + rlen = dp->realSize - dp->pos; + } + ++ if (rlen < 0) { ++ return 0; ++ } ++ + memcpy(buf, (void *) ((char *)dp->data + dp->pos), rlen); + dp->pos += rlen; + + diff --git a/multimedia/misc/gd/pspec.xml b/multimedia/misc/gd/pspec.xml index d4d9cbaeee..026a00d901 100644 --- a/multimedia/misc/gd/pspec.xml +++ b/multimedia/misc/gd/pspec.xml @@ -13,7 +13,8 @@ library A fast library for creating graphic images The gd graphics library allows your code to quickly draw images complete with lines, arcs, text, multiple colors, cut and paste from other images, and flood fills, and to write out the result as a PNG or JPEG file. This is particularly useful in Web applications, where PNG and JPEG are two of the formats accepted for inline images by most browsers. Note that gd is not a paint program. - https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz + https://github.com/libgd/libgd/releases/download/gd-2.2.4/libgd-2.2.4.tar.xz + fontconfig-devel zlib-devel freetype-devel @@ -23,7 +24,10 @@ libvpx-devel - gd-2.1.1-libvpx-1.4.0.patch + + gd-2.1.0-multilib.patch + gd-2.2.3-tests.patch + gd-2.2.4-upstream.patch @@ -67,6 +71,13 @@ + + 2017-02-15 + 2.2.4 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-12 2.1.1 diff --git a/multimedia/misc/jansson/pspec.xml b/multimedia/misc/jansson/pspec.xml index b08d519459..734d777de3 100644 --- a/multimedia/misc/jansson/pspec.xml +++ b/multimedia/misc/jansson/pspec.xml @@ -12,7 +12,7 @@ library Jansson is a C library for encoding, decoding and manipulating JSON data. It features: Simple and intuitive API and data model, Comprehensive documentation, No dependencies on other libraries, Full Unicode support (UTF-8), Extensive test suite. - http://www.digip.org/jansson/releases/jansson-2.7.tar.bz2 + http://www.digip.org/jansson/releases/jansson-2.9.tar.bz2 glibc-devel @@ -46,6 +46,13 @@ + + 2017-02-15 + 2.9 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 2.7 diff --git a/multimedia/misc/libass/pspec.xml b/multimedia/misc/libass/pspec.xml index 6ca9c31d19..9f4ee2d86d 100644 --- a/multimedia/misc/libass/pspec.xml +++ b/multimedia/misc/libass/pspec.xml @@ -12,20 +12,20 @@ library Subtitle rendering library libass is a portable subtitle rendering library for the ASS/SSA. - https://github.com/libass/libass/releases/download/0.13.1/libass-0.13.1.tar.xz + https://github.com/libass/libass/releases/download/0.13.6/libass-0.13.6.tar.xz - fontconfig-devel - freetype-devel - fribidi-devel + fontconfig-devel + freetype-devel + fribidi-devel libass - fontconfig - freetype - fribidi + fontconfig + freetype + fribidi harfbuzz @@ -39,9 +39,9 @@ Development files for libass libass - fontconfig-devel - freetype-devel - fribidi-devel + fontconfig-devel + freetype-devel + fribidi-devel harfbuzz-devel @@ -51,6 +51,13 @@ + + 2017-02-15 + 0.13.6 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 0.13.1 diff --git a/multimedia/misc/libbluray/pspec.xml b/multimedia/misc/libbluray/pspec.xml index e22458c1f8..1b8f55fafa 100644 --- a/multimedia/misc/libbluray/pspec.xml +++ b/multimedia/misc/libbluray/pspec.xml @@ -12,7 +12,7 @@ library Library to access Blu-Ray disks for video playback Libbluray package is aiming to provide a full portable free open source bluray library, which can be plugged into popular media players to allow full bluray navigation and playback on Linux. It will eventually be compatible with all current titles, and will be easily portable and embeddable in standard players such as mplayer and vlc. - ftp://ftp.videolan.org/pub/videolan/libbluray/0.9.2/libbluray-0.9.2.tar.bz2 + ftp://ftp.videolan.org/pub/videolan/libbluray/0.9.3/libbluray-0.9.3.tar.bz2 libtool doxygen @@ -60,6 +60,13 @@ + + 2017-02-15 + 0.9.3 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 0.9.2 diff --git a/multimedia/misc/libcdr/pspec.xml b/multimedia/misc/libcdr/pspec.xml index 99e6003f16..848d42cffe 100644 --- a/multimedia/misc/libcdr/pspec.xml +++ b/multimedia/misc/libcdr/pspec.xml @@ -14,7 +14,7 @@ library Library parsing the Corel cdr documents Libcdr is library providing ability to interpret and import Corel Draw drawings into various applications. - http://dev-www.libreoffice.org/src/libcdr/libcdr-0.1.2.tar.xz + http://dev-www.libreoffice.org/src/libcdr/libcdr-0.1.3.tar.xz doxygen zlib-devel @@ -61,6 +61,13 @@ + + 2017-02-15 + 0.1.3 + Version Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 0.1.2 From e137b364d861cd94ef2c54982a8fa215485576d6 Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 15:59:38 +0300 Subject: [PATCH 07/15] enblend:disable patch --- multimedia/graphics/enblend/pspec.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multimedia/graphics/enblend/pspec.xml b/multimedia/graphics/enblend/pspec.xml index bddabeca44..055109e388 100644 --- a/multimedia/graphics/enblend/pspec.xml +++ b/multimedia/graphics/enblend/pspec.xml @@ -26,7 +26,7 @@ imagemagick-devel - gentoo_prepare.patch + From 69f44ed36d2c61ddfed0cd7b0d0f70791453ee7d Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Wed, 15 Feb 2017 16:12:55 +0300 Subject: [PATCH 08/15] firebird:rebuild --- server/database/firebird/pspec.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/database/firebird/pspec.xml b/server/database/firebird/pspec.xml index 1af10b266e..bdfd2d1899 100644 --- a/server/database/firebird/pspec.xml +++ b/server/database/firebird/pspec.xml @@ -15,7 +15,7 @@ library A relational database offering many ANSI SQL-99 features Firebird is an open source relational database management system offering many ANSI SQL-99 features. - http://sourceforge.net/projects/firebird/files/firebird/3.0.1-Release/Firebird-3.0.1.32609-0.tar.bz2 + http://sourceforge.net/projects/firebird/files/firebird/2.5.4-Release/Firebird-2.5.4.26856-0.tar.bz2 icu4c-devel btyacc @@ -103,11 +103,11 @@ - 2017-02-14 - 3.0.1.32609 - Version Bump - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org + 2017-02-15 + 2.5.4.26856 + Release Bump + Pisi Linux Community + admin@pisilinux.org 2016-06-08 From e5ae56a50aa5efc78b28d0df93c0eb3c86ca94e6 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Wed, 15 Feb 2017 17:08:58 +0300 Subject: [PATCH 09/15] unixODBC:rebuild --- programming/misc/unixODBC/pspec.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/programming/misc/unixODBC/pspec.xml b/programming/misc/unixODBC/pspec.xml index 237fdf2d06..08abaed427 100644 --- a/programming/misc/unixODBC/pspec.xml +++ b/programming/misc/unixODBC/pspec.xml @@ -56,6 +56,13 @@ + + 2017-02-15 + 2.3.4 + Release Bump + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 2.3.4 From eee7f742176fa7fa967baace05eadffc1bc9cd2c Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 17:44:29 +0300 Subject: [PATCH 10/15] darkice, enblend and hugin fix --- multimedia/graphics/hugin/actions.py | 11 ++++++++++- multimedia/graphics/hugin/pspec.xml | 1 + multimedia/stream/darkice/actions.py | 5 ++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/multimedia/graphics/hugin/actions.py b/multimedia/graphics/hugin/actions.py index 87aa79e22b..0e274b4f9a 100644 --- a/multimedia/graphics/hugin/actions.py +++ b/multimedia/graphics/hugin/actions.py @@ -10,13 +10,22 @@ from pisi.actionsapi import shelltools from pisi.actionsapi import get def setup(): + shelltools.makedirs("build") + shelltools.cd("build") + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ - -DENABLE_LAPACK=yes") + -DENABLE_LAPACK=yes", sourceDir="..") def build(): + shelltools.makedirs("build") + shelltools.cd("build") + cmaketools.make() def install(): + shelltools.makedirs("build") + shelltools.cd("build") + cmaketools.rawInstall('DESTDIR="%s"' % get.installDIR()) pisitools.dodoc("AUTHORS", "README", "TODO") diff --git a/multimedia/graphics/hugin/pspec.xml b/multimedia/graphics/hugin/pspec.xml index 6cca2bcf48..a881d823b5 100644 --- a/multimedia/graphics/hugin/pspec.xml +++ b/multimedia/graphics/hugin/pspec.xml @@ -24,6 +24,7 @@ vigra-devel boost-devel wxGTK-devel + lcms2-devel exiv2-devel fftw3-devel flann-devel diff --git a/multimedia/stream/darkice/actions.py b/multimedia/stream/darkice/actions.py index 20568b6aab..0f7cbc8f46 100644 --- a/multimedia/stream/darkice/actions.py +++ b/multimedia/stream/darkice/actions.py @@ -9,13 +9,12 @@ from pisi.actionsapi import pisitools from pisi.actionsapi import get def setup(): + pisitools.cxxflags.add("-fpermissive") autotools.configure("--with-alsa \ --with-faac \ --with-vorbis \ --with-lame \ - --without-jack \ - --disable-static \ - --enable-shared") + --without-jack") def build(): autotools.make() From 8b88f14d6933288b8c079f6ff4a680ccea4102f1 Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 18:03:46 +0300 Subject: [PATCH 11/15] mesa-glu:Rebuild for new mesa --- x11/library/mesa-glu/pspec.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/x11/library/mesa-glu/pspec.xml b/x11/library/mesa-glu/pspec.xml index 24352923c0..330be38c04 100644 --- a/x11/library/mesa-glu/pspec.xml +++ b/x11/library/mesa-glu/pspec.xml @@ -66,6 +66,13 @@ + + 2017-02-15 + 9.0.0 + Rebuild for new Mesa + PisiLinux Community + admin@pisilinux.org + 2016-11-03 9.0.0 From 5c3afdd7e843d37f1c815547f3eaca6e67efaf45 Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 18:06:05 +0300 Subject: [PATCH 12/15] hugin fix actions --- multimedia/graphics/hugin/actions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/multimedia/graphics/hugin/actions.py b/multimedia/graphics/hugin/actions.py index 0e274b4f9a..f4d31d0add 100644 --- a/multimedia/graphics/hugin/actions.py +++ b/multimedia/graphics/hugin/actions.py @@ -27,5 +27,7 @@ def install(): shelltools.cd("build") cmaketools.rawInstall('DESTDIR="%s"' % get.installDIR()) + + shelltools.cd("..") pisitools.dodoc("AUTHORS", "README", "TODO") From 63be072c191c2ff4ffac39656c92efa04a8edbfb Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 18:35:53 +0300 Subject: [PATCH 13/15] x11 some packages rebuild, update and enblend revert --- multimedia/graphics/enblend/actions.py | 2 +- multimedia/graphics/enblend/pspec.xml | 9 +++++---- multimedia/misc/DirectFB/pspec.xml | 7 +++++++ x11/library/freeglut/pspec.xml | 7 +++++++ x11/library/glew/pspec.xml | 7 +++++++ x11/library/libdmx/pspec.xml | 7 +++++++ x11/library/libepoxy/pspec.xml | 9 ++++++++- x11/library/libva/pspec.xml | 9 ++++++++- 8 files changed, 50 insertions(+), 7 deletions(-) diff --git a/multimedia/graphics/enblend/actions.py b/multimedia/graphics/enblend/actions.py index c3a2d996d1..94dfec32f8 100644 --- a/multimedia/graphics/enblend/actions.py +++ b/multimedia/graphics/enblend/actions.py @@ -18,4 +18,4 @@ def build(): def install(): cmaketools.rawInstall("DESTDIR=%s" % get.installDIR()) - pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") \ No newline at end of file + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") diff --git a/multimedia/graphics/enblend/pspec.xml b/multimedia/graphics/enblend/pspec.xml index 055109e388..9e865e3ed1 100644 --- a/multimedia/graphics/enblend/pspec.xml +++ b/multimedia/graphics/enblend/pspec.xml @@ -12,7 +12,7 @@ app:console Image blending with multiresolution splines enblend is a tool for compositing images. Given a set of images that overlap in some irregular way, enblend overlays them in such a way that the seam between the images is invisible, or at least very difficult to see. - mirrors://sourceforge/enblend/enblend-enfuse/enblend-enfuse-4.2/enblend-enfuse-4.2.tar.gz + mirrors://sourceforge/enblend/enblend-enfuse/enblend-enfuse-4.1/enblend-enfuse-4.1.3.tar.gz cmake gsl-devel @@ -24,9 +24,10 @@ libpng-devel openexr-devel imagemagick-devel + libjpeg-turbo-devel - + gentoo_prepare.patch @@ -51,8 +52,8 @@ 2017-02-15 - 4.2 - Version Bump + 4.1.3 + Rebuild for new toolchain. Pisi Linux Community admin@pisilinux.org diff --git a/multimedia/misc/DirectFB/pspec.xml b/multimedia/misc/DirectFB/pspec.xml index f39a9b0314..940b4fec7a 100644 --- a/multimedia/misc/DirectFB/pspec.xml +++ b/multimedia/misc/DirectFB/pspec.xml @@ -87,6 +87,13 @@ + + 2017-02-15 + 1.7.7 + Rebuild for new toolchain + Pisi Linux Community + admin@pisilinux.org + 2016-06-09 1.7.7 diff --git a/x11/library/freeglut/pspec.xml b/x11/library/freeglut/pspec.xml index b86f73c87e..1fa6dc0197 100644 --- a/x11/library/freeglut/pspec.xml +++ b/x11/library/freeglut/pspec.xml @@ -78,6 +78,13 @@ + + 2017-02-15 + 3.0.0 + Rebuild for new Mesa + PisiLinux Community + admin@pisilinux.org + 2016-11-03 3.0.0 diff --git a/x11/library/glew/pspec.xml b/x11/library/glew/pspec.xml index cc27ec5ab6..71b6aab739 100644 --- a/x11/library/glew/pspec.xml +++ b/x11/library/glew/pspec.xml @@ -75,6 +75,13 @@ + + 2017-02-15 + 2.0.0 + Rebuild for new Mesa + Stefan Gronewold + groni@pisilinux.org + 2016-11-02 2.0.0 diff --git a/x11/library/libdmx/pspec.xml b/x11/library/libdmx/pspec.xml index 82fb4b87ef..91ec9f96f6 100644 --- a/x11/library/libdmx/pspec.xml +++ b/x11/library/libdmx/pspec.xml @@ -47,6 +47,13 @@ + + 2017-02-15 + 1.1.3 + Rebuild for new toolchain. + PisiLinux Community + admin@pisilinux.org + 2016-04-30 1.1.3 diff --git a/x11/library/libepoxy/pspec.xml b/x11/library/libepoxy/pspec.xml index 2e71d62f73..e2d9a09a18 100644 --- a/x11/library/libepoxy/pspec.xml +++ b/x11/library/libepoxy/pspec.xml @@ -12,7 +12,7 @@ library OpenGL function pointer management library Epoxy is a library for handling OpenGL function pointer management for you. - https://github.com/anholt/libepoxy/archive/v1.3.1.tar.gz + https://github.com/anholt/libepoxy/releases/download/v1.4/libepoxy-1.4.0.tar.xz libX11-devel mesa-devel @@ -65,6 +65,13 @@ + + 2017-02-15 + 1.4 + Version bump + PisiLinux Community + admin@pisilinux.org + 2016-04-30 1.3.1 diff --git a/x11/library/libva/pspec.xml b/x11/library/libva/pspec.xml index 981c05a6f5..cbfdfdc89b 100644 --- a/x11/library/libva/pspec.xml +++ b/x11/library/libva/pspec.xml @@ -13,7 +13,7 @@ library Video Acceleration (VA) API for Linux libva is a library providing the VA API video acceleration API. - https://www.freedesktop.org/software/vaapi/releases/libva/libva-1.7.2.tar.bz2 + https://www.freedesktop.org/software/vaapi/releases/libva/libva-1.7.3.tar.bz2 libdrm-devel libXext-devel @@ -82,6 +82,13 @@ + + 2017-02-15 + 1.7.3 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2016-11-03 1.7.2 From c24628642b06cde47a312df288aa56122ed8918d Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 19:24:10 +0300 Subject: [PATCH 14/15] enblend:add patch --- .../enblend/files/enblend-4.1.4-gcc6.patch | 90 +++++++++++++++++++ multimedia/graphics/enblend/pspec.xml | 1 + 2 files changed, 91 insertions(+) create mode 100644 multimedia/graphics/enblend/files/enblend-4.1.4-gcc6.patch diff --git a/multimedia/graphics/enblend/files/enblend-4.1.4-gcc6.patch b/multimedia/graphics/enblend/files/enblend-4.1.4-gcc6.patch new file mode 100644 index 0000000000..58349e2e70 --- /dev/null +++ b/multimedia/graphics/enblend/files/enblend-4.1.4-gcc6.patch @@ -0,0 +1,90 @@ +diff -r 6aec0cc8d22a -r 467a73754dbb include/vigra_ext/impexalpha.hxx +--- a/include/vigra_ext/impexalpha.hxx Mon Sep 28 09:41:56 2015 +0200 ++++ b/include/vigra_ext/impexalpha.hxx Sun Jan 24 17:05:51 2016 +0100 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2012-2014 Christoph L. Spiel ++ * Copyright (C) 2012-2016 Christoph L. Spiel + * + * This file is part of Enblend. + * +@@ -26,6 +26,9 @@ + #include + #include + ++#ifndef VIGRA_UNIQUE_PTR ++#define VIGRA_UNIQUE_PTR std::auto_ptr ++#endif + + namespace vigra_ext + { +@@ -194,7 +197,7 @@ + AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor, + vigra::VigraTrueType) + { +- std::auto_ptr decoder(vigra::decoder(import_info)); ++ VIGRA_UNIQUE_PTR decoder(vigra::decoder(import_info)); + + switch (pixel_t_of_string(decoder->getPixelType())) + { +@@ -249,7 +252,7 @@ + AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor, + vigra::VigraFalseType) + { +- std::auto_ptr decoder(vigra::decoder(import_info)); ++ VIGRA_UNIQUE_PTR decoder(vigra::decoder(import_info)); + + switch (pixel_t_of_string(decoder->getPixelType())) + { +@@ -467,7 +470,7 @@ + vigra::VigraTrueType) + { + const std::string pixel_type(export_info.getPixelType()); +- std::auto_ptr encoder(vigra::encoder(export_info)); ++ VIGRA_UNIQUE_PTR encoder(vigra::encoder(export_info)); + + encoder->setPixelType(pixel_type); + +@@ -525,7 +528,7 @@ + vigra::VigraFalseType) + { + const std::string pixel_type(export_info.getPixelType()); +- std::auto_ptr encoder(vigra::encoder(export_info)); ++ VIGRA_UNIQUE_PTR encoder(vigra::encoder(export_info)); + + encoder->setPixelType(pixel_type); + +diff -r 596efbff27a8 -r 73e6f16de80a src/filespec.cc +--- a/src/filespec.cc Sun Jan 24 17:06:09 2016 +0100 ++++ b/src/filespec.cc Mon Feb 15 10:20:30 2016 +0100 +@@ -37,7 +37,6 @@ + #include + + #include +-#include + + #include + +@@ -412,17 +411,12 @@ + public: + Globbing() : algorithm_name_("literal"), algorithm_(NULL) + { +- installed_algorithms_ = +- boost::assign::map_list_of +- ("literal", MAKE_ALGORITHM(new LiteralGlobbingAlgorithm)) +- ("wildcard", MAKE_ALGORITHM(new WildcardGlobbingAlgorithm)) ++ installed_algorithms_["literal"] = MAKE_ALGORITHM(new LiteralGlobbingAlgorithm); ++ installed_algorithms_["wildcard"] = MAKE_ALGORITHM(new WildcardGlobbingAlgorithm); ++ setup_alias("literal", "none"); ++ + #ifndef _WIN32 +- ("shell", MAKE_ALGORITHM(new ShellGlobbingAlgorithm)) +-#endif +- ; +- +- setup_alias("literal", "none"); +-#ifndef _WIN32 ++ installed_algorithms_["shell"] = MAKE_ALGORITHM(new ShellGlobbingAlgorithm); + setup_alias("shell", "sh"); + #endif + } \ No newline at end of file diff --git a/multimedia/graphics/enblend/pspec.xml b/multimedia/graphics/enblend/pspec.xml index 9e865e3ed1..369042a154 100644 --- a/multimedia/graphics/enblend/pspec.xml +++ b/multimedia/graphics/enblend/pspec.xml @@ -28,6 +28,7 @@ gentoo_prepare.patch + enblend-4.1.4-gcc6.patch From 3c729baaf307bf2d633836945607544424fec173 Mon Sep 17 00:00:00 2001 From: alihanozturk Date: Wed, 15 Feb 2017 20:10:52 +0300 Subject: [PATCH 15/15] libv4l:add dep --- multimedia/video/libv4l/pspec.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/multimedia/video/libv4l/pspec.xml b/multimedia/video/libv4l/pspec.xml index 58330a9eee..d3e95e3b0c 100644 --- a/multimedia/video/libv4l/pspec.xml +++ b/multimedia/video/libv4l/pspec.xml @@ -22,6 +22,8 @@ mesa-glu-devel alsa-lib-devel libgcc + doxygen + eudev-devel @@ -90,6 +92,7 @@ mesa-glu-32bit alsa-lib-32bit qt5-base-32bit + eudev-32bit libjpeg-turbo-32bit @@ -103,7 +106,7 @@ - 2017-02-03 + 2017-02-15 1.12.2 Version bump. Stefan Gronewold(groni)