@@ -226,3 +226,28 @@ TEST_F(PositiveDeviceAddressCommands, BindVertexBuffers3Stride) {
226226 m_command_buffer.EndRenderPass ();
227227 m_command_buffer.End ();
228228}
229+
230+ TEST_F (PositiveDeviceAddressCommands, MultipleRegions) {
231+ RETURN_IF_SKIP (InitBasicDeviceAddressCommands ());
232+
233+ vkt::Buffer src_buffer (*m_device, 1024u , VK_BUFFER_USAGE_TRANSFER_SRC_BIT, vkt::device_address);
234+ vkt::Buffer dst_buffer (*m_device, 1024u , VK_BUFFER_USAGE_TRANSFER_DST_BIT, vkt::device_address);
235+
236+ VkDeviceMemoryCopyKHR regions[4 ];
237+ for (uint32_t i = 0 ; i < 4 ; ++i) {
238+ regions[i] = vku::InitStructHelper ();
239+ regions[i].srcRange = src_buffer.AddressRange ();
240+ regions[i].srcRange .address += i * 256u ;
241+ regions[i].srcRange .size = 256u ;
242+ regions[i].dstRange = dst_buffer.AddressRange ();
243+ regions[i].dstRange .address += i * 256u ;
244+ regions[i].dstRange .size = 256u ;
245+ }
246+ VkCopyDeviceMemoryInfoKHR copy_memory_info = vku::InitStructHelper ();
247+ copy_memory_info.regionCount = 4u ;
248+ copy_memory_info.pRegions = regions;
249+
250+ m_command_buffer.Begin ();
251+ vk::CmdCopyMemoryKHR (m_command_buffer, ©_memory_info);
252+ m_command_buffer.End ();
253+ }
0 commit comments