summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2012-01-07 15:05:35 -0700
committerBrian Paul <[email protected]>2012-01-12 13:49:15 -0700
commit6dbdc0395698de929e23b4ec1ab399e64ecfd264 (patch)
tree72e71dd330aa38804dbaa1c14095a3f5c042595c /src
parent9be6654c1f75bc402c807ec0caccebde032afa59 (diff)
intel: fix mapping of malloc'd renderbuffers
This fixes accum buffer operations. The accumulation buffer is the only malloc-based renderbuffer for the intel drivers. v2: apply x/y offset to returned pointer NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/intel/intel_fbo.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index b95193d2b6e..1d8b10e288e 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -132,6 +132,15 @@ intel_map_renderbuffer(struct gl_context *ctx,
void *map;
int stride;
+ if (!irb && rb->Data) {
+ /* this is a malloc'd renderbuffer (accum buffer) */
+ GLint bpp = _mesa_get_format_bytes(rb->Format);
+ GLint rowStride = rb->RowStride * bpp;
+ *out_map = (GLubyte *) rb->Data + y * rowStride + x * bpp;
+ *out_stride = rowStride;
+ return;
+ }
+
/* We sometimes get called with this by our intel_span.c usage. */
if (!irb->mt) {
*out_map = NULL;
@@ -176,6 +185,12 @@ intel_unmap_renderbuffer(struct gl_context *ctx,
DBG("%s: rb %d (%s)\n", __FUNCTION__,
rb->Name, _mesa_get_format_name(rb->Format));
+ if (!irb && rb->Data) {
+ /* this is a malloc'd renderbuffer (accum buffer) */
+ /* nothing to do */
+ return;
+ }
+
intel_miptree_unmap(intel, irb->mt, irb->mt_level, irb->mt_layer);
}