summaryrefslogtreecommitdiffstats
path: root/src/freedreno
diff options
context:
space:
mode:
authorJonathan Marek <[email protected]>2019-10-07 16:21:09 -0400
committerJonathan Marek <[email protected]>2019-10-14 17:48:22 -0400
commit3cfd5ffb8ca2204004c98b969b82ecd564bda730 (patch)
tree30d31b06194c77b4558bd69ac5babe4dee31f05f /src/freedreno
parentcfc6a3e3942cc8a0e30f50724dabf1d4b2f1dc00 (diff)
freedreno/ir3: fix GETLOD for negative LODs
Note: for output type U32, negative LOD is not sign extended from 16 bits Signed-off-by: Jonathan Marek <[email protected]> Reviewed-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/freedreno')
-rw-r--r--src/freedreno/ir3/ir3_compiler_nir.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c
index 7061964be20..38dad5c7e49 100644
--- a/src/freedreno/ir3/ir3_compiler_nir.c
+++ b/src/freedreno/ir3/ir3_compiler_nir.c
@@ -1918,7 +1918,7 @@ emit_tex(struct ir3_context *ctx, nir_tex_instr *tex)
}
if (opc == OPC_GETLOD)
- type = TYPE_U32;
+ type = TYPE_S32;
struct ir3_instruction *samp_tex;
@@ -1970,7 +1970,7 @@ emit_tex(struct ir3_context *ctx, nir_tex_instr *tex)
compile_assert(ctx, tex->dest_type == nir_type_float);
for (i = 0; i < 2; i++) {
- dst[i] = ir3_MUL_F(b, ir3_COV(b, dst[i], TYPE_U32, TYPE_F32), 0,
+ dst[i] = ir3_MUL_F(b, ir3_COV(b, dst[i], TYPE_S32, TYPE_F32), 0,
factor, 0);
}
}