[Mesa-dev] [PATCH 00/50] GL_ARB_gpu_shader_int64... this time for sure!

Ian Romanick idr at freedesktop.org
Tue Nov 29 03:25:15 UTC 2016


From: Ian Romanick <ian.d.romanick at intel.com>

I believe that I have addressed all of the review feedback from the
previous iteration.  Many of the patches have been reviewed, and they
should be ready to go.

Patches marked with "vN" in the subject have changed in a non-trivial
way since last being sent to he list.

Several patches that have not changed need review:

    Patches 23 through 33 add lowering passes for 64-bit operations.

    Patches 42 through 50 enable the extension on BDW+.

After receiving feedback from Nicolai, I have dropped the Gallium
patches from this series.  They are still in my arb_gpu_shader_int64
branch.  Hopefully someone will pick them up.

https://cgit.freedesktop.org/~idr/mesa/log/?h=arb_gpu_shader_int64

Dave Airlie (19):
  mapi: Add support for ARB_gpu_shader_int64.
  mesa: Add ARB_gpu_shader_int64 extension bits
  glsl: Add ARB_gpu_shader_int64 boilerplate.
  glsl: Add basic ARB_gpu_shader_int64 types
  mesa: Add support for 64-bit integer uniforms
  glsl/ast/ir: Add 64-bit integer constant support
  glsl/varyings: Add 64-bit integer support.
  glsl: Add 64-bit integer support to uniform initialiser code
  glsl/ir: Add support for 64-bit integer conversions.
  glsl: Add 64-bit integer support for constant expressions
  glsl/ast: Add 64-bit integer support to conversion functions
  glsl/ir_builder: Add support for some 64-bit bitcasts.
  glsl: Add 64-bit integer support to some operations.
  glsl/ast: Add 64-bit integer support in some places.
  glsl/varying_packing: Add 64-bit integer support
  glsl: Add 64-bit integer functions
  mesa/program: Add unused ir operations.
  i965: Avoid int64 induced warnings
  i965: Avoid int64 warnings.

