re-add MSAA support
authorBrian Paul <brianp@vmware.com>
Mon, 9 Feb 2009 18:16:20 +0000 (11:16 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 9 Feb 2009 18:16:20 +0000 (11:16 -0700)
(cherry picked from commit f7d80aa00611917bc8ce637136d982b151b8f44f)

This also involved adding the new MSAA fields to driCreateConfigs().

Also, re-add prog_instructions->Sampler field for i965 driver.  Will
have to revisit that.

13 files changed:
configs/linux-dri
src/mesa/drivers/dri/ffb/ffb_xmesa.c
src/mesa/drivers/dri/i810/i810screen.c
src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/mach64/mach64_screen.c
src/mesa/drivers/dri/mga/mga_xmesa.c
src/mesa/drivers/dri/r128/r128_screen.c
src/mesa/drivers/dri/radeon/radeon_screen.c
src/mesa/drivers/dri/savage/savage_xmesa.c
src/mesa/drivers/dri/sis/sis_screen.c
src/mesa/drivers/dri/tdfx/tdfx_screen.c
src/mesa/drivers/dri/unichrome/via_screen.c
src/mesa/shader/prog_instruction.h

index c667a386f3926456065069c5a240c07cebf29d3b..dc2ab4f9d9385dbc2fa618e77596749f1290c22d 100644 (file)
@@ -57,16 +57,9 @@ PROGRAM_DIRS := egl $(PROGRAM_DIRS)
 # EGL directories
 EGL_DRIVERS_DIRS = demo glx
 
-DRIVER_DIRS =
+DRIVER_DIRS = dri
 WINDOW_SYSTEM = dri
 GALLIUM_WINSYS_DIRS = drm 
 
-# gamma are missing because they have not been converted to use the new
-# interface.
-
-# XXX: need to figure out a way for gallium and non-gallium builds to
-# coexist:
-#
-
-#DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
-#      savage sis tdfx trident unichrome ffb
+DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
+       savage sis tdfx trident unichrome ffb
index 0cdbbd0ace541f2d560852ec75f2cda0f8fd7c91..eb086e3055a59557062585dd0806e51b896133bd 100644 (file)
@@ -628,6 +628,7 @@ ffbFillInModes( __DRIscreenPrivate *psp,
 
    uint8_t depth_bits_array[3];
    uint8_t stencil_bits_array[3];
+   uint8_t msaa_samples_array[1];
 
    depth_bits_array[0] = 0;
    depth_bits_array[1] = depth_bits;
@@ -656,9 +657,10 @@ ffbFillInModes( __DRIscreenPrivate *psp,
    configs = driCreateConfigs(fb_format, fb_type,
                              depth_bits_array, stencil_bits_array,
                              depth_buffer_factor, back_buffer_modes,
-                             back_buffer_factor);
+                             back_buffer_factor,
+                               msaa_samples_array, 1);
    if (configs == NULL) {
-    fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
+      fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
               __LINE__);
       return NULL;
    }
index 48603f5d79fd077433ed61d75f0c09d762639104..6d7cf1f38b281bcedae85bbfffda6fdb3f79f7a1 100644 (file)
@@ -77,6 +77,7 @@ i810FillInModes( __DRIscreenPrivate *psp,
 
     uint8_t depth_bits_array[2];
     uint8_t stencil_bits_array[2];
+    uint8_t msaa_samples_array[1];
 
     depth_bits_array[0] = depth_bits;
     depth_bits_array[1] = depth_bits;
@@ -94,7 +95,8 @@ i810FillInModes( __DRIscreenPrivate *psp,
     configs = driCreateConfigs(GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor,
-                              back_buffer_modes, back_buffer_factor);
+                              back_buffer_modes, back_buffer_factor,
+                               msaa_samples_array, 1);
     if (configs == NULL) {
        fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
                 __func__, __LINE__ );
index e17f18a98f27d323e9e927a3033fc10e5618ac2e..f29e0e966b71be053bca54ab5d4e215318228b66 100644 (file)
@@ -478,6 +478,7 @@ intelFillInModes(__DRIscreenPrivate *psp,
 
    uint8_t depth_bits_array[3];
    uint8_t stencil_bits_array[3];
+   uint8_t msaa_samples_array[1];
 
    depth_bits_array[0] = 0;
    depth_bits_array[1] = depth_bits;
@@ -509,7 +510,9 @@ intelFillInModes(__DRIscreenPrivate *psp,
    configs = driCreateConfigs(fb_format, fb_type,
                              depth_bits_array, stencil_bits_array,
                              depth_buffer_factor, back_buffer_modes,
-                             back_buffer_factor);
+                             back_buffer_factor,
+                              msaa_samples_array, 1);
+
    if (configs == NULL) {
     fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
               __LINE__);
@@ -679,7 +682,7 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
    static const GLenum back_buffer_modes[] = {
       GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
    };
-   uint8_t depth_bits[4], stencil_bits[4];
+   uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1];
    int color;
    const __DRIconfig **configs = NULL;
 
@@ -748,7 +751,9 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
                          stencil_bits,
                          ARRAY_SIZE(depth_bits),
                          back_buffer_modes,
-                         ARRAY_SIZE(back_buffer_modes));
+                         ARRAY_SIZE(back_buffer_modes),
+                          msaa_samples_array, ARRAY_SIZE(msaa_samples_array));
+
       if (configs == NULL)
         configs = new_configs;
       else
