From: Chad Versace Date: Sat, 25 Feb 2017 01:15:43 +0000 (-0800) Subject: intel: Fix requests for exact surface row pitch (v2) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6cbc13d94c40f875926b8fd2129852759f314d14;p=mesa.git intel: Fix requests for exact surface row pitch (v2) All callers of isl_surf_init() that set 'min_row_pitch' wanted to request an *exact* row pitch, as evidenced by nearby asserts, but isl lacked API for doing so. Now that isl has an API for that, update the code to use it. v2: Assert that isl_surf_init() succeeds because the callers assume it. [for jekstrand] Reviewed-by: Nanley Chery (v1) Reviewed-by: Anuj Phogat (v1) Reviewed-by: Jason Ekstrand (v2) --- diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c index 280b76ab70c..691564c8788 100644 --- a/src/intel/blorp/blorp_blit.c +++ b/src/intel/blorp/blorp_blit.c @@ -1375,6 +1375,8 @@ static void surf_convert_to_single_slice(const struct isl_device *isl_dev, struct brw_blorp_surface_info *info) { + bool ok UNUSED; + /* Just bail if we have nothing to do. */ if (info->surf.dim == ISL_SURF_DIM_2D && info->view.base_level == 0 && info->view.base_array_layer == 0 && @@ -1421,13 +1423,13 @@ surf_convert_to_single_slice(const struct isl_device *isl_dev, .levels = 1, .array_len = 1, .samples = info->surf.samples, - .min_pitch = info->surf.row_pitch, + .row_pitch = info->surf.row_pitch, .usage = info->surf.usage, .tiling_flags = 1 << info->surf.tiling, }; - isl_surf_init_s(isl_dev, &info->surf, &init_info); - assert(info->surf.row_pitch == init_info.min_pitch); + ok = isl_surf_init_s(isl_dev, &info->surf, &init_info); + assert(ok); /* The view is also different now. */ info->view.base_level = 0; diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 9b3910f1b0b..16f1692ff53 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -133,6 +133,7 @@ get_blorp_surf_for_anv_buffer(struct anv_device *device, { const struct isl_format_layout *fmtl = isl_format_get_layout(format); + bool ok UNUSED; /* ASTC is the only format which doesn't support linear layouts. * Create an equivalently sized surface with ISL to get around this. @@ -155,20 +156,20 @@ get_blorp_surf_for_anv_buffer(struct anv_device *device, }, }; - isl_surf_init(&device->isl_dev, isl_surf, - .dim = ISL_SURF_DIM_2D, - .format = format, - .width = width, - .height = height, - .depth = 1, - .levels = 1, - .array_len = 1, - .samples = 1, - .min_pitch = row_pitch, - .usage = ISL_SURF_USAGE_TEXTURE_BIT | - ISL_SURF_USAGE_RENDER_TARGET_BIT, - .tiling_flags = ISL_TILING_LINEAR_BIT); - assert(isl_surf->row_pitch == row_pitch); + ok = isl_surf_init(&device->isl_dev, isl_surf, + .dim = ISL_SURF_DIM_2D, + .format = format, + .width = width, + .height = height, + .depth = 1, + .levels = 1, + .array_len = 1, + .samples = 1, + .row_pitch = row_pitch, + .usage = ISL_SURF_USAGE_TEXTURE_BIT | + ISL_SURF_USAGE_RENDER_TARGET_BIT, + .tiling_flags = ISL_TILING_LINEAR_BIT); + assert(ok); } static void diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 33499abca1a..cf34dbe3b0a 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -166,7 +166,7 @@ make_surface(const struct anv_device *dev, .array_len = vk_info->arrayLayers, .samples = vk_info->samples, .min_alignment = 0, - .min_pitch = anv_info->stride, + .row_pitch = anv_info->stride, .usage = choose_isl_surf_usage(image->usage, aspect), .tiling_flags = tiling_flags);