On Monday 11 January 2010 15:17:00 Roland Scheidegger wrote:
> > - extra mirror wrap modes - i don't think mirror repeat was ever
> > supported and mirror clamp was removed in d3d10 but it seems that some
> > hardware kept support for those
> 
> Mirror repeat is a core feature in GL since 1.4 hence we can't just drop
> it. 

I wasn't suggesting that. I was just pointing out what happens with it from 
the D3D side.

> I think all hardware we'd ever care about would support it. mirror
> clamp / mirror clamp to edge are only an extension, though
> (ATI_texture_mirror_once). (I think the dx mirror once definition is
> probably mirror_clamp_to_edge in opengl parlance).

That's possible. As mentioned I'm not really sure what to do with this 
feature.

> > - shadow maps - it's more of an "researched guess" since it's largely
> > based on a format support, but as far as i can tell all d3d10 hardware
> > supports it, earlier it varies (e.g. nvidia did it for ages)
> 
> Required for GL 1.4. I thought it was pretty much required for d3d
> sm2.0, though you're right you could probably just not support the
> texture format there. Anyway, most hardware should support it, I believe
> even those which didn't really supported it at DX9 SM 2.0 time supported
> it (chips like radeon r300 lacked the hw to do the comparison in the
> texture unit, but it can be more or less easily implemented in the pixel
> shader, though the implementation will suck as it certainly won't do PCF
> just use some point sampling version - unless you're willing to do a
> much more complex implementation in the pixel shader, but then on this
> generation of hardware you might exceed maximum shader length). I
> believe all hardware supporting SM 2.0 could at least do some sampling
> of depth textures, though possibly only 16 bit and I'm not sure
> filtering worked in all cases.

Yes, but the issue is that I'm not sure how to represent it from a feature 
level case. Are you saying we should just enable it for all feature levels? 
That'd be nice.

> > I think the other stuff is acceptable. Take a look at the docs and let me
> > know what you think.
> 
> What is feature level 1 useful for? I thought we'd really wanted DX9
> level functionality as a bare minimum. GL2.x certainly needs cards
> supporting shader model 2 (and that is a cheat, in reality it would be
> shader model 3).

The main issue was having something without hardware vs in the feature levels. 
It was supposed to be whatever the current i915 driver currently supports, but 
yea, I think it doesn't make sense and level 2 should be minumum.

> Also, I don't quite get the shader model levels. I thought there were
> mainly two different DX9 versions, one with sm 2.0 the other with 3.0,
> with noone caring about other differences (as most stuff was cappable
> anyway). However, you've got 3 and all of them have 2.0 shader model?

As mentioned this is based on the D3D feature level concept. It's the first 
link I put in the the references:
http://msdn.microsoft.com/en-us/library/ee422086(VS.85).aspx#Overview
It's there because that's what Microsoft defined as feature level and I'm 
assuming it's because they had a good need for it :)

> More comments below.
> 
> > +static const enum pipe_feature_level
> > +i915_feature_level(struct pipe_screen *screen)
> > +{
> > +   return PIPE_FEATURE_LEVEL_1;
> > +}
> 
> What's the reason this is not feature level 2?

Yea, I was winging it for all the drivers because I couldn't be bothered to do 
a cross-section of what the hardware can teorethically support and what the 
driver actually supports so I just put level 1 or whatever felt close enough 
in all of them. The maintainers would have to actually do the right thing 
there.
 
> > ------------------------------------------------------------------------
> >
> > Profile                             7 (2009)        6 (2008)        5
> > (2006)        4 (2004)        3 (2003)        2 (2002)         1 (2000)
> > Fragment Shader                     Yes             Yes             Yes  
> >           Yes             Yes             Yes              Yes
> 
> DX 7 didn't have any shader model IIRC. DX8/8.1 introduced shader models
> 1.0-1.3/1.4.

Yea, that level should be gone.

> 
> > Vertex Shader                       Yes             Yes             Yes  
> >           Yes             Yes             Yes              No
> 
> I don't think we care for this. Since the gallium API requires vertex
> shaders anyway, that's just a YES in all cases, regardless if it's
> executed by hardware or not.

Isn't that the same discussion with geometry shaders? We could support it 
everywhere like vertex shader. The snafu is what happens when people use it as 
fallback for other features.

> >              No Alpha-to-coverage               Yes             Yes        
> >     Yes                 No              No              No               No
> 
> This is required for even GL 1.3, if ARB_multisample is supported.
> Though afaik there's tons of hardware out there which doesn't support
> it, maybe those are even compliant as the gl spec is a bit vague here
> how coverage values need to be calculated...

That'd be good to figure out. But again, above is from the D3D features table 
so I'm not sure how reliable it's going to be.
 
> > Extended Formats*(BGRA, etc.)           Yes             Optional        
> > Optional     
> >   Yes                   Yes             Yes              No 10-bit XR High
> > Color Format            Yes             Optional        Optional        N/A 
> >           
> >  N/A                    N/A              N/A Max Texture Dimension          
> >    
> > 16384           8192            8192            4096            2048        
> >     2048             2048 Max
> > Cubemap Dimension               16384           8192            8192        
> >     4096            512   
> >          512              512 Max Volume Extent                 2048        
> >    
> > 2048            2048            256             256             256         
> >      256
> > Max Texture Repeat              16384           8192            8192        
> >     8192            2048        
> >    128              128 Max Anisotropy                          16          
> >    
> > 16              16              16              16              2           
> >  
> >    0 Max Primitive Count                2^32            2^32            
> > 2^32            1048575      
> >   1048575       65535            65535 Simultaneous Render Targets      8   
> >   
> >          8              8               4               1               1   
> >     
> >         1 Occlusion Queries             Yes             Yes            
> > Yes             Yes             Yes             No               No
> 
> Occlusion queries are required for OGL 1.5.

Cool but are they universally supported? http://msdn.microsoft.com/en-
us/library/ee416168(VS.85).aspx says that this level doesn't support them.

> 
> > Separate Alpha Blend                    Yes             Yes             Yes 
> >     
> >        Yes              Yes             No               No
> 
> Required for OGL 1.4 (and different blend equations in addition of blend
> functions for 2.0). I thought though it was required for DX9 too? 

Microsoft disagrees in that first link I posted.

> >             No               No Two sided stencil                   Yes  
> >           Yes             Yes             No              No             
> > No               No
> 
> This is also a core GL 2.0 feature. Also, you've listed it there as
> feature level 5 feature but the mesa state tracker enables it at feature
> level 4

Yea, as mentioned I don't really know what to do with two-sided stencil.
 
> Oh, no longer supported in DX10? I guess that's just because you have to
> implement them yourself in the geometry shader right? 

Right.

> We'd still need to support them I guess in the drivers for GL.

Or implement them in util's with geometry shaders :) It's mainly a question of 
whether hardware will support it, since Microsoft dropped it I'd be careful.

All in all, I agree the first feature level is pretty bonkers, but I wanted to 
have something without explicit hardware vertex shaders. The rest is really 
what Microsoft requires, but for the stuff I pointed out it's obviously very 
murky and a matter of discussion. In the end we can define whatever feels right 
if it covers enough cases.

z

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to