freedreno: Use common guardband helper
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 17 Jul 2020 13:18:33 +0000 (15:18 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 21 Jul 2020 14:26:18 +0000 (14:26 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5950>

src/gallium/drivers/freedreno/a6xx/fd6_emit.c
src/gallium/drivers/freedreno/freedreno_util.h

index 3187fb1e1c8265d10293ea547ed73058a2e5fe46..2d502032bfa9668c4c333c13bac04520917adb58 100644 (file)
@@ -35,6 +35,7 @@
 #include "freedreno_log.h"
 #include "freedreno_resource.h"
 #include "freedreno_query_hw.h"
+#include "common/freedreno_guardband.h"
 
 #include "fd6_emit.h"
 #include "fd6_blend.h"
@@ -904,8 +905,12 @@ fd6_emit_state(struct fd_ringbuffer *ring, struct fd6_emit *emit)
                                )
                        );
 
-               unsigned guardband_x = fd_calc_guardband(scissor->maxx - scissor->minx);
-               unsigned guardband_y = fd_calc_guardband(scissor->maxy - scissor->miny);
+               unsigned guardband_x =
+                       fd_calc_guardband(ctx->viewport.translate[0], ctx->viewport.scale[0],
+                                                         false);
+               unsigned guardband_y =
+                       fd_calc_guardband(ctx->viewport.translate[1], ctx->viewport.scale[1],
+                                                         false);
 
                OUT_REG(ring, A6XX_GRAS_CL_GUARDBAND_CLIP_ADJ(
                                        .horz = guardband_x,
index 6f1442192e01234ca41c1095203395162812b7f4..248d6552e78ee036d11c4ad426b7d8a8b23d0a83 100644 (file)
@@ -203,18 +203,6 @@ fd_half_precision(struct pipe_framebuffer_state *pfb)
        return true;
 }
 
-/* Note sure if this is same on all gens, but seems to be same on the later
- * gen's
- */
-static inline unsigned
-fd_calc_guardband(unsigned x)
-{
-       float l = log2(x);
-       if (l <= 8)
-               return 511;
-       return 511 - ((l - 8) * 65);
-}
-
 static inline void emit_marker(struct fd_ringbuffer *ring, int scratch_idx);
 
 /* like OUT_RING() but appends a cmdstream patch point to 'buf' */