summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2014-10-15 12:18:25 -0700
committerJason Ekstrand <jason.ekstrand@intel.com>2015-01-15 07:18:59 -0800
commitc181ff268e4787056fdee417d30d52b1098fe211 (patch)
treeebec7a4aef91300aa494adee49a3ad599d3b4ae4 /src/mesa
parentc2ded36bb60d3dfad0036dac7adbf7718968ccf2 (diff)
downloadexternal_mesa3d-c181ff268e4787056fdee417d30d52b1098fe211.zip
external_mesa3d-c181ff268e4787056fdee417d30d52b1098fe211.tar.gz
external_mesa3d-c181ff268e4787056fdee417d30d52b1098fe211.tar.bz2
i965/fs_nir: Use the correct types for texture inputs
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_nir.cpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index 6d1fbf6..2f2ebe8 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -1563,29 +1563,47 @@ fs_visitor::nir_emit_texture(nir_tex_instr *instr)
fs_reg src = get_nir_src(instr->src[i]);
switch (instr->src_type[i]) {
case nir_tex_src_bias:
- lod = src;
+ lod = retype(src, BRW_REGISTER_TYPE_F);
break;
case nir_tex_src_comparitor:
- shadow_comparitor = src;
+ shadow_comparitor = retype(src, BRW_REGISTER_TYPE_F);
break;
case nir_tex_src_coord:
- coordinate = src;
+ switch (instr->op) {
+ case nir_texop_txf:
+ case nir_texop_txf_ms:
+ coordinate = retype(src, BRW_REGISTER_TYPE_D);
+ break;
+ default:
+ coordinate = retype(src, BRW_REGISTER_TYPE_F);
+ break;
+ }
break;
case nir_tex_src_ddx:
- lod = src;
+ lod = retype(src, BRW_REGISTER_TYPE_F);
lod_components = nir_tex_instr_src_size(instr, i);
break;
case nir_tex_src_ddy:
- lod2 = src;
+ lod2 = retype(src, BRW_REGISTER_TYPE_F);
break;
case nir_tex_src_lod:
- lod = src;
+ switch (instr->op) {
+ case nir_texop_txs:
+ lod = retype(src, BRW_REGISTER_TYPE_UD);
+ break;
+ case nir_texop_txf:
+ lod = retype(src, BRW_REGISTER_TYPE_D);
+ break;
+ default:
+ lod = retype(src, BRW_REGISTER_TYPE_F);
+ break;
+ }
break;
case nir_tex_src_ms_index:
sample_index = retype(src, BRW_REGISTER_TYPE_UD);
break;
case nir_tex_src_offset:
- offset = src;
+ offset = retype(src, BRW_REGISTER_TYPE_D);
if (instr->is_array)
offset_components = instr->coord_components - 1;
else