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? 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