diff options
Diffstat (limited to 'src/amd')
-rw-r--r-- | src/amd/vulkan/radv_device.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 9a34a20082d..cb68b527276 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2964,6 +2964,8 @@ radv_initialise_color_surface(struct radv_device *device, va = device->ws->buffer_get_va(iview->bo) + iview->image->offset; + cb->cb_color_base = va >> 8; + if (device->physical_device->rad_info.chip_class >= GFX9) { struct gfx9_surf_meta_flags meta; if (iview->image->dcc_offset) @@ -2976,12 +2978,14 @@ radv_initialise_color_surface(struct radv_device *device, S_028C74_RB_ALIGNED(meta.rb_aligned) | S_028C74_PIPE_ALIGNED(meta.pipe_aligned); - va += iview->image->surface.u.gfx9.surf_offset >> 8; + cb->cb_color_base += iview->image->surface.u.gfx9.surf_offset >> 8; } else { const struct legacy_surf_level *level_info = &surf->u.legacy.level[iview->base_mip]; unsigned pitch_tile_max, slice_tile_max, tile_mode_index; - va += level_info->offset; + cb->cb_color_base += level_info->offset >> 8; + if (level_info->mode == RADEON_SURF_MODE_2D) + cb->cb_color_base |= iview->image->surface.tile_swizzle; pitch_tile_max = level_info->nblk_x / 8 - 1; slice_tile_max = (level_info->nblk_x * level_info->nblk_y) / 64 - 1; @@ -3008,9 +3012,6 @@ radv_initialise_color_surface(struct radv_device *device, } } - cb->cb_color_base = va >> 8; - if (device->physical_device->rad_info.chip_class < GFX9) - cb->cb_color_base |= iview->image->surface.tile_swizzle; /* CMASK variables */ va = device->ws->buffer_get_va(iview->bo) + iview->image->offset; va += iview->image->cmask.offset; |