layers: Bug #14850, enforce validation for semaphore states

Added creation of driver-side semaphore objects.
diff --git a/icd/intel/queue.h b/icd/intel/queue.h
index bdbe53b..8d2f80b 100644
--- a/icd/intel/queue.h
+++ b/icd/intel/queue.h
@@ -38,6 +38,24 @@
 struct intel_dev;
 struct intel_fence;
 
+struct intel_semaphore {
+    struct intel_obj obj;
+
+    int references;
+};
+
+static inline struct intel_semaphore *intel_semaphore(VkSemaphore semaphore)
+{
+    return *(struct intel_semaphore **) &semaphore;
+}
+
+static inline struct intel_semaphore *intel_semaphore_from_obj(struct intel_obj *obj)
+{
+    return (struct intel_semaphore *) obj;
+}
+
+void intel_semaphore_destroy(struct intel_semaphore *semaphore);
+
 struct intel_queue {
     struct intel_base base;
 
@@ -65,4 +83,8 @@
 
 VkResult intel_queue_wait(struct intel_queue *queue, int64_t timeout);
 
+VkResult intel_semaphore_create(struct intel_dev *dev,
+                                const VkSemaphoreCreateInfo *info,
+                                struct intel_semaphore **semaphore_ret);
+
 #endif /* QUEUE_H */