diff options
Diffstat (limited to 'src/venus/venus-protocol/vn_protocol_renderer_image_view.h')
-rw-r--r-- | src/venus/venus-protocol/vn_protocol_renderer_image_view.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/venus/venus-protocol/vn_protocol_renderer_image_view.h b/src/venus/venus-protocol/vn_protocol_renderer_image_view.h index 6f6283e1..28565419 100644 --- a/src/venus/venus-protocol/vn_protocol_renderer_image_view.h +++ b/src/venus/venus-protocol/vn_protocol_renderer_image_view.h @@ -71,6 +71,63 @@ vn_replace_VkImageViewUsageCreateInfo_handle(VkImageViewUsageCreateInfo *val) } while (pnext); } +/* struct VkImageViewMinLodCreateInfoEXT chain */ + +static inline void * +vn_decode_VkImageViewMinLodCreateInfoEXT_pnext_temp(struct vn_cs_decoder *dec) +{ + /* no known/supported struct */ + if (vn_decode_simple_pointer(dec)) + vn_cs_decoder_set_fatal(dec); + return NULL; +} + +static inline void +vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(struct vn_cs_decoder *dec, VkImageViewMinLodCreateInfoEXT *val) +{ + /* skip val->{sType,pNext} */ + vn_decode_float(dec, &val->minLod); +} + +static inline void +vn_decode_VkImageViewMinLodCreateInfoEXT_temp(struct vn_cs_decoder *dec, VkImageViewMinLodCreateInfoEXT *val) +{ + VkStructureType stype; + vn_decode_VkStructureType(dec, &stype); + if (stype != VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT) + vn_cs_decoder_set_fatal(dec); + + val->sType = stype; + val->pNext = vn_decode_VkImageViewMinLodCreateInfoEXT_pnext_temp(dec); + vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(dec, val); +} + +static inline void +vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self(VkImageViewMinLodCreateInfoEXT *val) +{ + /* skip val->sType */ + /* skip val->pNext */ + /* skip val->minLod */ +} + +static inline void +vn_replace_VkImageViewMinLodCreateInfoEXT_handle(VkImageViewMinLodCreateInfoEXT *val) +{ + struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val; + + do { + switch ((int32_t)pnext->sType) { + case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: + vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self((VkImageViewMinLodCreateInfoEXT *)pnext); + break; + default: + /* ignore unknown/unsupported struct */ + break; + } + pnext = pnext->pNext; + } while (pnext); +} + /* struct VkImageViewCreateInfo chain */ static inline void * @@ -100,6 +157,14 @@ vn_decode_VkImageViewCreateInfo_pnext_temp(struct vn_cs_decoder *dec) vn_decode_VkSamplerYcbcrConversionInfo_self_temp(dec, (VkSamplerYcbcrConversionInfo *)pnext); } break; + case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: + pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkImageViewMinLodCreateInfoEXT)); + if (pnext) { + pnext->sType = stype; + pnext->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec); + vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(dec, (VkImageViewMinLodCreateInfoEXT *)pnext); + } + break; default: /* unexpected struct */ pnext = NULL; @@ -164,6 +229,9 @@ vn_replace_VkImageViewCreateInfo_handle(VkImageViewCreateInfo *val) case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: vn_replace_VkSamplerYcbcrConversionInfo_handle_self((VkSamplerYcbcrConversionInfo *)pnext); break; + case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: + vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self((VkImageViewMinLodCreateInfoEXT *)pnext); + break; default: /* ignore unknown/unsupported struct */ break; |