[Mesa-dev] [PATCH 2/2] radv: always initialize levels without DCC as fully expanded

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon Jun 24 23:41:44 UTC 2019


r-b for this patch only.

On Mon, Jun 24, 2019 at 5:00 PM Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
>
> This fixes a rendering issue with RoTR/DXVK.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/vulkan/radv_cmd_buffer.c | 32 +++++++++++++++-----------------
>  1 file changed, 15 insertions(+), 17 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
> index 9b4d4528028..733795eb1a4 100644
> --- a/src/amd/vulkan/radv_cmd_buffer.c
> +++ b/src/amd/vulkan/radv_cmd_buffer.c
> @@ -4960,26 +4960,24 @@ void radv_initialize_dcc(struct radv_cmd_buffer *cmd_buffer,
>                  * support fast clears and we have to initialize them as "fully
>                  * expanded".
>                  */
> -               if (image->planes[0].surface.num_dcc_levels > 1) {
> -                       /* Compute the size of all fast clearable DCC levels. */
> -                       for (unsigned i = 0; i < image->planes[0].surface.num_dcc_levels; i++) {
> -                               struct legacy_surf_level *surf_level =
> -                                       &image->planes[0].surface.u.legacy.level[i];
> +               /* Compute the size of all fast clearable DCC levels. */
> +               for (unsigned i = 0; i < image->planes[0].surface.num_dcc_levels; i++) {
> +                       struct legacy_surf_level *surf_level =
> +                               &image->planes[0].surface.u.legacy.level[i];
>
> -                               if (!surf_level->dcc_fast_clear_size)
> -                                       break;
> +                       if (!surf_level->dcc_fast_clear_size)
> +                               break;
>
> -                               size = surf_level->dcc_offset + surf_level->dcc_fast_clear_size;
> -                       }
> +                       size = surf_level->dcc_offset + surf_level->dcc_fast_clear_size;
> +               }
>
> -                       /* Initialize the mipmap levels without DCC. */
> -                       if (size != image->planes[0].surface.dcc_size) {
> -                               state->flush_bits |=
> -                                       radv_fill_buffer(cmd_buffer, image->bo,
> -                                                        image->offset + image->dcc_offset + size,
> -                                                        image->planes[0].surface.dcc_size - size,
> -                                                        0xffffffff);
> -                       }
> +               /* Initialize the mipmap levels without DCC. */
> +               if (size != image->planes[0].surface.dcc_size) {
> +                       state->flush_bits |=
> +                               radv_fill_buffer(cmd_buffer, image->bo,
> +                                                image->offset + image->dcc_offset + size,
> +                                                image->planes[0].surface.dcc_size - size,
> +                                                0xffffffff);
>                 }
>         }
>
> --
> 2.22.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list