From 15ce5b6ffd941f14ad9f9f32c255655d83dee542 Mon Sep 17 00:00:00 2001 From: Anton Oreskin Date: Tue, 22 Sep 2026 17:09:57 +0200 Subject: [PATCH 1/2] Generate Vulkan Video fields for strict V3 --- .github/workflows/historical-registry-ci.yml | 68 ++++++++++++++- src/vgenerator.py | 72 ++++++---------- src/vulkan_video.v | 89 ++++++++++++-------- 3 files changed, 150 insertions(+), 79 deletions(-) diff --git a/.github/workflows/historical-registry-ci.yml b/.github/workflows/historical-registry-ci.yml index 255085c..5ecb752 100644 --- a/.github/workflows/historical-registry-ci.yml +++ b/.github/workflows/historical-registry-ci.yml @@ -32,6 +32,70 @@ jobs: throw 'Vulkan Video bindings were not generated' } + strict-v3-frontend: + name: Strict V3 frontend + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v7 + - uses: actions/checkout@v7 + with: + repository: KhronosGroup/Vulkan-Docs + ref: v1.4.362 + path: vulkandocs + - uses: actions/checkout@v7 + with: + repository: antono2/vulkan + path: published + - uses: actions/checkout@v7 + with: + repository: vlang/v + ref: 239f06c1de4b6380b2c9d03eed023996951b2c74 + path: .ci-v-source + fetch-depth: 1 + - uses: actions/checkout@v7 + with: + repository: vlang/vc + ref: 21490f7811a2dd366c3daa39bef8e53c1e3e5727 + path: .ci-v-source/vc + fetch-depth: 1 + - uses: actions/checkout@v7 + with: + repository: vlang/tccbin + ref: d6e7ac1b1bcc98aed734a6ecbfa8509f24606c74 + path: .ci-v-source/thirdparty/tcc + fetch-depth: 1 + - uses: actions/setup-python@v7 + with: + python-version: "3.x" + cache: pip + cache-dependency-path: .github/generator-requirements.txt + - name: Build pinned V3 compiler + run: | + make -C .ci-v-source local=1 + echo "$GITHUB_WORKSPACE/.ci-v-source" >> "$GITHUB_PATH" + .ci-v-source/v -V + - name: Generate and type-check current bindings + run: | + set -euo pipefail + python -m pip install --requirement .github/generator-requirements.txt + python src/main.py -registry vulkandocs/xml/vk.xml vulkan.v + python src/main.py -registry vulkandocs/xml/video.xml vulkan_video.v + + grep -F 'pub type StdVideoH264ScalingListsScalingList4x4Array' \ + src/vulkan_video.v + if grep -E '^[[:space:]]+[A-Z][A-Za-z0-9_]*[[:space:]]+\[' \ + src/vulkan_video.v; then + echo 'PascalCase fixed-array fields must use named array aliases' >&2 + exit 1 + fi + + install -m 0644 src/vulkan.v published/vulkan.v + install -m 0644 src/vulkan_video.v published/vulkan_video.v + install -d "$RUNNER_TEMP/vmodules/antono2" + ln -s "$GITHUB_WORKSPACE/published" \ + "$RUNNER_TEMP/vmodules/antono2/vulkan" + VMODULES="$RUNNER_TEMP/vmodules" v -new-compiler -check test/main.c.v + generate-and-compile: name: Vulkan-Docs ${{ matrix.version }} strategy: @@ -82,13 +146,15 @@ jobs: required-checks: if: always() - needs: [windows-generator, generate-and-compile] + needs: [windows-generator, strict-v3-frontend, generate-and-compile] runs-on: ubuntu-24.04 steps: - name: Verify historical registry matrix env: WINDOWS_RESULT: ${{ needs.windows-generator.result }} + V3_RESULT: ${{ needs.strict-v3-frontend.result }} MATRIX_RESULT: ${{ needs.generate-and-compile.result }} run: | test "$WINDOWS_RESULT" = success + test "$V3_RESULT" = success test "$MATRIX_RESULT" = success diff --git a/src/vgenerator.py b/src/vgenerator.py index c60176b..51a9b9c 100644 --- a/src/vgenerator.py +++ b/src/vgenerator.py @@ -322,39 +322,13 @@ class VOutputGenerator(OutputGenerator): C_STRUCT_ARR_WITH_VK_PREFIX = [] - # Used to find static C code, like #define VK_API_VERSION_MAJOR in appendSection - # The exact C code is then replaced in genType - REPLACEMENT_CONTAINS_ARR = [ - 'STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE', - 'VK_MAKE_VIDEO_STD_VERSION(major, minor, patch)', - 'VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0', - '#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)', - '#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)', - 'VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0', - 'VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0', - '#define VK_DEFINE_HANDLE', - '\n#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE\n #if (VK_USE_64_BIT_PTR_DEFINES==1)\n #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))\n #define VK_NULL_HANDLE nullptr\n #else\n #define VK_NULL_HANDLE ((void*)0)\n #endif\n #else\n #define VK_NULL_HANDLE 0ULL\n #endif\n#endif\n#ifndef VK_NULL_HANDLE\n #define VK_NULL_HANDLE 0\n#endif', - '\n#ifndef VK_USE_64_BIT_PTR_DEFINES\n #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) || (defined(__riscv) && __riscv_xlen == 64)\n #define VK_USE_64_BIT_PTR_DEFINES 1\n #else\n #define VK_USE_64_BIT_PTR_DEFINES 0\n #endif\n#endif', - '\n#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE\n #if (VK_USE_64_BIT_PTR_DEFINES==1)\n #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;\n #else\n #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;\n #endif\n#endif', - '#define VK_MAKE_API_VERSION(variant, major, minor, patch)', - '#define VK_API_VERSION_1_0', - '#define VK_HEADER_VERSION_COMPLETE', - '#define VK_MAKE_VERSION', - '#define VK_VERSION_MAJOR', - '#define VK_VERSION_MINOR', - '#define VK_VERSION_PATCH', - '#define VK_API_VERSION_VARIANT', - '#define VK_API_VERSION_MAJOR', - '#define VK_API_VERSION_MINOR', - '#define VK_API_VERSION_PATCH', - ] - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Internal state - accumulators for different inner block text self.sections = {section: [] for section in self.ALL_SECTIONS} self.feature_not_empty = False self.may_alias = None + self.fixed_array_aliases = [] def beginFile(self, genOpts): OutputGenerator.beginFile(self, genOpts) @@ -514,12 +488,6 @@ def appendSection(self, section, text): self.logMsg('error', 'Missing section in appendSection (probably a element missing its \'category\' attribute. Text:', text) exit(1) - # Add text to REPLACEMENT_EXACT_TEXT_ARR if it is in REPLACEMENT_CONTAINS_ARR - # See REPLACEMENT_CONTAINS_ARR for explanation - esc_text = self.escStr(text) - for starts_with in self.REPLACEMENT_CONTAINS_ARR: - if text.__contains__(starts_with): - self.REPLACEMENT_EXACT_TEXT_ARR.append(esc_text) self.sections[section].append(text) self.feature_not_empty = True @@ -878,6 +846,20 @@ def genStruct(self, typeinfo, typeName, alias, keep_vk_member_name = False): structextends = typeElem.get('structextends') body += '// ' + typeName + ' extends ' + structextends + '\n' if structextends else '' + if typeName not in self.ALIAS_TO_BASE_TYPE_MAP: + self.ALIAS_TO_BASE_TYPE_MAP[typeName] = 'C.'+ typeNameOrig + + targetLen = self.getMaxCParamTypeLength(typeinfo) + self.fixed_array_aliases = [] + members = '' + for member in typeElem.findall('.//member'): + members += self.deprecationComment(member, indent = 4) + members += self.makeVParamDecl(typeName, member, targetLen + 4, do_struct_members = True, keep_vk_member_name = keep_vk_member_name) + members += '\n' + + for alias_name, alias_type in self.fixed_array_aliases: + body += 'pub type ' + alias_name + ' = ' + alias_type + '\n' + body += 'pub type ' + typeName + ' = ' + 'C.'+ typeNameOrig + '\n' if typeElem.get('category') == 'struct': body += '@[typedef]\npub struct ' @@ -891,15 +873,8 @@ def genStruct(self, typeinfo, typeName, alias, keep_vk_member_name = False): body += self.genOpts.aliasMacro body += 'C.'+ typeNameOrig + ' {\n' - if typeName not in self.ALIAS_TO_BASE_TYPE_MAP: - self.ALIAS_TO_BASE_TYPE_MAP[typeName] = 'C.'+ typeNameOrig - - targetLen = self.getMaxCParamTypeLength(typeinfo) body += 'pub mut:\n' - for member in typeElem.findall('.//member'): - body += self.deprecationComment(member, indent = 4) - body += self.makeVParamDecl(typeName, member, targetLen + 4, do_struct_members = True, keep_vk_member_name = keep_vk_member_name) - body += '\n' + body += members body += '}\n' if protect_end: body += protect_end @@ -1475,6 +1450,17 @@ def makeVParamDecl(self, typeName, param, aligncol, do_c_func_params=False, do_c if do_array_voidptr: v_type = 'voidptr' + # Vulkan Video exposes several PascalCase C fields whose types are + # inline fixed arrays. V3 parses `FieldName [N]T` as an embedded + # type followed by an attribute. A named array alias removes that + # ambiguity while preserving the public field and its C spelling + # for stable V. + if (do_struct_members and elem is param[-1] + and v_name[:1].isupper() and v_type.startswith('[')): + alias_name = typeName + v_name + 'Array' + self.fixed_array_aliases.append((alias_name, v_type)) + v_type = alias_name + v_name = self.make_v_param_name( param, v_name, @@ -2190,10 +2176,6 @@ def build_video_std_api_version_const(self, c_body): major, minor, patch = match.group(2), match.group(3), match.group(4) return f'pub const std_vulkan_video_codec_{codec_name}_api_version_{major}_{minor}_{patch} = make_video_std_version({major}, {minor}, {patch})' - # If text contains `\` before new line, the mapping isn't found. This fixes it - def escStr(self, text) -> str: - return text.replace(r'\\', '\\\\').replace(r'\n', '\\n') - # NOTE Anton: the oiginal method comes from vulkandocs/scripts/generator.py def deprecationComment(self, elem, indent = 0): """If an API element is marked deprecated, return a brief comment diff --git a/src/vulkan_video.v b/src/vulkan_video.v index 3da5809..9683783 100644 --- a/src/vulkan_video.v +++ b/src/vulkan_video.v @@ -170,7 +170,6 @@ pub enum StdVideoH264NonVclNaluType as u32 { precoded = 6 invalid = u32(0x7FFFFFFF) } - pub type StdVideoH264SpsVuiFlags = C.StdVideoH264SpsVuiFlags @[typedef] @@ -254,6 +253,8 @@ pub mut: vui_parameters_present_flag u32 } +pub type StdVideoH264ScalingListsScalingList4x4Array = [std_video_h264_scaling_list_4x4_num_lists][std_video_h264_scaling_list_4x4_num_elements]u8 +pub type StdVideoH264ScalingListsScalingList8x8Array = [std_video_h264_scaling_list_8x8_num_lists][std_video_h264_scaling_list_8x8_num_elements]u8 pub type StdVideoH264ScalingLists = C.StdVideoH264ScalingLists @[typedef] @@ -261,8 +262,8 @@ pub struct C.StdVideoH264ScalingLists { pub mut: scaling_list_present_mask u16 use_default_scaling_matrix_mask u16 - ScalingList4x4 [std_video_h264_scaling_list_4x4_num_lists][std_video_h264_scaling_list_4x4_num_elements]u8 - ScalingList8x8 [std_video_h264_scaling_list_8x8_num_lists][std_video_h264_scaling_list_8x8_num_elements]u8 + ScalingList4x4 StdVideoH264ScalingListsScalingList4x4Array + ScalingList8x8 StdVideoH264ScalingListsScalingList8x8Array } pub type StdVideoH264SequenceParameterSet = C.StdVideoH264SequenceParameterSet @@ -340,7 +341,6 @@ pub enum StdVideoDecodeH264FieldOrderCount as u32 { bottom = 1 invalid = u32(0x7FFFFFFF) } - pub type StdVideoDecodeH264PictureInfoFlags = C.StdVideoDecodeH264PictureInfoFlags @[typedef] @@ -354,6 +354,7 @@ pub mut: complementary_field_pair u32 } +pub type StdVideoDecodeH264PictureInfoPicOrderCntArray = [std_video_decode_h264_field_order_count_list_size]i32 pub type StdVideoDecodeH264PictureInfo = C.StdVideoDecodeH264PictureInfo @[typedef] @@ -366,7 +367,7 @@ pub mut: reserved2 u8 frame_num u16 idr_pic_id u16 - PicOrderCnt [std_video_decode_h264_field_order_count_list_size]i32 + PicOrderCnt StdVideoDecodeH264PictureInfoPicOrderCntArray } pub type StdVideoDecodeH264ReferenceInfoFlags = C.StdVideoDecodeH264ReferenceInfoFlags @@ -380,6 +381,7 @@ pub mut: is_non_existing u32 } +pub type StdVideoDecodeH264ReferenceInfoPicOrderCntArray = [std_video_decode_h264_field_order_count_list_size]i32 pub type StdVideoDecodeH264ReferenceInfo = C.StdVideoDecodeH264ReferenceInfo @[typedef] @@ -388,7 +390,7 @@ pub mut: flags StdVideoDecodeH264ReferenceInfoFlags FrameNum u16 reserved u16 - PicOrderCnt [std_video_decode_h264_field_order_count_list_size]i32 + PicOrderCnt StdVideoDecodeH264ReferenceInfoPicOrderCntArray } pub const std_vulkan_video_codec_h264_encode_api_version_1_0_0 = make_video_std_version(1, 0, 0) @@ -488,6 +490,8 @@ pub mut: max_long_term_frame_idx_plus1 u16 } +pub type StdVideoEncodeH264ReferenceListsInfoRefPicList0Array = [std_video_h264_max_num_list_ref]u8 +pub type StdVideoEncodeH264ReferenceListsInfoRefPicList1Array = [std_video_h264_max_num_list_ref]u8 pub type StdVideoEncodeH264ReferenceListsInfo = C.StdVideoEncodeH264ReferenceListsInfo @[typedef] @@ -496,8 +500,8 @@ pub mut: flags StdVideoEncodeH264ReferenceListsInfoFlags num_ref_idx_l0_active_minus1 u8 num_ref_idx_l1_active_minus1 u8 - RefPicList0 [std_video_h264_max_num_list_ref]u8 - RefPicList1 [std_video_h264_max_num_list_ref]u8 + RefPicList0 StdVideoEncodeH264ReferenceListsInfoRefPicList0Array + RefPicList1 StdVideoEncodeH264ReferenceListsInfoRefPicList1Array refList0ModOpCount u8 refList1ModOpCount u8 refPicMarkingOpCount u8 @@ -649,7 +653,6 @@ pub enum StdVideoH265AspectRatioIdc as u32 { extended_sar = 255 invalid = u32(0x7FFFFFFF) } - pub type StdVideoH265DecPicBufMgr = C.StdVideoH265DecPicBufMgr @[typedef] @@ -760,17 +763,23 @@ pub mut: pProfileTierLevel &StdVideoH265ProfileTierLevel } +pub type StdVideoH265ScalingListsScalingList4x4Array = [std_video_h265_scaling_list_4x4_num_lists][std_video_h265_scaling_list_4x4_num_elements]u8 +pub type StdVideoH265ScalingListsScalingList8x8Array = [std_video_h265_scaling_list_8x8_num_lists][std_video_h265_scaling_list_8x8_num_elements]u8 +pub type StdVideoH265ScalingListsScalingList16x16Array = [std_video_h265_scaling_list_16x16_num_lists][std_video_h265_scaling_list_16x16_num_elements]u8 +pub type StdVideoH265ScalingListsScalingList32x32Array = [std_video_h265_scaling_list_32x32_num_lists][std_video_h265_scaling_list_32x32_num_elements]u8 +pub type StdVideoH265ScalingListsScalingListDCCoef16x16Array = [std_video_h265_scaling_list_16x16_num_lists]u8 +pub type StdVideoH265ScalingListsScalingListDCCoef32x32Array = [std_video_h265_scaling_list_32x32_num_lists]u8 pub type StdVideoH265ScalingLists = C.StdVideoH265ScalingLists @[typedef] pub struct C.StdVideoH265ScalingLists { pub mut: - ScalingList4x4 [std_video_h265_scaling_list_4x4_num_lists][std_video_h265_scaling_list_4x4_num_elements]u8 - ScalingList8x8 [std_video_h265_scaling_list_8x8_num_lists][std_video_h265_scaling_list_8x8_num_elements]u8 - ScalingList16x16 [std_video_h265_scaling_list_16x16_num_lists][std_video_h265_scaling_list_16x16_num_elements]u8 - ScalingList32x32 [std_video_h265_scaling_list_32x32_num_lists][std_video_h265_scaling_list_32x32_num_elements]u8 - ScalingListDCCoef16x16 [std_video_h265_scaling_list_16x16_num_lists]u8 - ScalingListDCCoef32x32 [std_video_h265_scaling_list_32x32_num_lists]u8 + ScalingList4x4 StdVideoH265ScalingListsScalingList4x4Array + ScalingList8x8 StdVideoH265ScalingListsScalingList8x8Array + ScalingList16x16 StdVideoH265ScalingListsScalingList16x16Array + ScalingList32x32 StdVideoH265ScalingListsScalingList32x32Array + ScalingListDCCoef16x16 StdVideoH265ScalingListsScalingListDCCoef16x16Array + ScalingListDCCoef32x32 StdVideoH265ScalingListsScalingListDCCoef32x32Array } pub type StdVideoH265SpsVuiFlags = C.StdVideoH265SpsVuiFlags @@ -831,12 +840,13 @@ pub mut: pHrdParameters &StdVideoH265HrdParameters } +pub type StdVideoH265PredictorPaletteEntriesPredictorPaletteEntriesArray = [std_video_h265_predictor_palette_components_list_size][std_video_h265_predictor_palette_comp_entries_list_size]u16 pub type StdVideoH265PredictorPaletteEntries = C.StdVideoH265PredictorPaletteEntries @[typedef] pub struct C.StdVideoH265PredictorPaletteEntries { pub mut: - PredictorPaletteEntries [std_video_h265_predictor_palette_components_list_size][std_video_h265_predictor_palette_comp_entries_list_size]u16 + PredictorPaletteEntries StdVideoH265PredictorPaletteEntriesPredictorPaletteEntriesArray } pub type StdVideoH265SpsFlags = C.StdVideoH265SpsFlags @@ -1058,6 +1068,9 @@ pub mut: short_term_ref_pic_set_sps_flag u32 } +pub type StdVideoDecodeH265PictureInfoRefPicSetStCurrBeforeArray = [std_video_decode_h265_ref_pic_set_list_size]u8 +pub type StdVideoDecodeH265PictureInfoRefPicSetStCurrAfterArray = [std_video_decode_h265_ref_pic_set_list_size]u8 +pub type StdVideoDecodeH265PictureInfoRefPicSetLtCurrArray = [std_video_decode_h265_ref_pic_set_list_size]u8 pub type StdVideoDecodeH265PictureInfo = C.StdVideoDecodeH265PictureInfo @[typedef] @@ -1071,9 +1084,9 @@ pub mut: PicOrderCntVal i32 NumBitsForSTRefPicSetInSlice u16 reserved u16 - RefPicSetStCurrBefore [std_video_decode_h265_ref_pic_set_list_size]u8 - RefPicSetStCurrAfter [std_video_decode_h265_ref_pic_set_list_size]u8 - RefPicSetLtCurr [std_video_decode_h265_ref_pic_set_list_size]u8 + RefPicSetStCurrBefore StdVideoDecodeH265PictureInfoRefPicSetStCurrBeforeArray + RefPicSetStCurrAfter StdVideoDecodeH265PictureInfoRefPicSetStCurrAfterArray + RefPicSetLtCurr StdVideoDecodeH265PictureInfoRefPicSetLtCurrArray } pub type StdVideoDecodeH265ReferenceInfoFlags = C.StdVideoDecodeH265ReferenceInfoFlags @@ -1179,6 +1192,8 @@ pub mut: reserved u32 } +pub type StdVideoEncodeH265ReferenceListsInfoRefPicList0Array = [std_video_h265_max_num_list_ref]u8 +pub type StdVideoEncodeH265ReferenceListsInfoRefPicList1Array = [std_video_h265_max_num_list_ref]u8 pub type StdVideoEncodeH265ReferenceListsInfo = C.StdVideoEncodeH265ReferenceListsInfo @[typedef] @@ -1187,8 +1202,8 @@ pub mut: flags StdVideoEncodeH265ReferenceListsInfoFlags num_ref_idx_l0_active_minus1 u8 num_ref_idx_l1_active_minus1 u8 - RefPicList0 [std_video_h265_max_num_list_ref]u8 - RefPicList1 [std_video_h265_max_num_list_ref]u8 + RefPicList0 StdVideoEncodeH265ReferenceListsInfoRefPicList0Array + RefPicList1 StdVideoEncodeH265ReferenceListsInfoRefPicList1Array list_entry_l0 [std_video_h265_max_num_list_ref]u8 list_entry_l1 [std_video_h265_max_num_list_ref]u8 } @@ -1430,7 +1445,6 @@ pub enum StdVideoAV1ChromaSamplePosition as u32 { reserved = 3 invalid = u32(0x7FFFFFFF) } - pub type StdVideoAV1ColorConfigFlags = C.StdVideoAV1ColorConfigFlags @[typedef] @@ -1530,13 +1544,15 @@ pub mut: qm_v u8 } +pub type StdVideoAV1SegmentationFeatureEnabledArray = [std_video_av1_max_segments]u8 +pub type StdVideoAV1SegmentationFeatureDataArray = [std_video_av1_max_segments][std_video_av1_seg_lvl_max]i16 pub type StdVideoAV1Segmentation = C.StdVideoAV1Segmentation @[typedef] pub struct C.StdVideoAV1Segmentation { pub mut: - FeatureEnabled [std_video_av1_max_segments]u8 - FeatureData [std_video_av1_max_segments][std_video_av1_seg_lvl_max]i16 + FeatureEnabled StdVideoAV1SegmentationFeatureEnabledArray + FeatureData StdVideoAV1SegmentationFeatureDataArray } pub type StdVideoAV1TileInfoFlags = C.StdVideoAV1TileInfoFlags @@ -1578,21 +1594,24 @@ pub mut: cdef_uv_sec_strength [std_video_av1_max_cdef_filter_strengths]u8 } +pub type StdVideoAV1LoopRestorationFrameRestorationTypeArray = [std_video_av1_max_num_planes]StdVideoAV1FrameRestorationType +pub type StdVideoAV1LoopRestorationLoopRestorationSizeArray = [std_video_av1_max_num_planes]u16 pub type StdVideoAV1LoopRestoration = C.StdVideoAV1LoopRestoration @[typedef] pub struct C.StdVideoAV1LoopRestoration { pub mut: - FrameRestorationType [std_video_av1_max_num_planes]StdVideoAV1FrameRestorationType - LoopRestorationSize [std_video_av1_max_num_planes]u16 + FrameRestorationType StdVideoAV1LoopRestorationFrameRestorationTypeArray + LoopRestorationSize StdVideoAV1LoopRestorationLoopRestorationSizeArray } +pub type StdVideoAV1GlobalMotionGmTypeArray = [std_video_av1_num_ref_frames]u8 pub type StdVideoAV1GlobalMotion = C.StdVideoAV1GlobalMotion @[typedef] pub struct C.StdVideoAV1GlobalMotion { pub mut: - GmType [std_video_av1_num_ref_frames]u8 + GmType StdVideoAV1GlobalMotionGmTypeArray gm_params [std_video_av1_num_ref_frames][std_video_av1_global_motion_params]i32 } @@ -1729,6 +1748,8 @@ pub mut: reserved u32 } +pub type StdVideoDecodeAV1PictureInfoSkipModeFrameArray = [std_video_av1_skip_mode_frames]u8 +pub type StdVideoDecodeAV1PictureInfoOrderHintsArray = [std_video_av1_num_ref_frames]u8 pub type StdVideoDecodeAV1PictureInfo = C.StdVideoDecodeAV1PictureInfo @[typedef] @@ -1745,10 +1766,10 @@ pub mut: TxMode StdVideoAV1TxMode delta_q_res u8 delta_lf_res u8 - SkipModeFrame [std_video_av1_skip_mode_frames]u8 + SkipModeFrame StdVideoDecodeAV1PictureInfoSkipModeFrameArray coded_denom u8 reserved2 [3]u8 - OrderHints [std_video_av1_num_ref_frames]u8 + OrderHints StdVideoDecodeAV1PictureInfoOrderHintsArray expectedFrameId [std_video_av1_num_ref_frames]u32 pTileInfo &StdVideoAV1TileInfo pQuantization &StdVideoAV1Quantization @@ -1770,6 +1791,7 @@ pub mut: reserved u32 } +pub type StdVideoDecodeAV1ReferenceInfoSavedOrderHintsArray = [std_video_av1_num_ref_frames]u8 pub type StdVideoDecodeAV1ReferenceInfo = C.StdVideoDecodeAV1ReferenceInfo @[typedef] @@ -1779,7 +1801,7 @@ pub mut: frame_type u8 RefFrameSignBias u8 OrderHint u8 - SavedOrderHints [std_video_av1_num_ref_frames]u8 + SavedOrderHints StdVideoDecodeAV1ReferenceInfoSavedOrderHintsArray } pub const std_vulkan_video_codec_av1_encode_api_version_1_0_0 = make_video_std_version(1, 0, 0) @@ -1995,7 +2017,6 @@ pub enum StdVideoVP9ColorSpace as u32 { rgb = 7 invalid = u32(0x7FFFFFFF) } - pub type StdVideoVP9ColorConfigFlags = C.StdVideoVP9ColorConfigFlags @[typedef] @@ -2054,6 +2075,8 @@ pub mut: reserved u32 } +pub type StdVideoVP9SegmentationFeatureEnabledArray = [std_video_vp9_max_segments]u8 +pub type StdVideoVP9SegmentationFeatureDataArray = [std_video_vp9_max_segments][std_video_vp9_seg_lvl_max]i16 pub type StdVideoVP9Segmentation = C.StdVideoVP9Segmentation @[typedef] @@ -2062,8 +2085,8 @@ pub mut: flags StdVideoVP9SegmentationFlags segmentation_tree_probs [std_video_vp9_max_segmentation_tree_probs]u8 segmentation_pred_prob [std_video_vp9_max_segmentation_pred_prob]u8 - FeatureEnabled [std_video_vp9_max_segments]u8 - FeatureData [std_video_vp9_max_segments][std_video_vp9_seg_lvl_max]i16 + FeatureEnabled StdVideoVP9SegmentationFeatureEnabledArray + FeatureData StdVideoVP9SegmentationFeatureDataArray } pub const std_vulkan_video_codec_vp9_decode_api_version_1_0_0 = make_video_std_version(1, 0, 0) From 7a5bd6808f6ffb66558e4063baff8f82d5d4f58e Mon Sep 17 00:00:00 2001 From: Anton Oreskin Date: Tue, 22 Sep 2026 17:12:44 +0200 Subject: [PATCH 2/2] Use current V version command in CI --- .github/workflows/historical-registry-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/historical-registry-ci.yml b/.github/workflows/historical-registry-ci.yml index 5ecb752..f0e60ea 100644 --- a/.github/workflows/historical-registry-ci.yml +++ b/.github/workflows/historical-registry-ci.yml @@ -73,7 +73,7 @@ jobs: run: | make -C .ci-v-source local=1 echo "$GITHUB_WORKSPACE/.ci-v-source" >> "$GITHUB_PATH" - .ci-v-source/v -V + .ci-v-source/v version - name: Generate and type-check current bindings run: | set -euo pipefail