On Tue, Jan 24, 2012 at 6:59 PM, Eric Anholt <e...@anholt.net> wrote: > A pure swrast-allocated buffer gets an irb of NULL, so we segfaulted > in the clear-accum test. Just look at the swrast renderbuffer pointer > for handling swrast rbs. > --- > src/mesa/drivers/dri/intel/intel_fbo.c | 12 +++++++----- > 1 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c > b/src/mesa/drivers/dri/intel/intel_fbo.c > index 3a35a01..27b0bfc 100644 > --- a/src/mesa/drivers/dri/intel/intel_fbo.c > +++ b/src/mesa/drivers/dri/intel/intel_fbo.c > @@ -128,15 +128,16 @@ intel_map_renderbuffer(struct gl_context *ctx, > GLint *out_stride) > { > struct intel_context *intel = intel_context(ctx); > + struct swrast_renderbuffer *srb = (struct swrast_renderbuffer *)rb; > struct intel_renderbuffer *irb = intel_renderbuffer(rb); > void *map; > int stride; > > - if (!irb && irb->Base.Buffer) { Isn't the problem just that this (and the other condition) is && instead of ||?
> - /* this is a malloc'd renderbuffer (accum buffer) */ > + if (srb->Buffer) { > + /* this is a malloc'd renderbuffer (accum buffer), not an irb */ > GLint bpp = _mesa_get_format_bytes(rb->Format); > - GLint rowStride = irb->Base.RowStride; > - *out_map = (GLubyte *) irb->Base.Buffer + y * rowStride + x * bpp; > + GLint rowStride = srb->RowStride; > + *out_map = (GLubyte *) srb->Buffer + y * rowStride + x * bpp; > *out_stride = rowStride; > return; > } > @@ -180,12 +181,13 @@ intel_unmap_renderbuffer(struct gl_context *ctx, > struct gl_renderbuffer *rb) > { > struct intel_context *intel = intel_context(ctx); > + struct swrast_renderbuffer *srb = (struct swrast_renderbuffer *)rb; > struct intel_renderbuffer *irb = intel_renderbuffer(rb); > > DBG("%s: rb %d (%s)\n", __FUNCTION__, > rb->Name, _mesa_get_format_name(rb->Format)); > > - if (!irb && irb->Base.Buffer) { > + if (srb->Buffer) { > /* this is a malloc'd renderbuffer (accum buffer) */ > /* nothing to do */ > return; > -- > 1.7.7.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev