freedreno: pitch alignment should match gmem alignment
[mesa.git] / src / gallium / drivers / freedreno / freedreno_gmem.c
index aeccebd9fd29622b32da2b61f910a70859acfde5..c7ac0a23a2960b3d1f531f7f4956da539fa159d4 100644 (file)
@@ -110,7 +110,8 @@ calculate_tiles(struct fd_batch *batch)
        struct fd_gmem_stateobj *gmem = &ctx->gmem;
        struct pipe_scissor_state *scissor = &batch->max_scissor;
        struct pipe_framebuffer_state *pfb = &batch->framebuffer;
-       const uint32_t gmem_alignment = ctx->screen->gmem_alignment;
+       const uint32_t gmem_alignw = ctx->screen->gmem_alignw;
+       const uint32_t gmem_alignh = ctx->screen->gmem_alignh;
        const uint32_t gmem_size = ctx->screen->gmemsize_bytes;
        uint32_t minx, miny, width, height;
        uint32_t nbins_x = 1, nbins_y = 1;
@@ -149,21 +150,21 @@ calculate_tiles(struct fd_batch *batch)
                height = pfb->height;
        } else {
                /* round down to multiple of alignment: */
-               minx = scissor->minx & ~(gmem_alignment - 1);
-               miny = scissor->miny & ~(gmem_alignment - 1);
+               minx = scissor->minx & ~(gmem_alignw - 1);
+               miny = scissor->miny & ~(gmem_alignh - 1);
                width = scissor->maxx - minx;
                height = scissor->maxy - miny;
        }
 
-       bin_w = align(width, gmem_alignment);
-       bin_h = align(height, gmem_alignment);
+       bin_w = align(width, gmem_alignw);
+       bin_h = align(height, gmem_alignh);
 
        /* first, find a bin width that satisfies the maximum width
         * restrictions:
         */
        while (bin_w > max_width) {
                nbins_x++;
-               bin_w = align(width / nbins_x, gmem_alignment);
+               bin_w = align(width / nbins_x, gmem_alignw);
        }
 
        if (fd_mesa_debug & FD_DBG_MSGS) {
@@ -180,10 +181,10 @@ calculate_tiles(struct fd_batch *batch)
        while (total_size(cbuf_cpp, zsbuf_cpp, bin_w, bin_h, gmem) > gmem_size) {
                if (bin_w > bin_h) {
                        nbins_x++;
-                       bin_w = align(width / nbins_x, gmem_alignment);
+                       bin_w = align(width / nbins_x, gmem_alignw);
                } else {
                        nbins_y++;
-                       bin_h = align(height / nbins_y, gmem_alignment);
+                       bin_h = align(height / nbins_y, gmem_alignh);
                }
        }