Skip to content

Commit d489755

Browse files
committed
wip vulkan for webrogue
1 parent b42f307 commit d489755

40 files changed

+1548
-376
lines changed

include/renderdoc_app.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
#define RENDERDOC_CC
4040
#elif defined(__APPLE__)
4141
#define RENDERDOC_CC
42+
#elif defined(__wasi__)
43+
#define RENDERDOC_CC
4244
#else
4345
#error "Unknown platform"
4446
#endif

include/vk_video/vulkan_video_codec_av1std_encode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ 1
33

44
/*
5-
** Copyright 2015-2024 The Khronos Group Inc.
5+
** Copyright 2015-2025 The Khronos Group Inc.
66
**
77
** SPDX-License-Identifier: Apache-2.0
88
*/
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#ifndef VULKAN_VIDEO_CODEC_VP9STD_H_
2+
#define VULKAN_VIDEO_CODEC_VP9STD_H_ 1
3+
4+
/*
5+
** Copyright 2015-2025 The Khronos Group Inc.
6+
**
7+
** SPDX-License-Identifier: Apache-2.0
8+
*/
9+
10+
/*
11+
** This header is generated from the Khronos Vulkan XML API Registry.
12+
**
13+
*/
14+
15+
16+
#ifdef __cplusplus
17+
extern "C" {
18+
#endif
19+
20+
21+
22+
// vulkan_video_codec_vp9std is a preprocessor guard. Do not pass it to API calls.
23+
#define vulkan_video_codec_vp9std 1
24+
#include "vulkan_video_codecs_common.h"
25+
#define STD_VIDEO_VP9_NUM_REF_FRAMES 8
26+
#define STD_VIDEO_VP9_REFS_PER_FRAME 3
27+
#define STD_VIDEO_VP9_MAX_REF_FRAMES 4
28+
#define STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS 2
29+
#define STD_VIDEO_VP9_MAX_SEGMENTS 8
30+
#define STD_VIDEO_VP9_SEG_LVL_MAX 4
31+
#define STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS 7
32+
#define STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB 3
33+
34+
typedef enum StdVideoVP9Profile {
35+
STD_VIDEO_VP9_PROFILE_0 = 0,
36+
STD_VIDEO_VP9_PROFILE_1 = 1,
37+
STD_VIDEO_VP9_PROFILE_2 = 2,
38+
STD_VIDEO_VP9_PROFILE_3 = 3,
39+
STD_VIDEO_VP9_PROFILE_INVALID = 0x7FFFFFFF,
40+
STD_VIDEO_VP9_PROFILE_MAX_ENUM = 0x7FFFFFFF
41+
} StdVideoVP9Profile;
42+
43+
typedef enum StdVideoVP9Level {
44+
STD_VIDEO_VP9_LEVEL_1_0 = 0,
45+
STD_VIDEO_VP9_LEVEL_1_1 = 1,
46+
STD_VIDEO_VP9_LEVEL_2_0 = 2,
47+
STD_VIDEO_VP9_LEVEL_2_1 = 3,
48+
STD_VIDEO_VP9_LEVEL_3_0 = 4,
49+
STD_VIDEO_VP9_LEVEL_3_1 = 5,
50+
STD_VIDEO_VP9_LEVEL_4_0 = 6,
51+
STD_VIDEO_VP9_LEVEL_4_1 = 7,
52+
STD_VIDEO_VP9_LEVEL_5_0 = 8,
53+
STD_VIDEO_VP9_LEVEL_5_1 = 9,
54+
STD_VIDEO_VP9_LEVEL_5_2 = 10,
55+
STD_VIDEO_VP9_LEVEL_6_0 = 11,
56+
STD_VIDEO_VP9_LEVEL_6_1 = 12,
57+
STD_VIDEO_VP9_LEVEL_6_2 = 13,
58+
STD_VIDEO_VP9_LEVEL_INVALID = 0x7FFFFFFF,
59+
STD_VIDEO_VP9_LEVEL_MAX_ENUM = 0x7FFFFFFF
60+
} StdVideoVP9Level;
61+
62+
typedef enum StdVideoVP9FrameType {
63+
STD_VIDEO_VP9_FRAME_TYPE_KEY = 0,
64+
STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1,
65+
STD_VIDEO_VP9_FRAME_TYPE_INVALID = 0x7FFFFFFF,
66+
STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF
67+
} StdVideoVP9FrameType;
68+
69+
typedef enum StdVideoVP9ReferenceName {
70+
STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0,
71+
STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1,
72+
STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2,
73+
STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3,
74+
STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 0x7FFFFFFF,
75+
STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF
76+
} StdVideoVP9ReferenceName;
77+
78+
typedef enum StdVideoVP9InterpolationFilter {
79+
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0,
80+
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
81+
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
82+
STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3,
83+
STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4,
84+
STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF,
85+
STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF
86+
} StdVideoVP9InterpolationFilter;
87+
88+
typedef enum StdVideoVP9ColorSpace {
89+
STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0,
90+
STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1,
91+
STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2,
92+
STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3,
93+
STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4,
94+
STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5,
95+
STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6,
96+
STD_VIDEO_VP9_COLOR_SPACE_RGB = 7,
97+
STD_VIDEO_VP9_COLOR_SPACE_INVALID = 0x7FFFFFFF,
98+
STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 0x7FFFFFFF
99+
} StdVideoVP9ColorSpace;
100+
typedef struct StdVideoVP9ColorConfigFlags {
101+
uint32_t color_range : 1;
102+
uint32_t reserved : 31;
103+
} StdVideoVP9ColorConfigFlags;
104+
105+
typedef struct StdVideoVP9ColorConfig {
106+
StdVideoVP9ColorConfigFlags flags;
107+
uint8_t BitDepth;
108+
uint8_t subsampling_x;
109+
uint8_t subsampling_y;
110+
uint8_t reserved1;
111+
StdVideoVP9ColorSpace color_space;
112+
} StdVideoVP9ColorConfig;
113+
114+
typedef struct StdVideoVP9LoopFilterFlags {
115+
uint32_t loop_filter_delta_enabled : 1;
116+
uint32_t loop_filter_delta_update : 1;
117+
uint32_t reserved : 30;
118+
} StdVideoVP9LoopFilterFlags;
119+
120+
typedef struct StdVideoVP9LoopFilter {
121+
StdVideoVP9LoopFilterFlags flags;
122+
uint8_t loop_filter_level;
123+
uint8_t loop_filter_sharpness;
124+
uint8_t update_ref_delta;
125+
int8_t loop_filter_ref_deltas[STD_VIDEO_VP9_MAX_REF_FRAMES];
126+
uint8_t update_mode_delta;
127+
int8_t loop_filter_mode_deltas[STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS];
128+
} StdVideoVP9LoopFilter;
129+
130+
typedef struct StdVideoVP9SegmentationFlags {
131+
uint32_t segmentation_update_map : 1;
132+
uint32_t segmentation_temporal_update : 1;
133+
uint32_t segmentation_update_data : 1;
134+
uint32_t segmentation_abs_or_delta_update : 1;
135+
uint32_t reserved : 28;
136+
} StdVideoVP9SegmentationFlags;
137+
138+
typedef struct StdVideoVP9Segmentation {
139+
StdVideoVP9SegmentationFlags flags;
140+
uint8_t segmentation_tree_probs[STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS];
141+
uint8_t segmentation_pred_prob[STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB];
142+
uint8_t FeatureEnabled[STD_VIDEO_VP9_MAX_SEGMENTS];
143+
int16_t FeatureData[STD_VIDEO_VP9_MAX_SEGMENTS][STD_VIDEO_VP9_SEG_LVL_MAX];
144+
} StdVideoVP9Segmentation;
145+
146+
147+
#ifdef __cplusplus
148+
}
149+
#endif
150+
151+
#endif
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#ifndef VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_
2+
#define VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ 1
3+
4+
/*
5+
** Copyright 2015-2025 The Khronos Group Inc.
6+
**
7+
** SPDX-License-Identifier: Apache-2.0
8+
*/
9+
10+
/*
11+
** This header is generated from the Khronos Vulkan XML API Registry.
12+
**
13+
*/
14+
15+
16+
#ifdef __cplusplus
17+
extern "C" {
18+
#endif
19+
20+
21+
22+
// vulkan_video_codec_vp9std_decode is a preprocessor guard. Do not pass it to API calls.
23+
#define vulkan_video_codec_vp9std_decode 1
24+
#include "vulkan_video_codec_vp9std.h"
25+
26+
#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)
27+
28+
#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0
29+
#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_vp9_decode"
30+
typedef struct StdVideoDecodeVP9PictureInfoFlags {
31+
uint32_t error_resilient_mode : 1;
32+
uint32_t intra_only : 1;
33+
uint32_t allow_high_precision_mv : 1;
34+
uint32_t refresh_frame_context : 1;
35+
uint32_t frame_parallel_decoding_mode : 1;
36+
uint32_t segmentation_enabled : 1;
37+
uint32_t show_frame : 1;
38+
uint32_t UsePrevFrameMvs : 1;
39+
uint32_t reserved : 24;
40+
} StdVideoDecodeVP9PictureInfoFlags;
41+
42+
typedef struct StdVideoDecodeVP9PictureInfo {
43+
StdVideoDecodeVP9PictureInfoFlags flags;
44+
StdVideoVP9Profile profile;
45+
StdVideoVP9FrameType frame_type;
46+
uint8_t frame_context_idx;
47+
uint8_t reset_frame_context;
48+
uint8_t refresh_frame_flags;
49+
uint8_t ref_frame_sign_bias_mask;
50+
StdVideoVP9InterpolationFilter interpolation_filter;
51+
uint8_t base_q_idx;
52+
int8_t delta_q_y_dc;
53+
int8_t delta_q_uv_dc;
54+
int8_t delta_q_uv_ac;
55+
uint8_t tile_cols_log2;
56+
uint8_t tile_rows_log2;
57+
uint16_t reserved1[3];
58+
const StdVideoVP9ColorConfig* pColorConfig;
59+
const StdVideoVP9LoopFilter* pLoopFilter;
60+
const StdVideoVP9Segmentation* pSegmentation;
61+
} StdVideoDecodeVP9PictureInfo;
62+
63+
64+
#ifdef __cplusplus
65+
}
66+
#endif
67+
68+
#endif

include/vulkan/vk_icd.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ typedef enum {
118118
VK_ICD_WSI_PLATFORM_GGP,
119119
VK_ICD_WSI_PLATFORM_SCREEN,
120120
VK_ICD_WSI_PLATFORM_FUCHSIA,
121+
VK_ICD_WSI_PLATFORM_WEBROGUE,
121122
} VkIcdWsiPlatform;
122123

123124
typedef struct {
@@ -242,3 +243,10 @@ typedef struct {
242243
VkIcdSurfaceBase base;
243244
} VkIcdSurfaceImagePipe;
244245
#endif // VK_USE_PLATFORM_FUCHSIA
246+
247+
#ifdef VK_USE_PLATFORM_WEBROGUE
248+
typedef struct {
249+
VkIcdSurfaceBase base;
250+
const void *pWindow;
251+
} VkIcdSurfaceWebrogue;
252+
#endif // VK_USE_PLATFORM_WEBROGUE

include/vulkan/vulkan.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,8 @@
9696
#include "vulkan_beta.h"
9797
#endif
9898

99+
#ifdef VK_USE_PLATFORM_WEBROGUE
100+
#include "vulkan_webrogue.h"
101+
#endif
102+
99103
#endif // VULKAN_H_

include/vulkan/vulkan_core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,6 +1245,7 @@ typedef enum VkStructureType {
12451245
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001,
12461246
VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002,
12471247
VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003,
1248+
VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_WEBROGUE = 1000632000,
12481249
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
12491250
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
12501251
// VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT is a deprecated alias

include/vulkan/vulkan_ohos.h

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#ifndef VULKAN_OHOS_H_
2+
#define VULKAN_OHOS_H_ 1
3+
4+
/*
5+
** Copyright 2015-2025 The Khronos Group Inc.
6+
**
7+
** SPDX-License-Identifier: Apache-2.0
8+
*/
9+
10+
/*
11+
** This header is generated from the Khronos Vulkan XML API Registry.
12+
**
13+
*/
14+
15+
16+
#ifdef __cplusplus
17+
extern "C" {
18+
#endif
19+
20+
21+
22+
// VK_OHOS_surface is a preprocessor guard. Do not pass it to API calls.
23+
#define VK_OHOS_surface 1
24+
typedef struct NativeWindow OHNativeWindow;
25+
#define VK_OHOS_SURFACE_SPEC_VERSION 1
26+
#define VK_OHOS_SURFACE_EXTENSION_NAME "VK_OHOS_surface"
27+
typedef VkFlags VkSurfaceCreateFlagsOHOS;
28+
typedef struct VkOHSurfaceCreateInfoOHOS {
29+
VkStructureType sType;
30+
const void* pNext;
31+
VkSurfaceCreateFlagsOHOS flags;
32+
OHNativeWindow* window;
33+
} VkOHSurfaceCreateInfoOHOS;
34+
35+
typedef VkOHSurfaceCreateInfoOHOS VkSurfaceCreateInfoOHOS;
36+
37+
typedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
38+
39+
#ifndef VK_NO_PROTOTYPES
40+
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
41+
VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(
42+
VkInstance instance,
43+
const VkSurfaceCreateInfoOHOS* pCreateInfo,
44+
const VkAllocationCallbacks* pAllocator,
45+
VkSurfaceKHR* pSurface);
46+
#endif
47+
#endif
48+
49+
#ifdef __cplusplus
50+
}
51+
#endif
52+
53+
#endif

include/vulkan/vulkan_webrogue.h

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#ifndef VULKAN_WEBROGUE_H_
2+
#define VULKAN_WEBROGUE_H_ 1
3+
4+
/*
5+
** Copyright 2015-2025 The Khronos Group Inc.
6+
**
7+
** SPDX-License-Identifier: Apache-2.0
8+
*/
9+
10+
/*
11+
** This header is generated from the Khronos Vulkan XML API Registry.
12+
**
13+
*/
14+
15+
16+
#ifdef __cplusplus
17+
extern "C" {
18+
#endif
19+
20+
21+
22+
// VK_WEBROGUE_surface is a preprocessor guard. Do not pass it to API calls.
23+
#define VK_WEBROGUE_surface 1
24+
#define VK_WEBROGUE_SURFACE_SPEC_VERSION 1
25+
#define VK_WEBROGUE_SURFACE_EXTENSION_NAME "VK_WEBROGUE_surface"
26+
typedef VkFlags VkSurfaceCreateFlagsWEBROGUE;
27+
typedef struct VkSurfaceCreateInfoWEBROGUE {
28+
VkStructureType sType;
29+
const void* pNext;
30+
VkSurfaceCreateFlagsWEBROGUE flags;
31+
} VkSurfaceCreateInfoWEBROGUE;
32+
33+
typedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceWEBROGUE)(VkInstance instance, const VkSurfaceCreateInfoWEBROGUE* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
34+
35+
#ifndef VK_NO_PROTOTYPES
36+
VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceWEBROGUE(
37+
VkInstance instance,
38+
const VkSurfaceCreateInfoWEBROGUE* pCreateInfo,
39+
const VkAllocationCallbacks* pAllocator,
40+
VkSurfaceKHR* pSurface);
41+
#endif
42+
43+
#ifdef __cplusplus
44+
}
45+
#endif
46+
47+
#endif

0 commit comments

Comments
 (0)