#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"
)
);
- 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,
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' */