Mesa (master): panfrost: Include sample count in payload estimates

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 15 22:34:42 UTC 2020


Module: Mesa
Branch: master
Commit: 6088891ef79e4a1a2111ffc76ae10697005df3dd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6088891ef79e4a1a2111ffc76ae10697005df3dd

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Wed Jul 15 11:39:08 2020 -0400

panfrost: Include sample count in payload estimates

Otherwise we might not reserve enough space.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5929>

---

 src/gallium/drivers/panfrost/pan_context.c | 2 ++
 src/panfrost/encoder/pan_texture.c         | 5 ++++-
 src/panfrost/encoder/pan_texture.h         | 1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 70ef7249362..6a0280ec533 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -986,6 +986,7 @@ panfrost_create_sampler_view_bo(struct panfrost_sampler_view *so,
                                 so->base.u.tex.last_level,
                                 so->base.u.tex.first_layer,
                                 so->base.u.tex.last_layer,
+                                texture->nr_samples,
                                 type, prsrc->layout);
 
                 so->bo = panfrost_bo_create(device, size, 0);
@@ -1013,6 +1014,7 @@ panfrost_create_sampler_view_bo(struct panfrost_sampler_view *so,
                                 so->base.u.tex.last_level,
                                 so->base.u.tex.first_layer,
                                 so->base.u.tex.last_layer,
+                                texture->nr_samples,
                                 type, prsrc->layout);
                 size += sizeof(struct mali_texture_descriptor);
 
diff --git a/src/panfrost/encoder/pan_texture.c b/src/panfrost/encoder/pan_texture.c
index c270ececd45..da436ea7318 100644
--- a/src/panfrost/encoder/pan_texture.c
+++ b/src/panfrost/encoder/pan_texture.c
@@ -125,6 +125,7 @@ static unsigned
 panfrost_texture_num_elements(
                 unsigned first_level, unsigned last_level,
                 unsigned first_layer, unsigned last_layer,
+                unsigned nr_samples,
                 bool is_cube, bool manual_stride)
 {
         unsigned first_face  = 0, last_face = 0;
@@ -137,7 +138,7 @@ panfrost_texture_num_elements(
         unsigned levels = 1 + last_level - first_level;
         unsigned layers = 1 + last_layer - first_layer;
         unsigned faces  = 1 + last_face  - first_face;
-        unsigned num_elements = levels * layers * faces;
+        unsigned num_elements = levels * layers * faces * MAX2(nr_samples, 1);
 
         if (manual_stride)
                 num_elements *= 2;
@@ -155,6 +156,7 @@ unsigned
 panfrost_estimate_texture_payload_size(
                 unsigned first_level, unsigned last_level,
                 unsigned first_layer, unsigned last_layer,
+                unsigned nr_samples,
                 enum mali_texture_type type, enum mali_texture_layout layout)
 {
         /* Assume worst case */
@@ -163,6 +165,7 @@ panfrost_estimate_texture_payload_size(
         unsigned elements = panfrost_texture_num_elements(
                         first_level, last_level,
                         first_layer, last_layer,
+                        nr_samples,
                         type == MALI_TEX_CUBE, manual_stride);
 
         return sizeof(mali_ptr) * elements;
diff --git a/src/panfrost/encoder/pan_texture.h b/src/panfrost/encoder/pan_texture.h
index e8c68c005bb..ea1a1ff0fe1 100644
--- a/src/panfrost/encoder/pan_texture.h
+++ b/src/panfrost/encoder/pan_texture.h
@@ -72,6 +72,7 @@ unsigned
 panfrost_estimate_texture_payload_size(
                 unsigned first_level, unsigned last_level,
                 unsigned first_layer, unsigned last_layer,
+                unsigned nr_samples,
                 enum mali_texture_type type, enum mali_texture_layout layout);
 
 void



More information about the mesa-commit mailing list