venus: update venus-protocol headers
There are some decoder changes. But we mainly want to gain largeRing support. Signed-off-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Ryan Neph <ryanneph@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12568>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* This file is generated by venus-protocol git-0d51970a. */
|
||||
/* This file is generated by venus-protocol git-74c1c432. */
|
||||
|
||||
/*
|
||||
* Copyright 2020 Google LLC
|
||||
|
||||
@@ -317,7 +317,7 @@ vn_decode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_decoder *dec, VkBi
|
||||
const size_t array_size = vn_decode_array_size(dec, val->deviceIndexCount);
|
||||
vn_decode_uint32_t_array(dec, (uint32_t *)val->pDeviceIndices, array_size);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
val->pDeviceIndices = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1315,11 +1315,11 @@ static inline VkResult vn_decode_vkAllocateCommandBuffers_reply(struct vn_cs_dec
|
||||
/* skip device */
|
||||
/* skip pAllocateInfo */
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pAllocateInfo ? pAllocateInfo->commandBufferCount : 0));
|
||||
for (uint32_t i = 0; i < (pAllocateInfo ? pAllocateInfo->commandBufferCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pAllocateInfo ? pAllocateInfo->commandBufferCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkCommandBuffer(dec, &pCommandBuffers[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pCommandBuffers = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -318,6 +318,7 @@ typedef struct VkImportMemoryResourceInfoMESA {
|
||||
typedef struct VkVenusExperimentalFeatures100000MESA {
|
||||
VkBool32 memoryResourceAllocationSize;
|
||||
VkBool32 globalFencing;
|
||||
VkBool32 largeRing;
|
||||
} VkVenusExperimentalFeatures100000MESA;
|
||||
|
||||
typedef struct VkMemoryResourceAllocationSizeProperties100000MESA {
|
||||
|
||||
@@ -463,11 +463,11 @@ static inline VkResult vn_decode_vkAllocateDescriptorSets_reply(struct vn_cs_dec
|
||||
/* skip device */
|
||||
/* skip pAllocateInfo */
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pAllocateInfo ? pAllocateInfo->descriptorSetCount : 0));
|
||||
for (uint32_t i = 0; i < (pAllocateInfo ? pAllocateInfo->descriptorSetCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pAllocateInfo ? pAllocateInfo->descriptorSetCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkDescriptorSet(dec, &pDescriptorSets[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pDescriptorSets = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -549,7 +549,7 @@ vn_sizeof_VkPhysicalDeviceProperties(const VkPhysicalDeviceProperties *val)
|
||||
size += vn_sizeof_uint32_t(&val->deviceID);
|
||||
size += vn_sizeof_VkPhysicalDeviceType(&val->deviceType);
|
||||
size += vn_sizeof_array_size(VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
|
||||
size += vn_sizeof_blob_array(val->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
|
||||
size += vn_sizeof_char_array(val->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
|
||||
size += vn_sizeof_array_size(VK_UUID_SIZE);
|
||||
size += vn_sizeof_uint8_t_array(val->pipelineCacheUUID, VK_UUID_SIZE);
|
||||
size += vn_sizeof_VkPhysicalDeviceLimits(&val->limits);
|
||||
@@ -567,7 +567,7 @@ vn_decode_VkPhysicalDeviceProperties(struct vn_cs_decoder *dec, VkPhysicalDevice
|
||||
vn_decode_VkPhysicalDeviceType(dec, &val->deviceType);
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
|
||||
vn_decode_blob_array(dec, val->deviceName, array_size);
|
||||
vn_decode_char_array(dec, val->deviceName, array_size);
|
||||
}
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_UUID_SIZE);
|
||||
@@ -739,14 +739,14 @@ vn_decode_VkPhysicalDeviceMemoryProperties(struct vn_cs_decoder *dec, VkPhysical
|
||||
{
|
||||
vn_decode_uint32_t(dec, &val->memoryTypeCount);
|
||||
{
|
||||
vn_decode_array_size(dec, VK_MAX_MEMORY_TYPES);
|
||||
for (uint32_t i = 0; i < VK_MAX_MEMORY_TYPES; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, VK_MAX_MEMORY_TYPES);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkMemoryType(dec, &val->memoryTypes[i]);
|
||||
}
|
||||
vn_decode_uint32_t(dec, &val->memoryHeapCount);
|
||||
{
|
||||
vn_decode_array_size(dec, VK_MAX_MEMORY_HEAPS);
|
||||
for (uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, VK_MAX_MEMORY_HEAPS);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkMemoryHeap(dec, &val->memoryHeaps[i]);
|
||||
}
|
||||
}
|
||||
@@ -5630,7 +5630,7 @@ vn_sizeof_VkDeviceCreateInfo_self(const VkDeviceCreateInfo *val)
|
||||
for (uint32_t i = 0; i < val->enabledLayerCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledLayerNames[i]) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->ppEnabledLayerNames[i], string_size);
|
||||
size += vn_sizeof_char_array(val->ppEnabledLayerNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
@@ -5641,7 +5641,7 @@ vn_sizeof_VkDeviceCreateInfo_self(const VkDeviceCreateInfo *val)
|
||||
for (uint32_t i = 0; i < val->enabledExtensionCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledExtensionNames[i]) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->ppEnabledExtensionNames[i], string_size);
|
||||
size += vn_sizeof_char_array(val->ppEnabledExtensionNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
@@ -5844,7 +5844,7 @@ vn_encode_VkDeviceCreateInfo_self(struct vn_cs_encoder *enc, const VkDeviceCreat
|
||||
for (uint32_t i = 0; i < val->enabledLayerCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledLayerNames[i]) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->ppEnabledLayerNames[i], string_size);
|
||||
vn_encode_char_array(enc, val->ppEnabledLayerNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
@@ -5855,7 +5855,7 @@ vn_encode_VkDeviceCreateInfo_self(struct vn_cs_encoder *enc, const VkDeviceCreat
|
||||
for (uint32_t i = 0; i < val->enabledExtensionCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledExtensionNames[i]) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->ppEnabledExtensionNames[i], string_size);
|
||||
vn_encode_char_array(enc, val->ppEnabledExtensionNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
@@ -5931,9 +5931,9 @@ vn_sizeof_VkPhysicalDeviceDriverProperties_self(const VkPhysicalDeviceDriverProp
|
||||
/* skip val->{sType,pNext} */
|
||||
size += vn_sizeof_VkDriverId(&val->driverID);
|
||||
size += vn_sizeof_array_size(VK_MAX_DRIVER_NAME_SIZE);
|
||||
size += vn_sizeof_blob_array(val->driverName, VK_MAX_DRIVER_NAME_SIZE);
|
||||
size += vn_sizeof_char_array(val->driverName, VK_MAX_DRIVER_NAME_SIZE);
|
||||
size += vn_sizeof_array_size(VK_MAX_DRIVER_INFO_SIZE);
|
||||
size += vn_sizeof_blob_array(val->driverInfo, VK_MAX_DRIVER_INFO_SIZE);
|
||||
size += vn_sizeof_char_array(val->driverInfo, VK_MAX_DRIVER_INFO_SIZE);
|
||||
size += vn_sizeof_VkConformanceVersion(&val->conformanceVersion);
|
||||
return size;
|
||||
}
|
||||
@@ -5965,11 +5965,11 @@ vn_decode_VkPhysicalDeviceDriverProperties_self(struct vn_cs_decoder *dec, VkPhy
|
||||
vn_decode_VkDriverId(dec, &val->driverID);
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_DRIVER_NAME_SIZE);
|
||||
vn_decode_blob_array(dec, val->driverName, array_size);
|
||||
vn_decode_char_array(dec, val->driverName, array_size);
|
||||
}
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_DRIVER_INFO_SIZE);
|
||||
vn_decode_blob_array(dec, val->driverInfo, array_size);
|
||||
vn_decode_char_array(dec, val->driverInfo, array_size);
|
||||
}
|
||||
vn_decode_VkConformanceVersion(dec, &val->conformanceVersion);
|
||||
}
|
||||
@@ -7783,9 +7783,9 @@ vn_sizeof_VkPhysicalDeviceVulkan12Properties_self(const VkPhysicalDeviceVulkan12
|
||||
/* skip val->{sType,pNext} */
|
||||
size += vn_sizeof_VkDriverId(&val->driverID);
|
||||
size += vn_sizeof_array_size(VK_MAX_DRIVER_NAME_SIZE);
|
||||
size += vn_sizeof_blob_array(val->driverName, VK_MAX_DRIVER_NAME_SIZE);
|
||||
size += vn_sizeof_char_array(val->driverName, VK_MAX_DRIVER_NAME_SIZE);
|
||||
size += vn_sizeof_array_size(VK_MAX_DRIVER_INFO_SIZE);
|
||||
size += vn_sizeof_blob_array(val->driverInfo, VK_MAX_DRIVER_INFO_SIZE);
|
||||
size += vn_sizeof_char_array(val->driverInfo, VK_MAX_DRIVER_INFO_SIZE);
|
||||
size += vn_sizeof_VkConformanceVersion(&val->conformanceVersion);
|
||||
size += vn_sizeof_VkShaderFloatControlsIndependence(&val->denormBehaviorIndependence);
|
||||
size += vn_sizeof_VkShaderFloatControlsIndependence(&val->roundingModeIndependence);
|
||||
@@ -7865,11 +7865,11 @@ vn_decode_VkPhysicalDeviceVulkan12Properties_self(struct vn_cs_decoder *dec, VkP
|
||||
vn_decode_VkDriverId(dec, &val->driverID);
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_DRIVER_NAME_SIZE);
|
||||
vn_decode_blob_array(dec, val->driverName, array_size);
|
||||
vn_decode_char_array(dec, val->driverName, array_size);
|
||||
}
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_DRIVER_INFO_SIZE);
|
||||
vn_decode_blob_array(dec, val->driverInfo, array_size);
|
||||
vn_decode_char_array(dec, val->driverInfo, array_size);
|
||||
}
|
||||
vn_decode_VkConformanceVersion(dec, &val->conformanceVersion);
|
||||
vn_decode_VkShaderFloatControlsIndependence(dec, &val->denormBehaviorIndependence);
|
||||
@@ -8661,11 +8661,11 @@ vn_decode_VkDrmFormatModifierPropertiesListEXT_self(struct vn_cs_decoder *dec, V
|
||||
/* skip val->{sType,pNext} */
|
||||
vn_decode_uint32_t(dec, &val->drmFormatModifierCount);
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, val->drmFormatModifierCount);
|
||||
for (uint32_t i = 0; i < val->drmFormatModifierCount; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, val->drmFormatModifierCount);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkDrmFormatModifierPropertiesEXT(dec, &val->pDrmFormatModifierProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
val->pDrmFormatModifierProperties = NULL;
|
||||
}
|
||||
}
|
||||
@@ -8694,7 +8694,7 @@ vn_sizeof_VkDrmFormatModifierPropertiesListEXT_self_partial(const VkDrmFormatMod
|
||||
{
|
||||
size_t size = 0;
|
||||
/* skip val->{sType,pNext} */
|
||||
/* skip val->drmFormatModifierCount */
|
||||
/* WA1: size += vn_sizeof_uint32_t(&val->drmFormatModifierCount) */(void)0;
|
||||
if (val->pDrmFormatModifierProperties) {
|
||||
size += vn_sizeof_array_size(val->drmFormatModifierCount);
|
||||
for (uint32_t i = 0; i < val->drmFormatModifierCount; i++)
|
||||
@@ -8728,7 +8728,7 @@ static inline void
|
||||
vn_encode_VkDrmFormatModifierPropertiesListEXT_self_partial(struct vn_cs_encoder *enc, const VkDrmFormatModifierPropertiesListEXT *val)
|
||||
{
|
||||
/* skip val->{sType,pNext} */
|
||||
/* skip val->drmFormatModifierCount */
|
||||
/* WA1: vn_encode_uint32_t(enc, &val->drmFormatModifierCount) */(void)0;
|
||||
if (val->pDrmFormatModifierProperties) {
|
||||
vn_encode_array_size(enc, val->drmFormatModifierCount);
|
||||
for (uint32_t i = 0; i < val->drmFormatModifierCount; i++)
|
||||
@@ -10598,8 +10598,8 @@ vn_decode_VkPhysicalDeviceGroupProperties_self(struct vn_cs_decoder *dec, VkPhys
|
||||
/* skip val->{sType,pNext} */
|
||||
vn_decode_uint32_t(dec, &val->physicalDeviceCount);
|
||||
{
|
||||
vn_decode_array_size(dec, VK_MAX_DEVICE_GROUP_SIZE);
|
||||
for (uint32_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, VK_MAX_DEVICE_GROUP_SIZE);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkPhysicalDevice(dec, &val->physicalDevices[i]);
|
||||
}
|
||||
vn_decode_VkBool32(dec, &val->subsetAllocation);
|
||||
@@ -10810,11 +10810,11 @@ static inline VkResult vn_decode_vkEnumeratePhysicalDevices_reply(struct vn_cs_d
|
||||
pPhysicalDeviceCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPhysicalDeviceCount ? *pPhysicalDeviceCount : 0));
|
||||
for (uint32_t i = 0; i < (pPhysicalDeviceCount ? *pPhysicalDeviceCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPhysicalDeviceCount ? *pPhysicalDeviceCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkPhysicalDevice(dec, &pPhysicalDevices[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pPhysicalDevices = NULL;
|
||||
}
|
||||
|
||||
@@ -10947,11 +10947,11 @@ static inline void vn_decode_vkGetPhysicalDeviceQueueFamilyProperties_reply(stru
|
||||
pQueueFamilyPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pQueueFamilyPropertyCount ? *pQueueFamilyPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pQueueFamilyPropertyCount ? *pQueueFamilyPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pQueueFamilyPropertyCount ? *pQueueFamilyPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkQueueFamilyProperties(dec, &pQueueFamilyProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pQueueFamilyProperties = NULL;
|
||||
}
|
||||
}
|
||||
@@ -11395,11 +11395,11 @@ static inline VkResult vn_decode_vkEnumerateDeviceLayerProperties_reply(struct v
|
||||
pPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pPropertyCount ? *pPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkLayerProperties(dec, &pProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pProperties = NULL;
|
||||
}
|
||||
|
||||
@@ -11416,7 +11416,7 @@ static inline size_t vn_sizeof_vkEnumerateDeviceExtensionProperties(VkPhysicalDe
|
||||
if (pLayerName) {
|
||||
const size_t string_size = strlen(pLayerName) + 1;
|
||||
cmd_size += vn_sizeof_array_size(string_size);
|
||||
cmd_size += vn_sizeof_blob_array(pLayerName, string_size);
|
||||
cmd_size += vn_sizeof_char_array(pLayerName, string_size);
|
||||
} else {
|
||||
cmd_size += vn_sizeof_array_size(0);
|
||||
}
|
||||
@@ -11445,7 +11445,7 @@ static inline void vn_encode_vkEnumerateDeviceExtensionProperties(struct vn_cs_e
|
||||
if (pLayerName) {
|
||||
const size_t string_size = strlen(pLayerName) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, pLayerName, string_size);
|
||||
vn_encode_char_array(enc, pLayerName, string_size);
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
}
|
||||
@@ -11499,11 +11499,11 @@ static inline VkResult vn_decode_vkEnumerateDeviceExtensionProperties_reply(stru
|
||||
pPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pPropertyCount ? *pPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkExtensionProperties(dec, &pProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pProperties = NULL;
|
||||
}
|
||||
|
||||
@@ -11710,11 +11710,11 @@ static inline void vn_decode_vkGetPhysicalDeviceSparseImageFormatProperties_repl
|
||||
pPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pPropertyCount ? *pPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkSparseImageFormatProperties(dec, &pProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pProperties = NULL;
|
||||
}
|
||||
}
|
||||
@@ -12021,11 +12021,11 @@ static inline void vn_decode_vkGetPhysicalDeviceQueueFamilyProperties2_reply(str
|
||||
pQueueFamilyPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pQueueFamilyPropertyCount ? *pQueueFamilyPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pQueueFamilyPropertyCount ? *pQueueFamilyPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pQueueFamilyPropertyCount ? *pQueueFamilyPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkQueueFamilyProperties2(dec, &pQueueFamilyProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pQueueFamilyProperties = NULL;
|
||||
}
|
||||
}
|
||||
@@ -12163,11 +12163,11 @@ static inline void vn_decode_vkGetPhysicalDeviceSparseImageFormatProperties2_rep
|
||||
pPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pPropertyCount ? *pPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkSparseImageFormatProperties2(dec, &pProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pProperties = NULL;
|
||||
}
|
||||
}
|
||||
@@ -12429,11 +12429,11 @@ static inline VkResult vn_decode_vkEnumeratePhysicalDeviceGroups_reply(struct vn
|
||||
pPhysicalDeviceGroupCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPhysicalDeviceGroupCount ? *pPhysicalDeviceGroupCount : 0));
|
||||
for (uint32_t i = 0; i < (pPhysicalDeviceGroupCount ? *pPhysicalDeviceGroupCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPhysicalDeviceGroupCount ? *pPhysicalDeviceGroupCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkPhysicalDeviceGroupProperties(dec, &pPhysicalDeviceGroupProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pPhysicalDeviceGroupProperties = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -566,16 +566,16 @@ vn_decode_VkBindImageMemoryDeviceGroupInfo_self(struct vn_cs_decoder *dec, VkBin
|
||||
const size_t array_size = vn_decode_array_size(dec, val->deviceIndexCount);
|
||||
vn_decode_uint32_t_array(dec, (uint32_t *)val->pDeviceIndices, array_size);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
val->pDeviceIndices = NULL;
|
||||
}
|
||||
vn_decode_uint32_t(dec, &val->splitInstanceBindRegionCount);
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, val->splitInstanceBindRegionCount);
|
||||
for (uint32_t i = 0; i < val->splitInstanceBindRegionCount; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, val->splitInstanceBindRegionCount);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkRect2D(dec, &((VkRect2D *)val->pSplitInstanceBindRegions)[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
val->pSplitInstanceBindRegions = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1426,11 +1426,11 @@ static inline void vn_decode_vkGetImageSparseMemoryRequirements_reply(struct vn_
|
||||
pSparseMemoryRequirementCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pSparseMemoryRequirementCount ? *pSparseMemoryRequirementCount : 0));
|
||||
for (uint32_t i = 0; i < (pSparseMemoryRequirementCount ? *pSparseMemoryRequirementCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pSparseMemoryRequirementCount ? *pSparseMemoryRequirementCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkSparseImageMemoryRequirements(dec, &pSparseMemoryRequirements[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pSparseMemoryRequirements = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1829,11 +1829,11 @@ static inline void vn_decode_vkGetImageSparseMemoryRequirements2_reply(struct vn
|
||||
pSparseMemoryRequirementCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pSparseMemoryRequirementCount ? *pSparseMemoryRequirementCount : 0));
|
||||
for (uint32_t i = 0; i < (pSparseMemoryRequirementCount ? *pSparseMemoryRequirementCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pSparseMemoryRequirementCount ? *pSparseMemoryRequirementCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkSparseImageMemoryRequirements2(dec, &pSparseMemoryRequirements[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pSparseMemoryRequirements = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ vn_sizeof_VkApplicationInfo_self(const VkApplicationInfo *val)
|
||||
if (val->pApplicationName) {
|
||||
const size_t string_size = strlen(val->pApplicationName) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->pApplicationName, string_size);
|
||||
size += vn_sizeof_char_array(val->pApplicationName, string_size);
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
}
|
||||
@@ -42,7 +42,7 @@ vn_sizeof_VkApplicationInfo_self(const VkApplicationInfo *val)
|
||||
if (val->pEngineName) {
|
||||
const size_t string_size = strlen(val->pEngineName) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->pEngineName, string_size);
|
||||
size += vn_sizeof_char_array(val->pEngineName, string_size);
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
}
|
||||
@@ -77,7 +77,7 @@ vn_encode_VkApplicationInfo_self(struct vn_cs_encoder *enc, const VkApplicationI
|
||||
if (val->pApplicationName) {
|
||||
const size_t string_size = strlen(val->pApplicationName) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->pApplicationName, string_size);
|
||||
vn_encode_char_array(enc, val->pApplicationName, string_size);
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
}
|
||||
@@ -85,7 +85,7 @@ vn_encode_VkApplicationInfo_self(struct vn_cs_encoder *enc, const VkApplicationI
|
||||
if (val->pEngineName) {
|
||||
const size_t string_size = strlen(val->pEngineName) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->pEngineName, string_size);
|
||||
vn_encode_char_array(enc, val->pEngineName, string_size);
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
}
|
||||
@@ -126,7 +126,7 @@ vn_sizeof_VkInstanceCreateInfo_self(const VkInstanceCreateInfo *val)
|
||||
for (uint32_t i = 0; i < val->enabledLayerCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledLayerNames[i]) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->ppEnabledLayerNames[i], string_size);
|
||||
size += vn_sizeof_char_array(val->ppEnabledLayerNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
@@ -137,7 +137,7 @@ vn_sizeof_VkInstanceCreateInfo_self(const VkInstanceCreateInfo *val)
|
||||
for (uint32_t i = 0; i < val->enabledExtensionCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledExtensionNames[i]) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->ppEnabledExtensionNames[i], string_size);
|
||||
size += vn_sizeof_char_array(val->ppEnabledExtensionNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
@@ -177,7 +177,7 @@ vn_encode_VkInstanceCreateInfo_self(struct vn_cs_encoder *enc, const VkInstanceC
|
||||
for (uint32_t i = 0; i < val->enabledLayerCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledLayerNames[i]) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->ppEnabledLayerNames[i], string_size);
|
||||
vn_encode_char_array(enc, val->ppEnabledLayerNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
@@ -188,7 +188,7 @@ vn_encode_VkInstanceCreateInfo_self(struct vn_cs_encoder *enc, const VkInstanceC
|
||||
for (uint32_t i = 0; i < val->enabledExtensionCount; i++) {
|
||||
const size_t string_size = strlen(val->ppEnabledExtensionNames[i]) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->ppEnabledExtensionNames[i], string_size);
|
||||
vn_encode_char_array(enc, val->ppEnabledExtensionNames[i], string_size);
|
||||
}
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
@@ -445,11 +445,11 @@ static inline VkResult vn_decode_vkEnumerateInstanceLayerProperties_reply(struct
|
||||
pPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pPropertyCount ? *pPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkLayerProperties(dec, &pProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pProperties = NULL;
|
||||
}
|
||||
|
||||
@@ -465,7 +465,7 @@ static inline size_t vn_sizeof_vkEnumerateInstanceExtensionProperties(const char
|
||||
if (pLayerName) {
|
||||
const size_t string_size = strlen(pLayerName) + 1;
|
||||
cmd_size += vn_sizeof_array_size(string_size);
|
||||
cmd_size += vn_sizeof_blob_array(pLayerName, string_size);
|
||||
cmd_size += vn_sizeof_char_array(pLayerName, string_size);
|
||||
} else {
|
||||
cmd_size += vn_sizeof_array_size(0);
|
||||
}
|
||||
@@ -493,7 +493,7 @@ static inline void vn_encode_vkEnumerateInstanceExtensionProperties(struct vn_cs
|
||||
if (pLayerName) {
|
||||
const size_t string_size = strlen(pLayerName) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, pLayerName, string_size);
|
||||
vn_encode_char_array(enc, pLayerName, string_size);
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
}
|
||||
@@ -545,11 +545,11 @@ static inline VkResult vn_decode_vkEnumerateInstanceExtensionProperties_reply(st
|
||||
pPropertyCount = NULL;
|
||||
}
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < (pPropertyCount ? *pPropertyCount : 0); i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, (pPropertyCount ? *pPropertyCount : 0));
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkExtensionProperties(dec, &pProperties[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pProperties = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ vn_sizeof_VkPipelineShaderStageCreateInfo_self(const VkPipelineShaderStageCreate
|
||||
if (val->pName) {
|
||||
const size_t string_size = strlen(val->pName) + 1;
|
||||
size += vn_sizeof_array_size(string_size);
|
||||
size += vn_sizeof_blob_array(val->pName, string_size);
|
||||
size += vn_sizeof_char_array(val->pName, string_size);
|
||||
} else {
|
||||
size += vn_sizeof_array_size(0);
|
||||
}
|
||||
@@ -134,7 +134,7 @@ vn_encode_VkPipelineShaderStageCreateInfo_self(struct vn_cs_encoder *enc, const
|
||||
if (val->pName) {
|
||||
const size_t string_size = strlen(val->pName) + 1;
|
||||
vn_encode_array_size(enc, string_size);
|
||||
vn_encode_blob_array(enc, val->pName, string_size);
|
||||
vn_encode_char_array(enc, val->pName, string_size);
|
||||
} else {
|
||||
vn_encode_array_size(enc, 0);
|
||||
}
|
||||
@@ -1350,11 +1350,11 @@ static inline VkResult vn_decode_vkCreateGraphicsPipelines_reply(struct vn_cs_de
|
||||
/* skip pCreateInfos */
|
||||
/* skip pAllocator */
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, createInfoCount);
|
||||
for (uint32_t i = 0; i < createInfoCount; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, createInfoCount);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkPipeline(dec, &pPipelines[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pPipelines = NULL;
|
||||
}
|
||||
|
||||
@@ -1456,11 +1456,11 @@ static inline VkResult vn_decode_vkCreateComputePipelines_reply(struct vn_cs_dec
|
||||
/* skip pCreateInfos */
|
||||
/* skip pAllocator */
|
||||
if (vn_peek_array_size(dec)) {
|
||||
vn_decode_array_size(dec, createInfoCount);
|
||||
for (uint32_t i = 0; i < createInfoCount; i++)
|
||||
const uint32_t iter_count = vn_decode_array_size(dec, createInfoCount);
|
||||
for (uint32_t i = 0; i < iter_count; i++)
|
||||
vn_decode_VkPipeline(dec, &pPipelines[i]);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pPipelines = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ static inline VkResult vn_decode_vkGetPipelineCacheData_reply(struct vn_cs_decod
|
||||
const size_t array_size = vn_decode_array_size(dec, (pDataSize ? *pDataSize : 0));
|
||||
vn_decode_blob_array(dec, pData, array_size);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pData = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -270,7 +270,7 @@ static inline VkResult vn_decode_vkGetQueryPoolResults_reply(struct vn_cs_decode
|
||||
const size_t array_size = vn_decode_array_size(dec, dataSize);
|
||||
vn_decode_blob_array(dec, pData, array_size);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pData = NULL;
|
||||
}
|
||||
/* skip stride */
|
||||
|
||||
@@ -69,11 +69,11 @@ vn_sizeof_VkLayerProperties(const VkLayerProperties *val)
|
||||
{
|
||||
size_t size = 0;
|
||||
size += vn_sizeof_array_size(VK_MAX_EXTENSION_NAME_SIZE);
|
||||
size += vn_sizeof_blob_array(val->layerName, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
size += vn_sizeof_char_array(val->layerName, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
size += vn_sizeof_uint32_t(&val->specVersion);
|
||||
size += vn_sizeof_uint32_t(&val->implementationVersion);
|
||||
size += vn_sizeof_array_size(VK_MAX_DESCRIPTION_SIZE);
|
||||
size += vn_sizeof_blob_array(val->description, VK_MAX_DESCRIPTION_SIZE);
|
||||
size += vn_sizeof_char_array(val->description, VK_MAX_DESCRIPTION_SIZE);
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -82,13 +82,13 @@ vn_decode_VkLayerProperties(struct vn_cs_decoder *dec, VkLayerProperties *val)
|
||||
{
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
vn_decode_blob_array(dec, val->layerName, array_size);
|
||||
vn_decode_char_array(dec, val->layerName, array_size);
|
||||
}
|
||||
vn_decode_uint32_t(dec, &val->specVersion);
|
||||
vn_decode_uint32_t(dec, &val->implementationVersion);
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_DESCRIPTION_SIZE);
|
||||
vn_decode_blob_array(dec, val->description, array_size);
|
||||
vn_decode_char_array(dec, val->description, array_size);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ vn_sizeof_VkExtensionProperties(const VkExtensionProperties *val)
|
||||
{
|
||||
size_t size = 0;
|
||||
size += vn_sizeof_array_size(VK_MAX_EXTENSION_NAME_SIZE);
|
||||
size += vn_sizeof_blob_array(val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
size += vn_sizeof_char_array(val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
size += vn_sizeof_uint32_t(&val->specVersion);
|
||||
return size;
|
||||
}
|
||||
@@ -128,7 +128,7 @@ static inline void
|
||||
vn_encode_VkExtensionProperties(struct vn_cs_encoder *enc, const VkExtensionProperties *val)
|
||||
{
|
||||
vn_encode_array_size(enc, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
vn_encode_blob_array(enc, val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
vn_encode_char_array(enc, val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
vn_encode_uint32_t(enc, &val->specVersion);
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ vn_decode_VkExtensionProperties(struct vn_cs_decoder *dec, VkExtensionProperties
|
||||
{
|
||||
{
|
||||
const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
|
||||
vn_decode_blob_array(dec, val->extensionName, array_size);
|
||||
vn_decode_char_array(dec, val->extensionName, array_size);
|
||||
}
|
||||
vn_decode_uint32_t(dec, &val->specVersion);
|
||||
}
|
||||
|
||||
@@ -898,7 +898,7 @@ static inline void vn_decode_vkGetVenusExperimentalFeatureData100000MESA_reply(s
|
||||
const size_t array_size = vn_decode_array_size(dec, (pDataSize ? *pDataSize : 0));
|
||||
vn_decode_blob_array(dec, pData, array_size);
|
||||
} else {
|
||||
vn_decode_array_size(dec, 0);
|
||||
vn_decode_array_size_unchecked(dec);
|
||||
pData = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,6 +194,31 @@ vn_decode_blob_array(struct vn_cs_decoder *dec, void *val, size_t size)
|
||||
vn_decode(dec, (size + 3) & ~3, val, size);
|
||||
}
|
||||
|
||||
/* string */
|
||||
|
||||
static inline size_t
|
||||
vn_sizeof_char_array(const char *val, size_t size)
|
||||
{
|
||||
return vn_sizeof_blob_array(val, size);
|
||||
}
|
||||
|
||||
static inline void
|
||||
vn_encode_char_array(struct vn_cs_encoder *enc, const char *val, size_t size)
|
||||
{
|
||||
assert(size && strlen(val) < size);
|
||||
vn_encode_blob_array(enc, val, size);
|
||||
}
|
||||
|
||||
static inline void
|
||||
vn_decode_char_array(struct vn_cs_decoder *dec, char *val, size_t size)
|
||||
{
|
||||
vn_decode_blob_array(dec, val, size);
|
||||
if (size)
|
||||
val[size - 1] = '\0';
|
||||
else
|
||||
vn_cs_decoder_set_fatal(dec);
|
||||
}
|
||||
|
||||
/* array size (uint64_t) */
|
||||
|
||||
static inline size_t
|
||||
@@ -209,17 +234,25 @@ vn_encode_array_size(struct vn_cs_encoder *enc, uint64_t size)
|
||||
}
|
||||
|
||||
static inline uint64_t
|
||||
vn_decode_array_size(struct vn_cs_decoder *dec, uint64_t max_size)
|
||||
vn_decode_array_size(struct vn_cs_decoder *dec, uint64_t expected_size)
|
||||
{
|
||||
uint64_t size;
|
||||
vn_decode_uint64_t(dec, &size);
|
||||
if (size > max_size) {
|
||||
if (size != expected_size) {
|
||||
vn_cs_decoder_set_fatal(dec);
|
||||
size = 0;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
static inline uint64_t
|
||||
vn_decode_array_size_unchecked(struct vn_cs_decoder *dec)
|
||||
{
|
||||
uint64_t size;
|
||||
vn_decode_uint64_t(dec, &size);
|
||||
return size;
|
||||
}
|
||||
|
||||
static inline uint64_t
|
||||
vn_peek_array_size(struct vn_cs_decoder *dec)
|
||||
{
|
||||
@@ -246,7 +279,7 @@ vn_encode_simple_pointer(struct vn_cs_encoder *enc, const void *val)
|
||||
static inline bool
|
||||
vn_decode_simple_pointer(struct vn_cs_decoder *dec)
|
||||
{
|
||||
return vn_decode_array_size(dec, 1);
|
||||
return vn_decode_array_size_unchecked(dec);
|
||||
}
|
||||
|
||||
/* uint32_t */
|
||||
|
||||
Reference in New Issue
Block a user