Mesa (master): dri: Allow selective generation of accum. buffer configs

Ian Romanick idr at kemper.freedesktop.org
Wed Feb 10 18:51:28 UTC 2010


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

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Mon Feb  8 11:09:15 2010 -0800

dri: Allow selective generation of accum. buffer configs

Modify the interface to driCreateConfigs allowing drivers to not
expose configs with an accumuation buffer.  All of the drivers calling
function have been updated to pass true for the accumulation
selector.  This maintains the current behavior.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>
Reviewed-by: Corbin Simpson <MostAwesomeDude at gmail.com>

---

 src/gallium/state_trackers/dri/dri_screen.c   |    9 ++++++---
 src/mesa/drivers/dri/common/utils.c           |    5 +++--
 src/mesa/drivers/dri/common/utils.h           |    3 ++-
 src/mesa/drivers/dri/ffb/ffb_xmesa.c          |    2 +-
 src/mesa/drivers/dri/i810/i810screen.c        |    2 +-
 src/mesa/drivers/dri/intel/intel_screen.c     |    3 ++-
 src/mesa/drivers/dri/mach64/mach64_screen.c   |    2 +-
 src/mesa/drivers/dri/mga/mga_xmesa.c          |    2 +-
 src/mesa/drivers/dri/nouveau/nouveau_screen.c |    3 ++-
 src/mesa/drivers/dri/r128/r128_screen.c       |    2 +-
 src/mesa/drivers/dri/radeon/radeon_screen.c   |    9 +++++----
 src/mesa/drivers/dri/savage/savage_xmesa.c    |    2 +-
 src/mesa/drivers/dri/sis/sis_screen.c         |    2 +-
 src/mesa/drivers/dri/swrast/swrast.c          |    3 ++-
 src/mesa/drivers/dri/tdfx/tdfx_screen.c       |    3 ++-
 src/mesa/drivers/dri/unichrome/via_screen.c   |    2 +-
 16 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c
index 2052867..4064976 100644
--- a/src/gallium/state_trackers/dri/dri_screen.c
+++ b/src/gallium/state_trackers/dri/dri_screen.c
@@ -157,7 +157,8 @@ dri_fill_in_modes(struct dri_screen *screen,
 				 depth_bits_array, stencil_bits_array,
 				 depth_buffer_factor, back_buffer_modes,
 				 back_buffer_factor,
-				 msaa_samples_array, msaa_samples_factor);
+				 msaa_samples_array, msaa_samples_factor,
+				 GL_TRUE);
    } else {
       __DRIconfig **configs_a8r8g8b8 = NULL;
       __DRIconfig **configs_x8r8g8b8 = NULL;
@@ -170,7 +171,8 @@ dri_fill_in_modes(struct dri_screen *screen,
 					     back_buffer_modes,
 					     back_buffer_factor,
 					     msaa_samples_array,
-                                             msaa_samples_factor);
+                                             msaa_samples_factor,
+					     GL_TRUE);
       if (pf_x8r8g8b8)
 	 configs_x8r8g8b8 = driCreateConfigs(GL_BGR, GL_UNSIGNED_INT_8_8_8_8_REV,
 					     depth_bits_array,
@@ -179,7 +181,8 @@ dri_fill_in_modes(struct dri_screen *screen,
 					     back_buffer_modes,
 					     back_buffer_factor,
 					     msaa_samples_array,
-                                             msaa_samples_factor);
+                                             msaa_samples_factor,
+					     GL_TRUE);
 
       if (configs_a8r8g8b8 && configs_x8r8g8b8)
 	 configs = driConcatConfigs(configs_x8r8g8b8, configs_a8r8g8b8);
diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c
index 81d026a..833f9ad 100644
--- a/src/mesa/drivers/dri/common/utils.c
+++ b/src/mesa/drivers/dri/common/utils.c
@@ -424,7 +424,8 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
 		 const uint8_t * depth_bits, const uint8_t * stencil_bits,
 		 unsigned num_depth_stencil_bits,
 		 const GLenum * db_modes, unsigned num_db_modes,
