diff options
author | Chris Forbes <[email protected]> | 2014-08-14 20:59:15 +1200 |
---|---|---|
committer | Chris Forbes <[email protected]> | 2014-08-15 18:04:04 +1200 |
commit | a39622452069b76f7562472cc15ddefd2db4b503 (patch) | |
tree | 0d681685daa40add9fd0eecd4d4e9a64585b4f80 /src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | |
parent | 587e6e78984cd7490ac68b83d0b751bf23256595 (diff) |
i965/fs: Support fine/coarse derivative opcodes
The quality level (fine/coarse/dont-care) is plumbed through to the
generator as a constant in src1.
Signed-off-by: Chris Forbes <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_visitor.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 2d5f18d448c..f72909e3f57 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -593,10 +593,22 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_dFdx: - emit(FS_OPCODE_DDX, this->result, op[0]); + emit(FS_OPCODE_DDX, this->result, op[0], fs_reg(BRW_DERIVATIVE_BY_HINT)); + break; + case ir_unop_dFdx_coarse: + emit(FS_OPCODE_DDX, this->result, op[0], fs_reg(BRW_DERIVATIVE_COARSE)); + break; + case ir_unop_dFdx_fine: + emit(FS_OPCODE_DDX, this->result, op[0], fs_reg(BRW_DERIVATIVE_FINE)); break; case ir_unop_dFdy: - emit(FS_OPCODE_DDY, this->result, op[0]); + emit(FS_OPCODE_DDY, this->result, op[0], fs_reg(BRW_DERIVATIVE_BY_HINT)); + break; + case ir_unop_dFdy_coarse: + emit(FS_OPCODE_DDY, this->result, op[0], fs_reg(BRW_DERIVATIVE_COARSE)); + break; + case ir_unop_dFdy_fine: + emit(FS_OPCODE_DDY, this->result, op[0], fs_reg(BRW_DERIVATIVE_FINE)); break; case ir_binop_add: |