[Mesa-dev] [PATCH 00/22] i965 Ivybridge ARB_gpu_shader_fp64 / OpenGL 4.0

Samuel Iglesias Gonsálvez siglesias at igalia.com
Thu Jan 5 13:07:20 UTC 2017


Hi,

This series implements initial support for Ivybridge FP64 for both
align16 and align1 backends, and with that we can enable FP64 and
OpenGL 4.0 in Ivybridge. 

These patches are available in our repository for testing. You can clone
it using the following command:

$ git clone -b i965-fp64-gen7-ivb-scalar-vec4-rc1 https://github.com/Igalia/mesa.git

The only feature missing in this series would be register spilling of
64-bit data. With this series all existing FP64 tests in Piglit pass on
Ivybridge, except for ~40 tests that fail to spill registers (mostly
the same varying-packing tests that failed in the scalar backend
before Curro fixed the scalar spilling implementation for SIMD32).

The main differences between HSW [0] and IVB with respect to FP64
support are that both execution size and regioning parameters (vertical
stride, horizontal stride and width) are in terms of floats, so we need
to duplicate both regioning parameters and execution size in the
instructions to have what the HW expects. For example, this instruction
in HSW:

		mov(4)  r10.0<1>:df, r11<4;4;1>:df

would be in IVB:

		mov (8) r10.0<1>:df r11.0<8;8,1>:df

Regards,

Sam

[0] https://lists.freedesktop.org/archives/mesa-dev/2016-July/123685.html

Iago Toral Quiroga (2):
  i965/disasm: also print nibctrl in IVB for execsize=8
  i965/fs: double-precision execution does not use 2 channels per DF in
    IVB/VLV

Juan A. Suarez Romero (13):
  i965/fs: add helper to retrieve instruction data size
  i965/fs: duplicate regioning parameters and execsize for DF in IVB/VLV
  i965/fs: add lowering step to duplicate sources with stride 0.
  i965/fs: consider execsize can be duplicated in lower_simd_with
  i965/fs: fix dst stride in IVB/VLV type conversions
  i965/fs: fix lower SIMD width for IVB/VLV's MOVE_INDIRECT
  i965/fs: add lowering x2d step for IVB/VLV
  i965/vec4: keep original type when dealing with null registers
  i965/vec4: fix double_to_single() for IVB/VLV
  i965/vec4: fix SIMD-width lowering for double_to_single operation in
    IVB/VLV
  i965/vec4: consider subregister offset in live variables
  i965/vec4: fix register_coalesce() for partial writes
  i965/vec4: fix SIMD-with lowering for CMP/MOV instructions with
    conditional modifiers

Samuel Iglesias Gonsálvez (7):
  i965/fs: indirect addressing with doubles is not supported in IVB/VLV
  i965/fs: lower all non-force_writemask_all DF instructions to SIMD4 on
    IVB/VLV
  i965/vec4: split DF instructions and later duplicate its execsize in
    IVB/VLV
  i965/vec4: adapt setup_imm_df() to allow inserting instructions before
    another one
  i965: enable ARB_gpu_shader_fp64 for Ivybridge/Valleyview
  i965: enable OpenGL 4.0 to Ivybridge/Valleyview
  docs: mark GL_ARB_gpu_shader_fp64 and OpenGL 4.0 as supported by
    i965/gen7+

 docs/features.txt                                  |   4 +-
 src/mesa/drivers/dri/i965/Makefile.sources         |   1 +
 src/mesa/drivers/dri/i965/brw_disasm.c             |   7 ++
 src/mesa/drivers/dri/i965/brw_fs.cpp               | 115 ++++++++++++++++++--
 src/mesa/drivers/dri/i965/brw_fs.h                 |   2 +
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp     | 110 ++++++++++++++++---
 src/mesa/drivers/dri/i965/brw_fs_lower_ivb_x2d.cpp |  80 ++++++++++++++
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp           |  11 +-
 src/mesa/drivers/dri/i965/brw_ir_fs.h              |   1 +
 src/mesa/drivers/dri/i965/brw_ir_vec4.h            |   1 +
 src/mesa/drivers/dri/i965/brw_vec4.cpp             | 118 +++++++++++++++++++--
 src/mesa/drivers/dri/i965/brw_vec4.h               |   2 +
 .../drivers/dri/i965/brw_vec4_copy_propagation.cpp |   3 +-
 src/mesa/drivers/dri/i965/brw_vec4_generator.cpp   |  42 +++++++-
 .../drivers/dri/i965/brw_vec4_live_variables.cpp   |  12 ++-
 .../drivers/dri/i965/brw_vec4_live_variables.h     |  10 +-
 src/mesa/drivers/dri/i965/brw_vec4_nir.cpp         |  21 +++-
 src/mesa/drivers/dri/i965/intel_extensions.c       |   7 +-
 src/mesa/drivers/dri/i965/intel_screen.c           |   2 +-
 19 files changed, 487 insertions(+), 62 deletions(-)
 create mode 100644 src/mesa/drivers/dri/i965/brw_fs_lower_ivb_x2d.cpp

-- 
2.9.3



More information about the mesa-dev mailing list