Mesa (master): 26 new commits
Rob Clark
robclark at kemper.freedesktop.org
Sat Jul 30 13:33:00 UTC 2016
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e713a9e61311249dfd6f76f3ab73da951b81239d
Author: francians at gmail.com <francians at gmail.com>
Date: Sat Jul 30 09:49:59 2016 +0200
freedreno/a4xx: fix comparison out of range warnings
Signed-off-by: Francesco Ansanelli <francians at gmail.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=43492c7f2c56b618903b0f802071a6462ea8a435
Author: francians at gmail.com <francians at gmail.com>
Date: Sat Jul 30 09:49:58 2016 +0200
freedreno/a3xx: fix comparison out of range warnings
Signed-off-by: Francesco Ansanelli <francians at gmail.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=089cc74b6a402432fc268ddd29eb4639f4b170c4
Author: francians at gmail.com <francians at gmail.com>
Date: Sat Jul 30 09:49:57 2016 +0200
freedreno/a2xx: fix comparison out of range warnings
Signed-off-by: Francesco Ansanelli <francians at gmail.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3fa68fdc90656048a8e51103f59502a3c6ab1a29
Author: francians at gmail.com <francians at gmail.com>
Date: Sat Jul 30 08:20:58 2016 +0200
freedreno/ir3: init ir3_shader_key with memset()
To silence missing initializers warning
Signed-off-by: Francesco Ansanelli <francians at gmail.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a63bac9271cf4984b4b8c0158e99fffa7f78c8bb
Author: Eric Engestrom <eric at engestrom.ch>
Date: Sat Jul 30 01:33:56 2016 +0100
gallium/freedreno: move cast to avoid integer overflow
Previously, the bitshift would be performed on a simple int (32 bits on
most systems), overflow, and then be cast to 64 bits.
CovID: 1362461
Signed-off-by: Eric Engestrom <eric at engestrom.ch>
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3563c4d16138360fd8756576e0c9c825ed6cec86
Author: Eric Engestrom <eric at engestrom.ch>
Date: Sat Jul 30 01:23:09 2016 +0100
freedreno/a2xx: remove duplicate assignment
CovID: 1362445, 1362446
Signed-off-by: Eric Engestrom <eric at engestrom.ch>
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d64a003c5059feebcb70b607311d380acc45962
Author: Rob Clark <robdclark at gmail.com>
Date: Fri Jul 22 17:55:59 2016 -0400
freedreno: defer flush_queue allocation
Some apps, like warsow, create a bazillion contexts but don't render on
most of them.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4175606474acda62775c41fa95a577e0796ff17f
Author: Rob Clark <robdclark at gmail.com>
Date: Wed Jul 20 14:50:14 2016 -0400
freedreno: add some hw query traces
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e684c32d2fdda204b79661ecf26881eae133d64a
Author: Rob Clark <robdclark at gmail.com>
Date: Tue Jul 19 18:24:57 2016 -0400
freedreno: some locking
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=010e4b2d52d5b5ab1eb866dfa0a2df5b984c343d
Author: Rob Clark <robdclark at gmail.com>
Date: Thu Jul 21 13:51:36 2016 -0400
os: add pipe_mutex_assert_locked()
Would be nice if we could also have lockdep, like in the linux kernel.
But this is better than nothing.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f0eb6952790bffe2670f26d399f15acec199cac
Author: Rob Clark <robdclark at gmail.com>
Date: Tue Jul 19 13:22:01 2016 -0400
freedreno: drop needs_rb_fbd
We need to emit RB_FRAME_BUFFER_DIMENSION once per batch.. tracking this
in fd_context is wrong when the gmem code executes asynchronously from
the flush_queue worker. But in fact we don't really need to track it at
all. We cannot assume previous value at the beginning of the batch
(because of other processes potentially using the GPU), so just drop the
tracking and emit it in _tile_init().
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e6bfe1c7734cfbf41a763797527db6cb49fa1566
Author: Rob Clark <robdclark at gmail.com>
Date: Tue Jul 19 12:08:42 2016 -0400
freedreno: move needs_wfi into batch
This is also used in gmem code, which executes from the "bottom half"
(ie. from the flush_queue worker thread), so it cannot be in fd_context.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0739bbceecbb66ffbcf14e5b73e6df222794c264
Author: Rob Clark <robdclark at gmail.com>
Date: Thu Jul 14 16:44:34 2016 -0400
freedreno: a bit of micro-optimization
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e1b10527006a03f1bd845f222f353496502c8d16
Author: Rob Clark <robdclark at gmail.com>
Date: Thu Jul 14 13:27:32 2016 -0400
freedreno: drop mem2gmem/gmem2mem query stages
They weren't really used, and it gets somewhat more complicated to deal
with if batches are flushed asynchronously (on another thread). So just
drop them, and move _query_set_state(NULL) call into batch (so it is not
happening on background thread).
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=00bed8a794de3d80a46b65b9ab23c6df83e416a8
Author: Rob Clark <robdclark at gmail.com>
Date: Wed Jul 13 09:49:53 2016 -0400
freedreno: threaded batch flush
With the state accessed from GMEM+submit factored out of fd_context and
into fd_batch, now it is possible to punt this off to a helper thread.
And more importantly, since there are cases where one context might
force the batch-cache to flush another context's batches (ie. when there
are too many in-flight batches), using a per-context helper thread keeps
various different flushes for a given context serialized.
TODO as with batch-cache, there are a few places where we'll need a
mutex to protect critical sections, which is completely missing at the
moment.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c44163876a2858aea219a08bd2e048b76953cff9
Author: Rob Clark <robdclark at gmail.com>
Date: Thu Jul 14 10:32:02 2016 -0400
freedreno: track batch/blit types
Add a bit of extra book-keeping about blits and back-blits (from
resource shadowing). If the app uploads all mipmap levels, as opposed
to uploading the first level and then glGenerateMipmap(), we can discard
the back-blit (as opposed to being naive and shadowing the resource for
each mipmap level). Also, after a normal blit, we might as well flush
the batch immediately, since there is not likely to be further rendering
to the surface.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7f8fd02dc7cad1ddcfb610db10ffbb41e3e34e7d
Author: Rob Clark <robdclark at gmail.com>
Date: Mon Jul 11 17:36:45 2016 -0400
freedreno: re-order support for hw queries
Push query state down to batch, and use the resource tracking to figure
out which batch(es) need to be flushed to get the query result.
This means we actually need to allocate the prsc up front, before we
know the size. So we have to add a special way to allocate an un-
backed resource, and then later allocate the backing storage.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=10baf05b2caaa0900c71ac64c91301e953176516
Author: Rob Clark <robdclark at gmail.com>
Date: Mon Jul 11 16:23:10 2016 -0400
freedreno: use prsc for hw queries
Switch to using a pipe_resource (rather than an fd_bo directly) for hw
query result buffers. This is first step towards making queries work
properly with reordered batches, since we'll need the additional
dependency tracking to know which batches to flush.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba3009688892713b711ca6e9420d813f0bdce43f
Author: Rob Clark <robdclark at gmail.com>
Date: Fri Jul 1 12:38:16 2016 -0400
freedreno: support discarding previous rendering in special cases
Basically, to "DCE" blits triggered by resource shadowing, in cases
where the levels are immediately completely overwritten. For example,
mid-frame texture upload to level zero triggers shadowing and back-blits
to the remaining levels, which are immediately overwritten by
glGenerateMipmap().
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7105774babc4d23623c3547cd19122a55c1090db
Author: Rob Clark <robdclark at gmail.com>
Date: Wed Jun 29 13:51:26 2016 -0400
freedreno: shadow textures if possible to avoid stall/flush
To make batch re-ordering useful, we need to be able to create shadow
resources to avoid a flush/stall in transfer_map(). For example,
uploading new texture contents or updating a UBO mid-batch. In these
cases, we want to clone the buffer, and update the new buffer, leaving
the old buffer (whose reference is held by cmdstream) as a shadow.
This is done by blitting the remaining other levels (and whatever part
of current level that is not discarded) from the old/shadow buffer to
the new one.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dcde4cd114e906f5c4372dbb6758026c9222cd2a
Author: Rob Clark <robdclark at gmail.com>
Date: Tue Jun 28 07:53:34 2016 -0400
freedreno: spiff up some debug traces
Make it easier to track batches, to ensure things happen properly when
they are reordered.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f219c7047b51561f6f69274d445e6a6ec41c5f8
Author: Rob Clark <robdclark at gmail.com>
Date: Mon Jun 27 09:44:15 2016 -0400
freedreno: add batch-cache and batch reordering
Note that I originally also had a entry-point that would construct a key
and do lookup from a pipe_surface. I ended up not needing that (yet?)
but it is easy-enough to re-introduce later if we need it for the blit
path.
For now, not enabled by default, but can be enabled (on a3xx/a4xx) with
FD_MESA_DEBUG=reorder.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f02a64dbdd2ec147167ad60357bd46d8d964290a
Author: Rob Clark <robdclark at gmail.com>
Date: Mon Jun 27 11:28:37 2016 -0400
freedreno: move more batch related tracking to fd_batch
To flush batches out of order, the gmem code needs to not depend on
state from fd_context (since that may apply to a more recent batch).
So this all moves into batch.
The one exception is the gmem/pipe/tile state itself. But this is
only used from gmem code (and batches are flushed serially). The
alternative would be having to re-calculate GMEM layout on every
batch, even if the dimensions of the render targets are the same.
Note: This opens up the possibility of pushing gmem/submit into a
helper thread.
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=eeafaf2d37cdc7f83f997e8babd8f770243ecf25
Author: Rob Clark <robclark at freedesktop.org>
Date: Tue Jun 21 12:39:32 2016 -0400
freedreno: dynamically sized/growable cmd buffers
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e4561d3c47c2dabce43ce160915fd9bcea05a81
Author: Rob Clark <robclark at freedesktop.org>
Date: Fri May 20 20:05:26 2016 -0400
freedreno: push resource tracking down into batch
Signed-off-by: Rob Clark <robdclark at gmail.com>
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9bbd239a4039522d7c1023ecb21764679447bb2d
Author: Rob Clark <robclark at freedesktop.org>
Date: Fri May 20 15:36:10 2016 -0400
freedreno: introduce fd_batch
Introduce the batch object, to track a batch/submit's worth of
ringbuffers and other bookkeeping. In this first step, just move
the ringbuffers into batch, since that is mostly uninteresting
churn.
For now there is just a single batch at a time. Note that one
outcome of this change is that rb's are allocated/freed on each
use. But the expectation is that the bo pool in libdrm_freedreno
will save us the GEM bo alloc/free which was the initial reason
to implement a rb pool in gallium.
The purpose of the batch is to eventually facilitate out-of-order
rendering, with batches associated to framebuffer state, and
tracking the dependencies on other batches.
Signed-off-by: Rob Clark <robdclark at gmail.com>
More information about the mesa-commit
mailing list