History

nlmeans_vulkan: split up descriptor sets, rename buffer offset vars

Lynne committed 2 years ago

Commit 39c640e1 parent bc36fe61 file · +18 −13Browse files

Unified · Split

libavfilter/vf_nlmeans_vulkan.c+18−13
@@ -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

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