Unified · Split
| @@ -457,6 +457,10 @@ static av_cold int init_denoise_pipeline(FFVulkanContext *vkctx, FFVkExecPool *e · 456 unmodified lines | |||
| 457 | .elems = planes, | 457 | .elems = planes, |
| 458 | .stages = VK_SHADER_STAGE_COMPUTE_BIT, | 458 | .stages = VK_SHADER_STAGE_COMPUTE_BIT, |
| 459 | }, | 459 | }, |
| 460 | }; | ||
| 461 | RET(ff_vk_pipeline_descriptor_set_add(vkctx, pl, shd, desc_set, 2, 0, 0)); | ||
| 462 | |||
| 463 | desc_set = (FFVulkanDescriptorSetBinding []) { | ||
| 460 | { | 464 | { |
| 461 | .name = "weights_buffer_0", | 465 | .name = "weights_buffer_0", |
| 462 | .type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, | 466 | .type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, |
| @@ -514,7 +518,8 @@ static av_cold int init_denoise_pipeline(FFVulkanContext *vkctx, FFVkExecPool *e · 51 unmodified lines | |||
| 514 | .buf_content = "float sums_3[];", | 518 | .buf_content = "float sums_3[];", |
| 515 | }, | 519 | }, |
| 516 | }; | 520 | }; |
| 517 | RET(ff_vk_pipeline_descriptor_set_add(vkctx, pl, shd, desc_set, 2 + 2*desc->nb_components, 0, 0)); | 521 | |
| 522 | RET(ff_vk_pipeline_descriptor_set_add(vkctx, pl, shd, desc_set, 2*desc->nb_components, 0, 0)); | ||
| 518 | 523 | ||
| 519 | GLSLC(0, void main() ); | 524 | GLSLC(0, void main() ); |
| 520 | GLSLC(0, { ); | 525 | GLSLC(0, { ); |
| @@ -753,8 +758,8 @@ static int nlmeans_vulkan_filter_frame(AVFilterLink *link, AVFrame *in) · 232 unmodified lines | |||
| 753 | /* Weights/sums */ | 758 | /* Weights/sums */ |
| 754 | AVBufferRef *ws_buf = NULL; | 759 | AVBufferRef *ws_buf = NULL; |
| 755 | FFVkBuffer *ws_vk; | 760 | FFVkBuffer *ws_vk; |
| 756 | VkDeviceSize weights_addr[4]; | 761 | VkDeviceSize weights_offs[4]; |
| 757 | VkDeviceSize sums_addr[4]; | 762 | VkDeviceSize sums_offs[4]; |
| 758 | uint32_t ws_stride[4]; | 763 | uint32_t ws_stride[4]; |
| 759 | size_t ws_size[4]; | 764 | size_t ws_size[4]; |
| 760 | size_t ws_total_size = 0; | 765 | size_t ws_total_size = 0; |
| @@ -812,11 +817,11 @@ static int nlmeans_vulkan_filter_frame(AVFilterLink *link, AVFrame *in) · 51 unmodified lines | |||
| 812 | return err; | 817 | return err; |
| 813 | ws_vk = (FFVkBuffer *)ws_buf->data; | 818 | ws_vk = (FFVkBuffer *)ws_buf->data; |
| 814 | 819 | ||
| 815 | weights_addr[0] = 0; | 820 | weights_offs[0] = 0; |
| 816 | sums_addr[0] = ws_total_size; | 821 | sums_offs[0] = ws_total_size; |
| 817 | for (int i = 1; i < desc->nb_components; i++) { | 822 | for (int i = 1; i < desc->nb_components; i++) { |
| 818 | weights_addr[i] = weights_addr[i - 1] + ws_size[i - 1]; | 823 | weights_offs[i] = weights_offs[i - 1] + ws_size[i - 1]; |
| 819 | sums_addr[i] = sums_addr[i - 1] + ws_size[i - 1]; | 824 | sums_offs[i] = sums_offs[i - 1] + ws_size[i - 1]; |
| 820 | } | 825 | } |
| 821 | 826 | ||
| 822 | /* Output frame */ | 827 | /* Output frame */ |
| @@ -933,10 +938,10 @@ static int nlmeans_vulkan_filter_frame(AVFilterLink *link, AVFrame *in) · 110 unmodified lines | |||
| 933 | s->sampler); | 938 | s->sampler); |
| 934 | for (int i = 0; i < desc->nb_components; i++) { | 939 | for (int i = 0; i < desc->nb_components; i++) { |
| 935 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_weights, exec, 0, 1 + i*2 + 0, 0, | 940 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_weights, exec, 0, 1 + i*2 + 0, 0, |
| 936 | ws_vk, weights_addr[i], ws_size[i], | 941 | ws_vk, weights_offs[i], ws_size[i], |
| 937 | VK_FORMAT_UNDEFINED)); | 942 | VK_FORMAT_UNDEFINED)); |
| 938 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_weights, exec, 0, 1 + i*2 + 1, 0, | 943 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_weights, exec, 0, 1 + i*2 + 1, 0, |
| 939 | ws_vk, sums_addr[i], ws_size[i], | 944 | ws_vk, sums_offs[i], ws_size[i], |
| 940 | VK_FORMAT_UNDEFINED)); | 945 | VK_FORMAT_UNDEFINED)); |
| 941 | } | 946 | } |
| 942 | 947 | ||
| @@ -947,11 +952,11 @@ static int nlmeans_vulkan_filter_frame(AVFilterLink *link, AVFrame *in) · 4 unmodified lines | |||
| 947 | ff_vk_update_descriptor_img_array(vkctx, &s->pl_denoise, exec, out, out_views, 0, 1, | 952 | ff_vk_update_descriptor_img_array(vkctx, &s->pl_denoise, exec, out, out_views, 0, 1, |
| 948 | VK_IMAGE_LAYOUT_GENERAL, s->sampler); | 953 | VK_IMAGE_LAYOUT_GENERAL, s->sampler); |
| 949 | for (int i = 0; i < desc->nb_components; i++) { | 954 | for (int i = 0; i < desc->nb_components; i++) { |
| 950 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_denoise, exec, 0, 2 + i*2 + 0, 0, | 955 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_denoise, exec, 1, i*2 + 0, 0, |
| 951 | ws_vk, weights_addr[i], ws_size[i], | 956 | ws_vk, weights_offs[i], ws_size[i], |
| 952 | VK_FORMAT_UNDEFINED)); | 957 | VK_FORMAT_UNDEFINED)); |
| 953 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_denoise, exec, 0, 2 + i*2 + 1, 0, | 958 | RET(ff_vk_set_descriptor_buffer(&s->vkctx, &s->pl_denoise, exec, 1, i*2 + 1, 0, |
| 954 | ws_vk, sums_addr[i], ws_size[i], | 959 | ws_vk, sums_offs[i], ws_size[i], |
| 955 | VK_FORMAT_UNDEFINED)); | 960 | VK_FORMAT_UNDEFINED)); |
| 956 | } | 961 | } |
| 957 | 962 | ||