index 6bfb4c32b159360f3d8034e95076169c1f884431..59a357389850e6857ceef87bccb459742fd79345 100644 (file)
@@ -93,6 +93,7 @@ mach64FillInModes( __DRIscreenPrivate *psp,
 
     uint8_t depth_bits_array[2];
     uint8_t stencil_bits_array[2];
+    uint8_t msaa_samples_array[1];
 
     depth_bits_array[0] = depth_bits;
     depth_bits_array[1] = depth_bits;
@@ -119,7 +120,8 @@ mach64FillInModes( __DRIscreenPrivate *psp,
     configs = driCreateConfigs(fb_format, fb_type,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor, back_buffer_modes,
-                              back_buffer_factor);
+                              back_buffer_factor,
+                               msaa_samples_array, 1);
     if (configs == NULL) {
        fprintf(stderr, "[%s:%u] Error creating FBConfig!\n",
               __func__, __LINE__);
index 2d0f387cdc6f7e574d0b29121560814379e594d5..98185a6c9e9c17c52ac354a85dc5ee2626d7c5d8 100644 (file)
@@ -129,6 +129,7 @@ mgaFillInModes( __DRIscreenPrivate *psp,
 
     uint8_t depth_bits_array[3];
     uint8_t stencil_bits_array[3];
+    uint8_t msaa_samples_array[1];
 
 
     depth_bits_array[0] = 0;
@@ -158,7 +159,8 @@ mgaFillInModes( __DRIscreenPrivate *psp,
     configs = driCreateConfigs(fb_format, fb_type,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor,
-                              back_buffer_modes, back_buffer_factor);
+                              back_buffer_modes, back_buffer_factor,
+                               msaa_samples_array, 1);
     if (configs == NULL) {
        fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
                 __func__, __LINE__ );
index cb3a147dbac636e3236ac45b94a7f5574a895a4b..e72ca45be98ac820bba56c30ca47db55dc0f2bf6 100644 (file)
@@ -422,7 +422,7 @@ r128FillInModes( __DRIscreenPrivate *psp,
 
     uint8_t depth_bits_array[2];
     uint8_t stencil_bits_array[2];
-
+    uint8_t msaa_samples_array[1];
 
     depth_bits_array[0] = depth_bits;
     depth_bits_array[1] = depth_bits;
@@ -446,26 +446,27 @@ r128FillInModes( __DRIscreenPrivate *psp,
         fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
     }
 
-   configs = driCreateConfigs(fb_format, fb_type,
-                             depth_bits_array, stencil_bits_array,
-                             depth_buffer_factor, back_buffer_modes,
-                             back_buffer_factor);
-   if (configs == NULL) {
-    fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
-              __LINE__);
-      return NULL;
-   }
+    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);
+    if (configs == NULL) {
+        fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
+                __LINE__);
+        return NULL;
+    }
 
-   /* Mark the visual as slow if there are "fake" stencil bits.
-    */
-   for (i = 0; configs[i]; i++) {
-      m = &configs[i]->modes;
-      if ((m->stencilBits != 0) && (m->stencilBits != stencil_bits)) {
-         m->visualRating = GLX_SLOW_CONFIG;
-      }
-   }
+    /* Mark the visual as slow if there are "fake" stencil bits.
+     */
+    for (i = 0; configs[i]; i++) {
+        m = &configs[i]->modes;
+        if ((m->stencilBits != 0) && (m->stencilBits != stencil_bits)) {
+            m->visualRating = GLX_SLOW_CONFIG;
+        }
+    }
 
-   return (const __DRIconfig **) configs;
+    return (const __DRIconfig **) configs;
 }
 
 
