As a general comment, please remove the Bugzilla tags from the
commits.  This is a new feature, not a bugfix.  If you want to leave a
reference to the bug, pick a commit and put it there but it doesn't
need to be in all of them.
--Jason

On Mon, Jun 29, 2015 at 4:29 PM, Jason Ekstrand <ja...@jlekstrand.net> wrote:
> Good work guys!  I've started reviewing but review will probably take
> a few days so please be patient.
>
>
> On Fri, Jun 26, 2015 at 1:06 AM, Eduardo Lima Mitev <el...@igalia.com> wrote:
>> Hello,
>>
>> This series adds a new vec4 backend for i965 based on NIR. It is the result 
>> of working on
>> https://bugs.freedesktop.org/show_bug.cgi?id=89580.
>>
>> This backend is activated if all the following conditions are met:
>>
>> * INTEL_USE_NIR environment variable is set to 1 (or true)
>> * The stage is a GLSL vertex shader (the pass does not support geometry 
>> shaders or ARB_vertex_program yet)
>> * Hardware is gen6 or gen7 (specifically, we tested on SNB, IVB and HSW)
>>
>> Otherwise the backend is disabled and the usual vec4_visitor is used.
>>
>> The backend implementation is heavily based on vec4_visitor, and it is in 
>> fact part of that class. However we have taken care to make the new backend 
>> as much self-contained as possible, to ease an eventual removal of the 
>> vec4_visitor path. For dealing with NIR data-structures, we heavily borrowed 
>> ideas and patterns from the fs_nir backend.
>>
>> At the moment, the backend shows no piglit regressions on SNB, IVB and HSW. 
>> There is one piglit test that fails in master but crashes on our backend. 
>> The test uses multiple indirect indexings on an expression with sampler 
>> arrays, which is expected to hit an assertion in NIR when --enable-debug 
>> autoconf flag is set.
>>
>> The backend shows no functional dEQP regressions. On HSW and IVB, however, 
>> there are some particularly heavy tests (~80) that fail at link time due to 
>> register spilling, which should be fixed once optimization work on the 
>> backend is done.
>>
>> People interested in trying the backend can use this git tree (and remember 
>> to have INTEL_USE_NIR=1):
>>
>> $ git clone -b nir-vec4-v1 https://github.com/Igalia/mesa.git
>>
>> The structure of the patch set is:
>>
>> The first patch (0001) adds the main structure of the backend, with 
>> placeholders for each main functionality.
>> The second patch (0002) adds logic to select between the current 
>> vec4_visitor pass, and the new NIR->vec4 pass.
>> The rest of the patches incrementally fill placeholders with atomic 
>> functionality. In some cases, the division might seem arbitrary (i.e, 
>> nir_emit_texture(), which is basically one method), but we decided to favor 
>> having more atomic patches to facilitate review, and maybe squash the 
>> patches just before merging.
>>
>> cheers,
>> Eduardo
>>
>> Alejandro Piñeiro (12):
>>   i965/vec4: Overload make_reg_for_system_value() to allow reuse in
>>     NIR->vec4 pass
>>   i965/nir/vec4: Add setup for system values
>>   i965/nir/vec4: Implement intrinsics that load system values
>>   i965/nir/vec4: Implement atomic counter intrinsics (read, inc and dec)
>>   i965/nir: Disable alu_to_scalar pass on non-scalar shaders
>>   i965/nir/vec4: Add skeleton implementation of nir_emit_texture()
>>   i965/vec4: Add a new dst_reg constructor accepting a brw_reg_type
>>   i965/nir/vec4: Implement loading of nir_tex_src_comparitor
>>   i965/nir/vec4: Implement loading of nir_tex_src_coord
>>   i965/nir/vec4: Setup LOD source register
>>   i965/nir/vec4: Implement nir_texop_tex and nir_texop_txl texture ops
>>   i965/nir/vec4: Implement nir_texop_txf texture op
>>
>> Antia Puentes (33):
>>   i965/nir/vec4: Implement loading values from an UBO
>>   i965/nir/vec4: Prepare source and destination registers for ALU
>>     operations
>>   i965/nir/vec4: Implement single-element "mov" operations
>>   i965/nir/vec4: Lower "vecN" instructions and mark them unreachable
>>   i965/nir/vec4: Implement int<->float format conversion ops
>>   i965/nir/vec4: Implement the addition operation
>>   i965/nir/vec4: Implement multiplication
>>   i965/vec4: Return the last emitted instruction in emit_math()
>>   i965/nir/vec4: Implement more math operations
>>   i965/nir/vec4: Implement carry/borrow for addition/subtraction
>>   i965/nir/vec4: Implement float-related functions
>>   i965/vec4: Return the emitted instruction in emit_minmax()
>>   i965/nir/vec4: Implement min/max operations
>>   i965/nir/vec4: Derivatives are not allowed in VS
>>   i965/nir: Add utility method for comparisons
>>   i965/nir/vec4: Implement non-vector comparison ops
>>   i965/nir/vec4: Add swizzle utility method for vector ops
>>   i965/nir/vec4: Implement equality ops on vectors
>>   i965/nir/vec4: Implement non-equality ops on vectors
>>   i965/nir/vec4: Implement logical operators
>>   i965/nir/vec4: Implement "bool<->int,float" format conversion
>>   i965/nir/vec4: "noise" ops should already be lowered
>>   i965/nir/vec4: Implement pack/unpack operations
>>   i965/nir/vec4: Implement bit operations
>>   i965/nir/vec4: Implement the "sign" operation
>>   i965/nir/vec4: Implement "shift" operations
>>   i965/nir/vec4: Implement floating-point fused multiply-add
>>   i965/vec4: Return the emitted instruction in emit_lrp()
>>   i965/nir/vec4: Implement linear interpolation
>>   i965/nir/vec4: Implement conditional select
>>   i965/nir/vec4: Implement the dot product operation
>>   i965/nir/vec4: Implement vector "any" operation
>>   i965/nir/vec4: Mark as unreachable ops that should be already lowered
>>
>> Eduardo Lima Mitev (26):
>>   i965/nir/vec4: Add implementation placeholders for a new NIR->vec4
>>     pass
>>   i965/nir/vec4: Select between new nir_vec4 or current vec4_visitor
>>     code-paths
>>   i965/vec4: Move type_size() method to brw_vec4_visitor class
>>   i965/nir/vec4: Add setup of input variables in NIR->vec4 pass
>>   i965/nir/vec4: Add setup of output variables in NIR->vec4 pass
>>   i965/nir/vec4: Add shader function implementation
>>   i965/nir: Move brw_type_for_nir_type() to brw_nir to allow reuse
>>   i965/vec4: Add auxiliary func to build a writemask from a component
>>     size
>>   i965/nir/vec4: Implement loop statements (nir_cf_node_loop)
>>   i965/nir/vec4: Implement load_input intrinsic
>>   i965/nir/vec4: Implement store_output intrinsic
>>   i965: Take is_scalar_shader_stage() method out to allow reuse
>>   i965/nir/vec4: Implement nir_emit_jump
>>   i965/nir: Add new utility method brw_glsl_base_type_for_nir_type()
>>   i965/vec4: Move is_high_sample() method to vec4_visitor class
>>   i965/nir/vec4: Add utility method shader_opcode_for_nir_opcode()
>>   i965/nir/vec4: Add nir_swizzle_result() method to vec4_visitor
>>   i965/nir/vec4: Implement nir_tex_src_ddx and nir_tex_src_ddy tex
>>     sources
>>   i965/nir/vec4: Implement nir_tex_src_offset tex source
>>   i965/vec4: Change vec4_visitor::emit_mcs_fetch() method to allow reuse
>>   i965/nir/vec4: Implement nir_tex_src_sampler_offset tex source
>>   i965/nir/vec4: Implement nir_tex_src_ms_index tex source
>>   i965/nir/vec4: Implement nir_texop_txs and nir_texop_query_levels
>>     texture ops
>>   i965/nir/vec4: Implement nir_texop_txf_ms texture op
>>   i965/nir/vec4: Implement nir_texop_txd texture op
>>   i965/vec4: Change vec4_visitor::gather_channel() method to allow reuse
>>
>> Iago Toral Quiroga (4):
>>   i965/nir/vec4: Add setup of uniform variables
>>   i965/nir/vec4: Implement conditional statements (nir_cf_node_if)
>>   nir/nir_lower_io: Add vec4 support
>>   i965/nir/vec4: Implement load_uniform intrinsic
>>
>> Samuel Iglesias Gonsalvez (3):
>>   i965/nir/vec4: Add nir_get_dst() and nir_get_src() methods
>>   i965/nir/vec4: Implement nir_texop_tg4 texture op
>>   nir: Fix output swizzle in get_mul_for_src
>>
>>  src/glsl/nir/nir.h                                |   18 +-
>>  src/glsl/nir/nir_lower_io.c                       |   87 +-
>>  src/glsl/nir/nir_opt_peephole_ffma.c              |    5 +-
>>  src/mesa/drivers/dri/i965/Makefile.sources        |    1 +
>>  src/mesa/drivers/dri/i965/brw_fs_nir.cpp          |   34 +-
>>  src/mesa/drivers/dri/i965/brw_ir_vec4.h           |    2 +
>>  src/mesa/drivers/dri/i965/brw_nir.c               |   78 +-
>>  src/mesa/drivers/dri/i965/brw_nir.h               |    5 +
>>  src/mesa/drivers/dri/i965/brw_program.c           |    5 +
>>  src/mesa/drivers/dri/i965/brw_reg.h               |    9 +
>>  src/mesa/drivers/dri/i965/brw_shader.cpp          |   36 +-
>>  src/mesa/drivers/dri/i965/brw_shader.h            |   13 +
>>  src/mesa/drivers/dri/i965/brw_vec4.cpp            |   49 +-
>>  src/mesa/drivers/dri/i965/brw_vec4.h              |   65 +-
>>  src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp |    7 +-
>>  src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h   |    3 +-
>>  src/mesa/drivers/dri/i965/brw_vec4_nir.cpp        | 1710 
>> +++++++++++++++++++++
>>  src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp    |   65 +-
>>  src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp |    5 +-
>>  src/mesa/drivers/dri/i965/brw_vs.h                |    3 +-
>>  20 files changed, 2063 insertions(+), 137 deletions(-)
>>  create mode 100644 src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
>>
>> --
>> 2.1.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to