Mesa (master): 44 new commits

Francisco Jerez currojerez at kemper.freedesktop.org
Tue Jun 9 12:32:14 UTC 2015


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=698c391521561a1f0e4ff2570e35417be9968eaa
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 18:17:50 2015 +0300

    i965/fs: Drop fs_inst::force_uncompressed.
    
    This is now unused.  Saves a whole bit of memory per instruction.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=44928b799adbbf2671c482431b3b7a390118725c
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Jun 8 19:32:18 2015 +0300

    i965/fs: Remove dead IR construction code from the visitor.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=51948085a2e5d97dbf2cd3c255a5873d509773eb
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 18:16:30 2015 +0300

    i965/fs: Migrate test_fs_cmod_propagation to the IR builder.
    
    v2: Use set_predicate/condmod.  Use fs_builder::OPCODE instead of
        ::emit.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=76c8142d0af45ab9907ebc9cfd2855fa753735b6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 18:15:22 2015 +0300

    i965/fs: Migrate test_fs_saturate_propagation to the IR builder.
    
    v2: Use set_saturate.  Use fs_builder::OPCODE instead of ::emit.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bf83a1a219af8bf82c3c721888bbe0dfc3eced34
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:02:57 2015 +0300

    i965/fs: Migrate translation of NIR texturing instructions to the IR builder.
    
    v2: Don't remove assignments of base_ir just yet.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=979fe2ffee3956186017fe6c115aed53fc87ad3d
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:01:32 2015 +0300

    i965/fs: Migrate translation of NIR intrinsics to the IR builder.
    
    v2: Use fs_builder::SEL instead of ::emit.  Use set_condmod().
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe88c7ae38c72ea09ced69fb12ff00f58bdf1d6e
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:59:26 2015 +0300

    i965/fs: Migrate translation of NIR ALU instructions to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3632c28bde071950dc57e42eb62a65fb838c8bdc
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:57:12 2015 +0300

    i965/fs: Migrate translation of NIR control flow to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9976731485abb68eb3b5ae6f11a7838977b95b5b
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:17:36 2015 +0300

    i965/fs: Migrate NIR variable handling to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=09733f220ac9921ce7d8c3524bc5327d8203c446
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:12:49 2015 +0300

    i965/fs: Migrate NIR emit_percomp() to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d5cb2e513794f6c26259665bc93cf507e86ae3b8
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:08:43 2015 +0300

    i965/fs: Migrate CS terminate message to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e522f12f03bcb0edb1384adff894918bf8d6d1b6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 22:43:00 2015 +0300

    i965/fs: Migrate VS output writes to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e32c16c47f7a3cf25e2b4d2f3b97d0f8f89669c0
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:07:52 2015 +0300

    i965/fs: Migrate FS framebuffer writes to the IR builder.
    
    The explicit call to fs_builder::group() in emit_single_fb_write() is
    required by the builder (otherwise the assertion in fs_builder::emit()
    would fail) because the subsequent LOAD_PAYLOAD and FB_WRITE
    instructions are in some cases emitted with a non-native execution
    width.  The previous code would always use the channel enables for the
    first quarter, which is dubious but probably worked in practice
    because FB writes are never emitted inside non-uniform control flow
    and we don't pass the kill-pixel mask via predication in the cases
    where we have to fall-back to SIMD8 writes.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=840cbef416b47fa1a92d6491cdd2895442f063bc
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:07:34 2015 +0300

    i965/fs: Migrate FS alpha test to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ad68853f17868081a69b3f73f4bf4c1bc8b2571d
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:45:54 2015 +0300

    i965/fs: Migrate FS discard handling to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=46f264638ad97a0b806e6fad7117d62a2cf914b6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:56:20 2015 +0300

    i965/fs: Migrate FS gl_SamplePosition/ID computation code to the IR builder.
    
    v2: Use fs_builder::AND/SHR/MOV instead of ::emit.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=31477226ec6cbe956a4bbdcae81cc7ca5ad28cc6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:54:54 2015 +0300

    i965/fs: Migrate FS interpolation code to the IR builder.
    
    v2: Fix some preexisting trivial codestyle issues.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d3c10ad42729c1fe74a7f7c67465bd2beb7f9e75
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:43:09 2015 +0300

    i965/fs: Migrate shader time to the IR builder.
    
    v2: Change null register destination type to UD so it can be compacted.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=35e64f2a769c915bedeafdb86152b0c4a2067b35
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:06:13 2015 +0300

    i965/fs: Migrate untyped surface read and atomic to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=db83d9d2d0f2743cf64ece731c753f21aba87da6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:05:28 2015 +0300

    i965/fs: Migrate texturing implementation to the IR builder.
    
    v2: Remove tabs from modified lines.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=546839ef639bf871feaa62ab7d811f2fc783bdcd
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 22:22:39 2015 +0300

    i965/fs: Migrate pull constant loads to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f626c14989f005599f7841b89144d2bf58b5704
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 22:22:10 2015 +0300

    i965/fs: Migrate Gen4 send dependency workarounds to the IR builder.
    
    v2: Change brw_null_reg() to bld.null_reg_f().
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4af4cfba9ee1014baa4a777660fc9d53d57e4c82
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:49:32 2015 +0300

    i965/fs: Migrate lower_integer_multiplication to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=efa60e49f2e5dd56f1c81487e9aad9f89136d8b4
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:36:47 2015 +0300

    i965/fs: Migrate lower_load_payload to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f8c6b7bdab1fc25fe8277705ebb1818ab220821
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 19:05:54 2015 +0300

    i965/fs: Migrate register spills and fills to the IR builder.
    
    Yes, it's incorrect to use the 0-th channel enable group
    unconditionally without considering the execution and regioning
    controls of the instruction that uses the spilled value, but it
    matches the previous behaviour exactly, the builder just makes the
    preexisting problem more obvious because emitting an instruction of
    non-native SIMD width without having called .group() or .exec_all()
    explicitly would have led to an assertion failure.
    
    I'll fix the problem in a follow-up series, as the solution is going
    to be non-trivial.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e6ac0bcedfe1b5d092d6ee19323c3ef87b99dba
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:05:45 2015 +0300

    i965/fs: Migrate try_replace_with_sel to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6114ba4dccfdb8f7c657feeed8f8c9b69debba91
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 20:46:31 2015 +0300

    i965/fs: Migrate opt_sampler_eot to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a800ec04ad84abeb6243897a276facc4ef6cac82
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 19:51:47 2015 +0300

    i965/fs: Migrate opt_peephole_sel to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=78f7c9edeb21ec4e7a4f96aa12b51cecc40e9688
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 19:33:44 2015 +0300

    i965/fs: Create and emit instructions in one step in opt_peephole_sel.
    
    This simplifies opt_peephole_sel() slightly by emitting the SEL
    instructions immediately after they are created, what makes the
    sel_inst and mov_imm_inst arrays unnecessary and will make it possible
    to get rid of the explicit inserts when the pass is migrated to the IR
    builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=74c2458ecf492f2dd344b4f6114b13a376f90657
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Jun 4 16:13:35 2015 +0300

    i965/fs: Migrate opt_cse to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e7069fbc701de68b65a876e1b4bfde4f111dd084
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Jun 4 16:09:47 2015 +0300

    i965/fs: Don't drop force_writemask_all and _sechalf when copying a CSE temporary.
    
    LOAD_PAYLOAD instructions need the same treatment as any other
    generator instructions, at least FB writes and typed surface messages
    will need a payload built with non-zero execution controls.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=497d238ae72aa59fb32b21191a1a0444ca09fc10
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Jun 4 16:05:33 2015 +0300

    i965/vec4: Take into account all instruction fields in CSE instructions_match().
    
    Most of these fields affect the behaviour of the instruction, but
    apparently we currently don't CSE the kind of instructions for which
    these fields could make a difference in the VEC4 back-end.  That's
    likely to change soon though when we start using send-from-GRF for
    texture sampling and surface access messages.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8013b8147ae5fc652799c7ff01c2d419ebebe3db
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Jun 4 15:09:10 2015 +0300

    i965/fs: Take into account all instruction fields in CSE instructions_match().
    
    Most of these fields affect the behaviour of the instruction so it
    could actually break the program if we CSE a pair of otherwise
    matching instructions with different values of these fields.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d86c2e6e539db518dca162145c096b7440d043a7
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 18:22:17 2015 +0300

    i965/fs: Migrate opt_peephole_predicated_break to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=35e5f118a5116685b30ad3305c1c153f1af37f66
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 18:20:50 2015 +0300

    i965/fs: Migrate opt_combine_constants to the IR builder.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e04b4156a745fc09afa066c892c1913362eae9df
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 19:59:44 2015 +0300

    i965/fs: Allocate a common IR builder object in fs_visitor.
    
    v2: Call fs_builder::at_end() to point the builder at the end of the
        program explicitly.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8ea8f83c8f6b932749ada32ac666d151a9636508
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Apr 22 14:02:47 2015 +0300

    i965/fs: Introduce FS IR builder.
    
    The purpose of this change is threefold: First, it improves the
    modularity of the compiler back-end by separating the functionality
    required to construct an i965 IR program from the rest of the visitor
    god-object, what in turn will reduce the coupling between other
    components and the visitor allowing a more modular design.  This patch
    doesn't yet remove the equivalent functionality from the visitor
    classes, as it involves major back-end surgery.
    
    Second, it improves consistency between the scalar and vector
    back-ends.  The FS and VEC4 builders can both be used to generate
    scalar code with a compatible interface or they can be used to
    generate natural vector width code -- 1 or 4 components respectively.
    
    Third, the approach to IR construction is somewhat different to what
    the visitor classes currently do.  All parameters affecting code
    generation (execution size, half control, point in the program where
    new instructions are inserted, etc.) are encapsulated in a stand-alone
    object rather than being quasi-global state (yes, anything defined in
    one of the visitor classes is effectively global due to the tight
    coupling with virtually everything else in the compiler back-end).
    This object is lightweight and can be copied, mutated and passed
    around, making helper IR-building functions more flexible because they
    can now simply take a builder object as argument and will inherit its
    IR generation properties in exactly the same way that a discrete
    instruction would from the same builder object.
    
    The emit_typed_write() function from my image-load-store branch is an
    example that illustrates the usefulness of the latter point: Due to
    hardware limitations the function may have to split the untyped
    surface message in 8-wide chunks.  That means that the several
    functions called to help with the construction of the message payload
    are themselves required to set the execution width and half control
    correctly on the instructions they emit, and to allocate all registers
    with half the default width.  With the previous approach this would
    require the used helper functions to be aware of the parameters that
    might differ from the default state and explicitly set the instruction
    bits accordingly.  With the new approach they would get a modified
    builder object as argument that would influence all instructions
    emitted by the helper function as if it were the default state.
    
    Another example is the fs_visitor::VARYING_PULL_CONSTANT_LOAD()
    method.  It doesn't actually emit any instructions, they are simply
    created and inserted into an exec_list which is returned for the
    caller to emit at some location of the program.  This sort of two-step
    emission becomes unnecessary with the builder interface because the
    insertion point is one more of the code generation parameters which
    are part of the builder object.  The caller can simply pass
    VARYING_PULL_CONSTANT_LOAD() a modified builder object pointing at the
    location of the program where the effect of the constant load is
    desired.  This two-step emission (which pervades the compiler back-end
    and is in most cases redundant) goes away: E.g. ADD() now actually
    adds two registers rather than just creating an ADD instruction in
    memory, emit(ADD()) is no longer necessary.
    
    v2: Drop scalarizing VEC4 builder.
    v3: Take a backend_shader as constructor argument.  Improve handling
        of debug annotations and execution control flags.
    v4: Drop Gen6 IF with inline comparison.  Rename "instr" variable.
        Initialize cursor to NULL by default and add method to explicitly
        point the builder at the end of the program.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e040657292d8d0a6fe8fe7d4d94e9808f29e924
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:24:50 2015 +0300

    i965: Define consistent interface to enable instruction result saturation.
    
    v2: Use set_ prefix.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7624f8410f64a7ce0ba125a2025904c70610c076
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:24:18 2015 +0300

    i965: Define consistent interface to enable instruction conditional modifiers.
    
    v2: Use set_ prefix.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=239dfc5410d98f3b31a06652ceff13d9858c1f9b
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jun 3 21:23:46 2015 +0300

    i965: Define consistent interface to predicate an instruction.
    
    v2: Use set_ prefix.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9367191b30956b9cfe578dd8e426b28d2417b6b
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Jun 8 14:49:31 2015 +0300

    mesa: Drop include of simple_list.h from mtypes.h.
    
    simple_list.h defines a number of macros with short non-namespaced
    names that can easily collide with other declarations (first_elem,
    last_elem, next_elem, prev_elem, at_end), and according to the comment
    it was only being included because of struct simple_node, which is no
    longer used in this file.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=277b94f172c44cb4199a740722f42bc701d591dc
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Jun 8 14:48:29 2015 +0300

    dri/nouveau: Include simple_list.h explicitly in nv*_state_tnl.c.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7065c8153b5bea3fe4f364dbb922488f755bc1db
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Jun 8 14:47:17 2015 +0300

    tnl: Include simple_list.h explicitly in t_context.c.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=08a1046f6777c589f90eae3fd1e7e41ca364c45c
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Jun 8 14:46:58 2015 +0300

    mesa: Include simple_list.h explicitly in errors.c.
    
    This seems to be the only user of simple_list in core mesa not
    including the header explicitly.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>




More information about the mesa-commit mailing list