77TEST(vk_render_graph, fill_fill_read_back)
83 VKRenderGraph render_graph(std::make_unique<CommandBufferLog>(
log), resources);
86 render_graph.add_node(fill_buffer_1);
88 render_graph.add_node(fill_buffer_2);
92 EXPECT_EQ(
"fill_buffer(dst_buffer=0x1, dst_offset=0, size=1024, data=0)",
log[0]);
94 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
95 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
97 " - buffer_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
98 "dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, buffer=0x1, offset=0, "
99 "size=18446744073709551615)" +
102 EXPECT_EQ(
"fill_buffer(dst_buffer=0x1, dst_offset=0, size=1024, data=42)",
log[2]);
108TEST(vk_render_graph, clear_clear_copy_and_read_back)
116 VKRenderGraph render_graph(std::make_unique<CommandBufferLog>(
log), resources);
120 VkClearColorValue color_white = {};
121 color_white.float32[0] = 1.0f;
122 color_white.float32[1] = 1.0f;
123 color_white.float32[2] = 1.0f;
124 color_white.float32[3] = 1.0f;
125 VkClearColorValue color_black = {};
126 color_black.float32[0] = 0.0f;
127 color_black.float32[1] = 0.0f;
128 color_black.float32[2] = 0.0f;
129 color_black.float32[3] = 1.0f;
132 clear_color_image_src.
vk_image = src_image;
135 clear_color_image_dst.
vk_image = dst_image;
141 copy_image.
node_data.
region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
142 copy_image.
node_data.
region.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
145 copy_dst_image_to_buffer.
src_image = dst_image;
146 copy_dst_image_to_buffer.
dst_buffer = staging_buffer;
147 copy_dst_image_to_buffer.
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
149 render_graph.add_node(clear_color_image_src);
150 render_graph.add_node(clear_color_image_dst);
151 render_graph.add_node(copy_image);
152 render_graph.add_node(copy_dst_image_to_buffer);
157 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
158 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
160 " - image_barrier(src_access_mask=, dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
161 "old_layout=VK_IMAGE_LAYOUT_UNDEFINED, new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
162 "image=0x1, subresource_range=" +
164 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
165 "base_array_layer=0, layer_count=4294967295 )" +
168 EXPECT_EQ(
"clear_color_image(image=0x1, image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)",
172 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
173 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
175 " - image_barrier(src_access_mask=, dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
176 "old_layout=VK_IMAGE_LAYOUT_UNDEFINED, new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
177 "image=0x2, subresource_range=" +
179 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
180 "base_array_layer=0, layer_count=4294967295 )" +
183 EXPECT_EQ(
"clear_color_image(image=0x2, image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)",
187 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
188 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
190 " - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
191 "dst_access_mask=VK_ACCESS_TRANSFER_READ_BIT, "
192 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
193 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, image=0x1, subresource_range=" +
195 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
196 "base_array_layer=0, layer_count=4294967295 )" +
198 " - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
199 "dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
200 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
201 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, image=0x2, subresource_range=" +
203 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
204 "base_array_layer=0, layer_count=4294967295 )" +
208 "copy_image(src_image=0x1, src_image_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, "
209 "dst_image=0x2, dst_image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL" +
210 endl() +
" - region(src_subresource=" +
endl() +
211 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, mip_level=0, base_array_layer=0, "
212 "layer_count=0 , src_offset=" +
213 endl() +
" x=0, y=0, z=0 , dst_subresource=" +
endl() +
214 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, mip_level=0, base_array_layer=0, "
215 "layer_count=0 , dst_offset=" +
216 endl() +
" x=0, y=0, z=0 , extent=" +
endl() +
" width=0, height=0, depth=0 )" +
221 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
222 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
224 " - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
225 "dst_access_mask=VK_ACCESS_TRANSFER_READ_BIT, "
226 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
227 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, image=0x2, subresource_range=" +
229 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
230 "base_array_layer=0, layer_count=4294967295 )" +
234 "copy_image_to_buffer(src_image=0x2, src_image_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, "
237 " - region(buffer_offset=0, buffer_row_length=0, buffer_image_height=0, "
238 "image_subresource=" +
240 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, mip_level=0, base_array_layer=0, "
241 "layer_count=0 , image_offset=" +
242 endl() +
" x=0, y=0, z=0 , image_extent=\n width=0, height=0, depth=0 )" +
250TEST(vk_render_graph, clear_blit_copy_and_read_back)
258 VKRenderGraph render_graph(std::make_unique<CommandBufferLog>(
log), resources);
262 VkClearColorValue color_black = {};
263 color_black.float32[0] = 0.0f;
264 color_black.float32[1] = 0.0f;
265 color_black.float32[2] = 0.0f;
266 color_black.float32[3] = 1.0f;
267 VkImageBlit vk_image_blit = {};
269 clear_color_image_src.
vk_image = src_image;
272 copy_dst_image_to_buffer.
src_image = dst_image;
273 copy_dst_image_to_buffer.
dst_buffer = staging_buffer;
274 copy_dst_image_to_buffer.
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
276 render_graph.add_node(clear_color_image_src);
278 render_graph.add_node(blit_image);
279 render_graph.add_node(copy_dst_image_to_buffer);
284 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
285 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
287 " - image_barrier(src_access_mask=, dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
288 "old_layout=VK_IMAGE_LAYOUT_UNDEFINED, "
289 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, image=0x1, subresource_range=" +
291 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
292 "base_array_layer=0, layer_count=4294967295 )" +
295 EXPECT_EQ(
"clear_color_image(image=0x1, image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)",
298 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
299 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
301 " - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
302 "dst_access_mask=VK_ACCESS_TRANSFER_READ_BIT, "
303 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
304 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, image=0x1, subresource_range=" +
306 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
307 "base_array_layer=0, layer_count=4294967295 )" +
309 " - image_barrier(src_access_mask=, dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
310 "old_layout=VK_IMAGE_LAYOUT_UNDEFINED, new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
311 "image=0x2, subresource_range=" +
313 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
314 "base_array_layer=0, layer_count=4294967295 )" +
318 "blit_image(src_image=0x1, src_image_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, "
319 "dst_image=0x2, dst_image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
320 "filter=VK_FILTER_LINEAR" +
321 endl() +
" - region(src_subresource=" +
endl() +
322 " aspect_mask=, mip_level=0, base_array_layer=0, layer_count=0 , dst_subresource=" +
323 endl() +
" aspect_mask=, mip_level=0, base_array_layer=0, layer_count=0 )" +
endl() +
327 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
328 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
330 " - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
331 "dst_access_mask=VK_ACCESS_TRANSFER_READ_BIT, "
332 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
333 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, image=0x2, subresource_range=" +
335 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
336 "base_array_layer=0, layer_count=4294967295 )" +
340 "copy_image_to_buffer(src_image=0x2, src_image_layout=VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, "
343 " - region(buffer_offset=0, buffer_row_length=0, buffer_image_height=0, "
344 "image_subresource=" +
346 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, mip_level=0, base_array_layer=0, "
347 "layer_count=0 , image_offset=" +
348 endl() +
" x=0, y=0, z=0 , image_extent=" +
endl() +
349 " width=0, height=0, depth=0 )" +
endl() +
")",
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)