[Mesa-dev] [RFC PATCH 23/26] i965: fix renderbuffer wrapper setup for multisample textures

Chris Forbes chrisf at ijw.co.nz
Sat Dec 29 04:35:36 PST 2012


Previously we were putting the 2x2 (or 4x2) fake dimensions of the
surface into the renderbuffer wrapper. This is different from how
other parts of the driver expect multisample renderbuffers to be set up,
and produced stalls and memory stomps.

Pulls multisample textures into line with classic multisample
renderbuffers, fixing the arb_texture_multisample-sample-mask-execution
-tex piglit.

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
---
 src/mesa/drivers/dri/intel/intel_fbo.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index 4cc2c00..be0c117 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -507,9 +507,18 @@ intel_renderbuffer_update_wrapper(struct intel_context *intel,
    rb->Format = image->TexFormat;
    rb->InternalFormat = image->InternalFormat;
    rb->_BaseFormat = image->_BaseFormat;
-   rb->Width = mt->level[level].width;
-   rb->Height = mt->level[level].height;
-   rb->NumSamples = mt->num_samples;
+
+   if (mt->num_samples) {
+      /* silly hack */
+      rb->Width = mt->singlesample_width0;
+      rb->Height = mt->singlesample_height0;
+      rb->NumSamples = mt->num_samples;
+   }
+   else {
+      rb->Width = mt->level[level].width;
+      rb->Height = mt->level[level].height;
+      rb->NumSamples = mt->num_samples;
+   }
 
    rb->Delete = intel_delete_renderbuffer;
    rb->AllocStorage = intel_nop_alloc_storage;
-- 
1.8.0.3



More information about the mesa-dev mailing list