index f5665c4af19be77055975953b163e2b848d7b283..b52a084777b351b35cdce14351bc0a0c7d191b63 100644 (file)
@@ -276,7 +276,7 @@ radeonFillInModes( __DRIscreenPrivate *psp,
 
     uint8_t depth_bits_array[2];
     uint8_t stencil_bits_array[2];
-
+    uint8_t msaa_samples_array[1];
 
     depth_bits_array[0] = depth_bits;
     depth_bits_array[1] = depth_bits;
@@ -303,7 +303,8 @@ radeonFillInModes( __DRIscreenPrivate *psp,
     configs = driCreateConfigs(fb_format, fb_type,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor,
-                              back_buffer_modes, back_buffer_factor);
+                              back_buffer_modes, back_buffer_factor,
+                              msaa_samples_array, 1);
     if (configs == NULL) {
        fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
                 __func__, __LINE__ );
index c5decb093af32809a45aac6297b3abf40b7347b9..ba4008e6447863d4a71dedba2e2e631968a169c2 100644 (file)
@@ -910,7 +910,7 @@ savageFillInModes( __DRIscreenPrivate *psp,
 
     uint8_t depth_bits_array[2];
     uint8_t stencil_bits_array[2];
-
+    uint8_t msaa_samples_array[1];
 
     depth_bits_array[0] = depth_bits;
     depth_bits_array[1] = depth_bits;
@@ -937,7 +937,8 @@ savageFillInModes( __DRIscreenPrivate *psp,
     configs = driCreateConfigs(fb_format, fb_type,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor,
-                              back_buffer_modes, back_buffer_factor);
+                              back_buffer_modes, back_buffer_factor,
+                               msaa_samples_array, 1);
     if (configs == NULL) {
        fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
                 __func__, __LINE__ );
index b1a5d15236fd2a3582eb5d6e5ab3e4ffe07bf686..e31b5223f7a40f6ed296d72719d05c73560274e9 100644 (file)
@@ -77,6 +77,7 @@ sisFillInModes(__DRIscreenPrivate *psp, int bpp)
    };
    uint8_t depth_bits_array[4];
    uint8_t stencil_bits_array[4];
+   uint8_t msaa_samples_array[1];
 
    depth_bits_array[0] = 0;
    stencil_bits_array[0] = 0;
@@ -100,7 +101,8 @@ sisFillInModes(__DRIscreenPrivate *psp, int bpp)
 
    configs = driCreateConfigs(fb_format, fb_type, depth_bits_array,
                              stencil_bits_array, depth_buffer_factor,
-                             back_buffer_modes, back_buffer_factor);
+                             back_buffer_modes, back_buffer_factor,
+                              msaa_samples_array, 1);
    if (configs == NULL) {
       fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__, __LINE__);
       return NULL;
index cd22b8495110d407dbc280e6b8e1f25f24a14846..90a4a2c3c07e7d6458c1e4bde5e58370f037ce92 100644 (file)
@@ -361,6 +361,7 @@ tdfxFillInModes(__DRIscreenPrivate *psp,
        static const GLenum db_modes[2] = { GLX_NONE, GLX_SWAP_UNDEFINED_OML };
        uint8_t depth_bits_array[4];
        uint8_t stencil_bits_array[4];
+        uint8_t msaa_samples_array[1];
        if(deep) {
                depth_bits_array[0] = 0;
                depth_bits_array[1] = 24;
@@ -383,7 +384,8 @@ tdfxFillInModes(__DRIscreenPrivate *psp,
                depth_bits_array,
                stencil_bits_array,
                deep ? 2 : 4,
-               db_modes, 2);
+               db_modes, 2,
+                msaa_samples_array, 1);
 }
 
 /**
index 988f9935ac1e41a46ad438d048407487c6ea8a80..c25b87b4a42aaa9de9baee9fbc50bf60a1cefdb6 100644 (file)
@@ -342,6 +342,7 @@ viaFillInModes( __DRIscreenPrivate *psp,
      */
     static const uint8_t depth_bits_array[4]   = { 0, 16, 24, 32 };
     static const uint8_t stencil_bits_array[4] = { 0,  0,  8,  0 };
+    uint8_t msaa_samples_array[1];
     const unsigned depth_buffer_factor = 3;
 
     if ( pixel_bits == 16 ) {
@@ -356,7 +357,8 @@ viaFillInModes( __DRIscreenPrivate *psp,
     configs = driCreateConfigs(fb_format, fb_type,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor, back_buffer_modes,
-                              back_buffer_factor);
+                              back_buffer_factor,
+                               msaa_samples_array, 1);
     if (configs == NULL) {
        fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
                __LINE__);
index f978334ab22507cc6232c3fd0db524dd8b677ece..c649b3db5ee603e5bdc01cc9636508fd587764af 100644 (file)
@@ -418,7 +418,7 @@ struct prog_instruction
     */
    GLint BranchTarget;
 
-#if 0
+#if 01 /* XXX just use this for i965 driver for now! */
    /**
     * For TEX instructions in shaders, the sampler to use for the
     * texture lookup.