diff options
author | Dave Airlie <airlied@gmail.com> | 2015-06-27 14:21:54 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2015-07-01 12:53:43 +1000 |
commit | e35c5717837d9ac6d9722b011852bdf187f29776 (patch) | |
tree | a4bc9a2d182d8b8e8e985385136a68bc98a9b2eb /src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h | |
parent | 5ccd61217d873567b8d9a7a0fa8f678522ec78cb (diff) | |
download | external_mesa3d-e35c5717837d9ac6d9722b011852bdf187f29776.zip external_mesa3d-e35c5717837d9ac6d9722b011852bdf187f29776.tar.gz external_mesa3d-e35c5717837d9ac6d9722b011852bdf187f29776.tar.bz2 |
gallivm: add fp64 support. (v2.1)
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.
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h index fc7fdbd..463d44e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.h @@ -71,6 +71,11 @@ struct lp_build_emit_data { */ unsigned chan; + /** + * This is used to specify the src channel to read from for doubles. + */ + unsigned src_chan; + /** The lp_build_tgsi_action::emit 'executes' the opcode and writes the * results to this array. */ |