radv: always initialize levels without DCC as fully expanded
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 24 Jun 2019 15:03:28 +0000 (17:03 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 25 Jun 2019 14:36:23 +0000 (16:36 +0200)
This fixes a rendering issue with RoTR/DXVK.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_cmd_buffer.c

index 215ccced1449a15af382d05ab1081f6e335f430d..db855dfc76c2b66c22207f3db5bdf3987dfed476 100644 (file)
@@ -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);
                }
        }