Mesa (main): venus: venus-protocol groundwork to VK_EXT_custom_border_color

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Feb 17 21:11:28 UTC 2022


Module: Mesa
Branch: main
Commit: 5252c6c009fd15f7b4956a562fac0be933412b82
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5252c6c009fd15f7b4956a562fac0be933412b82

Author: Igor Torrente <igor.torrente at collabora.com>
Date:   Mon Feb  7 12:22:48 2022 -0300

venus: venus-protocol groundwork to VK_EXT_custom_border_color

These are the changes automatically generated from the venus-protocol
repository.

Signed-off-by: Igor Torrente <igor.torrente at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15026>

---

 src/virtio/venus-protocol/vn_protocol_driver.h     |   2 +-
 .../vn_protocol_driver_command_buffer.h            |  61 ----
 .../venus-protocol/vn_protocol_driver_device.h     | 306 +++++++++++++++++++++
 .../venus-protocol/vn_protocol_driver_info.h       | 155 +++++------
 .../venus-protocol/vn_protocol_driver_sampler.h    |  67 +++++
 .../venus-protocol/vn_protocol_driver_structs.h    |  61 ++++
 6 files changed, 513 insertions(+), 139 deletions(-)

diff --git a/src/virtio/venus-protocol/vn_protocol_driver.h b/src/virtio/venus-protocol/vn_protocol_driver.h
index 29a4ae3f578..edd562d42cd 100644
--- a/src/virtio/venus-protocol/vn_protocol_driver.h
+++ b/src/virtio/venus-protocol/vn_protocol_driver.h
@@ -1,4 +1,4 @@
-/* This file is generated by venus-protocol git-0048ccc3. */
+/* This file is generated by venus-protocol git-e0866cb3. */
 
 /*
  * Copyright 2020 Google LLC
diff --git a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h
index 6e86b693c93..1bb1f25700e 100644
--- a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h
+++ b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h
@@ -673,67 +673,6 @@ vn_encode_VkBufferImageCopy(struct vn_cs_encoder *enc, const VkBufferImageCopy *
     vn_encode_VkExtent3D(enc, &val->imageExtent);
 }
 
-/* union VkClearColorValue */
-
-static inline size_t
-vn_sizeof_VkClearColorValue_tag(const VkClearColorValue *val, uint32_t tag)
-{
-    size_t size = vn_sizeof_uint32_t(&tag);
-    switch (tag) {
-    case 0:
-        size += vn_sizeof_array_size(4);
-    size += vn_sizeof_float_array(val->float32, 4);
-        break;
-    case 1:
-        size += vn_sizeof_array_size(4);
-    size += vn_sizeof_int32_t_array(val->int32, 4);
-        break;
-    case 2:
-        size += vn_sizeof_array_size(4);
-    size += vn_sizeof_uint32_t_array(val->uint32, 4);
-        break;
-    default:
-        assert(false);
-        break;
-    }
-    return size;
-}
-
-static inline size_t
-vn_sizeof_VkClearColorValue(const VkClearColorValue *val)
-{
-    return vn_sizeof_VkClearColorValue_tag(val, 2);
-}
-
-static inline void
-vn_encode_VkClearColorValue_tag(struct vn_cs_encoder *enc, const VkClearColorValue *val, uint32_t tag)
-{
-    vn_encode_uint32_t(enc, &tag);
-    switch (tag) {
-    case 0:
-        vn_encode_array_size(enc, 4);
-    vn_encode_float_array(enc, val->float32, 4);
-        break;
-    case 1:
-        vn_encode_array_size(enc, 4);
-    vn_encode_int32_t_array(enc, val->int32, 4);
-        break;
-    case 2:
-        vn_encode_array_size(enc, 4);
-    vn_encode_uint32_t_array(enc, val->uint32, 4);
-        break;
-    default:
-        assert(false);
-        break;
-    }
-}
-
-static inline void
-vn_encode_VkClearColorValue(struct vn_cs_encoder *enc, const VkClearColorValue *val)
-{
-    vn_encode_VkClearColorValue_tag(enc, val, 2); /* union with default tag */
-}
-
 /* struct VkClearDepthStencilValue */
 
 static inline size_t
