[Mesa-dev] [PATCH 12/19] i965/fs: Apply cube map array fixup and restore the payload.
Matt Turner
mattst88 at gmail.com
Fri Apr 18 11:56:48 PDT 2014
So that we don't have partial writes to a large VGRF. Will be cleaned up
by register coalescing.
---
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 91bbe0a..3f26a19 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -1715,7 +1715,20 @@ fs_visitor::visit(ir_texture *ir)
type->sampler_array) {
fs_reg depth = dst;
depth.reg_offset = 2;
- emit_math(SHADER_OPCODE_INT_QUOTIENT, depth, depth, fs_reg(6));
+ fs_reg fixed_depth = fs_reg(this, glsl_type::int_type);
+ emit_math(SHADER_OPCODE_INT_QUOTIENT, fixed_depth, depth, fs_reg(6));
+
+ fs_reg *fixed_payload = ralloc_array(mem_ctx, fs_reg, inst->sources);
+ fs_reg d = dst;
+ for (int i = 0; i < inst->sources; i++) {
+ if (i == 2) {
+ fixed_payload[i] = fixed_depth;
+ } else {
+ d.reg_offset = i;
+ fixed_payload[i] = d;
+ }
+ }
+ emit(SHADER_OPCODE_LOAD_PAYLOAD, dst, fixed_payload, inst->sources);
}
}
--
1.8.3.2
More information about the mesa-dev
mailing list