MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / process

Function process

libswscale/vulkan/ops.c:95–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

93} VulkanPriv;
94
95static void process(const SwsOpExec *exec, const void *priv,
96 int x_start, int y_start, int x_end, int y_end)
97{
98 VulkanPriv *p = (VulkanPriv *)priv;
99 FFVkExecContext *ec = ff_vk_exec_get(&p->s->vkctx, &p->s->e);
100 FFVulkanFunctions *vk = &p->s->vkctx.vkfn;
101 ff_vk_exec_start(&p->s->vkctx, ec);
102
103 AVFrame *src_f = (AVFrame *) exec->in_frame->avframe;
104 AVFrame *dst_f = (AVFrame *) exec->out_frame->avframe;
105 ff_vk_exec_add_dep_frame(&p->s->vkctx, ec, src_f,
106 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
107 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT);
108 ff_vk_exec_add_dep_frame(&p->s->vkctx, ec, dst_f,
109 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
110 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT);
111
112 VkImageView src_views[AV_NUM_DATA_POINTERS];
113 VkImageView dst_views[AV_NUM_DATA_POINTERS];
114 ff_vk_create_imageviews(&p->s->vkctx, ec, src_views, src_f, p->src_rep);
115 ff_vk_create_imageviews(&p->s->vkctx, ec, dst_views, dst_f, p->dst_rep);
116
117 ff_vk_shader_update_img_array(&p->s->vkctx, ec, &p->shd, src_f, src_views,
118 0, 0, VK_IMAGE_LAYOUT_GENERAL, VK_NULL_HANDLE);
119 ff_vk_shader_update_img_array(&p->s->vkctx, ec, &p->shd, dst_f, dst_views,
120 0, 1, VK_IMAGE_LAYOUT_GENERAL, VK_NULL_HANDLE);
121
122 int nb_img_bar = 0;
123 VkImageMemoryBarrier2 img_bar[8];
124 ff_vk_frame_barrier(&p->s->vkctx, ec, src_f, img_bar, &nb_img_bar,
125 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
126 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
127 VK_ACCESS_SHADER_READ_BIT,
128 VK_IMAGE_LAYOUT_GENERAL,
129 VK_QUEUE_FAMILY_IGNORED);
130 ff_vk_frame_barrier(&p->s->vkctx, ec, dst_f, img_bar, &nb_img_bar,
131 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
132 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
133 VK_ACCESS_SHADER_WRITE_BIT,
134 VK_IMAGE_LAYOUT_GENERAL,
135 VK_QUEUE_FAMILY_IGNORED);
136 vk->CmdPipelineBarrier2(ec->buf, &(VkDependencyInfo) {
137 .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO,
138 .pImageMemoryBarriers = img_bar,
139 .imageMemoryBarrierCount = nb_img_bar,
140 });
141
142 ff_vk_exec_bind_shader(&p->s->vkctx, ec, &p->shd);
143
144 vk->CmdDispatch(ec->buf,
145 FFALIGN(src_f->width, p->shd.lg_size[0])/p->shd.lg_size[0],
146 FFALIGN(src_f->height, p->shd.lg_size[1])/p->shd.lg_size[1],
147 1);
148
149 ff_vk_exec_submit(&p->s->vkctx, ec);
150 ff_vk_exec_wait(&p->s->vkctx, ec);
151}
152

Callers

nothing calls this directly

Calls 8

ff_vk_exec_getFunction · 0.85
ff_vk_exec_startFunction · 0.85
ff_vk_exec_add_dep_frameFunction · 0.85
ff_vk_create_imageviewsFunction · 0.85
ff_vk_frame_barrierFunction · 0.85
ff_vk_exec_bind_shaderFunction · 0.85
ff_vk_exec_waitFunction · 0.85

Tested by

no test coverage detected