diff options
author | Alyssa Rosenzweig <[email protected]> | 2019-06-20 08:19:06 -0700 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-06-20 08:22:38 -0700 |
commit | 7b46f09f26c3f4377f46d145344f98d5b27b0b00 (patch) | |
tree | c3fecc81eabfb06244a94d808eb7fd899f40c08b /src/gallium | |
parent | 413242277a2653d12d5ea8d8acba533530281fd6 (diff) |
panfrost: Fix tiled NPOT textures with bpp<4
Panfrost's tiling routines (incorrectly) ignored the source stride,
masking this bug; lima's routines respect this stride, causing issues
when tiling NPOT textures whose stride is not a multiple of 64
(for instance, NPOT textures with bpp=1).
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/panfrost/pan_resource.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 332208d4e2f..4f4499aa403 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -198,10 +198,10 @@ panfrost_setup_slices(const struct pipe_resource *tmpl, struct panfrost_bo *bo) /* We don't know how to specify a 2D stride for 3D textures */ - bool should_align_stride = + bool can_align_stride = tmpl->target != PIPE_TEXTURE_3D; - should_align &= should_align_stride; + should_align &= can_align_stride; unsigned offset = 0; unsigned size_2d = 0; @@ -226,7 +226,7 @@ panfrost_setup_slices(const struct pipe_resource *tmpl, struct panfrost_bo *bo) unsigned stride = bytes_per_pixel * effective_width; /* ..but cache-line align it for performance */ - if (should_align_stride) + if (can_align_stride && bo->layout == PAN_LINEAR) stride = ALIGN(stride, 64); slice->stride = stride; |