diff options
author | Ben Widawsky <[email protected]> | 2017-05-30 17:23:57 +0530 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-07-12 21:15:46 -0700 |
commit | aadd37298c704982036f64e58903c80cd7dac93b (patch) | |
tree | 725e4737ec1e512e9da56bb372307eea8fa4315e /src/mesa | |
parent | 30cfed57ce1f6dcbbf677e4f615438c969ef3d30 (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 <[email protected]>
Acked-by: Daniel Stone <[email protected]>
Reviewed-by: Topi Pohjolainen <[email protected]> (v2)
Reviewed-by: Jason Ekstrand <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 16 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 2 |
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 8a3ffab443f..9d108fe31d8 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -1504,9 +1504,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)) { + brw_bo_unreference(bo); + return; + } if (_mesa_is_front_buffer_drawing(fb) && (buffer->attachment == __DRI_BUFFER_FRONT_LEFT || @@ -1562,9 +1565,10 @@ intel_update_image_buffer(struct brw_context *intel, if (last_mt && last_mt->bo == buffer->bo) return; - 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 0d989d5b063..c018c7f6a87 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -1112,7 +1112,7 @@ intel_miptree_create_for_dri_image(struct brw_context *brw, * 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, struct brw_bo *bo, @@ -1168,12 +1168,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 cb1dcc161de..c588f255d1b 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h @@ -691,7 +691,7 @@ intel_miptree_create_for_dri_image(struct brw_context *brw, __DRIimage *image, GLenum target); -void +bool intel_update_winsys_renderbuffer_miptree(struct brw_context *intel, struct intel_renderbuffer *irb, struct brw_bo *bo, |