mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Vulkan interop coverage (#1887)
Added Code changes for 1D, 1DList, 3D, 3DList and test cases.
This commit is contained in:
@@ -268,6 +268,57 @@ VulkanBufferList::~VulkanBufferList()
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////
|
||||
// VulkanImage1DList implementation //
|
||||
//////////////////////////////////////
|
||||
|
||||
VulkanImage1DList::VulkanImage1DList(const VulkanImage1DList &image1DList) {}
|
||||
|
||||
VulkanImage1DList::VulkanImage1DList(
|
||||
size_t numImages, std::vector<VulkanDeviceMemory *> &deviceMemory,
|
||||
uint64_t baseOffset, uint64_t interImageOffset, const VulkanDevice &device,
|
||||
VulkanFormat format, uint32_t width, uint32_t mipLevels,
|
||||
VulkanImageTiling vulkanImageTiling,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType,
|
||||
VulkanImageCreateFlag imageCreateFlag, VulkanImageUsage imageUsage,
|
||||
VulkanSharingMode sharingMode)
|
||||
{
|
||||
for (size_t i2DIdx = 0; i2DIdx < numImages; i2DIdx++)
|
||||
{
|
||||
VulkanImage1D *image2D = new VulkanImage1D(
|
||||
device, format, width, vulkanImageTiling, mipLevels,
|
||||
externalMemoryHandleType, imageCreateFlag, imageUsage, sharingMode);
|
||||
add(*image2D);
|
||||
deviceMemory[i2DIdx]->bindImage(
|
||||
*image2D, baseOffset + (i2DIdx * interImageOffset));
|
||||
}
|
||||
}
|
||||
|
||||
VulkanImage1DList::VulkanImage1DList(
|
||||
size_t numImages, const VulkanDevice &device, VulkanFormat format,
|
||||
uint32_t width, VulkanImageTiling vulkanImageTiling, uint32_t mipLevels,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType,
|
||||
VulkanImageCreateFlag imageCreateFlag, VulkanImageUsage imageUsage,
|
||||
VulkanSharingMode sharingMode)
|
||||
{
|
||||
for (size_t bIdx = 0; bIdx < numImages; bIdx++)
|
||||
{
|
||||
VulkanImage1D *image2D = new VulkanImage1D(
|
||||
device, format, width, vulkanImageTiling, mipLevels,
|
||||
externalMemoryHandleType, imageCreateFlag, imageUsage, sharingMode);
|
||||
add(*image2D);
|
||||
}
|
||||
}
|
||||
|
||||
VulkanImage1DList::~VulkanImage1DList()
|
||||
{
|
||||
for (size_t i2DIdx = 0; i2DIdx < m_wrapperList.size(); i2DIdx++)
|
||||
{
|
||||
VulkanImage1D &image2D = m_wrapperList[i2DIdx];
|
||||
delete &image2D;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////
|
||||
// VulkanImage2DList implementation //
|
||||
//////////////////////////////////////
|
||||
@@ -319,6 +370,57 @@ VulkanImage2DList::~VulkanImage2DList()
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////
|
||||
// VulkanImage3DList implementation //
|
||||
//////////////////////////////////////
|
||||
|
||||
VulkanImage3DList::VulkanImage3DList(const VulkanImage3DList &image3DList) {}
|
||||
|
||||
VulkanImage3DList::VulkanImage3DList(
|
||||
size_t numImages, std::vector<VulkanDeviceMemory *> &deviceMemory,
|
||||
uint64_t baseOffset, uint64_t interImageOffset, const VulkanDevice &device,
|
||||
VulkanFormat format, uint32_t width, uint32_t height, uint32_t depth,
|
||||
uint32_t mipLevels, VulkanImageTiling vulkanImageTiling,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType,
|
||||
VulkanImageCreateFlag imageCreateFlag, VulkanImageUsage imageUsage,
|
||||
VulkanSharingMode sharingMode)
|
||||
{
|
||||
for (size_t i2DIdx = 0; i2DIdx < numImages; i2DIdx++)
|
||||
{
|
||||
VulkanImage3D *image3D = new VulkanImage3D(
|
||||
device, format, width, height, depth, vulkanImageTiling, mipLevels,
|
||||
externalMemoryHandleType, imageCreateFlag, imageUsage, sharingMode);
|
||||
add(*image3D);
|
||||
deviceMemory[i2DIdx]->bindImage(
|
||||
*image3D, baseOffset + (i2DIdx * interImageOffset));
|
||||
}
|
||||
}
|
||||
|
||||
VulkanImage3DList::VulkanImage3DList(
|
||||
size_t numImages, const VulkanDevice &device, VulkanFormat format,
|
||||
uint32_t width, uint32_t height, uint32_t depth,
|
||||
VulkanImageTiling vulkanImageTiling, uint32_t mipLevels,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType,
|
||||
VulkanImageCreateFlag imageCreateFlag, VulkanImageUsage imageUsage,
|
||||
VulkanSharingMode sharingMode)
|
||||
{
|
||||
for (size_t bIdx = 0; bIdx < numImages; bIdx++)
|
||||
{
|
||||
VulkanImage3D *image3D = new VulkanImage3D(
|
||||
device, format, width, height, depth, vulkanImageTiling, mipLevels,
|
||||
externalMemoryHandleType, imageCreateFlag, imageUsage, sharingMode);
|
||||
add(*image3D);
|
||||
}
|
||||
}
|
||||
|
||||
VulkanImage3DList::~VulkanImage3DList()
|
||||
{
|
||||
for (size_t i2DIdx = 0; i2DIdx < m_wrapperList.size(); i2DIdx++)
|
||||
{
|
||||
VulkanImage3D &image3D = m_wrapperList[i2DIdx];
|
||||
delete &image3D;
|
||||
}
|
||||
}
|
||||
////////////////////////////////////////
|
||||
// VulkanImageViewList implementation //
|
||||
////////////////////////////////////////
|
||||
|
||||
@@ -202,6 +202,35 @@ public:
|
||||
virtual ~VulkanBufferList();
|
||||
};
|
||||
|
||||
class VulkanImage1DList : public VulkanList<VulkanImage1D, VkImage> {
|
||||
protected:
|
||||
VulkanImage1DList(const VulkanImage1DList &image1DList);
|
||||
|
||||
public:
|
||||
VulkanImage1DList(
|
||||
size_t numImages, std::vector<VulkanDeviceMemory *> &deviceMemory,
|
||||
uint64_t baseOffset, uint64_t interImageOffset,
|
||||
const VulkanDevice &device, VulkanFormat format, uint32_t width,
|
||||
uint32_t mipLevels, VulkanImageTiling vulkanImageTiling,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType =
|
||||
VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE,
|
||||
VulkanImageCreateFlag imageCreateFlag = VULKAN_IMAGE_CREATE_FLAG_NONE,
|
||||
VulkanImageUsage imageUsage =
|
||||
VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST,
|
||||
VulkanSharingMode sharingMode = VULKAN_SHARING_MODE_EXCLUSIVE);
|
||||
VulkanImage1DList(
|
||||
size_t numImages, const VulkanDevice &device, VulkanFormat format,
|
||||
uint32_t width, VulkanImageTiling vulkanImageTiling,
|
||||
uint32_t mipLevels = 1,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType =
|
||||
VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE,
|
||||
VulkanImageCreateFlag imageCreateFlag = VULKAN_IMAGE_CREATE_FLAG_NONE,
|
||||
VulkanImageUsage imageUsage =
|
||||
VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST,
|
||||
VulkanSharingMode sharingMode = VULKAN_SHARING_MODE_EXCLUSIVE);
|
||||
virtual ~VulkanImage1DList();
|
||||
};
|
||||
|
||||
class VulkanImage2DList : public VulkanList<VulkanImage2D, VkImage> {
|
||||
protected:
|
||||
VulkanImage2DList(const VulkanImage2DList &image2DList);
|
||||
@@ -232,6 +261,36 @@ public:
|
||||
virtual ~VulkanImage2DList();
|
||||
};
|
||||
|
||||
class VulkanImage3DList : public VulkanList<VulkanImage3D, VkImage> {
|
||||
protected:
|
||||
VulkanImage3DList(const VulkanImage3DList &image3DList);
|
||||
|
||||
public:
|
||||
VulkanImage3DList(
|
||||
size_t numImages, std::vector<VulkanDeviceMemory *> &deviceMemory,
|
||||
uint64_t baseOffset, uint64_t interImageOffset,
|
||||
const VulkanDevice &device, VulkanFormat format, uint32_t width,
|
||||
uint32_t height, uint32_t depth, uint32_t mipLevels,
|
||||
VulkanImageTiling vulkanImageTiling,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType =
|
||||
VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE,
|
||||
VulkanImageCreateFlag imageCreateFlag = VULKAN_IMAGE_CREATE_FLAG_NONE,
|
||||
VulkanImageUsage imageUsage =
|
||||
VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST,
|
||||
VulkanSharingMode sharingMode = VULKAN_SHARING_MODE_EXCLUSIVE);
|
||||
VulkanImage3DList(
|
||||
size_t numImages, const VulkanDevice &device, VulkanFormat format,
|
||||
uint32_t width, uint32_t height, uint32_t depth,
|
||||
VulkanImageTiling vulkanImageTiling, uint32_t mipLevels = 1,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType =
|
||||
VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE,
|
||||
VulkanImageCreateFlag imageCreateFlag = VULKAN_IMAGE_CREATE_FLAG_NONE,
|
||||
VulkanImageUsage imageUsage =
|
||||
VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST,
|
||||
VulkanSharingMode sharingMode = VULKAN_SHARING_MODE_EXCLUSIVE);
|
||||
virtual ~VulkanImage3DList();
|
||||
};
|
||||
|
||||
class VulkanImageViewList : public VulkanList<VulkanImageView, VkImageView> {
|
||||
protected:
|
||||
VulkanImageViewList(const VulkanImageViewList &imageViewList);
|
||||
|
||||
@@ -1810,6 +1810,36 @@ const VulkanMemoryTypeList &VulkanImage::getMemoryTypeList() const
|
||||
|
||||
VulkanImage::operator VkImage() const { return m_vkImage; }
|
||||
|
||||
//////////////////////////////////
|
||||
// VulkanImage1D implementation //
|
||||
//////////////////////////////////
|
||||
|
||||
VulkanImage1D::VulkanImage1D(const VulkanImage1D &image1D): VulkanImage(image1D)
|
||||
{}
|
||||
|
||||
VulkanImage1D::VulkanImage1D(
|
||||
const VulkanDevice &device, VulkanFormat format, uint32_t width,
|
||||
VulkanImageTiling imageTiling, uint32_t numMipLevels,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType,
|
||||
VulkanImageCreateFlag imageCreateFlag, VulkanImageUsage imageUsage,
|
||||
VulkanSharingMode sharingMode)
|
||||
: VulkanImage(device, VULKAN_IMAGE_TYPE_1D, format,
|
||||
VulkanExtent3D(width, 1, 1), numMipLevels, 1,
|
||||
externalMemoryHandleType, imageCreateFlag, imageTiling,
|
||||
imageUsage, sharingMode)
|
||||
{}
|
||||
|
||||
VulkanImage1D::~VulkanImage1D() {}
|
||||
|
||||
VulkanExtent3D VulkanImage1D::getExtent3D(uint32_t mipLevel) const
|
||||
{
|
||||
uint32_t width = std::max(m_extent3D.getWidth() >> mipLevel, uint32_t(1));
|
||||
uint32_t height = 1;
|
||||
uint32_t depth = 1;
|
||||
|
||||
return VulkanExtent3D(width, height, depth);
|
||||
}
|
||||
|
||||
//////////////////////////////////
|
||||
// VulkanImage2D implementation //
|
||||
//////////////////////////////////
|
||||
@@ -1840,6 +1870,37 @@ VulkanExtent3D VulkanImage2D::getExtent3D(uint32_t mipLevel) const
|
||||
return VulkanExtent3D(width, height, depth);
|
||||
}
|
||||
|
||||
//////////////////////////////////
|
||||
// VulkanImage3D implementation //
|
||||
//////////////////////////////////
|
||||
|
||||
VulkanImage3D::VulkanImage3D(const VulkanImage3D &image3D): VulkanImage(image3D)
|
||||
{}
|
||||
|
||||
VulkanImage3D::VulkanImage3D(
|
||||
const VulkanDevice &device, VulkanFormat format, uint32_t width,
|
||||
uint32_t height, uint32_t depth, VulkanImageTiling imageTiling,
|
||||
uint32_t numMipLevels,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType,
|
||||
VulkanImageCreateFlag imageCreateFlag, VulkanImageUsage imageUsage,
|
||||
VulkanSharingMode sharingMode)
|
||||
: VulkanImage(device, VULKAN_IMAGE_TYPE_3D, format,
|
||||
VulkanExtent3D(width, height, depth), numMipLevels, 1,
|
||||
externalMemoryHandleType, imageCreateFlag, imageTiling,
|
||||
imageUsage, sharingMode)
|
||||
{}
|
||||
|
||||
VulkanImage3D::~VulkanImage3D() {}
|
||||
|
||||
VulkanExtent3D VulkanImage3D::getExtent3D(uint32_t mipLevel) const
|
||||
{
|
||||
uint32_t width = std::max(m_extent3D.getWidth() >> mipLevel, uint32_t(1));
|
||||
uint32_t height = std::max(m_extent3D.getHeight() >> mipLevel, uint32_t(1));
|
||||
uint32_t depth = std::max(m_extent3D.getDepth() >> mipLevel, uint32_t(1));
|
||||
|
||||
return VulkanExtent3D(width, height, depth);
|
||||
}
|
||||
|
||||
////////////////////////////////////
|
||||
// VulkanImageView implementation //
|
||||
////////////////////////////////////
|
||||
|
||||
@@ -494,6 +494,47 @@ public:
|
||||
operator VkImage() const;
|
||||
};
|
||||
|
||||
class VulkanImage1D : public VulkanImage {
|
||||
protected:
|
||||
VkImageView m_vkImageView;
|
||||
|
||||
public:
|
||||
VulkanImage1D(
|
||||
const VulkanDevice &device, VulkanFormat format, uint32_t width,
|
||||
VulkanImageTiling imageTiling, uint32_t numMipLevels = 1,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType =
|
||||
VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE,
|
||||
VulkanImageCreateFlag imageCreateFlag = VULKAN_IMAGE_CREATE_FLAG_NONE,
|
||||
VulkanImageUsage imageUsage =
|
||||
VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST,
|
||||
VulkanSharingMode sharingMode = VULKAN_SHARING_MODE_EXCLUSIVE);
|
||||
virtual ~VulkanImage1D();
|
||||
virtual VulkanExtent3D getExtent3D(uint32_t mipLevel = 0) const;
|
||||
|
||||
VulkanImage1D(const VulkanImage1D &image1D);
|
||||
};
|
||||
|
||||
class VulkanImage3D : public VulkanImage {
|
||||
protected:
|
||||
VkImageView m_vkImageView;
|
||||
|
||||
public:
|
||||
VulkanImage3D(
|
||||
const VulkanDevice &device, VulkanFormat format, uint32_t width,
|
||||
uint32_t height, uint32_t depth, VulkanImageTiling imageTiling,
|
||||
uint32_t numMipLevels = 1,
|
||||
VulkanExternalMemoryHandleType externalMemoryHandleType =
|
||||
VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE,
|
||||
VulkanImageCreateFlag imageCreateFlag = VULKAN_IMAGE_CREATE_FLAG_NONE,
|
||||
VulkanImageUsage imageUsage =
|
||||
VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST,
|
||||
VulkanSharingMode sharingMode = VULKAN_SHARING_MODE_EXCLUSIVE);
|
||||
virtual ~VulkanImage3D();
|
||||
virtual VulkanExtent3D getExtent3D(uint32_t mipLevel = 0) const;
|
||||
|
||||
VulkanImage3D(const VulkanImage3D &image3D);
|
||||
};
|
||||
|
||||
class VulkanImage2D : public VulkanImage {
|
||||
protected:
|
||||
VkImageView m_vkImageView;
|
||||
|
||||
@@ -44,7 +44,9 @@ class VulkanBuffer;
|
||||
class VulkanOffset3D;
|
||||
class VulkanExtent3D;
|
||||
class VulkanImage;
|
||||
class VulkanImage1D;
|
||||
class VulkanImage2D;
|
||||
class VulkanImage3D;
|
||||
class VulkanImageView;
|
||||
class VulkanDeviceMemory;
|
||||
class VulkanSemaphore;
|
||||
@@ -59,7 +61,9 @@ class VulkanQueueList;
|
||||
class VulkanCommandBufferList;
|
||||
class VulkanDescriptorSetLayoutList;
|
||||
class VulkanBufferList;
|
||||
class VulkanImage1DList;
|
||||
class VulkanImage2DList;
|
||||
class VulkanImage3DList;
|
||||
class VulkanImageViewList;
|
||||
class VulkanDeviceMemoryList;
|
||||
class VulkanSemaphoreList;
|
||||
|
||||
Reference in New Issue
Block a user