diff --git a/src/virtio/venus-protocol/vn_protocol_driver_device.h b/src/virtio/venus-protocol/vn_protocol_driver_device.h
index 86ee1a4b6a6..80bef89c2d6 100644
--- a/src/virtio/venus-protocol/vn_protocol_driver_device.h
+++ b/src/virtio/venus-protocol/vn_protocol_driver_device.h
@@ -5887,6 +5887,142 @@ vn_encode_VkPhysicalDeviceVulkan13Features_partial(struct vn_cs_encoder *enc, co
     vn_encode_VkPhysicalDeviceVulkan13Features_self_partial(enc, val);
 }
 
+/* struct VkPhysicalDeviceCustomBorderColorFeaturesEXT chain */
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext(const void *val)
+{
+    /* no known/supported struct */
+    return vn_sizeof_simple_pointer(NULL);
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    size_t size = 0;
+    /* skip val->{sType,pNext} */
+    size += vn_sizeof_VkBool32(&val->customBorderColors);
+    size += vn_sizeof_VkBool32(&val->customBorderColorWithoutFormat);
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT(const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    size_t size = 0;
+
+    size += vn_sizeof_VkStructureType(&val->sType);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext(val->pNext);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(val);
+
+    return size;
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext(struct vn_cs_encoder *enc, const void *val)
+{
+    /* no known/supported struct */
+    vn_encode_simple_pointer(enc, NULL);
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(struct vn_cs_encoder *enc, const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    /* skip val->{sType,pNext} */
+    vn_encode_VkBool32(enc, &val->customBorderColors);
+    vn_encode_VkBool32(enc, &val->customBorderColorWithoutFormat);
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT(struct vn_cs_encoder *enc, const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT);
+    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT });
+    vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext(enc, val->pNext);
+    vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(enc, val);
+}
+
+static inline void
+vn_decode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext(struct vn_cs_decoder *dec, const void *val)
+{
+    /* no known/supported struct */
+    if (vn_decode_simple_pointer(dec))
+        assert(false);
+}
+
+static inline void
+vn_decode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(struct vn_cs_decoder *dec, VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    /* skip val->{sType,pNext} */
+    vn_decode_VkBool32(dec, &val->customBorderColors);
+    vn_decode_VkBool32(dec, &val->customBorderColorWithoutFormat);
+}
+
+static inline void
+vn_decode_VkPhysicalDeviceCustomBorderColorFeaturesEXT(struct vn_cs_decoder *dec, VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    VkStructureType stype;
+    vn_decode_VkStructureType(dec, &stype);
+    assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT);
+
+    assert(val->sType == stype);
+    vn_decode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext(dec, val->pNext);
+    vn_decode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(dec, val);
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext_partial(const void *val)
+{
+    /* no known/supported struct */
+    return vn_sizeof_simple_pointer(NULL);
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self_partial(const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    size_t size = 0;
+    /* skip val->{sType,pNext} */
+    /* skip val->customBorderColors */
+    /* skip val->customBorderColorWithoutFormat */
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_partial(const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    size_t size = 0;
+
+    size += vn_sizeof_VkStructureType(&val->sType);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext_partial(val->pNext);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self_partial(val);
+
+    return size;
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext_partial(struct vn_cs_encoder *enc, const void *val)
+{
+    /* no known/supported struct */
+    vn_encode_simple_pointer(enc, NULL);
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    /* skip val->{sType,pNext} */
+    /* skip val->customBorderColors */
+    /* skip val->customBorderColorWithoutFormat */
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceCustomBorderColorFeaturesEXT *val)
+{
+    assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT);
+    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT });
+    vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_pnext_partial(enc, val->pNext);
+    vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self_partial(enc, val);
+}
+
 /* struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT chain */
 
 static inline size_t
@@ -7408,6 +7544,12 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext(const void *val)
             size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext);
             size += vn_sizeof_VkPhysicalDeviceVulkan13Features_self((const VkPhysicalDeviceVulkan13Features *)pnext);
             return size;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext(pnext->pNext);
