gallivm: add fp64 support. (v2.1)

Graphics / Mesa 3D Graphics Library / Mesa - Dave Airlie [gmail.com] - 30 June 2015 21:53 UTC

This adds support for ARB_gpu_shader_fp64 and ARB_vertex_attrib_64bit to llvmpipe.

Two things that don't mix well are SoA and doubles, see emit_fetch_double, and emit_store_double_chan in this.

I've also had to split emit_data.chan, to add src_chan, which can be different for doubles.

It handles indirect double fetches from temps, inputs, constants and immediates. It doesn't handle double stores to indirects, however it appears the mesa/st doesn't currently emit these, it always does UARL/MOV combos, which will work fine.

tested with piglit, no regressions, all the fp64 tests seem to pass.

v2: switch to using shuffles for fetch/store (Roland) assert on indirect double stores - mesa/st never emits these (it uses MOV) fix indirect temp/input/constant/immediates (Roland) typos/formatting fixes (Roland)

v2.1: cleanup some long lines, emit_store_double_chan cleanups.

e35c571 gallivm: add fp64 support. (v2.1)
src/gallium/auxiliary/gallivm/lp_bld_arit.c | 12 +
src/gallium/auxiliary/gallivm/lp_bld_limits.h | 1 +
src/gallium/auxiliary/gallivm/lp_bld_logic.c | 2 +-
src/gallium/auxiliary/gallivm/lp_bld_tgsi.c | 47 +++-
src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | 4 +
src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c | 246 ++++++++++++++++++
src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h | 5 +
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 267 ++++++++++++++++++--
8 files changed, 553 insertions(+), 31 deletions(-)

Upstream: cgit.freedesktop.org


  • Share