On Thu, 2016-09-08 at 18:44 -0700, Francisco Jerez wrote: > Iago Toral <ito...@igalia.com> writes: > > > > > On Wed, 2016-09-07 at 18:48 -0700, Francisco Jerez wrote: > > (...) > > > > > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > > > b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > > > index 12ab7b3..a678351 100644 > > > --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > > > +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > > > @@ -363,7 +363,7 @@ fs_generator::generate_fb_read(fs_inst *inst, > > > struct brw_reg dst, > > > prog_data->binding_table.render_target_start + inst- > > > >target; > > > > > > gen9_fb_READ(p, dst, payload, surf_index, > > > - inst->header_size, inst->regs_written, > > > + inst->header_size, inst->size_written / > > > REG_SIZE, > > DIV_ROUND_UP? > > > > > > > > prog_data->persample_dispatch); > > > > > > brw_mark_surface_used(&prog_data->base, surf_index); > > > @@ -467,7 +467,7 @@ fs_generator::generate_urb_read(fs_inst > > > *inst, > > > brw_inst_set_urb_per_slot_offset(p->devinfo, send, true); > > > > > > brw_inst_set_mlen(p->devinfo, send, inst->mlen); > > > - brw_inst_set_rlen(p->devinfo, send, inst->regs_written); > > > + brw_inst_set_rlen(p->devinfo, send, inst->size_written / > > > REG_SIZE); > > DIV_ROUND_UP? > > > > > > > > brw_inst_set_header_present(p->devinfo, send, true); > > > brw_inst_set_urb_global_offset(p->devinfo, send, inst- > > > >offset); > > > } > > > @@ -895,7 +895,7 @@ fs_generator::generate_tex(fs_inst *inst, > > > struct > > > brw_reg dst, struct brw_reg src > > > surface + base_binding_table_index, > > > sampler % 16, > > > msg_type, > > > - inst->regs_written, > > > + inst->size_written / REG_SIZE, > > DIV_ROUND_UP? > > > > > > > > inst->mlen, > > > inst->header_size != 0, > > > simd_mode, > > > @@ -932,7 +932,7 @@ fs_generator::generate_tex(fs_inst *inst, > > > struct > > > brw_reg dst, struct brw_reg src > > > 0 /* surface */, > > > 0 /* sampler */, > > > msg_type, > > > - inst->regs_written, > > > + inst->size_written / REG_SIZE, > > DIV_ROUND_UP? > > > > > > > > inst->mlen /* mlen */, > > > inst->header_size != 0 /* header > > > */, > > > simd_mode, > > > @@ -1263,7 +1263,7 @@ > > > fs_generator::generate_varying_pull_constant_load_gen4(fs_inst > > > *inst, > > > */ > > > msg_type = BRW_SAMPLER_MESSAGE_SIMD16_LD; > > > assert(inst->mlen == 3); > > > - assert(inst->regs_written == 8); > > > + assert(inst->size_written == 8 * REG_SIZE); > > > rlen = 8; > > > simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16; > > > } > > > @@ -1408,7 +1408,7 @@ > > > fs_generator::generate_pixel_interpolator_query(fs_inst *inst, > > > msg_type, > > > msg_data, > > > inst->mlen, > > > - inst->regs_written); > > > + inst->size_written / REG_SIZE); > > DIV_ROUND_UP? > In all cases above you have the requirement that the amount of data > written is an exact multiple of REG_SIZE, because SEND messages can > only > represent return payload sizes as an integer in GRF units, so if > fs_inst::size_written ends up not being a multiple of REG_SIZE in any > of > these cases something has gone seriously wrong along the way. Would > you > like me to sprinkle in some assertions to verify that?
Yeah, I guess adding a few assertions could make sense, thanks! Iago _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev