venus: update to latest protocol for ringMonitoring
authorRyan Neph <ryanneph@google.com>
Mon, 20 Mar 2023 17:15:09 +0000 (10:15 -0700)
committerMarge Bot <emma+marge@anholt.net>
Fri, 24 Mar 2023 23:27:53 +0000 (23:27 +0000)
Signed-off-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22036>

src/virtio/venus-protocol/vn_protocol_driver.h
src/virtio/venus-protocol/vn_protocol_driver_defines.h
src/virtio/venus-protocol/vn_protocol_driver_transport.h

index 83b4fcf..2e51998 100644 (file)
@@ -1,4 +1,4 @@
-/* This file is generated by venus-protocol git-8127c731. */
+/* This file is generated by venus-protocol git-0b377c5a. */
 
 /*
  * Copyright 2020 Google LLC
index 8e05b3c..208766c 100644 (file)
@@ -21,6 +21,7 @@
 #define VK_STRUCTURE_TYPE_MEMORY_RESOURCE_ALLOCATION_SIZE_PROPERTIES_100000_MESA ((VkStructureType)1000384003)
 #define VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_RESOURCE_INFO_100000_MESA ((VkStructureType)1000384004)
 #define VK_STRUCTURE_TYPE_DEVICE_QUEUE_TIMELINE_INFO_MESA ((VkStructureType)1000384005)
+#define VK_STRUCTURE_TYPE_RING_MONITOR_INFO_MESA ((VkStructureType)1000384006)
 
 typedef enum VkCommandTypeEXT {
     VK_COMMAND_TYPE_vkCreateInstance_EXT = 0,
@@ -366,6 +367,7 @@ typedef enum VkRingStatusFlagBitsMESA {
     VK_RING_STATUS_NONE_MESA = 0,
     VK_RING_STATUS_IDLE_BIT_MESA = 0x00000001,
     VK_RING_STATUS_FATAL_BIT_MESA = 0x00000002,
+    VK_RING_STATUS_ALIVE_BIT_MESA = 0x00000004,
 } VkRingStatusFlagBitsMESA;
 
 typedef VkFlags VkCommandFlagsEXT;
@@ -406,6 +408,12 @@ typedef struct VkRingCreateInfoMESA {
     size_t extraSize;
 } VkRingCreateInfoMESA;
 
+typedef struct VkRingMonitorInfoMESA {
+    VkStructureType sType;
+    const void* pNext;
+    uint32_t maxReportingPeriodMicroseconds;
+} VkRingMonitorInfoMESA;
+
 typedef struct VkMemoryResourcePropertiesMESA {
     VkStructureType sType;
     void* pNext;
@@ -424,6 +432,7 @@ typedef struct VkVenusExperimentalFeatures100000MESA {
     VkBool32 largeRing;
     VkBool32 syncFdFencing;
     VkBool32 asyncRoundtrip;
+    VkBool32 ringMonitoring;
 } VkVenusExperimentalFeatures100000MESA;
 
 typedef struct VkMemoryResourceAllocationSizeProperties100000MESA {
index dcc87fd..3457882 100644 (file)
@@ -49,12 +49,82 @@ vn_encode_VkCommandStreamDependencyMESA(struct vn_cs_encoder *enc, const VkComma
     vn_encode_uint32_t(enc, &val->dstCommandStream);
 }
 
+/* struct VkRingMonitorInfoMESA chain */
+
+static inline size_t
+vn_sizeof_VkRingMonitorInfoMESA_pnext(const void *val)
+{
+    /* no known/supported struct */
+    return vn_sizeof_simple_pointer(NULL);
+}
+
+static inline size_t
+vn_sizeof_VkRingMonitorInfoMESA_self(const VkRingMonitorInfoMESA *val)
+{
+    size_t size = 0;
+    /* skip val->{sType,pNext} */
+    size += vn_sizeof_uint32_t(&val->maxReportingPeriodMicroseconds);
+    return size;
+}
+
+static inline size_t
+vn_sizeof_VkRingMonitorInfoMESA(const VkRingMonitorInfoMESA *val)
+{
+    size_t size = 0;
+
+    size += vn_sizeof_VkStructureType(&val->sType);
+    size += vn_sizeof_VkRingMonitorInfoMESA_pnext(val->pNext);
+    size += vn_sizeof_VkRingMonitorInfoMESA_self(val);
+
+    return size;
+}
+
+static inline void
+vn_encode_VkRingMonitorInfoMESA_pnext(struct vn_cs_encoder *enc, const void *val)
+{
+    /* no known/supported struct */
+    vn_encode_simple_pointer(enc, NULL);
+}
+
+static inline void
+vn_encode_VkRingMonitorInfoMESA_self(struct vn_cs_encoder *enc, const VkRingMonitorInfoMESA *val)
+{
+    /* skip val->{sType,pNext} */
+    vn_encode_uint32_t(enc, &val->maxReportingPeriodMicroseconds);
+}
+
+static inline void
+vn_encode_VkRingMonitorInfoMESA(struct vn_cs_encoder *enc, const VkRingMonitorInfoMESA *val)
+{
+    assert(val->sType == VK_STRUCTURE_TYPE_RING_MONITOR_INFO_MESA);
+    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_RING_MONITOR_INFO_MESA });
+    vn_encode_VkRingMonitorInfoMESA_pnext(enc, val->pNext);
+    vn_encode_VkRingMonitorInfoMESA_self(enc, val);
+}
+
 /* struct VkRingCreateInfoMESA chain */
 
 static inline size_t
 vn_sizeof_VkRingCreateInfoMESA_pnext(const void *val)
 {
-    /* no known/supported struct */
+    const VkBaseInStructure *pnext = val;
+    size_t size = 0;
+
+    while (pnext) {
+        switch ((int32_t)pnext->sType) {
+        case VK_STRUCTURE_TYPE_RING_MONITOR_INFO_MESA:
+            size += vn_sizeof_simple_pointer(pnext);
+            size += vn_sizeof_VkStructureType(&pnext->sType);
+            size += vn_sizeof_VkRingCreateInfoMESA_pnext(pnext->pNext);
+            size += vn_sizeof_VkRingMonitorInfoMESA_self((const VkRingMonitorInfoMESA *)pnext);
+            return size;
+        default:
+            /* ignore unknown/unsupported struct */
+            break;
+        }
+        pnext = pnext->pNext;
+    }
+
     return vn_sizeof_simple_pointer(NULL);
 }
 
@@ -93,7 +163,23 @@ vn_sizeof_VkRingCreateInfoMESA(const VkRingCreateInfoMESA *val)
 static inline void
 vn_encode_VkRingCreateInfoMESA_pnext(struct vn_cs_encoder *enc, const void *val)
 {
-    /* no known/supported struct */
+    const VkBaseInStructure *pnext = val;
+
+    while (pnext) {
+        switch ((int32_t)pnext->sType) {
+        case VK_STRUCTURE_TYPE_RING_MONITOR_INFO_MESA:
+            vn_encode_simple_pointer(enc, pnext);
+            vn_encode_VkStructureType(enc, &pnext->sType);
+            vn_encode_VkRingCreateInfoMESA_pnext(enc, pnext->pNext);
+            vn_encode_VkRingMonitorInfoMESA_self(enc, (const VkRingMonitorInfoMESA *)pnext);
+            return;
+        default:
+            /* ignore unknown/unsupported struct */
+            break;
+        }
+        pnext = pnext->pNext;
+    }
+
     vn_encode_simple_pointer(enc, NULL);
 }