[Mesa-dev] [PATCH 07/57] i965/fs: Replace fs_inst::regs_written with ::size_written field in bytes.
Iago Toral
itoral at igalia.com
Fri Sep 9 06:15:42 UTC 2016
On Thu, 2016-09-08 at 18:44 -0700, Francisco Jerez wrote:
> Iago Toral <itoral at 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
More information about the mesa-dev
mailing list