diff -u mesa-7.7.1/debian/control mesa-7.7.1/debian/control --- mesa-7.7.1/debian/control +++ mesa-7.7.1/debian/control @@ -245,7 +245,7 @@ Section: libdevel Architecture: any Replaces: xlibmesa-gl-dev (<< 1:7), xlibosmesa-dev, libgl1-mesa-swx11-dev (<< 6.5.2), libgl1-mesa-dev (<< 7.5~rc4-2) -Depends: libx11-dev +Depends: libx11-dev, libdrm-dev Description: Developer documentation for Mesa This package includes the specifications for the Mesa-specific OpenGL extensions, the complete set of release notes and the development header diff -u mesa-7.7.1/debian/changelog mesa-7.7.1/debian/changelog --- mesa-7.7.1/debian/changelog +++ mesa-7.7.1/debian/changelog @@ -1,3 +1,15 @@ +mesa (7.7.1-1ubuntu2) lucid; urgency=low + + * Add 103_savage-expose_fbmodes_with_nonzero_alpha.patch: Expose + fbmodes with non-zero alpha depth. Fixes issue where clutter apps + crash when using the savage driver. Thanks to knarf for developing + the fix. + (LP: #467474) + * mesa-common-dev should depend on libdrm-dev + (LP: #490811) + + -- Bryce Harrington Wed, 14 Apr 2010 12:06:00 -0700 + mesa (7.7.1-1ubuntu1) lucid; urgency=low [ Alberto Milone ] diff -u mesa-7.7.1/debian/patches/series mesa-7.7.1/debian/patches/series --- mesa-7.7.1/debian/patches/series +++ mesa-7.7.1/debian/patches/series @@ -9,0 +10 @@ +103_savage-expose_fbmodes_with_nonzero_alpha.patch only in patch2: unchanged: --- mesa-7.7.1.orig/.gitattributes +++ mesa-7.7.1/.gitattributes @@ -0,0 +1,4 @@ +*.dsp -crlf +*.dsw -crlf +*.sln -crlf +*.vcproj -crlf only in patch2: unchanged: --- mesa-7.7.1.orig/debian/patches/103_savage-expose_fbmodes_with_nonzero_alpha.patch +++ mesa-7.7.1/debian/patches/103_savage-expose_fbmodes_with_nonzero_alpha.patch @@ -0,0 +1,94 @@ +--- mesa-7.7.orig/src/mesa/drivers/dri/savage/savage_xmesa.c ++++ mesa-7.7/src/mesa/drivers/dri/savage/savage_xmesa.c +@@ -63,6 +63,8 @@ + + #include "xmlpool.h" + ++#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) ++ + /* Driver-specific options + */ + #define SAVAGE_ENABLE_VDMA(def) \ +@@ -888,29 +890,30 @@ savageFillInModes( __DRIscreenPrivate *p + unsigned stencil_bits, GLboolean have_back_buffer ) + { + __DRIconfig **configs; ++ __DRIconfig **configs_a8r8g8b8; ++ __DRIconfig **configs_x8r8g8b8; + __GLcontextModes * m; + unsigned depth_buffer_factor; + unsigned back_buffer_factor; +- GLenum fb_format; +- GLenum fb_type; ++ uint8_t depth_bits_array[2]; ++ uint8_t stencil_bits_array[2]; ++ uint8_t msaa_samples_array[1]; + int i; + + /* Right now GLX_SWAP_COPY_OML isn't supported, but it would be easy + * enough to add support. Basically, if a context is created with an + * fbconfig where the swap method is GLX_SWAP_COPY_OML, pageflipping + * will never be used. +- * +- * FK: What about drivers that don't use page flipping? Could they +- * just expose GLX_SWAP_COPY_OML? + */ + static const GLenum back_buffer_modes[] = { + GLX_NONE, GLX_SWAP_UNDEFINED_OML /*, GLX_SWAP_COPY_OML */ + }; + +- uint8_t depth_bits_array[2]; +- uint8_t stencil_bits_array[2]; +- uint8_t msaa_samples_array[1]; +- ++ /* This being a DRI1 driver the depth buffer is always allocated, ++ * so it does not make sense to expose visuals without it. If this ++ * driver ever gets ported to DRI2 the first array value should be ++ * changed to 0 to expose modes without a depth buffer. ++ */ + depth_bits_array[0] = depth_bits; + depth_bits_array[1] = depth_bits; + +@@ -925,21 +928,32 @@ savageFillInModes( __DRIscreenPrivate *p + + depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 2 : 1; + back_buffer_factor = (have_back_buffer) ? 2 : 1; +- ++ + if ( pixel_bits == 16 ) { +- fb_format = GL_RGB; +- fb_type = GL_UNSIGNED_SHORT_5_6_5; ++ 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, ++ msaa_samples_array, 1); + } + else { +- fb_format = GL_BGR; +- fb_type = GL_UNSIGNED_INT_8_8_8_8_REV; ++ configs_a8r8g8b8 = 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); ++ configs_x8r8g8b8 = driCreateConfigs(GL_BGR, 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); ++ configs = driConcatConfigs(configs_a8r8g8b8, configs_x8r8g8b8); + } + +- 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__ );