freedreno: fix slice pitch calculations
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 13 Mar 2015 05:36:57 +0000 (01:36 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Fri, 13 Mar 2015 20:05:16 +0000 (16:05 -0400)
For example if width were 65, the first slice would get 96 while the
second would get 32. However the hardware appears to expect the second
pitch to be 64, based on halving the 96 (and aligning up to 32).

This fixes texelFetch piglit tests on a3xx below a certain size. Going
higher they break again, but most likely due to unrelated reasons.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.4 10.5" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/freedreno_resource.c

index c7b4e579992df55a6b72edb6eece91116fb24dfb..69e545268481177c8d848b51d2c998a819a3e9be 100644 (file)
@@ -213,7 +213,7 @@ setup_slices(struct fd_resource *rsc, uint32_t alignment)
        for (level = 0; level <= prsc->last_level; level++) {
                struct fd_resource_slice *slice = fd_resource_slice(rsc, level);
 
-               slice->pitch = align(width, 32);
+               slice->pitch = width = align(width, 32);
                slice->offset = size;
                /* 1d array, 2d array, 3d textures (but not cube!) must all have the
                 * same layer size for each miplevel on a3xx. These are also the