radeonsi: support constants as TEX coordinates
authorChristian König <christian.koenig@amd.com>
Mon, 4 Feb 2013 16:46:42 +0000 (17:46 +0100)
committerChristian König <christian.koenig@amd.com>
Tue, 12 Feb 2013 17:57:12 +0000 (18:57 +0100)
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/radeonsi_shader.c

index 36711be352fc66d535d4c025aac68f7106612773..1556a0768b1dadad0841e42a111a0207e7d3f6d6 100644 (file)
@@ -433,6 +433,15 @@ static LLVMValueRef fetch_constant(
        LLVMValueRef offset;
        LLVMValueRef load;
 
+       if (swizzle == LP_CHAN_ALL) {
+               unsigned chan;
+               LLVMValueRef values[4];
+               for (chan = 0; chan < TGSI_NUM_CHANNELS; ++chan)
+                       values[chan] = fetch_constant(bld_base, reg, type, chan);
+
+               return lp_build_gather_values(bld_base->base.gallivm, values, 4);
+       }
+
        /* currently not supported */
        if (reg->Register.Indirect) {
                assert(0);