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