[Mesa-dev] [PATCH v4 21/34] i965/state: Use ISL for emitting image surfaces
Jason Ekstrand
jason at jlekstrand.net
Thu Jul 14 22:45:27 UTC 2016
On Thu, Jul 14, 2016 at 3:10 PM, Chad Versace <chad.versace at intel.com>
wrote:
> On Wed 13 Jul 2016, Jason Ekstrand wrote:
> > ---
> > src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 32
> ++++++++++++++++--------
> > 1 file changed, 21 insertions(+), 11 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> > index 65a1f3c..5873ea5 100644
> > --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> > +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> > @@ -1400,22 +1400,32 @@ update_image_surface(struct brw_context *brw,
> > access != GL_READ_ONLY);
> >
> > } else {
> > - const unsigned min_layer = obj->MinLayer + u->_Layer;
> > - const unsigned min_level = obj->MinLevel + u->Level;
> > const unsigned num_layers = (!u->Layered ? 1 :
> > obj->Target ==
> GL_TEXTURE_CUBE_MAP ? 6 :
> > mt->logical_depth0);
> > - const GLenum target = (obj->Target == GL_TEXTURE_CUBE_MAP ||
> > - obj->Target ==
> GL_TEXTURE_CUBE_MAP_ARRAY ?
> > - GL_TEXTURE_2D_ARRAY : obj->Target);
> > +
> > + struct isl_view view = {
> > + .format = format,
> > + .base_level = obj->MinLevel + u->Level,
> > + .levels = 1,
> > + .base_array_layer = obj->MinLayer + u->_Layer,
> > + .array_len = num_layers,
>
> FYI, I carefully checked that replacing
> brw->vtbl.emit_texture_surface_state(..., min_layer + num_layers, ...)
> with
> .base_array_layer = obj->MinLayer + u->_Layer,
> .array_len = num_layers,
> does the correct thing.
>
> > + .channel_select = {
> > + ISL_CHANNEL_SELECT_RED,
> > + ISL_CHANNEL_SELECT_GREEN,
> > + ISL_CHANNEL_SELECT_BLUE,
> > + ISL_CHANNEL_SELECT_ALPHA,
> > + },
> > + .usage = ISL_SURF_USAGE_STORAGE_BIT,
> > + };
> > +
> > const int surf_index = surf_offset -
> &brw->wm.base.surf_offset[0];
> >
> > - brw->vtbl.emit_texture_surface_state(
> > - brw, mt, target,
> > - min_layer, min_layer + num_layers,
> > - min_level, min_level + 1,
> > - format, SWIZZLE_XYZW,
> > - surf_offset, surf_index, access != GL_READ_ONLY, false);
> > + brw_emit_surface_state(brw, mt, &view,
> > +
> surface_state_infos[brw->gen].rb_mocs, false,
> > + surf_offset, surf_index,
> > + I915_GEM_DOMAIN_SAMPLER,
> > + I915_GEM_DOMAIN_SAMPLER);
> > }
>
> I have concerns about the gem write domain. If I read
> gen8_update_texture_surface() correctly, then pre-patch the last
> argument to brw_emit_surface_state() was effectively
> access == GL_READ_ONLY ? 0 : I915_GEM_DOMAIN_SAMPLER
> I don't want to change the gem write domain without justification.
>
I talked to Curro about this briefly. Doing what you say above is probably
best.
>
> > update_texture_image_param(brw, u, surface_idx, param);
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160714/be016d02/attachment.html>
More information about the mesa-dev
mailing list