About Social Code
aboutsummaryrefslogtreecommitdiff
path: root/src/kosmickrisp/vulkan/kk_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kosmickrisp/vulkan/kk_buffer.h')
-rw-r--r--src/kosmickrisp/vulkan/kk_buffer.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/kosmickrisp/vulkan/kk_buffer.h b/src/kosmickrisp/vulkan/kk_buffer.h
new file mode 100644
index 00000000000..1d9744678b6
--- /dev/null
+++ b/src/kosmickrisp/vulkan/kk_buffer.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright © 2022 Collabora Ltd. and Red Hat Inc.
+ * Copyright 2025 LunarG, Inc.
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: MIT
+ */
+
+#ifndef KK_BUFFER_H
+#define KK_BUFFER_H 1
+
+#include "kk_device_memory.h"
+#include "kk_private.h"
+
+#include "kosmickrisp/bridge/mtl_types.h"
+
+#include "vk_buffer.h"
+
+struct kk_buffer {
+ struct vk_buffer vk;
+ mtl_buffer *mtl_handle;
+};
+
+VK_DEFINE_NONDISP_HANDLE_CASTS(kk_buffer, vk.base, VkBuffer,
+ VK_OBJECT_TYPE_BUFFER)
+
+static inline struct kk_addr_range
+kk_buffer_addr_range(const struct kk_buffer *buffer, uint64_t offset,
+ uint64_t range)
+{
+ if (buffer == NULL)
+ return (struct kk_addr_range){.range = 0};
+
+ return (struct kk_addr_range){
+ .addr = vk_buffer_address(&buffer->vk, offset),
+ .range = vk_buffer_range(&buffer->vk, offset, range),
+ };
+}
+
+static inline mtl_resource *
+kk_buffer_to_mtl_resource(const struct kk_buffer *buffer)
+{
+ if (buffer != NULL) {
+ return (mtl_resource *)buffer->mtl_handle;
+ }
+ return NULL;
+}
+
+#endif // KK_BUFFER_H