i965/fs: Do not mark used direct surfaces in UNIFORM_PULL_CONSTANT_LOAD
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 30 Oct 2015 07:48:57 +0000 (08:48 +0100)
committerIago Toral Quiroga <itoral@igalia.com>
Thu, 5 Nov 2015 15:11:52 +0000 (16:11 +0100)
Right now the generator marks direct surfaces as used but leaves marking of
indirect surfaces to the caller. Just make the callers handle marking in both
cases for consistency.

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs_generator.cpp

index a813746cffceca235a116a9112c144fc53108ce7..629fbbdf01bd9cb016a9351ac02de96f3327a631 100644 (file)
@@ -2025,7 +2025,6 @@ fs_visitor::demote_pull_constants()
                                        pull_index);
             inst->src[i].reladdr = NULL;
             inst->src[i].stride = 1;
-            brw_mark_surface_used(prog_data, index);
          } else {
             const fs_builder ubld = ibld.exec_all().group(8, 0);
             fs_reg offset = fs_reg((unsigned)(pull_index * 4) & ~15);
@@ -2033,6 +2032,7 @@ fs_visitor::demote_pull_constants()
                       dst, fs_reg(index), offset);
             inst->src[i].set_smear(pull_index & 3);
          }
+         brw_mark_surface_used(prog_data, index);
 
          /* Rewrite the instruction to use the temporary VGRF. */
          inst->src[i].file = GRF;
index 87152634c73f44f84a3360c311ad2c4cd5468e36..c73257a8d21fc9d34925cb2d7996a472a33ce03b 100644 (file)
@@ -1184,8 +1184,6 @@ fs_generator::generate_uniform_pull_constant_load(fs_inst *inst,
 
    brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf),
                        read_offset, surf_index);
-
-   brw_mark_surface_used(prog_data, surf_index);
 }
 
 void
@@ -1246,9 +1244,6 @@ fs_generator::generate_uniform_pull_constant_load_gen7(fs_inst *inst,
                               header_present,
                               BRW_SAMPLER_SIMD_MODE_SIMD4X2,
                               0);
-
-      brw_mark_surface_used(prog_data, surf_index);
-
    } else {
 
       struct brw_reg addr = vec1(retype(brw_address_reg(0), BRW_REGISTER_TYPE_UD));
@@ -1278,11 +1273,6 @@ fs_generator::generate_uniform_pull_constant_load_gen7(fs_inst *inst,
                               0);
 
       brw_pop_insn_state(p);
-
-      /* visitor knows more than we do about the surface limit required,
-       * so has already done marking.
-       */
-
    }
 }