summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/gallivm/lp_bld_limits.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@gmail.com>2015-06-27 14:21:54 +1000
committerDave Airlie <airlied@redhat.com>2015-07-01 12:53:43 +1000
commite35c5717837d9ac6d9722b011852bdf187f29776 (patch)
treea4bc9a2d182d8b8e8e985385136a68bc98a9b2eb /src/gallium/auxiliary/gallivm/lp_bld_limits.h
parent5ccd61217d873567b8d9a7a0fa8f678522ec78cb (diff)
downloadexternal_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_limits.h')
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_limits.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_limits.h b/src/gallium/auxiliary/gallivm/lp_bld_limits.h
index 2851fd1..3db7261 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_limits.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_limits.h
@@ -132,6 +132,7 @@ gallivm_get_shader_param(enum pipe_shader_cap param)
case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
return 1;
case PIPE_SHADER_CAP_DOUBLES:
+ return 1;
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: