re-add MSAA support

This commit is contained in:
Alan Hourihane
2008-09-19 13:55:34 +01:00
parent 82623bf2e5
commit f7d80aa006
2 changed files with 64 additions and 60 deletions

View File

@@ -524,15 +524,12 @@ GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
* \c GL_UNSIGNED_3BYTE_8_8_8, \c GL_4FLOAT_32_32_32_32,
* \c GL_4HALF_16_16_16_16, etc. We can cross that bridge when we come to it.
*/
/* XXX: need to re-add msaa support after gallium-0.1 merge
*/
__DRIconfig **
driCreateConfigs(GLenum fb_format, GLenum fb_type,
const u_int8_t * depth_bits, const u_int8_t * stencil_bits,
unsigned num_depth_stencil_bits,
const GLenum * db_modes, unsigned num_db_modes)
const GLenum * db_modes, unsigned num_db_modes,
const u_int8_t * msaa_samples, unsigned num_msaa_modes)
{
static const u_int8_t bits_table[4][4] = {
/* R G B A */
@@ -592,9 +589,7 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
int index;
__DRIconfig **configs, **c;
__GLcontextModes *modes;
unsigned i;
unsigned j;
unsigned k;
unsigned i, j, k, h;
unsigned num_modes;
unsigned num_accum_bits = 2;
@@ -675,6 +670,7 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
c = configs;
for ( k = 0 ; k < num_depth_stencil_bits ; k++ ) {
for ( i = 0 ; i < num_db_modes ; i++ ) {
for ( h = 0 ; h < num_msaa_modes; h++ ) {
for ( j = 0 ; j < num_accum_bits ; j++ ) {
*c = _mesa_malloc (sizeof **c);
modes = &(*c)->modes;
@@ -720,6 +716,10 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
modes->swapMethod = db_modes[i];
}
modes->samples = msaa_samples[h];
modes->sampleBuffers = modes->samples ? 1 : 0;
modes->haveAccumBuffer = ((modes->accumRedBits +
modes->accumGreenBits +
modes->accumBlueBits +
@@ -735,6 +735,9 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
__DRI_ATTRIB_TEXTURE_2D_BIT |
__DRI_ATTRIB_TEXTURE_RECTANGLE_BIT :
0;
modes = modes->next;
}
}
}
}

View File

@@ -129,9 +129,10 @@ struct __DRIconfigRec {
extern __DRIconfig **
driCreateConfigs(GLenum fb_format, GLenum fb_type,
const u_int8_t * depth_bits, const u_int8_t * stencil_bits,
const uint8_t * depth_bits, const uint8_t * stencil_bits,
unsigned num_depth_stencil_bits,
const GLenum * db_modes, unsigned num_db_modes);
const GLenum * db_modes, unsigned num_db_modes,
const uint8_t * msaa_samples, unsigned num_msaa_modes);
const __DRIconfig **driConcatConfigs(__DRIconfig **a, __DRIconfig **b);