mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-30 19:11:31 +00:00
i965/fs: add support for shader float control to remove_extra_rounding_modes()
The remove_extra_rounding_modes() optimization will remove duplicated rounding mode changes. v2: - Fix bug in the rounding mode change (Alejandro). v3: - Fix rounding modes. v4: - Updated to renamed shader info member and enum values (Andres). v5: - Simplify flags logic operations (Caio). Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> Signed-off-by: Andres Gomez <agomez@igalia.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
parent
9bd88d10d8
commit
9b07020a4f
@ -3531,9 +3531,22 @@ bool
|
||||
fs_visitor::remove_extra_rounding_modes()
|
||||
{
|
||||
bool progress = false;
|
||||
unsigned execution_mode = this->nir->info.float_controls_execution_mode;
|
||||
|
||||
brw_rnd_mode base_mode = BRW_RND_MODE_UNSPECIFIED;
|
||||
if ((FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP16 |
|
||||
FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP32 |
|
||||
FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP64) &
|
||||
execution_mode)
|
||||
base_mode = BRW_RND_MODE_RTNE;
|
||||
if ((FLOAT_CONTROLS_ROUNDING_MODE_RTZ_FP16 |
|
||||
FLOAT_CONTROLS_ROUNDING_MODE_RTZ_FP32 |
|
||||
FLOAT_CONTROLS_ROUNDING_MODE_RTZ_FP64) &
|
||||
execution_mode)
|
||||
base_mode = BRW_RND_MODE_RTZ;
|
||||
|
||||
foreach_block (block, cfg) {
|
||||
brw_rnd_mode prev_mode = BRW_RND_MODE_UNSPECIFIED;
|
||||
brw_rnd_mode prev_mode = base_mode;
|
||||
|
||||
foreach_inst_in_block_safe (fs_inst, inst, block) {
|
||||
if (inst->opcode == SHADER_OPCODE_RND_MODE) {
|
||||
|
Loading…
Reference in New Issue
Block a user