-		 const uint8_t * msaa_samples, unsigned num_msaa_modes)
+		 const uint8_t * msaa_samples, unsigned num_msaa_modes,
+		 GLboolean enable_accum)
 {
    static const uint8_t bits_table[4][4] = {
      /* R  G  B  A */
@@ -486,7 +487,7 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
    __GLcontextModes *modes;
    unsigned i, j, k, h;
    unsigned num_modes;
-   unsigned num_accum_bits = 2;
+   unsigned num_accum_bits = (enable_accum) ? 2 : 1;
 
    switch ( fb_type ) {
       case GL_UNSIGNED_BYTE_3_3_2:
diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h
index 2aa6de6..02ca3fe 100644
--- a/src/mesa/drivers/dri/common/utils.h
+++ b/src/mesa/drivers/dri/common/utils.h
@@ -104,7 +104,8 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
 		 const uint8_t * depth_bits, const uint8_t * stencil_bits,
 		 unsigned num_depth_stencil_bits,
 		 const GLenum * db_modes, unsigned num_db_modes,
-    		 const uint8_t * msaa_samples, unsigned num_msaa_modes);
+		 const uint8_t * msaa_samples, unsigned num_msaa_modes,
+		 GLboolean enable_accum);
 
 __DRIconfig **driConcatConfigs(__DRIconfig **a,
 			       __DRIconfig **b);
diff --git a/src/mesa/drivers/dri/ffb/ffb_xmesa.c b/src/mesa/drivers/dri/ffb/ffb_xmesa.c
index 6a84651..7fdf883 100644
--- a/src/mesa/drivers/dri/ffb/ffb_xmesa.c
+++ b/src/mesa/drivers/dri/ffb/ffb_xmesa.c
@@ -658,7 +658,7 @@ ffbFillInModes( __DRIscreen *psp,
 			      depth_bits_array, stencil_bits_array,
 			      depth_buffer_factor, back_buffer_modes,
 			      back_buffer_factor,
-                               msaa_samples_array, 1);
+			      msaa_samples_array, 1, TRUE);
    if (configs == NULL) {
       fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
               __LINE__);
diff --git a/src/mesa/drivers/dri/i810/i810screen.c b/src/mesa/drivers/dri/i810/i810screen.c
index 476c801..825a1b5 100644
--- a/src/mesa/drivers/dri/i810/i810screen.c
+++ b/src/mesa/drivers/dri/i810/i810screen.c
@@ -92,7 +92,7 @@ i810FillInModes( __DRIscreen *psp,
 			       depth_bits_array, stencil_bits_array,
 			       depth_buffer_factor,
 			       back_buffer_modes, back_buffer_factor,
-                               msaa_samples_array, 1);
+                               msaa_samples_array, 1, TRUE);
     if (configs == NULL) {
 	fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
 		 __func__, __LINE__ );
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index b308ae1..8344b82 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -413,7 +413,8 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
 				     back_buffer_modes,
 				     ARRAY_SIZE(back_buffer_modes),
 				     msaa_samples_array,
-				     ARRAY_SIZE(msaa_samples_array));
+				     ARRAY_SIZE(msaa_samples_array),
+				     GL_TRUE);
       if (configs == NULL)
 	 configs = new_configs;
       else
diff --git a/src/mesa/drivers/dri/mach64/mach64_screen.c b/src/mesa/drivers/dri/mach64/mach64_screen.c
index 5cbfb85..99aad57 100644
--- a/src/mesa/drivers/dri/mach64/mach64_screen.c
+++ b/src/mesa/drivers/dri/mach64/mach64_screen.c
@@ -119,7 +119,7 @@ mach64FillInModes( __DRIscreen *psp,
 			       depth_bits_array, stencil_bits_array,
 			       depth_buffer_factor, back_buffer_modes,
 			       back_buffer_factor,
-                               msaa_samples_array, 1);
+                               msaa_samples_array, 1, TRUE);
     if (configs == NULL) {
        fprintf(stderr, "[%s:%u] Error creating FBConfig!\n",
 	       __func__, __LINE__);
diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c
index e7813b6..a0a65cb 100644
--- a/src/mesa/drivers/dri/mga/mga_xmesa.c
+++ b/src/mesa/drivers/dri/mga/mga_xmesa.c
@@ -160,7 +160,7 @@ mgaFillInModes( __DRIscreen *psp,
 			       depth_bits_array, stencil_bits_array,
 			       depth_buffer_factor,
 			       back_buffer_modes, back_buffer_factor,
-                               msaa_samples_array, 1);
+                               msaa_samples_array, 1, TRUE);
     if (configs == NULL) {
 	fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
 		 __func__, __LINE__ );
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
index de63282..6abab8c 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
@@ -83,7 +83,8 @@ nouveau_get_configs(void)
 					  back_buffer_modes,
 					  Elements(back_buffer_modes),
 					  msaa_samples,
-					  Elements(msaa_samples));
+					  Elements(msaa_samples),
+					  GL_TRUE);
 		assert(config);
 
 		configs = configs ? driConcatConfigs(configs, config)
