[Mesa-dev] [PATCH 1/2] panfrost: Cleanup mali_viewport (clipping) code

Alyssa Rosenzweig alyssa at rosenzweig.io
Fri Feb 15 06:48:11 UTC 2019


Signed-off-by: Alyssa Rosenzweig <alyssa at rosenzweig.io>
---
 .../drivers/panfrost/include/panfrost-job.h   | 13 +++++++----
 src/gallium/drivers/panfrost/pan_context.c    | 23 ++++++++-----------
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/src/gallium/drivers/panfrost/include/panfrost-job.h b/src/gallium/drivers/panfrost/include/panfrost-job.h
index dbb5486bfa4..a3b5126ff0f 100644
--- a/src/gallium/drivers/panfrost/include/panfrost-job.h
+++ b/src/gallium/drivers/panfrost/include/panfrost-job.h
@@ -1189,10 +1189,15 @@ struct mali_sampler_descriptor {
  */
 
 struct mali_viewport {
-        float floats[4];
-
-        float depth_range_n;
-        float depth_range_f;
+        /* XY clipping planes */
+        float clip_minx;
+        float clip_miny;
+        float clip_maxx;
+        float clip_maxy;
+
+        /* Depth clipping planes */
+        float clip_minz;
+        float clip_maxz;
 
         u16 viewport0[2];
         u16 viewport1[2];
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 565e6541b6c..97df92258da 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -488,25 +488,22 @@ panfrost_attach_vt_framebuffer(struct panfrost_context *ctx)
 
 static void
 panfrost_viewport(struct panfrost_context *ctx,
-                  float depth_range_n,
-                  float depth_range_f,
+                  float depth_clip_near,
+                  float depth_clip_far,
                   int viewport_x0, int viewport_y0,
                   int viewport_x1, int viewport_y1)
 {
-        /* Viewport encoding is asymmetric. Purpose of the floats is unknown? */
+        /* Clip bounds are encoded as floats. The viewport itself is encoded as
+         * (somewhat) asymmetric ints. */
 
         struct mali_viewport ret = {
-                .floats = {
-#if 0
-                        -inff, -inff,
-                        inff, inff,
-#endif
-                        0.0, 0.0,
-                        2048.0, 1600.0,
-                },
+                .clip_minx = viewport_x0,
+                .clip_miny = viewport_y0,
+                .clip_maxx = viewport_x1,
+                .clip_maxy = viewport_x1,
 
-                .depth_range_n = depth_range_n,
-                .depth_range_f = depth_range_f,
+                .clip_minz = depth_clip_near,
+                .clip_maxz = depth_clip_far,
 
                 .viewport0 = { viewport_x0, viewport_y0 },
                 .viewport1 = { MALI_POSITIVE(viewport_x1), MALI_POSITIVE(viewport_y1) },
-- 
2.20.1



More information about the mesa-dev mailing list