v3dv: fix supertile coverage when render are size is 0.
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 28 Feb 2020 07:52:22 +0000 (08:52 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:27 +0000 (21:21 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_cmd_buffer.c

index b251683..b455b78 100644 (file)
@@ -1196,10 +1196,12 @@ cmd_buffer_emit_render_pass_layer_rcl(struct v3dv_cmd_buffer *cmd_buffer,
    const uint32_t min_y_supertile =
       state->render_area.offset.y / supertile_h_in_pixels;
 
-   const uint32_t max_render_x =
-      state->render_area.offset.x + state->render_area.extent.width - 1;
-   const uint32_t max_render_y =
-      state->render_area.offset.y + state->render_area.extent.height - 1;
+   uint32_t max_render_x = state->render_area.offset.x;
+   if (state->render_area.extent.width > 0)
+      max_render_x += state->render_area.extent.width - 1;
+   uint32_t max_render_y = state->render_area.offset.y;
+   if (state->render_area.extent.height > 0)
+      max_render_y += state->render_area.extent.height - 1;
    const uint32_t max_x_supertile = max_render_x / supertile_w_in_pixels;
    const uint32_t max_y_supertile = max_render_y / supertile_h_in_pixels;