summaryrefslogtreecommitdiffstats
path: root/src/mesa/pipe/llvm/llvm_entry.c
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2007-11-06 06:06:04 -0500
committerZack Rusin <[email protected]>2007-12-11 09:49:33 -0500
commit1f30efb7365075de0ae119a40ab70a16bc547670 (patch)
tree37d55d99729c36993ff279469d88635b690b633d /src/mesa/pipe/llvm/llvm_entry.c
parent8681deddd7a7e749adaf43c7df4313ea54922e62 (diff)
Implement kilp and make it work
Diffstat (limited to 'src/mesa/pipe/llvm/llvm_entry.c')
-rw-r--r--src/mesa/pipe/llvm/llvm_entry.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mesa/pipe/llvm/llvm_entry.c b/src/mesa/pipe/llvm/llvm_entry.c
index 6bdb311c2b3..03f7ac8f14d 100644
--- a/src/mesa/pipe/llvm/llvm_entry.c
+++ b/src/mesa/pipe/llvm/llvm_entry.c
@@ -239,6 +239,8 @@ int run_fragment_shader(float x, float y,
float4 results[4][16];
float4 temps[128];//MAX_PROGRAM_TEMPS
struct ShaderInput args;
+ int mask = 0;
+ args.kilmask = 0;
from_array(inputs, ainputs, 4, num_inputs);
from_consts(consts, aconsts, num_consts);
@@ -248,7 +250,11 @@ int run_fragment_shader(float x, float y,
for (int i = 0; i < 4; ++i) {
args.inputs = inputs[i];
args.dests = results[i];
+ mask = args.kilmask;
+ args.kilmask = 0;
execute_shader(&args);
+ args.kilmask = mask | (args.kilmask << i);
+
to_array(dests[i], args.dests, 2);
}
return ~args.kilmask;