i965/fs: Remove special casing of framebuffer writes in scheduler code.
authorFrancisco Jerez <currojerez@riseup.net>
Thu, 21 Jul 2016 23:56:05 +0000 (16:56 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 26 Aug 2016 01:36:09 +0000 (18:36 -0700)
The reason why it was safe for the scheduler to ignore the side
effects of framebuffer write instructions was that its side effects
couldn't have had any influence on any other instruction in the
program, because we weren't doing framebuffer reads, and framebuffer
writes were always non-overlapping.  We need actual memory dependency
analysis in order to determine whether a side-effectful instruction
can be reordered with respect to other instructions in the program.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp

index a8987065f18b4b4e438704e446d4e854ea7cdf0d..f15c0dfc55a67b77137527ac64805c540f9818c5 100644 (file)
@@ -969,8 +969,7 @@ is_scheduling_barrier(const fs_inst *inst)
 {
    return inst->opcode == FS_OPCODE_PLACEHOLDER_HALT ||
           inst->is_control_flow() ||
-          inst->eot ||
-          (inst->has_side_effects() && inst->opcode != FS_OPCODE_FB_WRITE);
+          inst->has_side_effects();
 }
 
 void