summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIago Toral Quiroga <itoral@igalia.com>2020-02-17 16:07:32 +0100
committerMarge Bot <eric+marge@anholt.net>2020-10-13 21:21:27 +0000
commit06fa2928b8953e2f6163178c19b9974464c547b2 (patch)
tree3ba323ece4e2aed0d338655f06bddf51d23d7ce6
parent9a2d6cca76100c6607034e0d0fbccaeae01db7a5 (diff)
v3dv: add an assert to catch applications trying to clear invalid aspects
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>
-rw-r--r--src/broadcom/vulkan/v3dv_meta_copy.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c
index 2fd1ffb1db3..f5e734269ba 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -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);