Module: Mesa
Branch: master
Commit: 8c9e40ac22ce5a60753172a8f95a120d84a3ec4c
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c9e40ac22ce5a60753172a8f95a120d84a3ec4c

Author: Dave Airlie <[email protected]>
Date:   Wed Dec  9 17:02:01 2015 +1000

radeonsi: handle doubles in lds load path.

This handles loading doubles from LDS properly.

Reviewed-by: Michel Dänzer <[email protected]>
Cc: "11.0 11.1" <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>

---

 src/gallium/drivers/radeonsi/si_shader.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index 14f12df..e2cf27d 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -594,6 +594,14 @@ static LLVMValueRef lds_load(struct lp_build_tgsi_context 
*bld_base,
                            lp_build_const_int32(gallivm, swizzle));
 
        value = build_indexed_load(si_shader_ctx, si_shader_ctx->lds, dw_addr);
+       if (type == TGSI_TYPE_DOUBLE) {
+               LLVMValueRef value2;
+               dw_addr = lp_build_add(&bld_base->uint_bld, dw_addr,
+                                      lp_build_const_int32(gallivm, swizzle + 
1));
+               value2 = build_indexed_load(si_shader_ctx, si_shader_ctx->lds, 
dw_addr);
+               return radeon_llvm_emit_fetch_double(bld_base, value, value2);
+       }
+
        return LLVMBuildBitCast(gallivm->builder, value,
                                tgsi2llvmtype(bld_base, type), "");
 }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to