i965/fs: Do not mark used surfaces in FS_OPCODE_GET_BUFFER_SIZE
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 30 Oct 2015 10:10:02 +0000 (11:10 +0100)
committerIago Toral Quiroga <itoral@igalia.com>
Thu, 5 Nov 2015 15:11:52 +0000 (16:11 +0100)
Do it in the visitor, like we do for other opcodes.

v2: use const, get rid of useless surf_index temporary (Curro)

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

index c73257a8d21fc9d34925cb2d7996a472a33ce03b..974219f3ece7e79103809d2bf89bd0ab7afc2262 100644 (file)
@@ -666,8 +666,6 @@ fs_generator::generate_get_buffer_size(fs_inst *inst,
               inst->header_size > 0,
               simd_mode,
               BRW_SAMPLER_RETURN_FORMAT_SINT32);
-
-   brw_mark_surface_used(prog_data, surf_index.dw1.ud);
 }
 
 void
index 50b8218e934d6022c42559665b961d4ea48cf573..b6f4c52c50f8bc88cbfcf5ab4973771893c6281c 100644 (file)
@@ -2275,12 +2275,14 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
                                   BRW_REGISTER_TYPE_UD);
       bld.LOAD_PAYLOAD(src_payload, &source, 1, 0);
 
-      fs_reg surf_index = fs_reg(prog_data->binding_table.ssbo_start + ssbo_index);
+      const unsigned index = prog_data->binding_table.ssbo_start + ssbo_index;
       fs_inst *inst = bld.emit(FS_OPCODE_GET_BUFFER_SIZE, dest,
-                               src_payload, surf_index);
+                               src_payload, fs_reg(index));
       inst->header_size = 0;
       inst->mlen = mlen;
       bld.emit(inst);
+
+      brw_mark_surface_used(prog_data, index);
       break;
    }