v3dv: add an assert to catch applications trying to clear invalid aspects
authorIago Toral Quiroga <itoral@igalia.com>
Mon, 17 Feb 2020 15:07:32 +0000 (16:07 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:27 +0000 (21:21 +0000)
I accidentally tried to clear D+S of a depth-only image which was not caught
by the validation layers in my environment. This made the simulator crash, but
tracking down the crash to the actual error was not trivial. This should make
it immediately obvious.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_meta_copy.c

index 2fd1ffb..f5e7342 100644 (file)
@@ -935,6 +935,11 @@ clear_image_tlb(struct v3dv_cmd_buffer *cmd_buffer,
          v3dv_cmd_buffer_start_frame(cmd_buffer, &framebuffer.fb);
          v3dv_job_emit_binning_flush(job);
 
+         /* If this triggers it is an application bug: the spec requires
+          * that any aspects to clear are present in the image.
+          */
+         assert(range->aspectMask & image->aspects);
+
          emit_clear_image_rcl(job, image, &framebuffer, &hw_clear_value,
                              range->aspectMask, layer, level);