layers: Check acceleration structure compactedSize

This implements VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421.
diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp
index 1abd750..803f408 100644
--- a/layers/parameter_validation_utils.cpp
+++ b/layers/parameter_validation_utils.cpp
@@ -2942,3 +2942,22 @@
     }
     return skip;
 }
+
+bool StatelessValidation::manual_PreCallValidateCreateAccelerationStructureNV(
+    VkDevice device, const VkAccelerationStructureCreateInfoNV *pCreateInfo, const VkAllocationCallbacks *pAllocator,
+    VkAccelerationStructureNV *pAccelerationStructure) {
+    bool skip = false;
+
+    if (pCreateInfo) {
+        if ((pCreateInfo->compactedSize != 0) &&
+            ((pCreateInfo->info.geometryCount != 0) || (pCreateInfo->info.instanceCount != 0))) {
+            skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+                            "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
+                            "vkCreateAccelerationStructureNV(): pCreateInfo->compactedSize nonzero (%" PRIu64
+                            ") with info.geometryCount (%" PRIu32 ") or info.instanceCount (%" PRIu32 ") nonzero.",
+                            pCreateInfo->compactedSize, pCreateInfo->info.geometryCount, pCreateInfo->info.instanceCount);
+        }
+    }
+
+    return skip;
+}
diff --git a/layers/stateless_validation.h b/layers/stateless_validation.h
index cb4daa8..b5f2fda 100644
--- a/layers/stateless_validation.h
+++ b/layers/stateless_validation.h
@@ -1047,5 +1047,10 @@
                                                                   uint32_t *pPropertyCount, VkExtensionProperties *pProperties);
     bool manual_PreCallValidateAllocateMemory(VkDevice device, const VkMemoryAllocateInfo *pAllocateInfo,
                                               const VkAllocationCallbacks *pAllocator, VkDeviceMemory *pMemory);
+
+    bool manual_PreCallValidateCreateAccelerationStructureNV(VkDevice device,
+                                                             const VkAccelerationStructureCreateInfoNV *pCreateInfo,
+                                                             const VkAllocationCallbacks *pAllocator,
+                                                             VkAccelerationStructureNV *pAccelerationStructure);
 #include "parameter_validation.h"
 };  // Class StatelessValidation
diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py
index e8f6dcc..173d8be 100644
--- a/scripts/parameter_validation_generator.py
+++ b/scripts/parameter_validation_generator.py
@@ -174,6 +174,7 @@
             'vkCmdDrawMeshTasksIndirectNV',
             'vkCmdDrawMeshTasksIndirectCountNV',
             'vkAllocateMemory',
+            'vkCreateAccelerationStructureNV',
             ]
 
         # Commands to ignore