Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 65 additions & 51 deletions test_conformance/vulkan/test_vulkan_interop_image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -451,47 +451,51 @@ int run_test_with_two_queue(
ROUND_UP(vkImage2D.getSize(),
vkImage2D.getAlignment());
}
VulkanImage2DList vkImage2DList(
num2DImages, vkDevice, vkFormat, width, height,
*vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType);
std::unique_ptr<VulkanImage2DList> vkImage2DList{
new VulkanImage2DList(
num2DImages, vkDevice, vkFormat, width,
height, *vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType)
};
for (size_t bIdx = 0; bIdx < num2DImages; bIdx++)
{
vkImage2DListDeviceMemory1.push_back(
new VulkanDeviceMemory(
vkDevice, vkImage2DList[bIdx],
vkDevice, (*vkImage2DList)[bIdx],
memoryType,
vkExternalMemoryHandleType));
vkImage2DListDeviceMemory1[bIdx]->bindImage(
vkImage2DList[bIdx], 0);
(*vkImage2DList)[bIdx], 0);
externalMemory1.push_back(
new clExternalMemoryImage(
*vkImage2DListDeviceMemory1[bIdx],
vkExternalMemoryHandleType, context,
totalImageMemSize, width, height, 0,
vkImage2DList[bIdx], deviceId));
(*vkImage2DList)[bIdx], deviceId));
}
VulkanImageViewList vkImage2DViewList(
vkDevice, vkImage2DList);
VulkanImage2DList vkImage2DList2(
num2DImages, vkDevice, vkFormat, width, height,
*vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType);
vkDevice, (*vkImage2DList));
std::unique_ptr<VulkanImage2DList> vkImage2DList2{
new VulkanImage2DList(
num2DImages, vkDevice, vkFormat, width,
height, *vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType)
};
for (size_t bIdx = 0; bIdx < num2DImages; bIdx++)
{
vkImage2DListDeviceMemory2.push_back(
new VulkanDeviceMemory(
vkDevice, vkImage2DList2[bIdx],
vkDevice, (*vkImage2DList2)[bIdx],
memoryType,
vkExternalMemoryHandleType));
vkImage2DListDeviceMemory2[bIdx]->bindImage(
vkImage2DList2[bIdx], 0);
(*vkImage2DList2)[bIdx], 0);
externalMemory2.push_back(
new clExternalMemoryImage(
*vkImage2DListDeviceMemory2[bIdx],
vkExternalMemoryHandleType, context,
totalImageMemSize, width, height, 0,
vkImage2DList2[bIdx], deviceId));
(*vkImage2DList2)[bIdx], deviceId));
}

cl_mem external_mem_image1[5];
Expand All @@ -517,18 +521,18 @@ int run_test_with_two_queue(
vkImage2DViewList);
vkCopyCommandBuffer.begin();
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_UNDEFINED,
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
for (size_t i2DIdx = 0;
i2DIdx < vkImage2DList.size(); i2DIdx++)
i2DIdx < vkImage2DList->size(); i2DIdx++)
{
vkCopyCommandBuffer.copyBufferToImage(
vkSrcBuffer, vkImage2DList[i2DIdx],
vkSrcBuffer, (*vkImage2DList)[i2DIdx],
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
}
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VULKAN_IMAGE_LAYOUT_GENERAL);
vkCopyCommandBuffer.end();
Expand All @@ -554,22 +558,23 @@ int run_test_with_two_queue(
if (useSingleImageKernel)
{
for (size_t i2DIdx = 0;
i2DIdx < vkImage2DList.size();
i2DIdx < vkImage2DList->size();
i2DIdx++)
{
vkDescriptorSet.update(
1, vkImage2DViewList[i2DIdx]);
vkCopyCommandBuffer.begin();
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_UNDEFINED,
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);

vkCopyCommandBuffer.copyBufferToImage(
vkSrcBuffer, vkImage2DList[i2DIdx],
vkSrcBuffer,
(*vkImage2DList)[i2DIdx],
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VULKAN_IMAGE_LAYOUT_GENERAL);
vkCopyCommandBuffer.end();
Expand All @@ -591,7 +596,7 @@ int run_test_with_two_queue(
/ 2),
1);
vkShaderCommandBuffer.end();
if (i2DIdx < vkImage2DList.size() - 1)
if (i2DIdx < vkImage2DList->size() - 1)
{
vkQueue.submit(
vkShaderCommandBuffer);
Expand Down Expand Up @@ -807,6 +812,8 @@ int run_test_with_two_queue(
break;
}
}
vkImage2DList.reset(nullptr);
vkImage2DList2.reset(nullptr);
for (uint32_t i = 0; i < num2DImages; i++)
{
delete vkImage2DListDeviceMemory1[i];
Expand Down Expand Up @@ -1068,52 +1075,56 @@ int run_test_with_one_queue(
ROUND_UP(vkImage2D.getSize(),
vkImage2D.getAlignment());
}
VulkanImage2DList vkImage2DList(
num2DImages, vkDevice, vkFormat, width, height,
*vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType);
for (size_t bIdx = 0; bIdx < vkImage2DList.size();
std::unique_ptr<VulkanImage2DList> vkImage2DList{
new VulkanImage2DList(
num2DImages, vkDevice, vkFormat, width,
height, *vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType)
};
for (size_t bIdx = 0; bIdx < vkImage2DList->size();
bIdx++)
{
// Create list of Vulkan device memories and
// bind the list of Vulkan images.
vkImage2DListDeviceMemory1.push_back(
new VulkanDeviceMemory(
vkDevice, vkImage2DList[bIdx],
vkDevice, (*vkImage2DList)[bIdx],
memoryType,
vkExternalMemoryHandleType));
vkImage2DListDeviceMemory1[bIdx]->bindImage(
vkImage2DList[bIdx], 0);
(*vkImage2DList)[bIdx], 0);
externalMemory1.push_back(
new clExternalMemoryImage(
*vkImage2DListDeviceMemory1[bIdx],
vkExternalMemoryHandleType, context,
totalImageMemSize, width, height, 0,
vkImage2DList[bIdx], deviceId));
(*vkImage2DList)[bIdx], deviceId));
}
VulkanImageViewList vkImage2DViewList(
vkDevice, vkImage2DList);

