Module: Mesa
Branch: master
Commit: 60ca65c0165874bb18f1f89951da0281ee235cb3
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=60ca65c0165874bb18f1f89951da0281ee235cb3

Author: Alex Deucher <[email protected]>
Date:   Fri Sep  4 18:21:34 2009 -0400

r300: Add support for GL_EXT_provoking_vertex

---

 src/mesa/drivers/dri/r300/r300_context.c |    2 ++
 src/mesa/drivers/dri/r300/r300_reg.h     |    6 ++----
 src/mesa/drivers/dri/r300/r300_state.c   |    8 ++++++++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_context.c 
b/src/mesa/drivers/dri/r300/r300_context.c
index 2ea1b82..6fcf209 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -84,6 +84,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
 #define need_GL_EXT_framebuffer_object
 #define need_GL_EXT_fog_coord
 #define need_GL_EXT_gpu_program_parameters
+#define need_GL_EXT_provoking_vertex
 #define need_GL_EXT_secondary_color
 #define need_GL_EXT_stencil_two_side
 #define need_GL_ATI_separate_stencil
@@ -116,6 +117,7 @@ const struct dri_extension card_extensions[] = {
   {"GL_EXT_packed_depth_stencil",      NULL},
   {"GL_EXT_fog_coord",                 GL_EXT_fog_coord_functions },
   {"GL_EXT_gpu_program_parameters",     
GL_EXT_gpu_program_parameters_functions},
+  {"GL_EXT_provoking_vertex",           GL_EXT_provoking_vertex_functions },
   {"GL_EXT_secondary_color",           GL_EXT_secondary_color_functions},
   {"GL_EXT_shadow_funcs",              NULL},
   {"GL_EXT_stencil_two_side",          GL_EXT_stencil_two_side_functions},
diff --git a/src/mesa/drivers/dri/r300/r300_reg.h 
b/src/mesa/drivers/dri/r300/r300_reg.h
index 39b4b61..98512d7 100644
--- a/src/mesa/drivers/dri/r300/r300_reg.h
+++ b/src/mesa/drivers/dri/r300/r300_reg.h
@@ -1022,15 +1022,13 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
        R300_GA_COLOR_CONTROL_RGB0_SHADING_GOURAUD | 
R300_GA_COLOR_CONTROL_ALPHA0_SHADING_GOURAUD | \
        R300_GA_COLOR_CONTROL_RGB1_SHADING_GOURAUD | 
R300_GA_COLOR_CONTROL_ALPHA1_SHADING_GOURAUD | \
        R300_GA_COLOR_CONTROL_RGB2_SHADING_GOURAUD | 
R300_GA_COLOR_CONTROL_ALPHA2_SHADING_GOURAUD | \
-       R300_GA_COLOR_CONTROL_RGB3_SHADING_GOURAUD | 
R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD | \
-       R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST )
+       R300_GA_COLOR_CONTROL_RGB3_SHADING_GOURAUD | 
R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD)
 /** TODO: might be candidate for removal, the GOURAUD stuff also looks buggy 
to me */
 #      define R300_RE_SHADE_MODEL_FLAT     ( \
        R300_GA_COLOR_CONTROL_RGB0_SHADING_FLAT | 
R300_GA_COLOR_CONTROL_ALPHA0_SHADING_FLAT | \
        R300_GA_COLOR_CONTROL_RGB1_SHADING_FLAT | 
R300_GA_COLOR_CONTROL_ALPHA1_SHADING_GOURAUD | \
        R300_GA_COLOR_CONTROL_RGB2_SHADING_FLAT | 
R300_GA_COLOR_CONTROL_ALPHA2_SHADING_FLAT | \
-       R300_GA_COLOR_CONTROL_RGB3_SHADING_FLAT | 
R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD | \
-       R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST )
+       R300_GA_COLOR_CONTROL_RGB3_SHADING_FLAT | 
R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD)
 
 /* Specifies red & green components of fill color -- S312 format -- Backwards 
comp. */
 #define R300_GA_SOLID_RG                         0x427c
diff --git a/src/mesa/drivers/dri/r300/r300_state.c 
b/src/mesa/drivers/dri/r300/r300_state.c
index 9301543..d4c3ece 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -2253,6 +2253,14 @@ static void r300InvalidateState(GLcontext * ctx, GLuint 
new_state)
                R300_STATECHANGE(r300, zb);
        }
 
+       if (new_state & (_NEW_LIGHT)) {
+               R300_STATECHANGE(r300, shade2);
+               if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION)
+                       r300->hw.shade2.cmd[1] |= 
R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST;
+               else
+                       r300->hw.shade2.cmd[1] &= 
~R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST;
+       }
+
        r300->radeon.NewGLState |= new_state;
 }
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to