On Mon, 2010-03-15 at 07:08 -0700, michal wrote:
> michal wrote on 2010-03-12 15:00:
> > michal wrote on 2010-03-11 17:59:
> >   
> >> Keith Whitwell wrote on 2010-03-11 16:16:
> >>   
> >>     
> >>> On Thu, 2010-03-11 at 06:05 -0800, michal wrote:
> >>>   
> >>>     
> >>>       
> >>>> Keith Whitwell wrote on 2010-03-11 14:21:
> >>>>     
> >>>>       
> >>>>         
> >>>>> On Thu, 2010-03-11 at 03:16 -0800, michal wrote:
> >>>>>   
> >>>>>       
> >>>>>         
> >>>>>           
> >>>>>> Hi,
> >>>>>>
> >>>>>> I would like to merge the branch in subject this week. This feature 
> >>>>>> branch allows state trackers to bind sampler views instead of textures 
> >>>>>> to shader stages.
> >>>>>>
> >>>>>> A sampler view object holds a reference to a texture and also 
> >>>>>> overrides 
> >>>>>> internal texture format (resource casting) and specifies RGBA swizzle 
> >>>>>> (needed for GL_EXT_texture_swizzle extension).
> >>>>>>     
> >>>>>>         
> >>>>>>           
> >>>>>>             
> >>>>> Michal,
> >>>>>
> >>>>> I've got some issues with the way the sampler views are being generated
> >>>>> and used inside the CSO module.
> >>>>>
> >>>>> The point of a sampler view is that it gives the driver an opportunity
> >>>>> to do expensive operations required for special sampling modes (which
> >>>>> may include copying surface data if hardware is deficient in some way).
> >>>>>
> >>>>> This approach works if a sampler view is created once, then used
> >>>>> multiple times before being deleted.
> >>>>>
> >>>>> Unfortunately, it seems the changes to support this in the CSO module
> >>>>> provide only a single-shot usage model.  Sampler views are created in
> >>>>> cso_set_XXX_sampler_textures, bound to the context, and then
> >>>>> dereferenced/destroyed on the next bind.
> >>>>>
> >>>>>   
> >>>>>       
> >>>>>         
> >>>>>           
> >>>> The reason CSO code looks like this is because it was meant to be an 
> >>>> itermediate step towards migration to sampler view model. Fully 
> >>>> converting all existing state trackers is non-trivial and thus I chose 
> >>>> this conservative approach. State trackers that do not care about extra 
> >>>> features a sampler view provides will keep using this one-shot CSO 
> >>>> interface with the hope that creation of sampler objects is lighweight 
> >>>> (format matches texture format, swizzle matches native texel layout, 
> >>>> etc.). 
> >>>>     
> >>>>       
> >>>>         
> >>> On the surface, this hope isn't likely to be fulfilled - lots of
> >>> hardware doesn't support non-zero first_level.  Most cases of drivers
> >>> implementing sampler views internally are to catch this issue.
> >>>
> >>> Of course, it seems like your branch so leaves the existing
> >>> driver-specific sampler view code in place, so that there are
> >>> potentially two implementations of sampler views in those drivers.  
> >>>
> >>> I guess this means that you can get away with the current implementation
> >>> for now, but it prevents drivers actually taking advantage of the fact
> >>> that these entities exist in the interface -- they will continue to have
> >>> to duplicate the concept internally until the state trackers and/or CSO
> >>> module start caching views.
> >>>
> >>>   
> >>>     
> >>>       
> >>>> Ideally, everybody moves on and we stop using CSO for sampler 
> >>>> views. I prefer putting my effort into incremental migration of state 
> >>>> trackers rather than caching something that by definition doesn't need 
> >>>> to be cached.
> >>>>     
> >>>>       
> >>>>         
> >>> The CSO module exists to manage this type of caching on behalf of state
> >>> trackers.  I would have thought that this was a sensible extension of
> >>> the existing purpose of the CSO module.
> >>>
> >>> Won't all state-trackers implementing APIs which don't expose sampler
> >>> views to the application require essentially the same caching logic, as
> >>> is the case with regular state?  Wouldn't it be least effort to do that
> >>> caching once only in the CSO module?
> >>>   
> >>>     
> >>>       
> >> OK, I see your point. I will make the necessary changes and ping you 
> >> when that's done.
> >>
> >>   
> >>     
> > Keith,
> >
> > I changed my mind, went ahead and implemented sampler view caching in 
> > mesa state tracker, rather than inside cso context.
> >
> > I strongly believe that doing caching on cso side would be slower and 
> > more complicated. A state tracker has a better understanding of the 
> > relationship between a texture and sampler view. In case of mesa, this 
> > is trivial 1-to-1 mapping. Later, when we'll need more sampler views per 
> > texture, we can have a per-texture cache for that, and yes, the code for 
> > that would be in cso.
> >
> > There are two other state trackers that need to be fixed: xorg and vega. 
> > The transition should be similar to mesa -- I can help with doing that, 
> > but I can't do it myself. Once that's done we can purge one-shot sampler 
> > view wrappers.
> >
> > What do you think?
> >
> >   
> Keith,
> 
> I just finished transforming mesa and auxiliary modules to new sampler 
> view interfaces. The remaining bits are vega and xorg state trackers -- 
> I will need help with them, but they could be fixed after the merge, as 
> they are not broken, and just set sampler view in suboptimal fashion.
> 
> Please review, thanks.


Michal,

Did you get a chance to look at the double-refcounting (views +
textures) in the cso module?

Keith


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to