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)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
Ben Widawsky
2017-05-30 17:23:57 +05:30
committed by Jason Ekstrand
parent 30cfed57ce
commit aadd37298c
3 changed files with 14 additions and 10 deletions

View File

@@ -1504,9 +1504,12 @@ intel_process_dri2_buffer(struct brw_context *brw,
return; return;
} }
intel_update_winsys_renderbuffer_miptree(brw, rb, bo, if (!intel_update_winsys_renderbuffer_miptree(brw, rb, bo,
drawable->w, drawable->h, drawable->w, drawable->h,
buffer->pitch); buffer->pitch)) {
brw_bo_unreference(bo);
return;
}
if (_mesa_is_front_buffer_drawing(fb) && if (_mesa_is_front_buffer_drawing(fb) &&
(buffer->attachment == __DRI_BUFFER_FRONT_LEFT || (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) if (last_mt && last_mt->bo == buffer->bo)
return; return;
intel_update_winsys_renderbuffer_miptree(intel, rb, buffer->bo, if (!intel_update_winsys_renderbuffer_miptree(intel, rb, buffer->bo,
buffer->width, buffer->height, buffer->width, buffer->height,
buffer->pitch); buffer->pitch))
return;
if (_mesa_is_front_buffer_drawing(fb) && if (_mesa_is_front_buffer_drawing(fb) &&
buffer_type == __DRI_IMAGE_BUFFER_FRONT && buffer_type == __DRI_IMAGE_BUFFER_FRONT &&

View File

@@ -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 * that will contain the actual rendering (which is lazily resolved to
* irb->singlesample_mt). * irb->singlesample_mt).
*/ */
void bool
intel_update_winsys_renderbuffer_miptree(struct brw_context *intel, intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
struct intel_renderbuffer *irb, struct intel_renderbuffer *irb,
struct brw_bo *bo, struct brw_bo *bo,
@@ -1168,12 +1168,12 @@ intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
irb->mt = multisample_mt; irb->mt = multisample_mt;
} }
} }
return; return true;
fail: fail:
intel_miptree_release(&irb->singlesample_mt); intel_miptree_release(&irb->singlesample_mt);
intel_miptree_release(&irb->mt); intel_miptree_release(&irb->mt);
return; return false;
} }
struct intel_mipmap_tree* struct intel_mipmap_tree*

View File

@@ -691,7 +691,7 @@ intel_miptree_create_for_dri_image(struct brw_context *brw,
__DRIimage *image, __DRIimage *image,
GLenum target); GLenum target);
void bool
intel_update_winsys_renderbuffer_miptree(struct brw_context *intel, intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
struct intel_renderbuffer *irb, struct intel_renderbuffer *irb,
struct brw_bo *bo, struct brw_bo *bo,