diff options
author | Michel Dänzer | 2013-11-18 04:40:08 -0600 |
---|---|---|
committer | Marek Olšák | 2013-11-22 17:35:42 -0600 |
commit | f0e399d8f0c3c006687e0fc8e68268087607d5f5 (patch) | |
tree | 492c94e5030e45b1fb70ff0b0b510bd181f4d577 /radeon/radeon_surface.c | |
parent | 67d92404d62044972599dcef3011d17fca46eed5 (diff) | |
download | external-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.c | 5 |
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; |