projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a079972
)
i965: When producing a single channel swizzle, don't make a temporary.
author
Eric Anholt
<eric@anholt.net>
Fri, 1 Oct 2010 22:42:39 +0000
(15:42 -0700)
committer
Eric Anholt
<eric@anholt.net>
Sat, 2 Oct 2010 00:19:03 +0000
(17:19 -0700)
This quickly cuts 8% of the instructions in my glsl demo.
src/mesa/drivers/dri/i965/brw_fs.cpp
patch
|
blob
|
history
diff --git
a/src/mesa/drivers/dri/i965/brw_fs.cpp
b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 50341ba38357589e7ddc632e87ecf63b89d521c2..b38df71a84a6c9a10a567003e32d4b368b64fd84 100644
(file)
--- a/
src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/
src/mesa/drivers/dri/i965/brw_fs.cpp
@@
-1445,6
+1445,11
@@
fs_visitor::visit(ir_swizzle *ir)
ir->val->accept(this);
fs_reg val = this->result;
+ if (ir->type->vector_elements == 1) {
+ this->result.reg_offset += ir->mask.x;
+ return;
+ }
+
fs_reg result = fs_reg(this, ir->type);
this->result = result;