aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichel Dänzer2013-11-18 04:40:08 -0600
committerMarek Olšák2013-11-22 17:35:42 -0600
commitf0e399d8f0c3c006687e0fc8e68268087607d5f5 (patch)
tree492c94e5030e45b1fb70ff0b0b510bd181f4d577 /radeon/radeon_surface.c
parent67d92404d62044972599dcef3011d17fca46eed5 (diff)
downloadexternal-libdrm-f0e399d8f0c3c006687e0fc8e68268087607d5f5.tar.gz
external-libdrm-f0e399d8f0c3c006687e0fc8e68268087607d5f5.tar.xz
external-libdrm-f0e399d8f0c3c006687e0fc8e68268087607d5f5.zip
radeon: don't overallocate stencil by 4 on SI and CIK
Signed-off-by: Marek Olšák <marek.olsak@amd.com> Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Diffstat (limited to 'radeon/radeon_surface.c')
-rw-r--r--radeon/radeon_surface.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index ea7c0900..555db8d9 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -1436,16 +1436,17 @@ static void si_surf_minify(struct radeon_surface *surf,
1436 */ 1436 */
1437 if (level == 0 && surf->last_level == 0) 1437 if (level == 0 && surf->last_level == 0)
1438 /* Non-mipmap pitch padded to slice alignment */ 1438 /* Non-mipmap pitch padded to slice alignment */
1439 /* Using just bpe here breaks stencil blitting; surf->bpe works. */
1439 xalign = MAX2(xalign, slice_align / surf->bpe); 1440 xalign = MAX2(xalign, slice_align / surf->bpe);
1440 else if (surflevel->mode == RADEON_SURF_MODE_LINEAR_ALIGNED) 1441 else if (surflevel->mode == RADEON_SURF_MODE_LINEAR_ALIGNED)
1441 /* Small rows evenly distributed across slice */ 1442 /* Small rows evenly distributed across slice */
1442 xalign = MAX2(xalign, slice_align / surf->bpe / surflevel->nblk_y); 1443 xalign = MAX2(xalign, slice_align / bpe / surflevel->nblk_y);
1443 1444
1444 surflevel->nblk_x = ALIGN(surflevel->nblk_x, xalign); 1445 surflevel->nblk_x = ALIGN(surflevel->nblk_x, xalign);
1445 surflevel->nblk_z = ALIGN(surflevel->nblk_z, zalign); 1446 surflevel->nblk_z = ALIGN(surflevel->nblk_z, zalign);
1446 1447
1447 surflevel->offset = offset; 1448 surflevel->offset = offset;
1448 surflevel->pitch_bytes = surflevel->nblk_x * surf->bpe * surf->nsamples; 1449 surflevel->pitch_bytes = surflevel->nblk_x * bpe * surf->nsamples;
1449 surflevel->slice_size = ALIGN(surflevel->pitch_bytes * surflevel->nblk_y, slice_align); 1450 surflevel->slice_size = ALIGN(surflevel->pitch_bytes * surflevel->nblk_y, slice_align);
1450 1451
1451 surf->bo_size = offset + surflevel->slice_size * surflevel->nblk_z * surf->array_size; 1452 surf->bo_size = offset + surflevel->slice_size * surflevel->nblk_z * surf->array_size;