On Thu, Dec 21, 2017 at 2:50 AM, Dave Airlie <airl...@gmail.com> wrote: > From: Dave Airlie <airl...@redhat.com> > > looking at traces I noticed we'd set slice_max too large sometimes.
Too small? Otherwise patch 1,3,4 are also Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> > > This should fix it. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/amd/vulkan/radv_device.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c > index 5148828..9ea2b92 100644 > --- a/src/amd/vulkan/radv_device.c > +++ b/src/amd/vulkan/radv_device.c > @@ -3001,9 +3001,9 @@ si_tile_mode_index(const struct radv_image *image, > unsigned level, bool stencil) > return image->surface.u.legacy.tiling_index[level]; > } > > -static uint32_t radv_surface_layer_count(struct radv_image_view *iview) > +static uint32_t radv_surface_max_layer_count(struct radv_image_view *iview) > { > - return iview->type == VK_IMAGE_VIEW_TYPE_3D ? iview->extent.depth : > iview->layer_count; > + return iview->type == VK_IMAGE_VIEW_TYPE_3D ? iview->extent.depth : > (iview->base_layer + iview->layer_count); > } > > static void > @@ -3084,9 +3084,9 @@ radv_initialise_color_surface(struct radv_device > *device, > cb->cb_dcc_base = va >> 8; > cb->cb_dcc_base |= iview->image->surface.tile_swizzle; > > - uint32_t max_slice = radv_surface_layer_count(iview); > + uint32_t max_slice = radv_surface_max_layer_count(iview); > cb->cb_color_view = S_028C6C_SLICE_START(iview->base_layer) | > - S_028C6C_SLICE_MAX(iview->base_layer + max_slice - 1); > + S_028C6C_SLICE_MAX(max_slice); > > if (iview->image->info.samples > 1) { > unsigned log_samples = > util_logbase2(iview->image->info.samples); > @@ -3231,9 +3231,9 @@ radv_initialise_ds_surface(struct radv_device *device, > stencil_format = iview->image->surface.has_stencil ? > V_028044_STENCIL_8 : V_028044_STENCIL_INVALID; > > - uint32_t max_slice = radv_surface_layer_count(iview); > + uint32_t max_slice = radv_surface_max_layer_count(iview); > ds->db_depth_view = S_028008_SLICE_START(iview->base_layer) | > - S_028008_SLICE_MAX(iview->base_layer + max_slice - 1); > + S_028008_SLICE_MAX(max_slice); > > ds->db_htile_data_base = 0; > ds->db_htile_surface = 0; > @@ -3397,7 +3397,7 @@ VkResult radv_CreateFramebuffer( > } > framebuffer->width = MIN2(framebuffer->width, > iview->extent.width); > framebuffer->height = MIN2(framebuffer->height, > iview->extent.height); > - framebuffer->layers = MIN2(framebuffer->layers, > radv_surface_layer_count(iview)); > + framebuffer->layers = MIN2(framebuffer->layers, > radv_surface_max_layer_count(iview)); > } > > *pFramebuffer = radv_framebuffer_to_handle(framebuffer); > -- > 2.9.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev