aboutsummaryrefslogtreecommitdiffstats
path: root/radeon
diff options
context:
space:
mode:
authorMarek Olšák2012-08-07 16:38:19 -0500
committerMarek Olšák2012-08-09 15:35:07 -0500
commit128803a107fde8ce36036e59437a536fc4d46553 (patch)
tree740a2d779d64ae7f9dc118ea5055f5484afbbbf4 /radeon
parente14aedce64e365ef1a8726ed8c1ebed881d7a398 (diff)
downloadlibdrm-128803a107fde8ce36036e59437a536fc4d46553.tar.gz
libdrm-128803a107fde8ce36036e59437a536fc4d46553.tar.xz
libdrm-128803a107fde8ce36036e59437a536fc4d46553.zip
radeon: tweak TILE_SPLIT for MSAA surfaces
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Diffstat (limited to 'radeon')
-rw-r--r--radeon/radeon_surface.c37
1 files changed, 31 insertions, 6 deletions
diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index 499e994c..892dca64 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -871,12 +871,37 @@ static int eg_surface_best(struct radeon_surface_manager *surf_man,
871 return 0; 871 return 0;
872 } 872 }
873 873
874 /* set tile split to row size, optimize latter for multi-sample surface 874 /* Tweak TILE_SPLIT for performance here. */
875 * tile split >= 256 for render buffer surface. Also depth surface want 875 if (surf->nsamples > 1) {
876 * smaller value for optimal performances. 876 if (surf->flags & (RADEON_SURF_ZBUFFER | RADEON_SURF_SBUFFER)) {
877 */ 877 switch (surf->nsamples) {
878 surf->tile_split = surf_man->hw_info.row_size; 878 case 2:
879 surf->stencil_tile_split = surf_man->hw_info.row_size / 2; 879 surf->tile_split = 128;
880 break;
881 case 4:
882 surf->tile_split = 128;
883 break;
884 case 8:
885 surf->tile_split = 256;
886 break;
887 case 16: /* cayman only */
888 surf->tile_split = 512;
889 break;
890 default:
891 fprintf(stderr, "radeon: Wrong number of samples %i (%i)\n",
892 surf->nsamples, __LINE__);
893 return -EINVAL;
894 }
895 surf->stencil_tile_split = 64;
896 } else {
897 /* tile split must be >= 256 for colorbuffer surfaces */
898 surf->tile_split = MAX2(surf->nsamples * surf->bpe * 64, 256);
899 }
900 } else {
901 /* set tile split to row size */
902 surf->tile_split = surf_man->hw_info.row_size;
903 surf->stencil_tile_split = surf_man->hw_info.row_size / 2;
904 }
880 905
881 /* bankw or bankh greater than 1 increase alignment requirement, not 906 /* bankw or bankh greater than 1 increase alignment requirement, not
882 * sure if it's worth using smaller bankw & bankh to stick with 2D 907 * sure if it's worth using smaller bankw & bankh to stick with 2D