diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index 59eab90cb19..d1c48784259 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -818,6 +818,7 @@ cmd_buffer_render_pass_emit_load(struct v3dv_cmd_buffer *cmd_buffer, uint32_t buffer) { const struct v3dv_image *image = iview->image; + const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; uint32_t layer_offset = v3dv_layer_offset(image, iview->base_level, iview->first_layer + layer); @@ -828,9 +829,8 @@ cmd_buffer_render_pass_emit_load(struct v3dv_cmd_buffer *cmd_buffer, load.input_image_format = iview->format->rt_type; load.r_b_swap = iview->swap_rb; - load.memory_format = iview->tiling; + load.memory_format = slice->tiling; - const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; if (slice->tiling == VC5_TILING_UIF_NO_XOR || slice->tiling == VC5_TILING_UIF_XOR) { load.height_in_ub_or_stride = @@ -932,6 +932,7 @@ cmd_buffer_render_pass_emit_store(struct v3dv_cmd_buffer *cmd_buffer, const struct v3dv_image_view *iview = cmd_buffer->state.framebuffer->attachments[attachment_idx]; const struct v3dv_image *image = iview->image; + const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; uint32_t layer_offset = v3dv_layer_offset(image, iview->base_level, iview->first_layer + layer); @@ -943,9 +944,8 @@ cmd_buffer_render_pass_emit_store(struct v3dv_cmd_buffer *cmd_buffer, store.output_image_format = iview->format->rt_type; store.r_b_swap = iview->swap_rb; - store.memory_format = iview->tiling; + store.memory_format = slice->tiling; - const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; if (slice->tiling == VC5_TILING_UIF_NO_XOR || slice->tiling == VC5_TILING_UIF_XOR) { store.height_in_ub_or_stride = @@ -1289,16 +1289,15 @@ cmd_buffer_emit_render_pass_rcl(struct v3dv_cmd_buffer *cmd_buffer) struct v3dv_image_view *iview = state->framebuffer->attachments[attachment_idx]; + const struct v3dv_image *image = iview->image; + const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; + const uint32_t *clear_color = &state->attachments[attachment_idx].clear_value.color[0]; uint32_t clear_pad = 0; - if (iview->tiling == VC5_TILING_UIF_NO_XOR || - iview->tiling == VC5_TILING_UIF_XOR) { - const struct v3dv_image *image = iview->image; - const struct v3d_resource_slice *slice = - &image->slices[iview->base_level]; - + if (slice->tiling == VC5_TILING_UIF_NO_XOR || + slice->tiling == VC5_TILING_UIF_XOR) { int uif_block_height = v3d_utile_height(image->cpp) * 2; uint32_t implicit_padded_height = diff --git a/src/broadcom/vulkan/v3dv_image.c b/src/broadcom/vulkan/v3dv_image.c index 9e16792d0c2..8901245c214 100644 --- a/src/broadcom/vulkan/v3dv_image.c +++ b/src/broadcom/vulkan/v3dv_image.c @@ -444,8 +444,6 @@ v3dv_CreateImageView(VkDevice _device, iview->offset = v3dv_layer_offset(image, iview->base_level, iview->first_layer); - iview->tiling = image->slices[0].tiling; - iview->vk_format = pCreateInfo->format; iview->format = v3dv_get_format(pCreateInfo->format); assert(iview->format && iview->format->supported); diff --git a/src/broadcom/vulkan/v3dv_meta_clear.c b/src/broadcom/vulkan/v3dv_meta_clear.c index 9ea2f6c370b..7793cbe121c 100644 --- a/src/broadcom/vulkan/v3dv_meta_clear.c +++ b/src/broadcom/vulkan/v3dv_meta_clear.c @@ -53,6 +53,7 @@ emit_tlb_clear_store(struct v3dv_cmd_buffer *cmd_buffer, const struct v3dv_image_view *iview = cmd_buffer->state.framebuffer->attachments[attachment_idx]; const struct v3dv_image *image = iview->image; + const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; uint32_t layer_offset = v3dv_layer_offset(image, iview->base_level, iview->first_layer + layer); @@ -64,9 +65,8 @@ emit_tlb_clear_store(struct v3dv_cmd_buffer *cmd_buffer, store.output_image_format = iview->format->rt_type; store.r_b_swap = iview->swap_rb; - store.memory_format = iview->tiling; + store.memory_format = slice->tiling; - const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; if (slice->tiling == VC5_TILING_UIF_NO_XOR || slice->tiling == VC5_TILING_UIF_XOR) { store.height_in_ub_or_stride = @@ -295,13 +295,12 @@ emit_tlb_clear_rcl(struct v3dv_cmd_buffer *cmd_buffer, clear_color); struct v3dv_image_view *iview = framebuffer->attachments[attachment_idx]; - uint32_t clear_pad = 0; - if (iview->tiling == VC5_TILING_UIF_NO_XOR || - iview->tiling == VC5_TILING_UIF_XOR) { - const struct v3dv_image *image = iview->image; - const struct v3d_resource_slice *slice = - &image->slices[iview->base_level]; + const struct v3dv_image *image = iview->image; + const struct v3d_resource_slice *slice = &image->slices[iview->base_level]; + uint32_t clear_pad = 0; + if (slice->tiling == VC5_TILING_UIF_NO_XOR || + slice->tiling == VC5_TILING_UIF_XOR) { int uif_block_height = v3d_utile_height(image->cpp) * 2; uint32_t implicit_padded_height = diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h index 1c45d99ac5f..fa55127bfd4 100644 --- a/src/broadcom/vulkan/v3dv_private.h +++ b/src/broadcom/vulkan/v3dv_private.h @@ -333,7 +333,6 @@ struct v3dv_image_view { VkFormat vk_format; const struct v3dv_format *format; bool swap_rb; - enum v3d_tiling_mode tiling; uint32_t internal_bpp; uint32_t internal_type;