Mesa (master): 32 new commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Nov 25 06:05:21 UTC 2020


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9fa1cdfe7ffd9e7ebd83055e2008f3e4b8ada549
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 22:17:17 2020 -0500

    intel/rt: Implement push constants as global memory reads
    
    They're not really "push" anymore but that's because there is no such
    thing as push constants in bindless shaders on Intel.  They should be
    fast enough, though.  There is some room for debate here as to whether
    we want to do the pull in NIR or push it into the back-end.  The
    advantage of doing it in the back-end is that it'd be easier to use
    MOV_INDIRECT for indirect push constant access rather than falling back
    to a dataport message.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f7e24e559fb632eae54e444b022db9da35922258
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 16:42:14 2020 -0500

    intel/rt: Add support for hit attributes
    
    For triangle geometry, the hit attributes are always two floats which
    contain the barycentric coordinates of the hit.  For procedural
    geometry, they're an arbitrary blob of data passed from the intersection
    shader to the hit shaders.  In our implementation, we stash that data
    right after the HW RayQuery in the ray stack.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=96fde5518b5c47550f0f42f3a0504ccbdc4a4e92
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 16:31:05 2020 -0500

    intel/rt: Add a helper to create the raygen trampoline shader
    
    Unlike graphics and compute pipelines, Vulkan ray-tracing pipelines do
    not have a single entrypoint.  Instead, the raygen shader is specified
    as a one-element shader binding table in the vkCmdTraceRay call.  This
    means that raygen shaders have to be bindless shaders just like any
    other ray tracing shader.  To launch them, we have a tiny compute shader
    that acts as a trampoline and sets up the hotzone and uses btd_spawn to
    fire off the raygen shader.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=303378e1dd4119e04e0f6cb623766115a00c2eea
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 16:22:15 2020 -0500

    intel/rt: Add lowering for combined intersection/any-hit shaders
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb261b03e5af7862f1321c778e3ad54b640226bc
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 16:09:55 2020 -0500

    intel/rt: Add lowering for ray-walk intrinsics in any-hit shaders
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3ddefa000ec09631ac0115fd959e152edca27d8
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 16:49:50 2020 -0500

    intel/rt: Add support for shader buffer record memory
    
    Most of the work for this is done for us by spirv_to_nir which gives us
    a load_global from a memory address based on the shader_record_ptr
    system values.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ba7d459a3a193b002586ddbee2720948002421c
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 15:59:30 2020 -0500

    intel/rt: Implement the new ray-tracing system values
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ce7c93755fd62ea91e384255e85f6689b6d890b
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 15:51:58 2020 -0500

    intel/rt: Implement traceRay()
    
    This is a little bit more work than executeCallable() because we also
    have to set up the MemRay data structure which the ray traversal
    hardware uses to keep its state.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=75209d5bd1f6e93cd52568d87d3ee84f516eec56
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 15:45:45 2020 -0500

    intel/fs: Add and implement intel-specific ray-tracing intrinsics
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1f6ae809ef000a3f0ed20148fd5e8c98d43b62d1
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Sep 3 20:20:22 2020 -0500

    intel/rt: Implement support for shader call payloads
    
    Both traceRay() and executeCallable() take a payload parameter which
    gets passed from the caller to the callee and which the callee can write
    to pass data back to the caller.  We implement these by passing a
    pointer to the data structure in the callee to the caller as the second
    QWord on its stack.  Coming out of spirv_to_nir, the incoming call
    payloads get the nir_var_shader_call_data variable mode allowing us to
    easily identify them.  Outgoing call payloads get assigned the
    nir_var_shader_temp mode and will have been turned into function_temp by
    nir_lower_global_vars_to_local.  All we have to do is crawl the shader
    looking for references to the nir_var_shader_call_data variable and
    rewrite those to use the passed in pointer.  nir_lower_explicit_io will
    do the rest for us.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=72354b0e9dd338f28e0422be81ccb31cf241a36c
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 15:16:26 2020 -0500

    intel/rt: Add a helper to create a trivial return shader
    
    These are required for ray-tracing.  There are many cases where the
    ray-tracing hardware may decide to execute some but not all of our
    shaders.  In these cases, it needs a shader to execute at the end which
    will pop the stack back to the shader which called traceRay().
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fad81a3968144f4765a13e70082fdc163650b1db
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 14:25:52 2020 -0500

    intel/rt: Add a pass to lower shader call instructions
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca88cd8e5a6d1c36e0f3842eee20edeb1d78eec2
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 13:53:34 2020 -0500

    intel/rt: Add return instructions at the end of ray-tracing shaders
    
    Each callable ray-tracing shader shader stage has to perform a return
    operation at the end.  In the case of raygen shaders, it retires the
    bindless thread because the raygen shader is always the root of the call
    tree.  In the case of any-hit shaders, the default action is accep the
    hit.  For callable, miss, and closest-hit shaders, it does a return
    operation.  The assumption is that the calling shader has placed a
    BINDLESS_SHADER_RECORD address for the return in the first QWord of the
    callee's scratch space.  The return operation simply loads this value
    and calls a btd_spawn intrinsic to jump to it.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=49778a7253dfce7a09c6d0e433c571a543d85065
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 13:16:53 2020 -0500

    intel/rt: Add support for scratch in ray-tracing shaders
    
    In ray-tracing shader stages, we have a real call stack and so we can't
    use the normal scratch mechanism.  Instead, the invocation's stack lives
    in a memory region of the RT scratch buffer that sits after the HW ray
    stacks.  We handle this by asking nir_lower_io to lower local variables
    to 64-bit global memory access.  Unlike nir_lower_io for 32-bit offset
    scratch, when 64-bit global access is requested, nir_lower_io generates
    an address calculation which starts from a load_scratch_base_ptr.  We
    then lower this intrinsic to the appropriate address calculation in
    brw_nir_lower_rt_intrinsics.
    
    When a COMPUTE_WALKER command is sent to the hardware with the BTD Mode
    bit set to true, the hardware generates a set of stack IDs, one for each
    invocation.  These then get passed along from one shader invocation to
    the next as we trace the ray.  We can use those stack IDs to figure out
    which stack our invocation needs to access.  Because we may not be the
    first shader in the stack, there's a per-stack offset that gets stored
    in the "hotzone".
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b3f6cdc6cf1b2a217af447196e53469a1c9a8d6
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 13:20:07 2020 -0500

    intel/rt: Add lowering functions for each ray-tracing stage
    
    These will eventually contain per-stage lowering for various ray-tracing
    things.  This is separate from brw_nir_lower_rt_intrinsics because, for
    reasons that will become apparent later, brw_nir_lower_rt_intrinsics has
    to be run very late in the compile process, right before brw_compile_bs.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7660918d77851d35170e0064d22d2281fed5ac4
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 12:59:49 2020 -0500

    intel/rt: Add a pass to lower the new ray-tracing intrinsics
    
    The new intrinsics we added for doing address calculations are all
    things we fetch from the RT_DISPATCH_GLOBALS struct.  We could emit an
    RT_DISPATCH_GLOBALS load at every point we want it and trust NIR to CSE
    it for us but it's easier to use intermediate intrinsics.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e50db4edac110f59b2381cbb27cb568a4a4b8ea
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 12:44:57 2020 -0500

    intel/rt: Add builder helpers for accessing RT data structures
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1f6e70c85a88bb18f48a42574b77b4c0a27d8dbf
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Tue Jun 16 23:05:16 2020 -0500

    intel/fs: Add and implement a load_global_const_block intrinsic
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d5b57aeb7d381337e7bfda418205240330f3f04
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Aug 6 12:53:47 2020 -0500

    intel/rt: Add a brw_rt.h header with #defines for basic RT data structures
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7280b0911d8ce22092251a8db6d37b11bdc5a59e
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Oct 21 14:46:50 2020 -0500

    intel/compiler: Add support for bindless shaders
    
    The Intel bindless thread dispatch model is very simple.  When a compute
    shader is to be used for bindless dispatch, it can request a set of
    stack IDs.  These are allocated per-dual-subslice by the hardware and
    recycled automatically when the stack ID is returned.  Passed to the
    bindless dispatch are a global argument address, a stack ID, and an
    address of the BINDLESS_SHADER_RECORD to invoke.  When the bindless
    shader is dispatched, it is passed its stack ID as well as the global
    and local argument pointers.  The local argument pointer is the address
    of the BINDLESS_SHADER_RECORD plus some offset which is specified as
    part of the BINDLESS_SHADER_RECORD.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=27f44116fe0bfde34149a676ddb5e75d14fffe7b
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Oct 21 14:46:39 2020 -0500

    intel/debug: Add a debug flag for ray-tracing shaders
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7dd172aaa11fcada1513082ff0abea031090b1e
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Tue Aug 4 19:24:24 2020 -0500

    nir/lower_io: Support shader_call_data in vars_to_explicit_types
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=477d2f03794154eccde9e33573d326d11f1c64d0
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Tue Jul 28 18:01:41 2020 -0500

    nir/lower_io: Allow ray_hit_attrib in lower_vars_to_explicit_types
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bbbb0600f64347a1b1c6d9ba6d4d5863071d7fb4
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Fri May 15 12:07:22 2020 -0500

    nir: Add a helper to get the live set at a cursor
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7eccb9ca2a3371aa6bbe912c1088cfa30f548f6
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Oct 21 14:32:10 2020 -0500

    intel/genxml: Add BVH data structures
    
    These describe the Intel BVH format used for storing acceleration
    structures.
    
    Acked-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=980950c52100f8f54c68d0ec0cd0023480673c95
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Oct 21 15:02:57 2020 -0500

    intel/genxml: Add RT_DISPATCH_GLOBALS and RT_*_SBT_HANDLE structs
    
    The RT_DISPATCH_GLOBALS struct is half HW-defined by the ray-tracing
    spec and half SW-defined.  However, due to the addresses in it, it's
    convenient for it to all be in GenXML.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=858d565eea4d9e1152277550ee88f7acf4cb71fc
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Fri Jun 12 16:31:34 2020 -0500

    intel/genxml: Support truncated addresses
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba9c714cacd21b6f5ee1c58d219c52af23a80a27
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Fri Jun 12 16:32:11 2020 -0500

    intel/genxml/pack: Stash the cloned address field
    
    The cloned version is the one that has updated start and end bits
    fields.  We're about to start passing those through to a new
    __gen_address function and we need the correct start/end in order to do
    that reliably.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d16d973a70aed61f38607229339a8c4d3c2ad6d
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Oct 21 14:32:10 2020 -0500

    intel/genxml: Add the BINDLESS_SHADER_RECORD data structure
    
    This is the first of the HW data structures added for ray-tracing.
    These are added to their own file because it's not really associated
    with any hardware we've enabled in Mesa just yet.  Eventually, these
    will likely get folded into the appropriate genX.xml file as they are
    hardware data structures and needed to be tracked as such.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5faf859ebbeed2a529913d064aae76055cce586b
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Oct 21 15:04:11 2020 -0500

    intel/dev: Add a gen_device_info::has_ray_tracing bit
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d6434f02ba7ae17664506645f43365b2753ffc4
Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Mon Nov 23 22:54:01 2020 -0600

    spirv: Emit nir_jump_halt after TerminateRay or IgnoreIntersection
    
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=630e54a08b7efb4a92e7708fc5cd682767a1a502
Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Fri May 15 15:46:08 2020 -0500

    nir: Add a halt instruction type
    
    Halt is like a return for the entire shader or exit() if you prefer to
    think of it that way.  Once an invocation hits a halt, it's 100% dead.
    Any writes to output variables which happened before the halt do,
    however, still apply.
    
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>



More information about the mesa-commit mailing list