From: Eric Anholt <e...@anholt.net> When rendering to integer color buffers, we need to be careful to use MRFs of the correct type when emitting color writes.
Signed-off-by: Eric Anholt <e...@anholt.net> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) (Feel free to change my Signed-off-by to a Reviewed-by if you prefer.) diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 15009dc..3e2feaf 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -1853,7 +1853,7 @@ fs_visitor::emit_color_write(int index, int first_color_mrf, fs_reg color) * m + 7: a1 */ inst = emit(BRW_OPCODE_MOV, - fs_reg(MRF, first_color_mrf + index * reg_width), + fs_reg(MRF, first_color_mrf + index * reg_width, color.type), color); inst->saturate = c->key.clamp_fragment_color; } else { @@ -1874,19 +1874,22 @@ fs_visitor::emit_color_write(int index, int first_color_mrf, fs_reg color) * destination + 4. */ inst = emit(BRW_OPCODE_MOV, - fs_reg(MRF, BRW_MRF_COMPR4 + first_color_mrf + index), + fs_reg(MRF, BRW_MRF_COMPR4 + first_color_mrf + index, + color.type), color); inst->saturate = c->key.clamp_fragment_color; } else { push_force_uncompressed(); - inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index), + inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index, + color.type), color); inst->saturate = c->key.clamp_fragment_color; pop_force_uncompressed(); push_force_sechalf(); color.sechalf = true; - inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index + 4), + inst = emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index + 4, + color.type), color); inst->saturate = c->key.clamp_fragment_color; pop_force_sechalf(); -- 1.7.7.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev