History

lavfi/*vulkan: forward FFVulkanContext to SPIR-V compilers

We need to know what extensions are supported.

Lynne committed 2 years ago

Commit 0bc4e031 parent 356d1cc15 files · +29 −29Browse files

Unified · Split

15 files
  1. libavfilter/vf_avgblur_vulkan.c +1 −1
  2. libavfilter/vf_blend_vulkan.c +1 −1
  3. libavfilter/vf_bwdif_vulkan.c +1 −1
  4. libavfilter/vf_chromaber_vulkan.c +1 −1
  5. libavfilter/vf_flip_vulkan.c +1 −1
  6. libavfilter/vf_gblur_vulkan.c +1 −1
  7. libavfilter/vf_nlmeans_vulkan.c +2 −2
  8. libavfilter/vf_overlay_vulkan.c +1 −1
  9. libavfilter/vf_scale_vulkan.c +1 −1
  10. libavfilter/vf_transpose_vulkan.c +1 −1
  11. libavfilter/vf_xfade_vulkan.c +1 −1
  12. libavfilter/vsrc_testsrc_vulkan.c +1 −1
  13. libavfilter/vulkan_glslang.c +10 −10
  14. libavfilter/vulkan_shaderc.c +4 −4
  15. libavfilter/vulkan_spirv.h +2 −2
libavfilter/vf_avgblur_vulkan.c+1−1
@@ -137,7 +137,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) · 136 unmodified lines
137 }137 }
138 GLSLC(0, } );138 GLSLC(0, } );
139 139
140 RET(spv->compile_shader(spv, ctx, &s->shd, &spv_data, &spv_len, "main",140 RET(spv->compile_shader(vkctx, spv, &s->shd, &spv_data, &spv_len, "main",
141 &spv_opaque));141 &spv_opaque));
142 RET(ff_vk_shader_link(vkctx, &s->shd, spv_data, spv_len, "main"));142 RET(ff_vk_shader_link(vkctx, &s->shd, spv_data, spv_len, "main"));
143 143
libavfilter/vf_blend_vulkan.c+1−1
@@ -208,7 +208,7 @@ static av_cold int init_filter(AVFilterContext *avctx) · 207 unmodified lines
208 }208 }
209 GLSLC(0, } );209 GLSLC(0, } );
210 210
211 RET(spv->compile_shader(spv, avctx, shd, &spv_data, &spv_len, "main",211 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
212 &spv_opaque));212 &spv_opaque));
213 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));213 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
214 214
libavfilter/vf_bwdif_vulkan.c+1−1
@@ -244,7 +244,7 @@ static av_cold int init_filter(AVFilterContext *ctx) · 243 unmodified lines
244 244
245 GLSLC(0, } );245 GLSLC(0, } );
246 246
247 RET(spv->compile_shader(spv, ctx, &s->shd, &spv_data, &spv_len, "main",247 RET(spv->compile_shader(vkctx, spv, &s->shd, &spv_data, &spv_len, "main",
248 &spv_opaque));248 &spv_opaque));
249 RET(ff_vk_shader_link(vkctx, &s->shd, spv_data, spv_len, "main"));249 RET(ff_vk_shader_link(vkctx, &s->shd, spv_data, spv_len, "main"));
250 250
libavfilter/vf_chromaber_vulkan.c+1−1
@@ -148,7 +148,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) · 147 unmodified lines
148 }148 }
149 GLSLC(0, } );149 GLSLC(0, } );
150 150
151 RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main",151 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
152 &spv_opaque));152 &spv_opaque));
153 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));153 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
154 154
libavfilter/vf_flip_vulkan.c+1−1
@@ -121,7 +121,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in, enum FlipType · 120 unmodified lines
121 }121 }
122 GLSLC(0, } );122 GLSLC(0, } );
123 123
124 RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main",124 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
125 &spv_opaque));125 &spv_opaque));
126 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));126 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
127 127
libavfilter/vf_gblur_vulkan.c+1−1
@@ -169,7 +169,7 @@ static int init_gblur_pipeline(GBlurVulkanContext *s, · 168 unmodified lines
169 }169 }
170 GLSLC(0, } );170 GLSLC(0, } );
171 171
172 RET(spv->compile_shader(spv, s, shd, &spv_data, &spv_len, "main",172 RET(spv->compile_shader(&s->vkctx, spv, shd, &spv_data, &spv_len, "main",
173 &spv_opaque));173 &spv_opaque));
174 RET(ff_vk_shader_link(&s->vkctx, shd, spv_data, spv_len, "main"));174 RET(ff_vk_shader_link(&s->vkctx, shd, spv_data, spv_len, "main"));
175 175
libavfilter/vf_nlmeans_vulkan.c+2−2
@@ -402,7 +402,7 @@ static av_cold int init_weights_pipeline(FFVulkanContext *vkctx, FFVkExecPool *e · 401 unmodified lines
402 402
403 GLSLC(0, } );403 GLSLC(0, } );
404 404
405 RET(spv->compile_shader(spv, vkctx, shd, &spv_data, &spv_len, "main", &spv_opaque));405 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque));
406 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));406 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
407 407
408 RET(ff_vk_shader_register_exec(vkctx, exec, shd));408 RET(ff_vk_shader_register_exec(vkctx, exec, shd));
@@ -553,7 +553,7 @@ static av_cold int init_denoise_pipeline(FFVulkanContext *vkctx, FFVkExecPool *e · 144 unmodified lines
553 GLSLC(1, imageStore(output_img[plane], pos, r); );553 GLSLC(1, imageStore(output_img[plane], pos, r); );
554 GLSLC(0, } );554 GLSLC(0, } );
555 555
556 RET(spv->compile_shader(spv, vkctx, shd, &spv_data, &spv_len, "main", &spv_opaque));556 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque));
557 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));557 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
558 558
559 RET(ff_vk_shader_register_exec(vkctx, exec, shd));559 RET(ff_vk_shader_register_exec(vkctx, exec, shd));
libavfilter/vf_overlay_vulkan.c+1−1
@@ -163,7 +163,7 @@ static av_cold int init_filter(AVFilterContext *ctx) · 162 unmodified lines
163 GLSLC(1, } );163 GLSLC(1, } );
164 GLSLC(0, } );164 GLSLC(0, } );
165 165
166 RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main",166 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
167 &spv_opaque));167 &spv_opaque));
168 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));168 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
169 169
libavfilter/vf_scale_vulkan.c+1−1
@@ -247,7 +247,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) · 246 unmodified lines
247 s->opts.yuv_matrix[3][3] = 1.0;247 s->opts.yuv_matrix[3][3] = 1.0;
248 }248 }
249 249
250 RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main",250 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
251 &spv_opaque));251 &spv_opaque));
252 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));252 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
253 253
libavfilter/vf_transpose_vulkan.c+1−1
@@ -113,7 +113,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) · 112 unmodified lines
113 }113 }
114 GLSLC(0, } );114 GLSLC(0, } );
115 115
116 RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main",116 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
117 &spv_opaque));117 &spv_opaque));
118 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));118 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
119 119
libavfilter/vf_xfade_vulkan.c+1−1
@@ -393,7 +393,7 @@ static av_cold int init_vulkan(AVFilterContext *avctx) · 392 unmodified lines
393 GLSLC(1, } );393 GLSLC(1, } );
394 GLSLC(0, } );394 GLSLC(0, } );
395 395
396 RET(spv->compile_shader(spv, avctx, shd, &spv_data, &spv_len, "main",396 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
397 &spv_opaque));397 &spv_opaque));
398 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));398 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
399 399
libavfilter/vsrc_testsrc_vulkan.c+1−1
@@ -179,7 +179,7 @@ static av_cold int init_filter(AVFilterContext *ctx, enum TestSrcVulkanMode mode · 178 unmodified lines
179 }179 }
180 GLSLC(0, } );180 GLSLC(0, } );
181 181
182 RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main",182 RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main",
183 &spv_opaque));183 &spv_opaque));
184 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));184 RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main"));
185 185
libavfilter/vulkan_glslang.c+10−10
@@ -136,7 +136,7 @@ static const glslang_resource_t glslc_resource_limits = { · 135 unmodified lines
136 }136 }
137};137};
138 138
139static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx,139static int glslc_shader_compile(FFVulkanContext *s, FFVkSPIRVCompiler *ctx,
140 FFVulkanShader *shd, uint8_t **data,140 FFVulkanShader *shd, uint8_t **data,
141 size_t *size, const char *entrypoint,141 size_t *size, const char *entrypoint,
142 void **opaque)142 void **opaque)
@@ -183,8 +183,8 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, · 40 unmodified lines
183 return AVERROR(ENOMEM);183 return AVERROR(ENOMEM);
184 184
185 if (!glslang_shader_preprocess(glslc_shader, &glslc_input)) {185 if (!glslang_shader_preprocess(glslc_shader, &glslc_input)) {
186 ff_vk_shader_print(avctx, shd, AV_LOG_WARNING);186 ff_vk_shader_print(s, shd, AV_LOG_WARNING);
187 av_log(avctx, AV_LOG_ERROR, "Unable to preprocess shader: %s (%s)!\n",187 av_log(s, AV_LOG_ERROR, "Unable to preprocess shader: %s (%s)!\n",
188 glslang_shader_get_info_log(glslc_shader),188 glslang_shader_get_info_log(glslc_shader),
189 glslang_shader_get_info_debug_log(glslc_shader));189 glslang_shader_get_info_debug_log(glslc_shader));
190 glslang_shader_delete(glslc_shader);190 glslang_shader_delete(glslc_shader);
@@ -192,8 +192,8 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, · 1 unmodified line
192 }192 }
193 193
194 if (!glslang_shader_parse(glslc_shader, &glslc_input)) {194 if (!glslang_shader_parse(glslc_shader, &glslc_input)) {
195 ff_vk_shader_print(avctx, shd, AV_LOG_WARNING);195 ff_vk_shader_print(s, shd, AV_LOG_WARNING);
196 av_log(avctx, AV_LOG_ERROR, "Unable to parse shader: %s (%s)!\n",196 av_log(s, AV_LOG_ERROR, "Unable to parse shader: %s (%s)!\n",
197 glslang_shader_get_info_log(glslc_shader),197 glslang_shader_get_info_log(glslc_shader),
198 glslang_shader_get_info_debug_log(glslc_shader));198 glslang_shader_get_info_debug_log(glslc_shader));
199 glslang_shader_delete(glslc_shader);199 glslang_shader_delete(glslc_shader);
@@ -209,8 +209,8 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, · 9 unmodified lines
209 209
210 if (!glslang_program_link(glslc_program, GLSLANG_MSG_SPV_RULES_BIT |210 if (!glslang_program_link(glslc_program, GLSLANG_MSG_SPV_RULES_BIT |
211 GLSLANG_MSG_VULKAN_RULES_BIT)) {211 GLSLANG_MSG_VULKAN_RULES_BIT)) {
212 ff_vk_shader_print(avctx, shd, AV_LOG_WARNING);212 ff_vk_shader_print(s, shd, AV_LOG_WARNING);
213 av_log(avctx, AV_LOG_ERROR, "Unable to link shader: %s (%s)!\n",213 av_log(s, AV_LOG_ERROR, "Unable to link shader: %s (%s)!\n",
214 glslang_program_get_info_log(glslc_program),214 glslang_program_get_info_log(glslc_program),
215 glslang_program_get_info_debug_log(glslc_program));215 glslang_program_get_info_debug_log(glslc_program));
216 glslang_program_delete(glslc_program);216 glslang_program_delete(glslc_program);
@@ -222,10 +222,10 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, · 5 unmodified lines
222 222
223 messages = glslang_program_SPIRV_get_messages(glslc_program);223 messages = glslang_program_SPIRV_get_messages(glslc_program);
224 if (messages) {224 if (messages) {
225 ff_vk_shader_print(avctx, shd, AV_LOG_WARNING);225 ff_vk_shader_print(s, shd, AV_LOG_WARNING);
226 av_log(avctx, AV_LOG_WARNING, "%s\n", messages);226 av_log(s, AV_LOG_WARNING, "%s\n", messages);
227 } else {227 } else {
228 ff_vk_shader_print(avctx, shd, AV_LOG_VERBOSE);228 ff_vk_shader_print(s, shd, AV_LOG_VERBOSE);
229 }229 }
230 230
231 glslang_shader_delete(glslc_shader);231 glslang_shader_delete(glslc_shader);
libavfilter/vulkan_shaderc.c+4−4
@@ -21,7 +21,7 @@ · 20 unmodified lines
21#include "libavutil/mem.h"21#include "libavutil/mem.h"
22#include "vulkan_spirv.h"22#include "vulkan_spirv.h"
23 23
24static int shdc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx,24static int shdc_shader_compile(FFVulkanContext *s, FFVkSPIRVCompiler *ctx,
25 FFVulkanShader *shd, uint8_t **data,25 FFVulkanShader *shd, uint8_t **data,
26 size_t *size, const char *entrypoint,26 size_t *size, const char *entrypoint,
27 void **opaque)27 void **opaque)
@@ -71,11 +71,11 @@ static int shdc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, · 43 unmodified lines
71 71
72 loglevel = err ? AV_LOG_ERROR : warn ? AV_LOG_WARNING : AV_LOG_VERBOSE;72 loglevel = err ? AV_LOG_ERROR : warn ? AV_LOG_WARNING : AV_LOG_VERBOSE;
73 73
74 ff_vk_shader_print(avctx, shd, loglevel);74 ff_vk_shader_print(s, shd, loglevel);
75 if (message && (err || warn))75 if (message && (err || warn))
76 av_log(avctx, loglevel, "%s\n", message);76 av_log(s, loglevel, "%s\n", message);
77 status = ret < FF_ARRAY_ELEMS(shdc_result) ? shdc_result[ret] : "unknown";77 status = ret < FF_ARRAY_ELEMS(shdc_result) ? shdc_result[ret] : "unknown";
78 av_log(avctx, loglevel, "shaderc compile status '%s' (%d errors, %d warnings)\n",78 av_log(s, loglevel, "shaderc compile status '%s' (%d errors, %d warnings)\n",
79 status, err, warn);79 status, err, warn);
80 80
81 if (err > 0)81 if (err > 0)
libavfilter/vulkan_spirv.h+2−2
@@ -26,8 +26,8 @@ · 25 unmodified lines
26 26
27typedef struct FFVkSPIRVCompiler {27typedef struct FFVkSPIRVCompiler {
28 void *priv;28 void *priv;
29 int (*compile_shader)(struct FFVkSPIRVCompiler *ctx, void *avctx,29 int (*compile_shader)(FFVulkanContext *s, struct FFVkSPIRVCompiler *ctx,
30 struct FFVulkanShader *shd, uint8_t **data,30 FFVulkanShader *shd, uint8_t **data,
31 size_t *size, const char *entrypoint, void **opaque);31 size_t *size, const char *entrypoint, void **opaque);
32 void (*free_shader)(struct FFVkSPIRVCompiler *ctx, void **opaque);32 void (*free_shader)(struct FFVkSPIRVCompiler *ctx, void **opaque);
33 void (*uninit)(struct FFVkSPIRVCompiler **ctx);33 void (*uninit)(struct FFVkSPIRVCompiler **ctx);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t