From c4c09464ce8240ed65efc99fe3894194f132da6d Mon Sep 17 00:00:00 2001 From: Ryan Neph Date: Mon, 20 Mar 2023 10:15:09 -0700 Subject: [PATCH] venus: update to latest protocol for ringMonitoring Signed-off-by: Ryan Neph Part-of: --- src/virtio/venus-protocol/vn_protocol_driver.h | 2 +- .../venus-protocol/vn_protocol_driver_defines.h | 9 +++ .../venus-protocol/vn_protocol_driver_transport.h | 90 +++++++++++++++++++++- 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/src/virtio/venus-protocol/vn_protocol_driver.h b/src/virtio/venus-protocol/vn_protocol_driver.h index 83b4fcf..2e51998 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-8127c731. */ +/* This file is generated by venus-protocol git-0b377c5a. */ /* * Copyright 2020 Google LLC diff --git a/src/virtio/venus-protocol/vn_protocol_driver_defines.h b/src/virtio/venus-protocol/vn_protocol_driver_defines.h index 8e05b3c..208766c 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_defines.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_defines.h @@ -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 { diff --git a/src/virtio/venus-protocol/vn_protocol_driver_transport.h b/src/virtio/venus-protocol/vn_protocol_driver_transport.h index dcc87fd..3457882 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_transport.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_transport.h @@ -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); } -- 2.7.4