summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2016-10-24 22:52:06 -0700
committerBen Widawsky <ben@bwidawsk.net>2017-03-09 16:10:21 -0800
commit3ebde637a765d3db82723639d69d622185e9c3bd (patch)
treefe5b851dc484bf1d086f8a6ccf40f33d57816b74
parent5816b4fed33a3a6a43666d43dfb05b93a56a5f93 (diff)
i965/miptree: Add a return for updating of winsys
There is nothing particularly useful to do currently if the update fails, but there is no point carrying on either. As a result, this has a behavior change. v2: Make the return type a bool (Topi) v3: Don't leak the bo if update_winsys_renderbuffer fails. (Jason) Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com> Acked-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com> (v2)
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c16
-rw-r--r--src/mesa/drivers/dri/i965/intel_mipmap_tree.c6
-rw-r--r--src/mesa/drivers/dri/i965/intel_mipmap_tree.h2
3 files changed, 14 insertions, 10 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index f5525322c6..1db2c8b6b6 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -1643,9 +1643,12 @@ intel_process_dri2_buffer(struct brw_context *brw,
return;
}
- intel_update_winsys_renderbuffer_miptree(brw, rb, bo,
- drawable->w, drawable->h,
- buffer->pitch);
+ if (!intel_update_winsys_renderbuffer_miptree(brw, rb, bo,
+ drawable->w, drawable->h,
+ buffer->pitch)) {
+ drm_intel_bo_unreference(bo);
+ return;
+ }
if (_mesa_is_front_buffer_drawing(fb) &&
(buffer->attachment == __DRI_BUFFER_FRONT_LEFT ||
@@ -1704,9 +1707,10 @@ intel_update_image_buffer(struct brw_context *intel,
if (!buffer->aux_offset)
rb->no_aux = true;
- intel_update_winsys_renderbuffer_miptree(intel, rb, buffer->bo,
- buffer->width, buffer->height,
- buffer->pitch);
+ if (!intel_update_winsys_renderbuffer_miptree(intel, rb, buffer->bo,
+ buffer->width, buffer->height,
+ buffer->pitch))
+ return;
if (_mesa_is_front_buffer_drawing(fb) &&
buffer_type == __DRI_IMAGE_BUFFER_FRONT &&
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index f41f3c0d12..451c24e454 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -912,7 +912,7 @@ intel_miptree_create_for_image(struct brw_context *intel,
* that will contain the actual rendering (which is lazily resolved to
* irb->singlesample_mt).
*/
-void
+bool
intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
struct intel_renderbuffer *irb,
drm_intel_bo *bo,
@@ -979,12 +979,12 @@ intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
irb->mt = multisample_mt;
}
}
- return;
+ return true;
fail:
intel_miptree_release(&irb->singlesample_mt);
intel_miptree_release(&irb->mt);
- return;
+ return false;
}
struct intel_mipmap_tree*
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
index e433da56b0..d22dd75ebd 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
@@ -730,7 +730,7 @@ intel_miptree_create_for_image(struct brw_context *intel,
uint32_t pitch,
uint32_t layout_flags);
-void
+bool
intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
struct intel_renderbuffer *irb,
drm_intel_bo *bo,