diff options
author | Samuel Pitoiset <[email protected]> | 2019-06-13 17:17:22 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2019-06-17 11:30:44 +0200 |
commit | cf77d3abf1470a1fad6de05449f208c0badeedda (patch) | |
tree | 65322223306575e238ed93de8edecf6cacee5abf | |
parent | 6880b42cfc1a1b2f30ccd02df1956a78efbe5551 (diff) |
radv: rely on ac_compute_cmask() for CMASK info
Instead of re-computing in the driver. The 3d and cube flags
are correctly set, so the same values should returned by
ac_compute_surface().
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-By: Bas Nieuwenhuizen <[email protected]>
-rw-r--r-- | src/amd/vulkan/radv_image.c | 45 |
1 files changed, 3 insertions, 42 deletions
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index d8dc2dfabde..909145e1e75 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -885,10 +885,6 @@ radv_image_get_cmask_info(struct radv_device *device, struct radv_image *image, struct radv_cmask_info *out) { - unsigned pipe_interleave_bytes = device->physical_device->rad_info.pipe_interleave_bytes; - unsigned num_pipes = device->physical_device->rad_info.num_tile_pipes; - unsigned cl_width, cl_height; - assert(image->plane_count == 1); if (device->physical_device->rad_info.chip_class >= GFX9) { @@ -897,44 +893,9 @@ radv_image_get_cmask_info(struct radv_device *device, return; } - switch (num_pipes) { - case 2: - cl_width = 32; - cl_height = 16; - break; - case 4: - cl_width = 32; - cl_height = 32; - break; - case 8: - cl_width = 64; - cl_height = 32; - break; - case 16: /* Hawaii */ - cl_width = 64; - cl_height = 64; - break; - default: - assert(0); - return; - } - - unsigned base_align = num_pipes * pipe_interleave_bytes; - - unsigned width = align(image->planes[0].surface.u.legacy.level[0].nblk_x, cl_width*8); - unsigned height = align(image->planes[0].surface.u.legacy.level[0].nblk_y, cl_height*8); - unsigned slice_elements = (width * height) / (8*8); - - /* Each element of CMASK is a nibble. */ - unsigned slice_bytes = slice_elements / 2; - - out->slice_tile_max = (width * height) / (128*128); - if (out->slice_tile_max) - out->slice_tile_max -= 1; - - out->alignment = MAX2(256, base_align); - out->size = (image->type == VK_IMAGE_TYPE_3D ? image->info.depth : image->info.array_size) * - align(slice_bytes, base_align); + out->slice_tile_max = image->planes[0].surface.u.legacy.cmask_slice_tile_max; + out->alignment = image->planes[0].surface.cmask_alignment; + out->size = image->planes[0].surface.cmask_size; } static void |