diff --git a/src/mesa/drivers/dri/r128/r128_screen.c b/src/mesa/drivers/dri/r128/r128_screen.c
index ef6b5a3..afc44d4 100644
--- a/src/mesa/drivers/dri/r128/r128_screen.c
+++ b/src/mesa/drivers/dri/r128/r128_screen.c
@@ -449,7 +449,7 @@ r128FillInModes( __DRIscreen *psp,
                                depth_bits_array, stencil_bits_array,
                                depth_buffer_factor, back_buffer_modes,
                                back_buffer_factor,
-                               msaa_samples_array, 1);
+                               msaa_samples_array, 1, TRUE);
     if (configs == NULL) {
         fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
                 __LINE__);
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 93b6399..7d5cdb5 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -293,18 +293,18 @@ radeonFillInModes( __DRIscreen *psp,
 					  depth_bits_array, stencil_bits_array,
 					  depth_buffer_factor, back_buffer_modes,
 					  back_buffer_factor, msaa_samples_array,
-					  1);
+					  1, TRUE);
 	configs_a8r8g8b8 = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
 					    depth_bits_array, stencil_bits_array,
 					    1, back_buffer_modes, 1,
-					    msaa_samples_array, 1);
+					    msaa_samples_array, 1, TRUE);
 	configs = driConcatConfigs(configs_r5g6b5, configs_a8r8g8b8);
    } else
 	configs = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
 				   depth_bits_array, stencil_bits_array,
 				   depth_buffer_factor,
 				   back_buffer_modes, back_buffer_factor,
-				   msaa_samples_array, 1);
+				   msaa_samples_array, 1, TRUE);
 
     if (configs == NULL) {
 	fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
@@ -1676,7 +1676,8 @@ __DRIconfig **radeonInitScreen2(__DRIscreen *psp)
 				     back_buffer_modes,
 				     ARRAY_SIZE(back_buffer_modes),
 				     msaa_samples_array,
-				     ARRAY_SIZE(msaa_samples_array));
+				     ARRAY_SIZE(msaa_samples_array),
+				     GL_TRUE);
       if (configs == NULL)
 	 configs = new_configs;
       else
diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c
index 8e879ca..788c49f 100644
--- a/src/mesa/drivers/dri/savage/savage_xmesa.c
+++ b/src/mesa/drivers/dri/savage/savage_xmesa.c
@@ -939,7 +939,7 @@ savageFillInModes( __DRIscreen *psp,
 			       depth_bits_array, stencil_bits_array,
 			       depth_buffer_factor,
 			       back_buffer_modes, back_buffer_factor,
-                               msaa_samples_array, 1);
+                               msaa_samples_array, 1, TRUE);
     if (configs == NULL) {
 	fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
 		 __func__, __LINE__ );
diff --git a/src/mesa/drivers/dri/sis/sis_screen.c b/src/mesa/drivers/dri/sis/sis_screen.c
index cb7ed8a..0b98541 100644
--- a/src/mesa/drivers/dri/sis/sis_screen.c
+++ b/src/mesa/drivers/dri/sis/sis_screen.c
@@ -103,7 +103,7 @@ sisFillInModes(__DRIscreen *psp, int bpp)
    configs = driCreateConfigs(fb_format, fb_type, depth_bits_array,
 			      stencil_bits_array, depth_buffer_factor,
 			      back_buffer_modes, back_buffer_factor,
-                              msaa_samples_array, 1);
+                              msaa_samples_array, 1, TRUE);
    if (configs == NULL) {
       fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__, __LINE__);
       return NULL;
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index 4e82366..40535b0 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -132,7 +132,8 @@ swrastFillInModes(__DRIscreen *psp,
     configs = driCreateConfigs(fb_format, fb_type,
 			       depth_bits_array, stencil_bits_array,
 			       depth_buffer_factor, back_buffer_modes,
-			       back_buffer_factor, msaa_samples_array, 1);
+			       back_buffer_factor, msaa_samples_array, 1,
+			       GL_TRUE);
     if (configs == NULL) {
 	fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
 		__LINE__);
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.c b/src/mesa/drivers/dri/tdfx/tdfx_screen.c
index 9f6b35f..d554bcd 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_screen.c
+++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.c
@@ -383,7 +383,8 @@ tdfxFillInModes(__DRIscreen *psp,
 			    stencil_bits_array,
 			    deep ? 2 : 4,
 			    db_modes, 2,
-			    msaa_samples_array, 1);
+			    msaa_samples_array, 1,
+			    GL_TRUE);
 }
 
 /**
diff --git a/src/mesa/drivers/dri/unichrome/via_screen.c b/src/mesa/drivers/dri/unichrome/via_screen.c
index 8c91c93..5512501 100644
--- a/src/mesa/drivers/dri/unichrome/via_screen.c
+++ b/src/mesa/drivers/dri/unichrome/via_screen.c
@@ -354,7 +354,7 @@ viaFillInModes( __DRIscreen *psp,
 			       depth_bits_array, stencil_bits_array,
 			       depth_buffer_factor, back_buffer_modes,
 			       back_buffer_factor,
-                               msaa_samples_array, 1);
+                               msaa_samples_array, 1, TRUE);
     if (configs == NULL) {
 	fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
 		__LINE__);




More information about the mesa-commit mailing list