mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
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 <nanley.g.chery@intel.com> (v1)
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> (v1)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v2)
This commit is contained in:
parent
e9017d58dc
commit
6cbc13d94c
3 changed files with 21 additions and 18 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue