Module: Mesa Branch: master Commit: 38823ba60d5f0c8280fb50abbb0a375bca672352 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=38823ba60d5f0c8280fb50abbb0a375bca672352
Author: Boris Brezillon <boris.brezil...@collabora.com> Date: Tue Jan 12 17:43:16 2021 +0100 panfrost: Fix estimate_texture_payload_size() on Bifrost Bifrost mandates manual stride usage. Fixes: a3d2936a8e9e ("panfrost: The texture descriptor has a pointer to a trampoline") Signed-off-by: Boris Brezillon <boris.brezil...@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzw...@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8449> --- src/gallium/drivers/panfrost/pan_context.c | 3 ++- src/panfrost/lib/pan_texture.c | 17 +++++++++++------ src/panfrost/lib/pan_texture.h | 13 ++++++++----- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index ec5395e86ae..2df59a8230d 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1064,7 +1064,8 @@ panfrost_create_sampler_view_bo(struct panfrost_sampler_view *so, unsigned size = (is_bifrost ? 0 : MALI_MIDGARD_TEXTURE_LENGTH) + - panfrost_estimate_texture_payload_size(first_level, last_level, + panfrost_estimate_texture_payload_size(device, + first_level, last_level, first_layer, last_layer, texture->nr_samples, type, diff --git a/src/panfrost/lib/pan_texture.c b/src/panfrost/lib/pan_texture.c index 73c9698e881..35fb450c890 100644 --- a/src/panfrost/lib/pan_texture.c +++ b/src/panfrost/lib/pan_texture.c @@ -220,14 +220,19 @@ panfrost_texture_num_elements( * as an allocation amount */ unsigned -panfrost_estimate_texture_payload_size( - unsigned first_level, unsigned last_level, - unsigned first_layer, unsigned last_layer, - unsigned nr_samples, - enum mali_texture_dimension dim, uint64_t modifier) +panfrost_estimate_texture_payload_size(const struct panfrost_device *dev, + unsigned first_level, + unsigned last_level, + unsigned first_layer, + unsigned last_layer, + unsigned nr_samples, + enum mali_texture_dimension dim, + uint64_t modifier) { + bool is_bifrost = dev->quirks & IS_BIFROST; /* Assume worst case */ - unsigned manual_stride = (modifier == DRM_FORMAT_MOD_LINEAR); + unsigned manual_stride = is_bifrost || + (modifier == DRM_FORMAT_MOD_LINEAR); unsigned elements = panfrost_texture_num_elements( first_level, last_level, diff --git a/src/panfrost/lib/pan_texture.h b/src/panfrost/lib/pan_texture.h index 975ffd2ebf2..1b2f40646ed 100644 --- a/src/panfrost/lib/pan_texture.h +++ b/src/panfrost/lib/pan_texture.h @@ -124,11 +124,14 @@ unsigned panfrost_block_dim(uint64_t modifier, bool width, unsigned plane); unsigned -panfrost_estimate_texture_payload_size( - unsigned first_level, unsigned last_level, - unsigned first_layer, unsigned last_layer, - unsigned nr_samples, - enum mali_texture_dimension dim, uint64_t modifier); +panfrost_estimate_texture_payload_size(const struct panfrost_device *dev, + unsigned first_level, + unsigned last_level, + unsigned first_layer, + unsigned last_layer, + unsigned nr_samples, + enum mali_texture_dimension dim, + uint64_t modifier); void panfrost_new_texture(const struct panfrost_device *dev, _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit