OSDN Git Service

panfrost: Cleanup mali_viewport (clipping) code
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Fri, 15 Feb 2019 06:45:07 +0000 (06:45 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 18 Feb 2019 05:13:03 +0000 (05:13 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/include/panfrost-job.h
src/gallium/drivers/panfrost/pan_context.c

index e11f439..82b3cfb 100644 (file)
@@ -1186,10 +1186,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];
index ff4f290..cfed9f6 100644 (file)
@@ -548,25 +548,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) },