The feature levels in the attached table don't apply exactly to all hardware.

For instance:
1. Two sided stencil is supported from NV30/GeForce FX
2. Triangle fans and point sprites are supported in hardware on NV50
(according to Nouveau registers)
3. Alpha-to-coverage should be supported on R300 and NV30
4. Non-POT mipmapped textures and non-POT cubemaps are probably
supported earlier than in the table in actual cards

Shaders also have card specific extensions such as vertex shader
texturing on NV40 and added instruction predication support (see the
GL_NV_* extensions).

Thus the attached patch as-is will disable functionality that the
hardware actually supports (not having two sided stencil in particular
would hurt).

Also, the feature levels seem set mostly wrong:
+static const enum pipe_feature_level
+nv40_screen_feature_level(struct pipe_screen *screen)
+{
+   return PIPE_FEATURE_LEVEL_2;
+}

+static const enum pipe_feature_level
+nv50_screen_feature_level(struct pipe_screen *screen)
+{
+   return PIPE_FEATURE_LEVEL_2;
+}

NV40 is feature level 4 and NV50 is at least 5.

How about keeping the caps, but adding helper functions that the
drivers can use for the various API levels, so they need less cases in
their get_param switches?
The feature level are likely at least somewhat API-specific anyway, so
maybe it would be better for each API to determine them itself from
the separate caps exposed by the drivers.

Anyway, there are only 3 companies with significant market share, so
one may as well directly use the nVidia/ATI/Intel architecture version
as the feature level (which is what most commercial games probably do
anyway).

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