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

Author: Dave Airlie <airl...@redhat.com>
Date:   Wed Dec  9 17:02:38 2015 +1000

radeonsi: handle loading doubles as geometry shader inputs.

This adds the double code to the geometry shader input handling.

Reviewed-by: Michel Dänzer <michel.daen...@amd.com>
Cc: "11.0 11.1" <mesa-sta...@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airl...@redhat.com>

---

 src/gallium/drivers/radeonsi/si_shader.c |   20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index e2cf27d..1baa2eb 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -741,6 +741,7 @@ static LLVMValueRef fetch_input_gs(
        unsigned semantic_name = info->input_semantic_name[reg->Register.Index];
        unsigned semantic_index = 
info->input_semantic_index[reg->Register.Index];
        unsigned param;
+       LLVMValueRef value;
 
        if (swizzle != ~0 && semantic_name == TGSI_SEMANTIC_PRIMID)
                return get_primitive_id(bld_base, swizzle);
@@ -782,11 +783,22 @@ static LLVMValueRef fetch_input_gs(
        args[7] = uint->zero; /* SLC */
        args[8] = uint->zero; /* TFE */
 
+       value = lp_build_intrinsic(gallivm->builder,
+                                  "llvm.SI.buffer.load.dword.i32.i32",
+                                  i32, args, 9,
+                                  LLVMReadOnlyAttribute | 
LLVMNoUnwindAttribute);
+       if (type == TGSI_TYPE_DOUBLE) {
+               LLVMValueRef value2;
+               args[2] = lp_build_const_int32(gallivm, (param * 4 + swizzle + 
1) * 256);
+               value2 = lp_build_intrinsic(gallivm->builder,
+                                           "llvm.SI.buffer.load.dword.i32.i32",
+                                           i32, args, 9,
+                                           LLVMReadOnlyAttribute | 
LLVMNoUnwindAttribute);
+               return radeon_llvm_emit_fetch_double(bld_base,
+                                                    value, value2);
+       }
        return LLVMBuildBitCast(gallivm->builder,
-                               lp_build_intrinsic(gallivm->builder,
-                                               
"llvm.SI.buffer.load.dword.i32.i32",
-                                               i32, args, 9,
-                                               LLVMReadOnlyAttribute | 
LLVMNoUnwindAttribute),
+                               value,
                                tgsi2llvmtype(bld_base, type), "");
 }
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to