+            size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self((const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+            return size;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
             size += vn_sizeof_simple_pointer(pnext);
             size += vn_sizeof_VkStructureType(&pnext->sType);
@@ -7692,6 +7834,12 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_encoder *enc, const void
             vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext);
             vn_encode_VkPhysicalDeviceVulkan13Features_self(enc, (const VkPhysicalDeviceVulkan13Features *)pnext);
             return;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+            vn_encode_simple_pointer(enc, pnext);
+            vn_encode_VkStructureType(enc, &pnext->sType);
+            vn_encode_VkPhysicalDeviceFeatures2_pnext(enc, pnext->pNext);
+            vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(enc, (const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+            return;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
             vn_encode_simple_pointer(enc, pnext);
             vn_encode_VkStructureType(enc, &pnext->sType);
@@ -7919,6 +8067,10 @@ vn_decode_VkPhysicalDeviceFeatures2_pnext(struct vn_cs_decoder *dec, const void
         vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext);
         vn_decode_VkPhysicalDeviceVulkan13Features_self(dec, (VkPhysicalDeviceVulkan13Features *)pnext);
         break;
+    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+        vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext);
+        vn_decode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(dec, (VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+        break;
     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
         vn_decode_VkPhysicalDeviceFeatures2_pnext(dec, pnext->pNext);
         vn_decode_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT_self(dec, (VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)pnext);
@@ -8178,6 +8330,12 @@ vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(const void *val)
             size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext);
             size += vn_sizeof_VkPhysicalDeviceVulkan13Features_self_partial((const VkPhysicalDeviceVulkan13Features *)pnext);
             return size;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkPhysicalDeviceFeatures2_pnext_partial(pnext->pNext);
+            size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self_partial((const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+            return size;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
             size += vn_sizeof_simple_pointer(pnext);
             size += vn_sizeof_VkStructureType(&pnext->sType);
@@ -8462,6 +8620,12 @@ vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(struct vn_cs_encoder *enc, con
             vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext);
             vn_encode_VkPhysicalDeviceVulkan13Features_self_partial(enc, (const VkPhysicalDeviceVulkan13Features *)pnext);
             return;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+            vn_encode_simple_pointer(enc, pnext);
+            vn_encode_VkStructureType(enc, &pnext->sType);
+            vn_encode_VkPhysicalDeviceFeatures2_pnext_partial(enc, pnext->pNext);
+            vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self_partial(enc, (const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+            return;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
             vn_encode_simple_pointer(enc, pnext);
             vn_encode_VkStructureType(enc, &pnext->sType);
@@ -8829,6 +8993,12 @@ vn_sizeof_VkDeviceCreateInfo_pnext(const void *val)
             size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext);
             size += vn_sizeof_VkPhysicalDeviceVulkan13Features_self((const VkPhysicalDeviceVulkan13Features *)pnext);
             return size;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkDeviceCreateInfo_pnext(pnext->pNext);
+            size += vn_sizeof_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self((const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+            return size;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
             size += vn_sizeof_simple_pointer(pnext);
             size += vn_sizeof_VkStructureType(&pnext->sType);
@@ -9164,6 +9334,12 @@ vn_encode_VkDeviceCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
             vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext);
             vn_encode_VkPhysicalDeviceVulkan13Features_self(enc, (const VkPhysicalDeviceVulkan13Features *)pnext);
             return;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
+            vn_encode_simple_pointer(enc, pnext);
+            vn_encode_VkStructureType(enc, &pnext->sType);
+            vn_encode_VkDeviceCreateInfo_pnext(enc, pnext->pNext);
+            vn_encode_VkPhysicalDeviceCustomBorderColorFeaturesEXT_self(enc, (const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)pnext);
+            return;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
             vn_encode_simple_pointer(enc, pnext);
             vn_encode_VkStructureType(enc, &pnext->sType);
@@ -12252,6 +12428,114 @@ vn_encode_VkPhysicalDeviceVulkan13Properties_partial(struct vn_cs_encoder *enc,
     vn_encode_VkPhysicalDeviceVulkan13Properties_self_partial(enc, val);
 }
 
+/* struct VkPhysicalDeviceCustomBorderColorPropertiesEXT chain */
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext(const void *val)
+{
+    /* no known/supported struct */
+    return vn_sizeof_simple_pointer(NULL);
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self(const VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    size_t size = 0;
+    /* skip val->{sType,pNext} */
+    size += vn_sizeof_uint32_t(&val->maxCustomBorderColorSamplers);
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT(const VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    size_t size = 0;
+
+    size += vn_sizeof_VkStructureType(&val->sType);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext(val->pNext);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self(val);
+
+    return size;
+}
+
+static inline void
+vn_decode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext(struct vn_cs_decoder *dec, const void *val)
+{
+    /* no known/supported struct */
+    if (vn_decode_simple_pointer(dec))
+        assert(false);
+}
+
+static inline void
+vn_decode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self(struct vn_cs_decoder *dec, VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    /* skip val->{sType,pNext} */
+    vn_decode_uint32_t(dec, &val->maxCustomBorderColorSamplers);
+}
+
+static inline void
+vn_decode_VkPhysicalDeviceCustomBorderColorPropertiesEXT(struct vn_cs_decoder *dec, VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    VkStructureType stype;
+    vn_decode_VkStructureType(dec, &stype);
+    assert(stype == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT);
+
+    assert(val->sType == stype);
+    vn_decode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext(dec, val->pNext);
+    vn_decode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self(dec, val);
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext_partial(const void *val)
+{
+    /* no known/supported struct */
+    return vn_sizeof_simple_pointer(NULL);
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self_partial(const VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    size_t size = 0;
+    /* skip val->{sType,pNext} */
+    /* skip val->maxCustomBorderColorSamplers */
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_partial(const VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    size_t size = 0;
+
+    size += vn_sizeof_VkStructureType(&val->sType);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext_partial(val->pNext);
+    size += vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self_partial(val);
+
+    return size;
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext_partial(struct vn_cs_encoder *enc, const void *val)
+{
+    /* no known/supported struct */
+    vn_encode_simple_pointer(enc, NULL);
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    /* skip val->{sType,pNext} */
+    /* skip val->maxCustomBorderColorSamplers */
+}
+
+static inline void
+vn_encode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_partial(struct vn_cs_encoder *enc, const VkPhysicalDeviceCustomBorderColorPropertiesEXT *val)
+{
+    assert(val->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT);
+    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT });
+    vn_encode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_pnext_partial(enc, val->pNext);
+    vn_encode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self_partial(enc, val);
+}
+
 /* struct VkPhysicalDeviceShaderIntegerDotProductProperties chain */
 
 static inline size_t
@@ -12606,6 +12890,12 @@ vn_sizeof_VkPhysicalDeviceProperties2_pnext(const void *val)
             size += vn_sizeof_VkPhysicalDeviceProperties2_pnext(pnext->pNext);
             size += vn_sizeof_VkPhysicalDeviceVulkan13Properties_self((const VkPhysicalDeviceVulkan13Properties *)pnext);
             return size;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkPhysicalDeviceProperties2_pnext(pnext->pNext);
+            size += vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self((const VkPhysicalDeviceCustomBorderColorPropertiesEXT *)pnext);
+            return size;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:
             size += vn_sizeof_simple_pointer(pnext);
             size += vn_sizeof_VkStructureType(&pnext->sType);
@@ -12740,6 +13030,10 @@ vn_decode_VkPhysicalDeviceProperties2_pnext(struct vn_cs_decoder *dec, const voi
         vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext);
         vn_decode_VkPhysicalDeviceVulkan13Properties_self(dec, (VkPhysicalDeviceVulkan13Properties *)pnext);
         break;
+    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
+        vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext);
+        vn_decode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self(dec, (VkPhysicalDeviceCustomBorderColorPropertiesEXT *)pnext);
+        break;
     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:
         vn_decode_VkPhysicalDeviceProperties2_pnext(dec, pnext->pNext);
         vn_decode_VkPhysicalDeviceShaderIntegerDotProductProperties_self(dec, (VkPhysicalDeviceShaderIntegerDotProductProperties *)pnext);
@@ -12897,6 +13191,12 @@ vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(const void *val)
             size += vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(pnext->pNext);
             size += vn_sizeof_VkPhysicalDeviceVulkan13Properties_self_partial((const VkPhysicalDeviceVulkan13Properties *)pnext);
             return size;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkPhysicalDeviceProperties2_pnext_partial(pnext->pNext);
+            size += vn_sizeof_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self_partial((const VkPhysicalDeviceCustomBorderColorPropertiesEXT *)pnext);
+            return size;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:
             size += vn_sizeof_simple_pointer(pnext);
             size += vn_sizeof_VkStructureType(&pnext->sType);
@@ -13061,6 +13361,12 @@ vn_encode_VkPhysicalDeviceProperties2_pnext_partial(struct vn_cs_encoder *enc, c
             vn_encode_VkPhysicalDeviceProperties2_pnext_partial(enc, pnext->pNext);
             vn_encode_VkPhysicalDeviceVulkan13Properties_self_partial(enc, (const VkPhysicalDeviceVulkan13Properties *)pnext);
             return;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
+            vn_encode_simple_pointer(enc, pnext);
+            vn_encode_VkStructureType(enc, &pnext->sType);
+            vn_encode_VkPhysicalDeviceProperties2_pnext_partial(enc, pnext->pNext);
+            vn_encode_VkPhysicalDeviceCustomBorderColorPropertiesEXT_self_partial(enc, (const VkPhysicalDeviceCustomBorderColorPropertiesEXT *)pnext);
+            return;
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:
             vn_encode_simple_pointer(enc, pnext);
             vn_encode_VkStructureType(enc, &pnext->sType);
diff --git a/src/virtio/venus-protocol/vn_protocol_driver_info.h b/src/virtio/venus-protocol/vn_protocol_driver_info.h
index 764f1a98d2e..2eb7f8748bb 100644
--- a/src/virtio/venus-protocol/vn_protocol_driver_info.h
+++ b/src/virtio/venus-protocol/vn_protocol_driver_info.h
@@ -38,87 +38,88 @@ vn_info_extension_compare(const void *name, const void *ext)
 static inline const struct vn_info_extension *
 vn_info_extension_get(const char *name)
 {
-   static const struct vn_info_extension vn_info_extensions[77] = {
+   static const struct vn_info_extension vn_info_extensions[78] = {
       { 0, "VK_EXT_4444_formats", 1 },
       { 1, "VK_EXT_command_serialization", 0 },
-      { 2, "VK_EXT_descriptor_indexing", 2 },
-      { 3, "VK_EXT_extended_dynamic_state", 1 },
-      { 4, "VK_EXT_extended_dynamic_state2", 1 },
-      { 5, "VK_EXT_external_memory_dma_buf", 1 },
-      { 6, "VK_EXT_host_query_reset", 1 },
-      { 7, "VK_EXT_image_drm_format_modifier", 2 },
-      { 8, "VK_EXT_image_robustness", 1 },
-      { 9, "VK_EXT_inline_uniform_block", 1 },
-      { 10, "VK_EXT_pipeline_creation_cache_control", 3 },
-      { 11, "VK_EXT_pipeline_creation_feedback", 1 },
-      { 12, "VK_EXT_private_data", 1 },
-      { 13, "VK_EXT_queue_family_foreign", 1 },
-      { 14, "VK_EXT_sampler_filter_minmax", 2 },
-      { 15, "VK_EXT_scalar_block_layout", 1 },
-      { 16, "VK_EXT_separate_stencil_usage", 1 },
-      { 17, "VK_EXT_shader_demote_to_helper_invocation", 1 },
-      { 18, "VK_EXT_shader_viewport_index_layer", 1 },
-      { 19, "VK_EXT_subgroup_size_control", 2 },
-      { 20, "VK_EXT_texel_buffer_alignment", 1 },
-      { 21, "VK_EXT_texture_compression_astc_hdr", 1 },
-      { 22, "VK_EXT_tooling_info", 1 },
-      { 23, "VK_EXT_transform_feedback", 1 },
-      { 24, "VK_EXT_ycbcr_2plane_444_formats", 1 },
-      { 25, "VK_KHR_16bit_storage", 1 },
-      { 26, "VK_KHR_8bit_storage", 1 },
-      { 27, "VK_KHR_bind_memory2", 1 },
-      { 28, "VK_KHR_buffer_device_address", 1 },
-      { 29, "VK_KHR_copy_commands2", 1 },
-      { 30, "VK_KHR_create_renderpass2", 1 },
-      { 31, "VK_KHR_dedicated_allocation", 3 },
-      { 32, "VK_KHR_depth_stencil_resolve", 1 },
-      { 33, "VK_KHR_descriptor_update_template", 1 },
-      { 34, "VK_KHR_device_group", 4 },
-      { 35, "VK_KHR_device_group_creation", 1 },
-      { 36, "VK_KHR_draw_indirect_count", 1 },
-      { 37, "VK_KHR_driver_properties", 1 },
-      { 38, "VK_KHR_dynamic_rendering", 1 },
-      { 39, "VK_KHR_external_fence", 1 },
-      { 40, "VK_KHR_external_fence_capabilities", 1 },
-      { 41, "VK_KHR_external_memory", 1 },
-      { 42, "VK_KHR_external_memory_capabilities", 1 },
-      { 43, "VK_KHR_external_memory_fd", 1 },
-      { 44, "VK_KHR_external_semaphore", 1 },
-      { 45, "VK_KHR_external_semaphore_capabilities", 1 },
-      { 46, "VK_KHR_format_feature_flags2", 1 },
-      { 47, "VK_KHR_get_memory_requirements2", 1 },
-      { 48, "VK_KHR_get_physical_device_properties2", 2 },
-      { 49, "VK_KHR_image_format_list", 1 },
-      { 50, "VK_KHR_imageless_framebuffer", 1 },
-      { 51, "VK_KHR_maintenance1", 2 },
-      { 52, "VK_KHR_maintenance2", 1 },
-      { 53, "VK_KHR_maintenance3", 1 },
-      { 54, "VK_KHR_maintenance4", 2 },
-      { 55, "VK_KHR_multiview", 1 },
-      { 56, "VK_KHR_relaxed_block_layout", 1 },
-      { 57, "VK_KHR_sampler_mirror_clamp_to_edge", 3 },
-      { 58, "VK_KHR_sampler_ycbcr_conversion", 14 },
-      { 59, "VK_KHR_separate_depth_stencil_layouts", 1 },
-      { 60, "VK_KHR_shader_atomic_int64", 1 },
-      { 61, "VK_KHR_shader_draw_parameters", 1 },
-      { 62, "VK_KHR_shader_float16_int8", 1 },
-      { 63, "VK_KHR_shader_float_controls", 4 },
-      { 64, "VK_KHR_shader_integer_dot_product", 1 },
-      { 65, "VK_KHR_shader_non_semantic_info", 1 },
-      { 66, "VK_KHR_shader_subgroup_extended_types", 1 },
-      { 67, "VK_KHR_shader_terminate_invocation", 1 },
-      { 68, "VK_KHR_spirv_1_4", 1 },
-      { 69, "VK_KHR_storage_buffer_storage_class", 1 },
-      { 70, "VK_KHR_synchronization2", 1 },
-      { 71, "VK_KHR_timeline_semaphore", 2 },
-      { 72, "VK_KHR_uniform_buffer_standard_layout", 1 },
-      { 73, "VK_KHR_variable_pointers", 1 },
-      { 74, "VK_KHR_vulkan_memory_model", 3 },
-      { 75, "VK_KHR_zero_initialize_workgroup_memory", 1 },
-      { 76, "VK_MESA_venus_protocol", 100000 },
+      { 2, "VK_EXT_custom_border_color", 12 },
+      { 3, "VK_EXT_descriptor_indexing", 2 },
+      { 4, "VK_EXT_extended_dynamic_state", 1 },
+      { 5, "VK_EXT_extended_dynamic_state2", 1 },
+      { 6, "VK_EXT_external_memory_dma_buf", 1 },
+      { 7, "VK_EXT_host_query_reset", 1 },
+      { 8, "VK_EXT_image_drm_format_modifier", 2 },
+      { 9, "VK_EXT_image_robustness", 1 },
+      { 10, "VK_EXT_inline_uniform_block", 1 },
+      { 11, "VK_EXT_pipeline_creation_cache_control", 3 },
+      { 12, "VK_EXT_pipeline_creation_feedback", 1 },
+      { 13, "VK_EXT_private_data", 1 },
+      { 14, "VK_EXT_queue_family_foreign", 1 },
+      { 15, "VK_EXT_sampler_filter_minmax", 2 },
+      { 16, "VK_EXT_scalar_block_layout", 1 },
+      { 17, "VK_EXT_separate_stencil_usage", 1 },
+      { 18, "VK_EXT_shader_demote_to_helper_invocation", 1 },
+      { 19, "VK_EXT_shader_viewport_index_layer", 1 },
+      { 20, "VK_EXT_subgroup_size_control", 2 },
+      { 21, "VK_EXT_texel_buffer_alignment", 1 },
+      { 22, "VK_EXT_texture_compression_astc_hdr", 1 },
+      { 23, "VK_EXT_tooling_info", 1 },
+      { 24, "VK_EXT_transform_feedback", 1 },
+      { 25, "VK_EXT_ycbcr_2plane_444_formats", 1 },
+      { 26, "VK_KHR_16bit_storage", 1 },
+      { 27, "VK_KHR_8bit_storage", 1 },
+      { 28, "VK_KHR_bind_memory2", 1 },
+      { 29, "VK_KHR_buffer_device_address", 1 },
+      { 30, "VK_KHR_copy_commands2", 1 },
+      { 31, "VK_KHR_create_renderpass2", 1 },
+      { 32, "VK_KHR_dedicated_allocation", 3 },
+      { 33, "VK_KHR_depth_stencil_resolve", 1 },
+      { 34, "VK_KHR_descriptor_update_template", 1 },
+      { 35, "VK_KHR_device_group", 4 },
+      { 36, "VK_KHR_device_group_creation", 1 },
+      { 37, "VK_KHR_draw_indirect_count", 1 },
+      { 38, "VK_KHR_driver_properties", 1 },
+      { 39, "VK_KHR_dynamic_rendering", 1 },
+      { 40, "VK_KHR_external_fence", 1 },
+      { 41, "VK_KHR_external_fence_capabilities", 1 },
+      { 42, "VK_KHR_external_memory", 1 },
+      { 43, "VK_KHR_external_memory_capabilities", 1 },
+      { 44, "VK_KHR_external_memory_fd", 1 },
+      { 45, "VK_KHR_external_semaphore", 1 },
+      { 46, "VK_KHR_external_semaphore_capabilities", 1 },
+      { 47, "VK_KHR_format_feature_flags2", 1 },
+      { 48, "VK_KHR_get_memory_requirements2", 1 },
+      { 49, "VK_KHR_get_physical_device_properties2", 2 },
+      { 50, "VK_KHR_image_format_list", 1 },
+      { 51, "VK_KHR_imageless_framebuffer", 1 },
+      { 52, "VK_KHR_maintenance1", 2 },
+      { 53, "VK_KHR_maintenance2", 1 },
+      { 54, "VK_KHR_maintenance3", 1 },
+      { 55, "VK_KHR_maintenance4", 2 },
+      { 56, "VK_KHR_multiview", 1 },
+      { 57, "VK_KHR_relaxed_block_layout", 1 },
+      { 58, "VK_KHR_sampler_mirror_clamp_to_edge", 3 },
+      { 59, "VK_KHR_sampler_ycbcr_conversion", 14 },
+      { 60, "VK_KHR_separate_depth_stencil_layouts", 1 },
+      { 61, "VK_KHR_shader_atomic_int64", 1 },
+      { 62, "VK_KHR_shader_draw_parameters", 1 },
+      { 63, "VK_KHR_shader_float16_int8", 1 },
+      { 64, "VK_KHR_shader_float_controls", 4 },
+      { 65, "VK_KHR_shader_integer_dot_product", 1 },
+      { 66, "VK_KHR_shader_non_semantic_info", 1 },
+      { 67, "VK_KHR_shader_subgroup_extended_types", 1 },
+      { 68, "VK_KHR_shader_terminate_invocation", 1 },
+      { 69, "VK_KHR_spirv_1_4", 1 },
+      { 70, "VK_KHR_storage_buffer_storage_class", 1 },
+      { 71, "VK_KHR_synchronization2", 1 },
+      { 72, "VK_KHR_timeline_semaphore", 2 },
+      { 73, "VK_KHR_uniform_buffer_standard_layout", 1 },
+      { 74, "VK_KHR_variable_pointers", 1 },
+      { 75, "VK_KHR_vulkan_memory_model", 3 },
+      { 76, "VK_KHR_zero_initialize_workgroup_memory", 1 },
+      { 77, "VK_MESA_venus_protocol", 100000 },
    };
 
-   return bsearch(name, vn_info_extensions, 77,
+   return bsearch(name, vn_info_extensions, 78,
          sizeof(*vn_info_extensions), vn_info_extension_compare);
 }
 
diff --git a/src/virtio/venus-protocol/vn_protocol_driver_sampler.h b/src/virtio/venus-protocol/vn_protocol_driver_sampler.h
index 9bc380abe4b..ac31cb0a7de 100644
--- a/src/virtio/venus-protocol/vn_protocol_driver_sampler.h
+++ b/src/virtio/venus-protocol/vn_protocol_driver_sampler.h
@@ -64,6 +64,61 @@ vn_encode_VkSamplerReductionModeCreateInfo(struct vn_cs_encoder *enc, const VkSa
     vn_encode_VkSamplerReductionModeCreateInfo_self(enc, val);
 }
 
+/* struct VkSamplerCustomBorderColorCreateInfoEXT chain */
+
+static inline size_t
+vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_pnext(const void *val)
+{
+    /* no known/supported struct */
+    return vn_sizeof_simple_pointer(NULL);
+}
+
+static inline size_t
+vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self(const VkSamplerCustomBorderColorCreateInfoEXT *val)
+{
+    size_t size = 0;
+    /* skip val->{sType,pNext} */
+    size += vn_sizeof_VkClearColorValue(&val->customBorderColor);
+    size += vn_sizeof_VkFormat(&val->format);
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT(const VkSamplerCustomBorderColorCreateInfoEXT *val)
+{
+    size_t size = 0;
+
+    size += vn_sizeof_VkStructureType(&val->sType);
+    size += vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_pnext(val->pNext);
+    size += vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self(val);
+
+    return size;
+}
+
+static inline void
+vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val)
+{
+    /* no known/supported struct */
+    vn_encode_simple_pointer(enc, NULL);
+}
+
+static inline void
+vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkSamplerCustomBorderColorCreateInfoEXT *val)
+{
+    /* skip val->{sType,pNext} */
+    vn_encode_VkClearColorValue(enc, &val->customBorderColor);
+    vn_encode_VkFormat(enc, &val->format);
+}
+
+static inline void
+vn_encode_VkSamplerCustomBorderColorCreateInfoEXT(struct vn_cs_encoder *enc, const VkSamplerCustomBorderColorCreateInfoEXT *val)
+{
+    assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT);
+    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT });
+    vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_pnext(enc, val->pNext);
+    vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(enc, val);
+}
+
 /* struct VkSamplerCreateInfo chain */
 
 static inline size_t
@@ -86,6 +141,12 @@ vn_sizeof_VkSamplerCreateInfo_pnext(const void *val)
             size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);
             size += vn_sizeof_VkSamplerReductionModeCreateInfo_self((const VkSamplerReductionModeCreateInfo *)pnext);
             return size;
+        case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);
+            size += vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self((const VkSamplerCustomBorderColorCreateInfoEXT *)pnext);
+            return size;
         default:
             /* ignore unknown/unsupported struct */
             break;
@@ -151,6 +212,12 @@ vn_encode_VkSamplerCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
             vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);
             vn_encode_VkSamplerReductionModeCreateInfo_self(enc, (const VkSamplerReductionModeCreateInfo *)pnext);
             return;
+        case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
+            vn_encode_simple_pointer(enc, pnext);
+            vn_encode_VkStructureType(enc, &pnext->sType);
+            vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);
+            vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(enc, (const VkSamplerCustomBorderColorCreateInfoEXT *)pnext);
+            return;
         default:
             /* ignore unknown/unsupported struct */
             break;
diff --git a/src/virtio/venus-protocol/vn_protocol_driver_structs.h b/src/virtio/venus-protocol/vn_protocol_driver_structs.h
index 9741fe0ce5b..74edb3fc7f0 100644
--- a/src/virtio/venus-protocol/vn_protocol_driver_structs.h
+++ b/src/virtio/venus-protocol/vn_protocol_driver_structs.h
@@ -796,6 +796,67 @@ vn_encode_VkRect2D_partial(struct vn_cs_encoder *enc, const VkRect2D *val)
     vn_encode_VkExtent2D_partial(enc, &val->extent);
 }
 
+/* union VkClearColorValue */
+
+static inline size_t
+vn_sizeof_VkClearColorValue_tag(const VkClearColorValue *val, uint32_t tag)
+{
+    size_t size = vn_sizeof_uint32_t(&tag);
+    switch (tag) {
+    case 0:
+        size += vn_sizeof_array_size(4);
+    size += vn_sizeof_float_array(val->float32, 4);
+        break;
+    case 1:
+        size += vn_sizeof_array_size(4);
+    size += vn_sizeof_int32_t_array(val->int32, 4);
+        break;
+    case 2:
+        size += vn_sizeof_array_size(4);
+    size += vn_sizeof_uint32_t_array(val->uint32, 4);
+        break;
+    default:
+        assert(false);
+        break;
+    }
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkClearColorValue(const VkClearColorValue *val)
+{
+    return vn_sizeof_VkClearColorValue_tag(val, 2);
+}
+
+static inline void
+vn_encode_VkClearColorValue_tag(struct vn_cs_encoder *enc, const VkClearColorValue *val, uint32_t tag)
+{
+    vn_encode_uint32_t(enc, &tag);
+    switch (tag) {
+    case 0:
+        vn_encode_array_size(enc, 4);
+    vn_encode_float_array(enc, val->float32, 4);
+        break;
+    case 1:
+        vn_encode_array_size(enc, 4);
+    vn_encode_int32_t_array(enc, val->int32, 4);
+        break;
+    case 2:
+        vn_encode_array_size(enc, 4);
+    vn_encode_uint32_t_array(enc, val->uint32, 4);
+        break;
+    default:
+        assert(false);
+        break;
+    }
+}
+
+static inline void
+vn_encode_VkClearColorValue(struct vn_cs_encoder *enc, const VkClearColorValue *val)
+{
+    vn_encode_VkClearColorValue_tag(enc, val, 2); /* union with default tag */
+}
+
 /* struct VkMemoryDedicatedRequirements chain */
 
 static inline size_t



More information about the mesa-commit mailing list