On Wed, Oct 10, 2018 at 05:00:33PM -0700, Jordan Justen wrote:
> On 2018-10-10 14:38:23, Rafael Antognolli wrote:
> > On Wed, Oct 10, 2018 at 02:04:11PM -0700, Jordan Justen wrote:
> > > On 2018-10-10 13:45:13, Rafael Antognolli wrote:
> > > > On Wed, Oct 10, 2018 at 01:39:25PM -0700, Jordan Justen wrote:
> > > > > Ref: 263b584d5e4 "i965/skl: Emit extra zeros in STATE_BASE_ADDRESS on 
> > > > > Skylake."
> > > > > Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com>
> > > > > ---
> > > > >  src/intel/vulkan/genX_cmd_buffer.c | 12 ++++++++++++
> > > > >  1 file changed, 12 insertions(+)
> > > > > 
> > > > > diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
> > > > > b/src/intel/vulkan/genX_cmd_buffer.c
> > > > > index c3a7e5c83c3..43a02f22567 100644
> > > > > --- a/src/intel/vulkan/genX_cmd_buffer.c
> > > > > +++ b/src/intel/vulkan/genX_cmd_buffer.c
> > > > > @@ -121,6 +121,18 @@ genX(cmd_buffer_emit_state_base_address)(struct 
> > > > > anv_cmd_buffer *cmd_buffer)
> > > > >        sba.IndirectObjectBufferSizeModifyEnable  = true;
> > > > >        sba.InstructionBufferSize                 = 0xfffff;
> > > > >        sba.InstructionBuffersizeModifyEnable     = true;
> > > > > +#  endif
> > > > > +#  if (GEN_GEN >= 9)
> > > > > +      sba.BindlessSurfaceStateBaseAddress = (struct anv_address) { 
> > > > > NULL, 0 };
> > > > > +      sba.BindlessSurfaceStateMemoryObjectControlState = GENX(MOCS);
> > > > > +      sba.BindlessSurfaceStateBaseAddressModifyEnable = true;
> > > > > +      sba.BindlessSurfaceStateSize = 0;
> > > > > +#  endif
> > > > > +#  if (GEN_GEN >= 10)
> > > > > +      sba.BindlessSamplerStateBaseAddress = (struct anv_address) { 
> > > > > NULL, 0 };
> > > > > +      sba.BindlessSamplerStateMemoryObjectControlState = GENX(MOCS);
> > > > > +      sba.BindlessSamplerStateBaseAddressModifyEnable = true;
> > > > > +      sba.BindlessSamplerStateBufferSize = 0;
> > > > 
> > > > Do we really need to set all of these fields? AFAIK the ones we don't
> > > > set should be left as 0's anyway, so at least the Address and BufferSize
> > > > should be fine to be left out. I think the MOCS field should be fine
> > > > too, since we are not setting any pointer here. Unless you want to
> > > > be really explicit...
> > > 
> > > Yeah. I don't know that it is helpful since the genxml already sets
> > > the packet length, and I guess things should be zero by default. Maybe
> > > it will make it a little easier to find for bindless in the future?
> > > 
> > > Regarding Jason's comment about the enable bit, I was following Ken's
> > > referenced commit (263b584d5e4) for the similar field in gen9+ on
> > > i965. Maybe it is good to actually force the write to explicitly set
> > > the size to 0?
> > 
> > Yeah, my understanding is that we should set the "modify" bit, so it
> > will actually set the address and size to 0.
> > 
> > > I guess setting MOCS does not follow what Ken did in i965.
> > > 
> > > If we actually do want to set the enable bit, then it might be good to
> > > also leave the fields being explicitly set to zero.
> > > 
> > > My preference would be to just set the fields explicitly. Since we
> > > only specify this packet in one place, it doesn't seem like it adds
> > > too much verbosity.
> > 
> > On most of the genxml code I've seen, we only set the fields that are
> > not zeroed by default.
> 
> I think there are exceptions:
> 
> $ git grep -Ee "\..* = 0;" src/intel/vulkan/genX_*
> 
> I think the rule is more like: if setting the field to 0 is notable,
> then it's better to explicitly set it for informational purposes.
> 
> If the 'enable' bit is set, then I think think the fields that will be
> updated are notable. If the 'enable' bit was not set, then maybe the
> fields are not important. (In that case, perhaps the patch should be
> dropped entirely.)

OK, that's indeed a good explanation.

> Anyway, if Jason doesn't have any further input, I'll go with your
> suggestion of dropping the zeroed fields.

I'm fine with either way, as long as we set the modify enable bit.

> -Jordan
> 
> > And if the name of these fields change or
> > something in a future generation, assuming we are still not using them,
> > it's easier to just change the xml for that gen.
> > 
> > So to keep the code consistent with the rest, I would leave it out, but
> > regardless of what you choose,
> > 
> > Reviewed-by: Rafael Antognolli <rafael.antogno...@intel.com>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to