On Fri, 2010-02-12 at 09:56 -0800, Roland Scheidegger wrote:
> On 12.02.2010 18:42, Keith Whitwell wrote:
> > On Fri, 2010-02-12 at 09:28 -0800, José Fonseca wrote:
> >> On Fri, 2010-02-12 at 06:43 -0800, Roland Scheidegger wrote:
> >>> On 12.02.2010 14:44, michal wrote:
> >>>> Keith Whitwell wrote on 2010-02-12 14:28:
> >>>>> On Fri, 2010-02-12 at 05:09 -0800, michal wrote:
> >>>>>   
> >>>>>> Keith Whitwell wrote on 2010-02-12 13:39:
> >>>>>>     
> >>>>>>> On Fri, 2010-02-12 at 04:32 -0800, Micha?? Kr??l wrote:
> >>>>>>>   
> >>>>>>>       
> >>>>>>>> Module: Mesa
> >>>>>>>> Branch: master
> >>>>>>>> Commit: aa0b671422880b99dc178d43d1e4e1a3f766bf7f
> >>>>>>>> URL:    
> >>>>>>>> http://cgit.freedesktop.org/mesa/mesa/commit/?id=aa0b671422880b99dc178d43d1e4e1a3f766bf7f
> >>>>>>>>
> >>>>>>>> Author: Michal Krol <mic...@vmware.com>
> >>>>>>>> Date:   Fri Feb 12 13:32:35 2010 +0100
> >>>>>>>>
> >>>>>>>> util: Fix descriptors for R32_FLOAT and R32G32_FLOAT formats.
> >>>>>>>>     
> >>>>>>>>         
> >>>>>>> Michal,
> >>>>>>>
> >>>>>>> Is this more like two different users expecting two different results 
> >>>>>>> in
> >>>>>>> those unused columns?
> >>>>>>>
> >>>>>>> In particular, we definitely require the missing elements to be 
> >>>>>>> extended
> >>>>>>> to (0,0,0,1) when fetching vertex data, and probably also in OpenGL
> >>>>>>> texture sampling (if we supported these formats for that).  
> >>>>>>>
> >>>>>>>   
> >>>>>>>       
> >>>>>> Gallium should follow D3D rules, so I've been following D3D here. 
> >>>>>> Also, 
> >>>>>> util_unpack_color_ub() in u_pack_color.h already sets the remaining 
> >>>>>> fields to 0xff.
> >>>>>>
> >>>>>> Note that D3D doesn't have the problem with expanding vertex attribute 
> >>>>>> data since you can't have X or XY vertex positions, only XYZ (with W 
> >>>>>> extended to 1 as in GL) and XYZW.
> >>>>>>     
> >>>>> But surely D3D permits two-component texture coordinates, which would be
> >>>>> PIPE_FORMAT_R32G32_FLOAT, and expanded as (r,g,0,1)...
> >>>>>
> >>>>>   
> >>>>>>> Brian added a table of differences between GL and other APIs recently 
> >>>>>>> to
> >>>>>>> gallium/docs - does your change agree with that?
> >>>>>>>
> >>>>>>>   
> >>>>>>>       
> >>>>>> Where's that exactly, I can't find it?
> >>>>>>     
> >>>>> It seems like we'd want to be able to support both usages - the
> >>>>> alternative in texture sampling would be forcing the state tracker to
> >>>>> generate varients of the shader when 2-component textures are bound.  I
> >>>>> would say that's an unreasonable requirement on the state tracker.
> >>>>>
> >>>>> It seems like in GL would want (0,0,0,1) expansion everywhere, but D3D
> >>>>> would want differing expansions in different parts of the pipeline.
> >>>>> That indicates a single flag in the context somewhere isn't sufficient
> >>>>> to choose between the two.
> >>>>>  
> >>>>> Maybe there need to be two versions of these PIPE_FORMAT_ enums to
> >>>>> capture the different values in the missing components?
> >>>>>
> >>>>> EG:
> >>>>>
> >>>>>    PIPE_FORMAT_R32G32_0001_FLOAT
> >>>>>    PIPE_FORMAT_R32G32_1111_FLOAT
> >>>>>
> >>>>> ? or something along those lines??
> >>>>>
> >>>>>   
> >>>> You are right.
> >>>>
> >>>> Alternatively, follow the more sane API (GL apparently), assume 0001 as 
> >>>> default and use the 1111 infix to override.
> >>> Note it's not just GL. D3D10 uses same expansion. Only D3D9 is
> >>> different. Well for texture sampling anyway, I don't know what d3d does
> >>> for vertex formats.
> >>>
> >>> Though for most hardware it would make sense to have only one format per
> >>> different expansion, and use some swizzling parameter for sampling,
> >>> because that's actually how the hardware works. But not all drivers will
> >>> be able to do this, unfortunately.
> >> You mean, having a swizzle in pipe_sampler_state ?
> >>
> >> It sounds a good idea.
> >>
> >> In the worst case some component will inevitably need to make shader
> >> variants with different swizzles. In this case it probably makes sense
> >> to be the pipe driver -- it's a tiny shader variation which could be
> >> done without recompiling the whole shader, but if the state tracker does
> >> it then the pipe driver will always have to recompile.
> >>
> >> In the best case it is handled by the hardware's texture sampling unit.
> >>
> >> It's in theory similar to baking the swizzle in the format as Keith
> >> suggested, but cleaner IMHO. The question is whether it makes sense to
> >> have full xwyz01 swizzles, or just 01 swizzles.
> > 
> > Another alternative is to just add the behaviour we really need - a
> > single flag at context creation time that says what the behaviour of the
> > sampler should be for these textures.
> > 
> > Then the driver wouldn't have to worry about varients or mixing two
> > different expansions.  Hardware (i965 at least) seems to have one global
> > mode to switch between these, and that's all we need to choose the right
> > behaviour for each state tracker.
> > 
> > It might be simpler all round just to specify it at context creation.
> 
> Yes, for rg01 vs rg11 this is easiest. It doesn't solve the depth
> texture mode problem though.
> Also, we sort of have that flag already, I think there's no reason why
> this needs to be separate from gl_rasterization_rules (though I guess in
> that case it's a bit a misnomer...)

I'd prefer to avoid a big "I'm a GL/DX9 context" flag, and split
different behaviours into different flags.  Sure, a GL state tracker
might set them all one way, but that doesn't mean some future
state-tracker wouldn't want to use a novel combination.

The GL rasterization rules flag should be renamed to reflect what it's
really asking for.

Keith



------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to