Ian Romanick (31):
  glsl: Add interaction between ARB_gpu_shader_int64 and
    ARB_shader_clock
  glsl: Print GLSL_TYPE_UINT64 and GLSL_TYPE_INT64 values
  glsl: Allow GLSL_TYPE_INT64 for ir_unop_abs and ir_unop_sign
  glsl/standalone: Enable ARB_gpu_shader_int64
  glsl: Move builtin_function related prototypes to a separate file
  glsl: Add "built-in" functions to do 64x64 => 64 multiplication
  glsl: Add a lowering pass for 64-bit integer multiplication
  glsl: Add "built-in" function for 64-bit integer sign()
  glsl: Add a lowering pass for 64-bit integer sign()
  glsl: Add "built-in" functions to do 64/64 => 64 division
  glsl: Add a lowering pass for 64-bit integer division
  glsl: Add "built-in" functions to do 64%64 => 64 modulus
  glsl: Add a lowering pass for 64-bit integer modulus
  glsl: Optimize redundant pack(unpack()) and unpack(pack())
    combinations
  nir: Add GLSL_TYPE_INT64 and GLSL_TYPE_UINT64 to glsl_get_bit_size
  nir: Add 64-bit integer constant support
  nir: Add 64-bit integer support for conversions and bitcasts
  nir: Lower packing and unpacking of 64-bit integer types
  nir: Shift count for shift opcodes is always 32-bits
  nir: Enable 64-bit integer support for almost all unary and binary
    operations
  nir: In split_var_copies_block, uint, int, and bool types cannot be
    matrices
  nir: Add support for 64-bit integer types to split_var_copies_block
  i965: Really don't emit Q or UQ moves on Gen < 8
  i965: Return Q and UQ types for int64 and uint64
  i965: Add support for constant evaluation on Q and UQ types
  i965: Enable emitting Q and UQ instructions in the fs backend
  i965: Add 64-bit integer support for conversions and bitcasts
  i965: Enable uploading 64-bit integer uniforms
  i965: Enable 64-bit integer support for almost all unary and binary
    operations
  i965: Split SIMD16 CMP of Q and UQ instructions
  i965: Enable ARB_gpu_shader_int64 on Gen8+

 src/compiler/Makefile.glsl.am                      |    1 +
 src/compiler/Makefile.sources                      |    4 +
 src/compiler/builtin_type_macros.h                 |   10 +
 src/compiler/glsl/ast.h                            |    4 +
 src/compiler/glsl/ast_function.cpp                 |   89 +-
 src/compiler/glsl/ast_to_hir.cpp                   |   54 +-
 src/compiler/glsl/builtin_functions.cpp            |  227 +++-
 src/compiler/glsl/builtin_functions.h              |   68 ++
 src/compiler/glsl/builtin_int64.h                  | 1202 ++++++++++++++++++++
 src/compiler/glsl/builtin_types.cpp                |   12 +
 src/compiler/glsl/builtin_variables.cpp            |    1 +
 src/compiler/glsl/generate_ir.cpp                  |   33 +
 src/compiler/glsl/glcpp/glcpp-parse.y              |   19 +-
 src/compiler/glsl/glcpp/glcpp.h                    |    4 +-
 src/compiler/glsl/glcpp/pp.c                       |    2 +-
 src/compiler/glsl/glsl_lexer.ll                    |   37 +-
 src/compiler/glsl/glsl_parser.yy                   |   25 +
 src/compiler/glsl/glsl_parser_extras.cpp           |   10 +
 src/compiler/glsl/glsl_parser_extras.h             |    7 +
 src/compiler/glsl/glsl_to_nir.cpp                  |   71 +-
 src/compiler/glsl/int64.glsl                       |  121 ++
 src/compiler/glsl/ir.cpp                           |  172 +++
 src/compiler/glsl/ir.h                             |   25 +-
 src/compiler/glsl/ir_builder.cpp                   |   24 +
 src/compiler/glsl/ir_builder.h                     |    6 +
 src/compiler/glsl/ir_builder_print_visitor.cpp     |   16 +-
 src/compiler/glsl/ir_clone.cpp                     |    2 +
 src/compiler/glsl/ir_constant_expression.cpp       |   36 +
 src/compiler/glsl/ir_expression_operation.py       |   65 +-
 src/compiler/glsl/ir_optimization.h                |    9 +
 src/compiler/glsl/ir_print_visitor.cpp             |    2 +
 src/compiler/glsl/ir_validate.cpp                  |  123 +-
 src/compiler/glsl/link_uniform_initializers.cpp    |    2 +
 src/compiler/glsl/link_varyings.h                  |    8 +
 src/compiler/glsl/linker.cpp                       |    1 +
 src/compiler/glsl/lower_64bit.cpp                  |  403 +++++++
 .../glsl/lower_blend_equation_advanced.cpp         |    1 +
 src/compiler/glsl/lower_packed_varyings.cpp        |   62 +
 src/compiler/glsl/lower_vertex_id.cpp              |    1 +
 src/compiler/glsl/opt_algebraic.cpp                |   28 +
 src/compiler/glsl/standalone.cpp                   |    1 +
 src/compiler/glsl/standalone_scaffolding.cpp       |    1 +
 src/compiler/glsl/tests/lower_64bit_test.cpp       |  440 +++++++
 src/compiler/glsl/udivmod64.h                      |  206 ++++
 src/compiler/glsl_types.cpp                        |   45 +
 src/compiler/glsl_types.h                          |   23 +-
 src/compiler/nir/nir.c                             |    4 +
 src/compiler/nir/nir.h                             |    2 +
 src/compiler/nir/nir_lower_alu_to_scalar.c         |    1 +
 src/compiler/nir/nir_lower_double_packing.c        |   42 +-
 src/compiler/nir/nir_opcodes.py                    |   36 +-
 src/compiler/nir/nir_opt_algebraic.py              |    8 +-
 src/compiler/nir/nir_print.c                       |    8 +
 src/compiler/nir/nir_split_var_copies.c            |   10 +-
 src/compiler/nir_types.h                           |    2 +
 src/mapi/glapi/gen/ARB_gpu_shader_int64.xml        |  262 +++++
 src/mapi/glapi/gen/Makefile.am                     |    1 +
 src/mapi/glapi/gen/apiexec.py                      |   39 +
 src/mapi/glapi/gen/gl_API.xml                      |    2 +
 src/mesa/drivers/dri/i965/brw_eu_emit.c            |   13 +-
 src/mesa/drivers/dri/i965/brw_fs.cpp               |    2 +
 .../dri/i965/brw_fs_channel_expressions.cpp        |   32 +
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp           |   85 +-
 src/mesa/drivers/dri/i965/brw_inst.h               |    8 +
 src/mesa/drivers/dri/i965/brw_link.cpp             |    5 +
 src/mesa/drivers/dri/i965/brw_nir.c                |    6 +-
 src/mesa/drivers/dri/i965/brw_nir_uniforms.cpp     |    4 +-
 src/mesa/drivers/dri/i965/brw_reg.h                |    1 +
 src/mesa/drivers/dri/i965/brw_shader.cpp           |   24 +-
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp     |    2 +
 src/mesa/drivers/dri/i965/intel_extensions.c       |    1 +
 src/mesa/main/extensions_table.h                   |    1 +
 src/mesa/main/mtypes.h                             |    1 +
 src/mesa/main/tests/dispatch_sanity.cpp            |   38 +
 src/mesa/main/uniform_query.cpp                    |   82 +-
 src/mesa/main/uniforms.c                           |  348 ++++++
 src/mesa/main/uniforms.h                           |   82 ++
 src/mesa/program/ir_to_mesa.cpp                    |   42 +
 src/mesa/state_tracker/st_glsl_types.cpp           |    6 +
 79 files changed, 4774 insertions(+), 129 deletions(-)
 create mode 100644 src/compiler/glsl/builtin_functions.h
 create mode 100644 src/compiler/glsl/builtin_int64.h
 create mode 100644 src/compiler/glsl/generate_ir.cpp
 create mode 100644 src/compiler/glsl/int64.glsl
 create mode 100644 src/compiler/glsl/lower_64bit.cpp
 create mode 100644 src/compiler/glsl/tests/lower_64bit_test.cpp
 create mode 100644 src/compiler/glsl/udivmod64.h
 create mode 100644 src/mapi/glapi/gen/ARB_gpu_shader_int64.xml

-- 
2.7.4



More information about the mesa-dev mailing list