VulkanImage2DList vkImage2DList2(
num2DImages, vkDevice, vkFormat, width, height,
*vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType);
for (size_t bIdx = 0; bIdx < vkImage2DList2.size();
vkDevice, *vkImage2DList);

std::unique_ptr<VulkanImage2DList> vkImage2DList2{
new VulkanImage2DList(
num2DImages, vkDevice, vkFormat, width,
height, *vulkanImageTiling, numMipLevels,
vkExternalMemoryHandleType)
};
for (size_t bIdx = 0; bIdx < vkImage2DList2->size();
bIdx++)
{
vkImage2DListDeviceMemory2.push_back(
new VulkanDeviceMemory(
vkDevice, vkImage2DList2[bIdx],
vkDevice, (*vkImage2DList2)[bIdx],
memoryType,
vkExternalMemoryHandleType));
vkImage2DListDeviceMemory2[bIdx]->bindImage(
vkImage2DList2[bIdx], 0);
(*vkImage2DList2)[bIdx], 0);
externalMemory2.push_back(
new clExternalMemoryImage(
*vkImage2DListDeviceMemory2[bIdx],
vkExternalMemoryHandleType, context,
totalImageMemSize, width, height, 0,
vkImage2DList2[bIdx], deviceId));
(*vkImage2DList2)[bIdx], deviceId));
}

cl_mem external_mem_image1[4];
Expand All @@ -1139,18 +1150,18 @@ int run_test_with_one_queue(
vkImage2DViewList);
vkCopyCommandBuffer.begin();
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
*vkImage2DList,
VULKAN_IMAGE_LAYOUT_UNDEFINED,
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
for (size_t i2DIdx = 0;
i2DIdx < vkImage2DList.size(); i2DIdx++)
i2DIdx < vkImage2DList->size(); i2DIdx++)
{
vkCopyCommandBuffer.copyBufferToImage(
vkSrcBuffer, vkImage2DList[i2DIdx],
vkSrcBuffer, (*vkImage2DList)[i2DIdx],
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
}
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VULKAN_IMAGE_LAYOUT_GENERAL);
vkCopyCommandBuffer.end();
Expand All @@ -1176,22 +1187,23 @@ int run_test_with_one_queue(
if (useSingleImageKernel)
{
for (size_t i2DIdx = 0;
i2DIdx < vkImage2DList.size();
i2DIdx < vkImage2DList->size();
i2DIdx++)
{
vkDescriptorSet.update(
1, vkImage2DViewList[i2DIdx]);
vkCopyCommandBuffer.begin();
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_UNDEFINED,
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);

vkCopyCommandBuffer.copyBufferToImage(
vkSrcBuffer, vkImage2DList[i2DIdx],
vkSrcBuffer,
(*vkImage2DList)[i2DIdx],
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
vkCopyCommandBuffer.pipelineBarrier(
vkImage2DList,
(*vkImage2DList),
VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VULKAN_IMAGE_LAYOUT_GENERAL);
vkCopyCommandBuffer.end();
Expand All @@ -1213,7 +1225,7 @@ int run_test_with_one_queue(
/ 2),
1);
vkShaderCommandBuffer.end();
if (i2DIdx < vkImage2DList.size() - 1)
if (i2DIdx < vkImage2DList->size() - 1)
{
vkQueue.submit(
vkShaderCommandBuffer);
Expand Down Expand Up @@ -1360,6 +1372,8 @@ int run_test_with_one_queue(
break;
}
}
vkImage2DList.reset(nullptr);
vkImage2DList2.reset(nullptr);
for (uint32_t i = 0; i < num2DImages; i++)
{
delete vkImage2DListDeviceMemory1[i];
Expand Down