gallium: clean-up/fix msaa override in state tracker
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 17 Sep 2008 20:32:33 +0000 (14:32 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 17 Sep 2008 20:32:33 +0000 (14:32 -0600)
src/mesa/state_tracker/st_atom_rasterizer.c
src/mesa/state_tracker/st_context.c
src/mesa/state_tracker/st_context.h
src/mesa/state_tracker/st_framebuffer.c

index e286dc51168bf5e2f3b455b283103351104c450f..fc47896c2429b125285efd9c346d105c54ab70c7 100644 (file)
@@ -254,7 +254,7 @@ static void update_raster_state( struct st_context *st )
    raster->line_stipple_factor = ctx->Line.StippleFactor - 1;
 
    /* _NEW_MULTISAMPLE */
-   if (ctx->Multisample._Enabled)
+   if (ctx->Multisample._Enabled || st->force_msaa)
       raster->multisample = 1;
 
    /* _NEW_SCISSOR */
index 534c7c12ac7482b342c5a30977d721b6d73ee6ee..cca808d3288e6b35274578a743466d2010ed7857 100644 (file)
@@ -88,6 +88,19 @@ void st_invalidate_state(GLcontext * ctx, GLuint new_state)
 }
 
 
+/**
+ * Check for multisample env var override.
+ */
+int
+st_get_msaa(void)
+{
+   const char *msaa = _mesa_getenv("__GL_FSAA_MODE");
+   if (msaa)
+      return atoi(msaa);
+   return 0;
+}
+
+
 static struct st_context *
 st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe )
 {
@@ -141,6 +154,8 @@ st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe )
 
    st->pixel_xfer.cache = _mesa_new_program_cache();
 
+   st->force_msaa = st_get_msaa();
+
    /* GL limits and extensions */
    st_init_limits(st);
    st_init_extensions(st);
index 4314d9af5c8aa311cfbec599407d8c8c5316f78b..1d1aca3111ba7e2efd572100a08d1ee90aa42f86 100644 (file)
@@ -181,6 +181,8 @@ struct st_context
    struct blit_state *blit;
 
    struct cso_context *cso_context;
+
+   int force_msaa;
 };
 
 
@@ -238,4 +240,8 @@ st_fb_orientation(const struct gl_framebuffer *fb)
 }
 
 
+extern int
+st_get_msaa(void);
+
+
 #endif
index 0f4a03fa4846bd349bcfcec67fbc83c243938197..ec8928f200d535b8ec1be274cc106de7b5253e4b 100644 (file)
@@ -51,13 +51,12 @@ st_create_framebuffer( const __GLcontextModes *visual,
 {
    struct st_framebuffer *stfb = CALLOC_STRUCT(st_framebuffer);
    if (stfb) {
-      int samples = 0;
-      const char *msaa_override = _mesa_getenv("__GL_FSAA_MODE");
+      int samples = st_get_msaa();
+
+      if (visual->sampleBuffers)
+         samples = visual->samples;
+
       _mesa_initialize_framebuffer(&stfb->Base, visual);
-      if (visual->sampleBuffers) samples = visual->samples;
-      if (msaa_override) {
-         samples = _mesa_atoi(msaa_override);
-      }
 
       {
          /* fake frontbuffer */