Lines Matching refs:image

58 #include "pipeline/vktPipelineImageUtil.hpp"		// required for compressed image blit
359 ImageParms image;
377 deBool clearDestinationWithRed; // Used for CopyImageToImage tests to clear dst image with vec4(1.0f, 0.0f, 0.0f, 1.0f)
389 src.image.createFlags = VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM;
390 dst.image.createFlags = VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM;
392 src.image.fillMode = FILL_MODE_GRADIENT;
394 dst.image.fillMode = FILL_MODE_WHITE;
435 const VkImage& image,
445 VkMemoryRequirements memoryRequirements = getImageMemoryRequirements(vkd, device, image);
453 VkMemoryRequirements memoryRequirements = getImageMemoryRequirements(vkd, device, image);
460 image, // VkImage image
585 de::MovePtr<tcu::TextureLevel> readImage (vk::VkImage image,
752 void CopiesAndBlittingTestInstance::uploadImageAspect (const tcu::ConstPixelBufferAccess& imageAccess, const VkImage& image, const ImageParms& parms, const deUint32 mipLevels)
786 // Barriers for copying buffer to image
814 image, // VkImage image;
834 image, // VkImage image;
881 // Copy buffer to image
885 vk.cmdCopyBufferToImage(*m_cmdBuffer, *buffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)copyRegions.size(), &copyRegions[0]);
955 void CopiesAndBlittingTestInstance::readImageAspect (vk::VkImage image,
994 // Barriers for copying image to buffer
1006 image, // VkImage image;
1039 image, // VkImage image;
1049 // Copy image to buffer
1056 // Copy image to buffer - note that there are cases where m_params.dst.image.format is not the same as dst.getFormat()
1057 const VkImageAspectFlags aspect = isCompressedFormat(m_params.dst.image.format) ?
1076 vk.cmdCopyImageToBuffer(*m_cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1u, &copyRegion);
1088 de::MovePtr<tcu::TextureLevel> CopiesAndBlittingTestInstance::readImage (vk::VkImage image,
1100 readImageAspect(image, depthTexture.getAccess(), parms, mipLevel);
1107 readImageAspect(image, stencilTexture.getAccess(), parms, mipLevel);
1112 readImageAspect(image, resultLevel->getAccess(), parms, mipLevel);
1244 // Copy from image to image.
1275 // Create source image
1281 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
1282 m_params.src.image.imageType, // VkImageType imageType;
1283 m_params.src.image.format, // VkFormat format;
1284 getExtent3D(m_params.src.image), // VkExtent3D extent;
1286 getArraySize(m_params.src.image), // deUint32 arraySize;
1302 // Create destination image
1308 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
1309 m_params.dst.image.imageType, // VkImageType imageType;
1310 m_params.dst.image.format, // VkFormat format;
1311 getExtent3D(m_params.dst.image), // VkExtent3D extent;
1313 getArraySize(m_params.dst.image), // deUint32 arraySize;
1332 const bool srcCompressed = isCompressedFormat(m_params.src.image.format);
1333 const bool dstCompressed = isCompressedFormat(m_params.dst.image.format);
1335 const tcu::TextureFormat srcTcuFormat = getSizeCompatibleTcuTextureFormat(m_params.src.image.format);
1336 const tcu::TextureFormat dstTcuFormat = getSizeCompatibleTcuTextureFormat(m_params.dst.image.format);
1339 (int)m_params.src.image.extent.width,
1340 (int)m_params.src.image.extent.height,
1341 (int)m_params.src.image.extent.depth));
1342 generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, m_params.src.image.fillMode);
1344 (int)m_params.dst.image.extent.width,
1345 (int)m_params.dst.image.extent.height,
1346 (int)m_params.dst.image.extent.depth));
1347 generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, m_params.clearDestinationWithRed ? FILL_MODE_RED : m_params.dst.image.fillMode);
1350 uploadImage(m_sourceTextureLevel->getAccess(), m_source.get(), m_params.src.image);
1351 uploadImage(m_destinationTextureLevel->getAccess(), m_destination.get(), m_params.dst.image);
1364 // members represent the texel dimensions of the source image.
1367 const deUint32 blockWidth = getBlockWidth(m_params.src.image.format);
1368 const deUint32 blockHeight = getBlockHeight(m_params.src.image.format);
1374 if (m_params.src.image.imageType != vk::VK_IMAGE_TYPE_1D)
1383 const deUint32 blockWidth = getBlockWidth(m_params.dst.image.format);
1384 const deUint32 blockHeight = getBlockHeight(m_params.dst.image.format);
1389 if (m_params.dst.image.imageType != vk::VK_IMAGE_TYPE_1D)
1408 // source image
1415 m_params.src.image.operationLayout, // VkImageLayout newLayout;
1418 m_source.get(), // VkImage image;
1424 getArraySize(m_params.src.image)// deUint32 arraySize;
1427 // destination image
1434 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
1437 m_destination.get(), // VkImage image;
1443 getArraySize(m_params.dst.image)// deUint32 arraySize;
1468 vk.cmdCopyImage(*m_cmdBuffer, m_source.get(), m_params.src.image.operationLayout, m_destination.get(), m_params.dst.image.operationLayout, (deUint32)imageCopies.size(), imageCopies.data());
1478 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
1480 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
1493 de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image);
1625 if (m_params.src.image.format == VK_FORMAT_A8_UNORM_KHR || m_params.dst.image.format == VK_FORMAT_A8_UNORM_KHR ||
1626 m_params.src.image.format == VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR || m_params.dst.image.format == VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR)
1636 m_params.src.image.format,
1637 m_params.src.image.imageType,
1643 m_params.dst.image.format,
1644 m_params.dst.image.imageType,
1655 if (m_params.src.image.imageType == VK_IMAGE_TYPE_1D && m_params.src.image.extent.width > limits.maxImageDimension1D)
1656 TCU_THROW(NotSupportedError, "Requested 1D src image dimensions not supported");
1658 if (m_params.dst.image.imageType == VK_IMAGE_TYPE_1D && m_params.dst.image.extent.width > limits.maxImageDimension1D)
1659 TCU_THROW(NotSupportedError, "Requested 1D dst image dimensions not supported");
1664 if (m_params.src.image.imageType == VK_IMAGE_TYPE_2D && (m_params.src.image.extent.width > limits.maxImageDimension2D
1665 || m_params.src.image.extent.height > limits.maxImageDimension2D))
1667 TCU_THROW(NotSupportedError, "Requested 2D src image dimensions not supported");
1670 if (m_params.dst.image.imageType == VK_IMAGE_TYPE_2D && (m_params.dst.image.extent.width > limits.maxImageDimension2D
1671 || m_params.dst.image.extent.height > limits.maxImageDimension2D))
1673 TCU_THROW(NotSupportedError, "Requested 2D dst image dimensions not supported");
1679 if (m_params.src.image.imageType == VK_IMAGE_TYPE_3D && (m_params.src.image.extent.width > limits.maxImageDimension3D
1680 || m_params.src.image.extent.height > limits.maxImageDimension3D
1681 || m_params.src.image.extent.depth > limits.maxImageDimension3D))
1683 TCU_THROW(NotSupportedError, "Requested 3D src image dimensions not supported");
1686 if (m_params.dst.image.imageType == VK_IMAGE_TYPE_3D && (m_params.dst.image.extent.width > limits.maxImageDimension3D
1687 || m_params.dst.image.extent.height > limits.maxImageDimension3D
1688 || m_params.src.image.extent.depth > limits.maxImageDimension3D))
1690 TCU_THROW(NotSupportedError, "Requested 3D dst image dimensions not supported");
1731 // Create source image
1737 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
1738 m_params.src.image.imageType, // VkImageType imageType;
1739 m_params.src.image.format, // VkFormat format;
1740 getExtent3D(m_params.src.image), // VkExtent3D extent;
1742 getArraySize(m_params.src.image), // deUint32 arraySize;
1758 // Create destination image
1764 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
1765 m_params.dst.image.imageType, // VkImageType imageType;
1766 m_params.dst.image.format, // VkFormat format;
1767 getExtent3D(m_params.dst.image), // VkExtent3D extent;
1769 getArraySize(m_params.dst.image), // deUint32 arraySize;
1788 const bool srcCompressed = isCompressedFormat(m_params.src.image.format);
1789 const bool dstCompressed = isCompressedFormat(m_params.dst.image.format);
1791 const tcu::TextureFormat srcTcuFormat = getSizeCompatibleTcuTextureFormat(m_params.src.image.format);
1792 const tcu::TextureFormat dstTcuFormat = getSizeCompatibleTcuTextureFormat(m_params.dst.image.format);
1795 (int)m_params.src.image.extent.width,
1796 (int)m_params.src.image.extent.height,
1797 (int)m_params.src.image.extent.depth));
1798 generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, m_params.src.image.fillMode);
1799 uploadImage(m_sourceTextureLevel->getAccess(), m_source.get(), m_params.src.image, m_params.mipLevels);
1802 (int)m_params.dst.image.extent.width,
1803 (int)m_params.dst.image.extent.height,
1804 (int)m_params.dst.image.extent.depth));
1805 generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, FILL_MODE_RED);
1806 uploadImage(m_destinationTextureLevel->getAccess(), m_destination.get(), m_params.dst.image, m_params.mipLevels);
1819 // members represent the texel dimensions of the source image.
1822 const deUint32 blockWidth = getBlockWidth(m_params.src.image.format);
1823 const deUint32 blockHeight = getBlockHeight(m_params.src.image.format);
1833 const deUint32 blockWidth = getBlockWidth(m_params.dst.image.format);
1834 const deUint32 blockHeight = getBlockHeight(m_params.dst.image.format);
1853 // source image
1860 m_params.src.image.operationLayout, // VkImageLayout newLayout;
1863 m_source.get(), // VkImage image;
1869 getArraySize(m_params.src.image)// deUint32 arraySize;
1872 // destination image
1879 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
1882 m_destination.get(), // VkImage image;
1888 getArraySize(m_params.dst.image)// deUint32 arraySize;
1898 vk.cmdCopyImage(*m_cmdBuffer, m_source.get(), m_params.src.image.operationLayout, m_destination.get(), m_params.dst.image.operationLayout, (deUint32)imageCopies.size(), imageCopies.data());
1908 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
1910 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
1925 de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image, miplevel);
1926 de::MovePtr<tcu::TextureLevel> expectedTextureLevel = readImage(*m_source, m_params.src.image, miplevel);
2028 if (m_params.src.image.imageType == VK_IMAGE_TYPE_3D && m_params.dst.image.imageType == VK_IMAGE_TYPE_2D)
2033 if (m_params.src.image.imageType == VK_IMAGE_TYPE_2D && m_params.dst.image.imageType == VK_IMAGE_TYPE_3D)
2100 m_params.src.image.format,
2101 m_params.src.image.imageType,
2107 m_params.dst.image.format,
2108 m_params.dst.image.imageType,
2119 if (m_params.src.image.imageType == VK_IMAGE_TYPE_1D && m_params.src.image.extent.width > limits.maxImageDimension1D)
2120 TCU_THROW(NotSupportedError, "Requested 1D src image dimensions not supported");
2122 if (m_params.dst.image.imageType == VK_IMAGE_TYPE_1D && m_params.dst.image.extent.width > limits.maxImageDimension1D)
2123 TCU_THROW(NotSupportedError, "Requested 1D dst image dimensions not supported");
2128 if (m_params.src.image.imageType == VK_IMAGE_TYPE_2D && (m_params.src.image.extent.width > limits.maxImageDimension2D
2129 || m_params.src.image.extent.height > limits.maxImageDimension2D))
2131 TCU_THROW(NotSupportedError, "Requested 2D src image dimensions not supported");
2134 if (m_params.dst.image.imageType == VK_IMAGE_TYPE_2D && (m_params.dst.image.extent.width > limits.maxImageDimension2D
2135 || m_params.dst.image.extent.height > limits.maxImageDimension2D))
2137 TCU_THROW(NotSupportedError, "Requested 2D dst image dimensions not supported");
2143 if (m_params.src.image.imageType == VK_IMAGE_TYPE_3D && (m_params.src.image.extent.width > limits.maxImageDimension3D
2144 || m_params.src.image.extent.height > limits.maxImageDimension3D
2145 || m_params.src.image.extent.depth > limits.maxImageDimension3D))
2147 TCU_THROW(NotSupportedError, "Requested 3D src image dimensions not supported");
2150 if (m_params.dst.image.imageType == VK_IMAGE_TYPE_3D && (m_params.dst.image.extent.width > limits.maxImageDimension3D
2151 || m_params.dst.image.extent.height > limits.maxImageDimension3D
2152 || m_params.src.image.extent.depth > limits.maxImageDimension3D))
2154 TCU_THROW(NotSupportedError, "Requested 3D dst image dimensions not supported");
2358 // Copy from image to buffer.
2380 , m_textureFormat(mapVkFormat(testParams.src.image.format))
2390 // Create source image
2396 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
2397 m_params.src.image.imageType, // VkImageType imageType;
2398 m_params.src.image.format, // VkFormat format;
2399 getExtent3D(m_params.src.image), // VkExtent3D extent;
2401 getArraySize(m_params.src.image), // deUint32 arraySize;
2440 m_params.src.image.extent.width,
2441 m_params.src.image.extent.height,
2442 m_params.src.image.extent.depth));
2443 generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, m_params.src.image.fillMode);
2449 uploadImage(m_sourceTextureLevel->getAccess(), *m_source, m_params.src.image);
2456 // Barriers for copying image to buffer
2467 *m_source, // VkImage image;
2473 getArraySize(m_params.src.image) // deUint32 arraySize;
2490 // Copy from image to buffer
2638 , m_texture(TestTexture2DSp(new pipeline::TestTexture2DArray(mapVkCompressedFormat(testParams.src.image.format), testParams.src.image.extent.width, testParams.src.image.extent.height, testParams.arrayLayers)))
2678 const ImageParms& srcImageParams = m_params.src.image;
2680 // Create source image, containing all the mip levels.
2686 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
2687 m_params.src.image.imageType, // VkImageType imageType;
2688 m_params.src.image.format, // VkFormat format;
2689 m_params.src.image.extent, // VkExtent3D extent;
2705 // Upload the compressed image.
2716 // the compressed source image, rather than creating a corresponding buffer for each level in the loop
2721 // Copy each miplevel of the uploaded image into a buffer, and
2733 // Barrier to get the source image's selected mip-level / layer in the right format for transfer.
2747 // Barrier to wait for the transfer from image to buffer to complete.
2750 // Copy from image to buffer
2836 DE_ASSERT(m_params.src.image.tiling == VK_IMAGE_TILING_OPTIMAL);
2837 DE_ASSERT(m_params.src.image.imageType == vk::VK_IMAGE_TYPE_2D);
2842 context.getInstanceInterface().getPhysicalDeviceFormatProperties(context.getPhysicalDevice(), m_params.src.image.format, &formatProps);
2848 m_params.src.image.format,
2849 m_params.src.image.imageType,
2860 TCU_THROW(NotSupportedError, "TRANSFER_SRC is not supported on this image type");
2863 // Copy from buffer to image.
2886 , m_textureFormat(mapVkFormat(testParams.dst.image.format))
2915 // Create destination image
2921 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
2922 m_params.dst.image.imageType, // VkImageType imageType;
2923 m_params.dst.image.format, // VkFormat format;
2924 getExtent3D(m_params.dst.image), // VkExtent3D extent;
2926 getArraySize(m_params.dst.image), // deUint32 arraySize;
2948 m_params.dst.image.extent.width,
2949 m_params.dst.image.extent.height,
2950 m_params.dst.image.extent.depth));
2952 generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, m_params.dst.image.fillMode);
2957 uploadImage(m_destinationTextureLevel->getAccess(), *m_destination, m_params.dst.image);
2973 *m_destination, // VkImage image;
2979 getArraySize(m_params.dst.image) // deUint32 arraySize;
2983 // Copy from buffer to image
3028 de::MovePtr<tcu::TextureLevel> resultLevel = readImage(*m_destination, m_params.dst.image);
3158 , m_textureFormat(mapVkFormat(testParams.dst.image.format))
3166 const bool hasDepth = tcu::hasDepthComponent(mapVkFormat(m_params.dst.image.format).order);
3167 const bool hasStencil = tcu::hasStencilComponent(mapVkFormat(m_params.dst.image.format).order);
3169 if (!isSupportedDepthStencilFormat(vki, vkPhysDevice, testParams.dst.image.format))
3183 m_bufferSize += static_cast<VkDeviceSize>(m_params.dst.image.extent.width) * static_cast<VkDeviceSize>(m_params.dst.image.extent.height) * static_cast<VkDeviceSize>(texelSize);
3188 m_bufferSize += static_cast<VkDeviceSize>(m_params.dst.image.extent.width) * static_cast<VkDeviceSize>(m_params.dst.image.extent.height);
3210 // Create destination image
3216 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
3217 m_params.dst.image.imageType, // VkImageType imageType;
3218 m_params.dst.image.format, // VkFormat format;
3219 getExtent3D(m_params.dst.image), // VkExtent3D extent;
3221 getArraySize(m_params.dst.image), // deUint32 arraySize;
3245 // Create image layer for depth/stencil
3247 m_params.dst.image.extent.width,
3248 m_params.dst.image.extent.height,
3249 m_params.dst.image.extent.depth));
3251 // Fill image layer with 2D gradiant
3252 generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth);
3314 // Reference image generation uses pixel offsets based on buffer offset.
3338 uploadImage(m_destinationTextureLevel->getAccess(), *m_destination, m_params.dst.image);
3350 *m_destination, // VkImage image;
3360 // Copy from buffer to depth/stencil image
3432 de::MovePtr<tcu::TextureLevel> resultLevel = readImage(*m_destination, m_params.dst.image);
3516 // special case - when we are blitting compressed floating-point image we can't have both big and small values
3517 // in compressed image; to resolve this we are constructing source texture out of set of predefined compressed
3591 // Copy from image to image with scaling.
3606 void uploadCompressedImage (const VkImage& image, const ImageParms& parms);
3646 // Create source image
3652 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
3653 m_params.src.image.imageType, // VkImageType imageType;
3654 m_params.src.image.format, // VkFormat format;
3655 getExtent3D(m_params.src.image), // VkExtent3D extent;
3657 getArraySize(m_params.src.image), // deUint32 arraySize;
3659 m_params.src.image.tiling, // VkImageTiling tiling;
3673 // Create destination image
3679 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
3680 m_params.dst.image.imageType, // VkImageType imageType;
3681 m_params.dst.image.format, // VkFormat format;
3682 getExtent3D(m_params.dst.image), // VkExtent3D extent;
3684 getArraySize(m_params.dst.image), // deUint32 arraySize;
3686 m_params.dst.image.tiling, // VkImageTiling tiling;
3707 const ImageParms& srcImageParams = m_params.src.image;
3711 const ImageParms& dstImageParams = m_params.dst.image;
3734 // generate source image
3744 // non-compressed image is filled with selected fillMode
3751 // generate destination image
3761 // non-compressed image is filled with white background
3782 m_source.get(), // VkImage image;
3788 getArraySize(m_params.src.image) // deUint32 arraySize;
3800 m_destination.get(), // VkImage image;
3806 getArraySize(m_params.dst.image) // deUint32 arraySize;
4055 log << tcu::TestLog::Section("ClampedSourceImage", "Region with clamped edges on source image.");
4083 log << tcu::TestLog::Section("NonClampedSourceImage", "Region with non-clamped edges on source image.");
4108 log << tcu::TestLog::Section("NonClampedSourceImage", "Region with non-clamped edges on source image.");
4200 log << tcu::TestLog::Section("ClampedSourceImage", "Region with clamped edges on source image.");
4208 log << tcu::TestLog::Section("NonClampedSourceImage", "Region with non-clamped edges on source image.");
4370 // Prepare a source image with a matching (converted) pixel format. Ideally, we would've used a wrapper that
4598 const std::string failMessage("Result image is incorrect");
4610 const tcu::TextureFormat sourceFormat = tcu::getEffectiveDepthStencilTextureFormat(mapVkFormat(m_params.src.image.format), mode);
4622 const tcu::TextureFormat sourceFormat = tcu::getEffectiveDepthStencilTextureFormat(mapVkFormat(m_params.src.image.format), mode);
4636 const tcu::TextureFormat sourceFormat = mapVkFormat(m_params.src.image.format);
4907 void BlittingImages::uploadCompressedImage (const VkImage& image, const ImageParms& parms)
4947 // Barriers for copying buffer to image
4971 image, // VkImage image;
4991 image, // VkImage image;
5027 // Copy buffer to image
5031 vk.cmdCopyBufferToImage(*m_cmdBuffer, *buffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, &copyRegion);
5059 if (m_params.src.image.format == VK_FORMAT_A8_UNORM_KHR || m_params.dst.image.format == VK_FORMAT_A8_UNORM_KHR ||
5060 m_params.src.image.format == VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR || m_params.dst.image.format == VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR)
5066 m_params.src.image.format,
5067 m_params.src.image.imageType,
5068 m_params.src.image.tiling,
5076 m_params.dst.image.format,
5077 m_params.dst.image.imageType,
5078 m_params.dst.image.tiling,
5089 context.getInstanceInterface().getPhysicalDeviceFormatProperties(context.getPhysicalDevice(), m_params.src.image.format, &srcFormatProperties);
5090 VkFormatFeatureFlags srcFormatFeatures = m_params.src.image.tiling == VK_IMAGE_TILING_LINEAR ? srcFormatProperties.linearTilingFeatures : srcFormatProperties.optimalTilingFeatures;
5097 context.getInstanceInterface().getPhysicalDeviceFormatProperties(context.getPhysicalDevice(), m_params.dst.image.format, &dstFormatProperties);
5098 VkFormatFeatureFlags dstFormatFeatures = m_params.dst.image.tiling == VK_IMAGE_TILING_LINEAR ? dstFormatProperties.linearTilingFeatures : dstFormatProperties.optimalTilingFeatures;
5106 TCU_THROW(NotSupportedError, "Source format feature sampled image filter linear not supported");
5115 TCU_THROW(NotSupportedError, "Source format feature sampled image filter cubic not supported");
5157 // Create source image
5163 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
5164 m_params.src.image.imageType, // VkImageType imageType;
5165 m_params.src.image.format, // VkFormat format;
5166 getExtent3D(m_params.src.image), // VkExtent3D extent;
5168 getArraySize(m_params.src.image), // deUint32 arraySize;
5184 // Create destination image
5190 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
5191 m_params.dst.image.imageType, // VkImageType imageType;
5192 m_params.dst.image.format, // VkFormat format;
5193 getExtent3D(m_params.dst.image), // VkExtent3D extent;
5195 getArraySize(m_params.dst.image), // deUint32 arraySize;
5214 const tcu::TextureFormat srcTcuFormat = mapVkFormat(m_params.src.image.format);
5215 const tcu::TextureFormat dstTcuFormat = mapVkFormat(m_params.dst.image.format);
5217 m_params.src.image.extent.width,
5218 m_params.src.image.extent.height,
5219 m_params.src.image.extent.depth));
5220 generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, m_params.src.image.fillMode);
5222 (int)m_params.dst.image.extent.width,
5223 (int)m_params.dst.image.extent.height,
5224 (int)m_params.dst.image.extent.depth));
5225 generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, m_params.dst.image.fillMode);
5228 uploadImage(m_sourceTextureLevel->getAccess(), m_source.get(), m_params.src.image);
5230 uploadImage(m_destinationTextureLevel->getAccess(), m_destination.get(), m_params.dst.image, m_params.mipLevels);
5251 // Copy source image to mip level 0 when generating mipmaps with multiple blit commands
5253 uploadImage(m_sourceTextureLevel->getAccess(), m_destination.get(), m_params.dst.image, 1u);
5261 // Source image layout
5269 m_params.src.image.operationLayout, // VkImageLayout newLayout;
5272 m_source.get(), // VkImage image;
5278 getArraySize(m_params.src.image) // deUint32 arraySize;
5282 // Destination image layout
5290 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
5293 m_destination.get(), // VkImage image;
5299 getArraySize(m_params.dst.image) // deUint32 arraySize;
5308 vk.cmdBlitImage(*m_cmdBuffer, m_source.get(), m_params.src.image.operationLayout, m_destination.get(), m_params.dst.image.operationLayout, (deUint32)m_params.regions.size(), &regions[0], m_params.filter);
5318 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
5320 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
5343 m_params.src.image.operationLayout, // VkImageLayout newLayout;
5346 m_destination.get(), // VkImage image;
5352 getArraySize(m_params.src.image) // deUint32 arraySize;
5356 if (getArraySize(m_params.src.image) == 1)
5382 m_params.src.image.operationLayout, // VkImageLayout oldLayout;
5383 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
5386 m_destination.get(), // VkImage image;
5392 getArraySize(m_params.dst.image) // deUint32 arraySize;
5403 m_params.dst.image.operationLayout, // VkImageLayout oldLayout;
5404 m_params.src.image.operationLayout, // VkImageLayout newLayout;
5407 m_destination.get(), // VkImage image;
5413 getArraySize(m_params.src.image) // deUint32 arraySize;
5421 vk.cmdBlitImage(*m_cmdBuffer, m_destination.get(), m_params.src.image.operationLayout, m_destination.get(), m_params.dst.image.operationLayout, 1u, &regions[regionNdx], m_params.filter);
5431 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
5433 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
5452 m_params.src.image.operationLayout, // VkImageLayout oldLayout;
5453 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
5456 m_destination.get(), // VkImage image;
5462 getArraySize(m_params.dst.image) // deUint32 arraySize;
5496 prevResultLevel = readImage(*m_destination, m_params.dst.image, srcMipLevel);
5507 de::MovePtr<tcu::TextureLevel> resultLevel = readImage(*m_destination, m_params.dst.image, mipLevelNdx);
5522 const tcu::TextureFormat srcFormat = tcu::hasDepthComponent(resultAccess.getFormat().order) ? tcu::getEffectiveDepthStencilTextureFormat(mapVkFormat(m_params.src.image.format), mode) :
5523 tcu::hasStencilComponent(resultAccess.getFormat().order) ? tcu::getEffectiveDepthStencilTextureFormat(mapVkFormat(m_params.src.image.format), mode) :
5524 mapVkFormat(m_params.src.image.format);
5534 log << tcu::TestLog::Section("ClampedSourceImage", "Region with clamped edges on source image.");
5548 log << tcu::TestLog::Section("NonClampedSourceImage", "Region with non-clamped edges on source image.");
5573 log << tcu::TestLog::Section("NonClampedSourceImage", "Region with non-clamped edges on source image.");
5591 de::MovePtr<tcu::TextureLevel> resultLevel = readImage(*m_destination, m_params.dst.image, mipLevelNdx);
5600 const tcu::ConstPixelBufferAccess source = (m_params.singleCommand || mipLevelNdx == 0) ? // Read from source image
5604 // Read from destination image
5665 const std::string failMessage("Result image is incorrect");
5813 m_params.src.image.format,
5822 else if ((m_params.src.image.extent.width > properties.maxExtent.width) ||
5823 (m_params.src.image.extent.height > properties.maxExtent.height) ||
5824 (m_params.src.image.extent.depth > properties.maxArrayLayers))
5833 m_params.dst.image.format,
5842 else if ((m_params.dst.image.extent.width > properties.maxExtent.width) ||
5843 (m_params.dst.image.extent.height > properties.maxExtent.height) ||
5844 (m_params.dst.image.extent.depth > properties.maxArrayLayers))
5856 const VkFormatProperties srcFormatProperties = getPhysicalDeviceFormatProperties (vki, vkPhysDevice, m_params.src.image.format);
5862 const VkFormatProperties dstFormatProperties = getPhysicalDeviceFormatProperties (vki, vkPhysDevice, m_params.dst.image.format);
5869 TCU_THROW(NotSupportedError, "Source format feature sampled image filter linear not supported");
5877 TCU_THROW(NotSupportedError, "Source format feature sampled image filter cubic not supported");
5886 // Resolve image to image.
6017 // Create color image.
6023 getCreateFlags(m_params.src.image), // VkImageCreateFlags flags;
6024 m_params.src.image.imageType, // VkImageType imageType;
6025 m_params.src.image.format, // VkFormat format;
6026 getExtent3D(m_params.src.image), // VkExtent3D extent;
6028 getArraySize(m_params.src.image), // deUint32 arrayLayers;
6044 // Allocate and bind color image memory.
6060 // Allocate and bind color image memory.
6069 colorImageParams.arrayLayers = getArraySize(m_params.dst.image);
6071 // Allocate and bind color image memory.
6079 colorImageParams.arrayLayers = getArraySize(m_params.dst.image);
6082 // Allocate and bind color image memory.
6095 // Create destination image.
6101 getCreateFlags(m_params.dst.image), // VkImageCreateFlags flags;
6102 m_params.dst.image.imageType, // VkImageType imageType;
6103 m_params.dst.image.format, // VkFormat format;
6104 getExtent3D(m_params.dst.image), // VkExtent3D extent;
6106 getArraySize(m_params.dst.image), // deUint32 arraySize;
6122 // Barriers for image clearing.
6135 m_multisampledImage.get(), // VkImage image;
6141 getArraySize(m_params.src.image) // deUint32 arraySize;
6154 m_multisampledCopyImage.get(), // VkImage image;
6160 getArraySize(m_params.dst.image) // deUint32 arraySize;
6173 m_multisampledCopyNoCabImage.get(), // VkImage image;
6179 getArraySize(m_params.dst.image) // deUint32 arraySize;
6202 m_params.src.image.format, // VkFormat format;
6232 // Subpass dependency is used to synchronize the memory access of the image clear and color attachment write in some test cases.
6325 *m_multisampledImage, // VkImage image;
6327 m_params.src.image.format, // VkFormat format;
6344 m_params.src.image.extent.width, // deUint32 width;
6345 m_params.src.image.extent.height, // deUint32 height;
6354 const std::vector<VkViewport> viewports (1, makeViewport(m_params.src.image.extent));
6355 const std::vector<VkRect2D> scissors (1, makeRect2D(m_params.src.image.extent));
6395 // Change the image layouts.
6401 const auto clearRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, m_params.src.image.extent.depth);
6408 const auto clearRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, m_params.src.image.extent.depth);
6414 // Change the image layouts.
6418 beginRenderPass(vk, *m_cmdBuffer, *renderPass, *framebuffer, makeRect2D(0, 0, m_params.src.image.extent.width, m_params.src.image.extent.height), tcu::Vec4(0.0f, 0.0f, 1.0f, 1.0f));
6440 const tcu::TextureFormat srcTcuFormat = mapVkFormat(m_params.src.image.format);
6441 const tcu::TextureFormat dstTcuFormat = mapVkFormat(m_params.dst.image.format);
6443 // upload the destination image
6445 (int)m_params.dst.image.extent.width,
6446 (int)m_params.dst.image.extent.height,
6447 (int)m_params.dst.image.extent.depth));
6448 generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth);
6449 uploadImage(m_destinationTextureLevel->getAccess(), m_destination.get(), m_params.dst.image);
6452 (int)m_params.src.image.extent.width,
6453 (int)m_params.src.image.extent.height,
6454 (int)m_params.dst.image.extent.depth));
6456 generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.dst.image.extent.depth, FILL_MODE_MULTISAMPLE);
6460 deUint32 sourceArraySize = getArraySize(m_params.src.image);
6466 // Duplicate the multisampled image to a multisampled image array
6467 sourceArraySize = getArraySize(m_params.dst.image); // fall through
6492 VkExtent3D partialExtent = {getExtent3D(m_params.src.image).width / 2,
6493 getExtent3D(m_params.src.image).height / 2,
6494 getExtent3D(m_params.src.image).depth};
6531 // source image
6538 m_params.dst.image.operationLayout :
6539 m_params.src.image.operationLayout, // VkImageLayout oldLayout;
6540 m_params.src.image.operationLayout, // VkImageLayout newLayout;
6543 sourceImage, // VkImage image;
6552 // destination image
6559 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
6562 m_destination.get(), // VkImage image;
6568 getArraySize(m_params.dst.image) // deUint32 arraySize;
6579 m_params.dst.image.operationLayout, // VkImageLayout oldLayout;
6580 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
6583 m_destination.get(), // VkImage image;
6589 getArraySize(m_params.dst.image) // deUint32 arraySize;
6598 vk.cmdResolveImage(*m_cmdBuffer, sourceImage, m_params.src.image.operationLayout, m_destination.get(), m_params.dst.image.operationLayout, (deUint32)m_params.regions.size(), imageResolves.data());
6608 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
6610 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
6622 de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image);
6627 // resolving the image and giving every sample the same value.
6645 for (int arrayLayerNdx = 0; arrayLayerNdx < (int)getArraySize(m_params.dst.image) - 1; ++arrayLayerNdx)
6649 return tcu::TestStatus::fail("CopiesAndBlitting test. Layers image differs from initialized value.");
6660 for (int arrayLayerNdx = 0; arrayLayerNdx < (int)getArraySize(m_params.dst.image); ++arrayLayerNdx)
6700 const auto currentLayout = m_params.src.image.operationLayout;
6701 const auto numDstLayers = getArraySize(m_params.dst.image);
6702 const auto numInputAttachments = m_options == COPY_MS_IMAGE_LAYER_TO_MS_IMAGE ? 2u : numDstLayers + 1u; // For the source image.
6704 const auto fbWidth = m_params.src.image.extent.width;
6705 const auto fbHeight = m_params.src.image.extent.height;
6776 m_params.src.image.format, // VkFormat format;
6831 imageViews.push_back(makeImageView(vkd, device, m_multisampledImage.get(), VK_IMAGE_VIEW_TYPE_2D, m_params.src.image.format, makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 2u, 1u)));
6832 imageViews.push_back(makeImageView(vkd, device, m_multisampledCopyImage.get(), VK_IMAGE_VIEW_TYPE_2D, m_params.src.image.format, makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 4u, 1u)));
6836 imageViews.push_back(makeImageView(vkd, device, m_multisampledImage.get(), VK_IMAGE_VIEW_TYPE_2D, m_params.src.image.format, makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u)));
6840 imageViews.push_back(makeImageView(vkd, device, m_multisampledCopyImage.get(), VK_IMAGE_VIEW_TYPE_2D, m_params.dst.image.format, subresourceRange));
6903 const std::vector<VkViewport> viewports (1, makeViewport(m_params.src.image.extent));
6904 const std::vector<VkRect2D> scissors (1, makeRect2D(m_params.src.image.extent));
6952 beginRenderPass(vkd, cmdBuffer, renderPass.get(), framebuffer.get(), makeRect2D(m_params.src.image.extent));
6999 const tcu::TextureFormat srcTcuFormat = mapVkFormat(m_params.src.image.format);
7027 getExtent3D(m_params.src.image), // VkExtent3D extent;
7042 VkExtent3D partialExtent = {getExtent3D(m_params.src.image).width / 2,
7043 getExtent3D(m_params.src.image).height / 2,
7044 getExtent3D(m_params.src.image).depth};
7094 getExtent3D(m_params.src.image), // VkExtent3D extent;
7125 m_params.src.image.operationLayout, // VkImageLayout newLayout;
7128 m_multisampledImage.get(), // VkImage image;
7134 getArraySize(m_params.src.image) // deUint32 arraySize;
7145 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
7148 m_multisampledCopyImage.get(), // VkImage image;
7160 m_params.dst.image.operationLayout, // VkImageLayout newLayout;
7163 m_multisampledCopyNoCabImage.get(), // VkImage image;
7167 // destination image
7174 m_params.dst.image.operationLayout, // VkImageLayout oldLayout;
7175 m_params.src.image.operationLayout, // VkImageLayout newLayout;
7178 m_multisampledCopyImage.get(), // VkImage image;
7182 // destination image (no USAGE_COLOR_ATTACHMENT_BIT)
7189 m_params.dst.image.operationLayout, // VkImageLayout oldLayout;
7190 m_params.src.image.operationLayout, // VkImageLayout newLayout;
7193 m_multisampledCopyNoCabImage.get(), // VkImage image;
7276 vk.cmdCopyImage(commandBuffer, m_multisampledImage.get(), m_params.src.image.operationLayout, m_multisampledCopyNoCabImage.get(), m_params.dst.image.operationLayout, (deUint32)imageCopies.size(), imageCopies.data());
7278 vk.cmdCopyImage(commandBuffer, m_multisampledCopyNoCabImage.get(), m_params.src.image.operationLayout, m_multisampledCopyImage.get(), m_params.dst.image.operationLayout, (deUint32)imageCopies.size(), imageCopies.data());
7282 vk.cmdCopyImage(commandBuffer, m_multisampledImage.get(), m_params.src.image.operationLayout, m_multisampledCopyImage.get(), m_params.dst.image.operationLayout, (deUint32)imageCopies.size(), imageCopies.data());
7295 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
7308 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
7325 m_params.src.image.operationLayout, // VkImageLayout srcImageLayout;
7327 m_params.dst.image.operationLayout, // VkImageLayout dstImageLayout;
7344 m_params.src.image.operationLayout,
7345 m_params.src.image.operationLayout,
7439 m_params.src.image.format,
7440 m_params.src.image.imageType,
7445 m_params.dst.image.format,
7446 m_params.dst.image.imageType,
7517 // The shader verifies all layers in the copied image are the same as the source image.
7518 // This needs an image view per layer in the copied image.
7538 const auto dstLayers = getArraySize(m_params.dst.image);
7625 // Returns image aspects used in the copy regions.
7647 // params.src.image is the parameters used to create the copy source image
7655 // params.src.image is the parameters used to create the copy destination image
7743 // Copy the default region (full image)
7787 // 1. Create the images and draw a triangle to the source image.
7799 // Create multisampled depth/stencil image (srcImage) and the copy destination image (dstImage).
7949 *srcImage, // VkImage image;
8047 // Change the layout of each layer of the depth / stencil image to VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL and clear the images.
8061 srcImage.get(), // VkImage image
8064 preClearBarriers[1].image = dstImage.get();
8070 srcImage.get(), // VkImage image
8078 dstImage.get(), // VkImage image
8090 srcImage.get(), // VkImage image
8116 // Change the image layouts and synchronize the memory access before copying
8126 srcImage.get(), // VkImage image
8140 dstImage.get(), // VkImage image
8220 const auto numInputAttachments = layerCount + 1u; // +1 for the source image.
8512 // In the partial copy tests the destination image contains copied data only in the bottom half of the image.
8513 // Verify that the upper half of the image is left at it's clear value (0).
8592 // The shader copies the sample values from the source and destination image to output buffers OriginalValue and
8593 // CopiedValues, respectively. If the dst image contains multiple array layers, only one layer has the copied data
8595 // Array layer cases need an image view per layer in the copied image.
8651 // In array layer copy tests the copied image should be in the layer 3 and other layers should be value of 0 or 0.0 depending on the format.
8862 params.src.image.imageType = VK_IMAGE_TYPE_2D;
8863 params.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
8864 params.src.image.extent = defaultExtent;
8865 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
8866 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
8867 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
8868 params.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
8869 params.dst.image.extent = defaultExtent;
8870 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
8871 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
8896 params.src.image.imageType = VK_IMAGE_TYPE_2D;
8897 params.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
8898 params.src.image.extent = defaultExtent;
8899 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
8900 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
8901 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
8902 params.dst.image.format = VK_FORMAT_R32_UINT;
8903 params.dst.image.extent = defaultExtent;
8904 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
8905 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
8930 params.src.image.imageType = VK_IMAGE_TYPE_2D;
8931 params.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
8932 params.src.image.extent = defaultExtent;
8933 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
8934 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
8935 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
8936 params.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
8937 params.dst.image.extent = defaultExtent;
8938 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
8939 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
9001 params.src.image.imageType = VK_IMAGE_TYPE_2D;
9002 params.src.image.format = format.format1;
9003 params.src.image.extent = extent.extent;
9004 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9005 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
9006 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
9007 params.dst.image.format = format.format2;
9008 params.dst.image.extent = extent.extent;
9009 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9010 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
9047 params.src.image.imageType = VK_IMAGE_TYPE_2D;
9048 params.src.image.format = VK_FORMAT_D32_SFLOAT;
9049 params.src.image.extent = defaultExtent;
9050 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9051 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
9052 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
9053 params.dst.image.format = VK_FORMAT_D32_SFLOAT;
9054 params.dst.image.extent = defaultExtent;
9055 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9056 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
9088 params.src.image.imageType = VK_IMAGE_TYPE_2D;
9089 params.src.image.format = VK_FORMAT_S8_UINT;
9090 params.src.image.extent = defaultExtent;
9091 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9092 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
9093 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
9094 params.dst.image.format = VK_FORMAT_S8_UINT;
9095 params.dst.image.extent = defaultExtent;
9096 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9097 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
9149 params.src.image.operationLayout = copySrcLayouts[srcLayoutNdx];
9153 params.dst.image.operationLayout = copyDstLayouts[dstLayoutNdx];
9155 const std::string testName = getImageLayoutCaseName(params.src.image.operationLayout) + "_" +
9156 getImageLayoutCaseName(params.dst.image.operationLayout);
9157 const std::string description = "From layout " + getImageLayoutCaseName(params.src.image.operationLayout) +
9158 " to " + getImageLayoutCaseName(params.dst.image.operationLayout);
9173 de::contains(dedicatedAllocationImageToImageFormatsToTestSet, testParams.params.dst.image.format) ||
9174 de::contains(dedicatedAllocationImageToImageFormatsToTestSet, testParams.params.src.image.format);
9183 const VkFormat srcFormatOnly[2] = { testParams.params.src.image.format, VK_FORMAT_UNDEFINED };
9188 testParams.params.dst.image.format = formatList[dstFormatIndex];
9190 const VkFormat srcFormat = testParams.params.src.image.format;
9191 const VkFormat dstFormat = testParams.params.dst.image.format;
9750 params.src.image.imageType = VK_IMAGE_TYPE_1D;
9751 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
9752 params.src.image.extent = default1dExtent;
9753 params.dst.image.extent = default1dExtent;
9754 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9755 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9756 params.src.image.fillMode = FILL_MODE_WHITE;
9757 params.dst.image.fillMode = FILL_MODE_GRADIENT;
9785 params.src.image.format = compatibleFormats[srcFormatIndex];
9786 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
9793 const std::string testName = getFormatCaseName(params.src.image.format);
9806 params.src.image.imageType = VK_IMAGE_TYPE_1D;
9807 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
9808 params.src.image.extent = default1dExtent;
9809 params.dst.image.extent = defaultRootExtent;
9810 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9811 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9812 params.src.image.fillMode = FILL_MODE_WHITE;
9813 params.dst.image.fillMode = FILL_MODE_GRADIENT;
9842 params.src.image.format = compatibleFormats[srcFormatIndex];
9843 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
9850 const std::string testName = getFormatCaseName(params.src.image.format);
9863 params.src.image.imageType = VK_IMAGE_TYPE_1D;
9864 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
9865 params.src.image.extent = default1dExtent;
9866 params.dst.image.extent = default3dSmallExtent;
9867 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9868 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9869 params.src.image.fillMode = FILL_MODE_WHITE;
9870 params.dst.image.fillMode = FILL_MODE_GRADIENT;
9902 params.src.image.format = compatibleFormats[srcFormatIndex];
9903 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
9910 const std::string testName = getFormatCaseName(params.src.image.format);
9923 params.src.image.imageType = VK_IMAGE_TYPE_2D;
9924 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
9925 params.src.image.extent = defaultQuarterExtent;
9926 params.dst.image.extent = default1dQuarterSquaredExtent;
9927 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9928 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9929 params.src.image.fillMode = FILL_MODE_WHITE;
9930 params.dst.image.fillMode = FILL_MODE_GRADIENT;
9959 params.src.image.format = compatibleFormats[srcFormatIndex];
9960 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
9967 const std::string testName = getFormatCaseName(params.src.image.format);
9980 params.src.image.imageType = VK_IMAGE_TYPE_2D;
9981 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
9982 params.src.image.extent = defaultExtent;
9983 params.dst.image.extent = defaultExtent;
9984 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9985 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
9986 params.src.image.fillMode = FILL_MODE_WHITE;
9987 params.dst.image.fillMode = FILL_MODE_GRADIENT;
10015 params.src.image.format = compatibleFormats[srcFormatIndex];
10016 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
10023 const std::string testName = getFormatCaseName(params.src.image.format);
10036 params.src.image.imageType = VK_IMAGE_TYPE_2D;
10037 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
10038 params.src.image.extent = defaultExtent;
10039 params.dst.image.extent = default3dSmallExtent;
10040 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10041 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10042 params.src.image.fillMode = FILL_MODE_WHITE;
10043 params.dst.image.fillMode = FILL_MODE_GRADIENT;
10072 params.src.image.format = compatibleFormats[srcFormatIndex];
10073 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
10080 const std::string testName = getFormatCaseName(params.src.image.format);
10093 params.src.image.imageType = VK_IMAGE_TYPE_3D;
10094 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
10095 params.src.image.extent = default3dSmallExtent;
10096 params.dst.image.extent = default1dExtent;
10097 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10098 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10099 params.src.image.fillMode = FILL_MODE_WHITE;
10100 params.dst.image.fillMode = FILL_MODE_GRADIENT;
10132 params.src.image.format = compatibleFormats[srcFormatIndex];
10133 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
10140 const std::string testName = getFormatCaseName(params.src.image.format);
10153 params.src.image.imageType = VK_IMAGE_TYPE_3D;
10154 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
10155 params.src.image.extent = default3dExtent;
10156 params.dst.image.extent = defaultExtent;
10157 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10158 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10159 params.src.image.fillMode = FILL_MODE_WHITE;
10160 params.dst.image.fillMode = FILL_MODE_GRADIENT;
10192 params.src.image.format = compatibleFormats[srcFormatIndex];
10193 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
10200 const std::string testName = getFormatCaseName(params.src.image.format);
10213 params.src.image.imageType = VK_IMAGE_TYPE_3D;
10214 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
10215 params.src.image.extent = default3dExtent;
10216 params.dst.image.extent = default3dExtent;
10217 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10218 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10219 params.src.image.fillMode = FILL_MODE_WHITE;
10220 params.dst.image.fillMode = FILL_MODE_GRADIENT;
10248 params.src.image.format = compatibleFormats[srcFormatIndex];
10249 if (!isSupportedByFramework(params.src.image.format) && !isCompressedFormat(params.src.image.format))
10256 const std::string testName = getFormatCaseName(params.src.image.format);
10385 testParams.params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10386 testParams.params.src.image.imageType = VK_IMAGE_TYPE_2D;
10387 testParams.params.src.image.extent = extent;
10389 testParams.params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10390 testParams.params.dst.image.imageType = VK_IMAGE_TYPE_2D;
10391 testParams.params.dst.image.extent = extent;
10400 const std::string dimensionStr = "src" + de::toString(testParams.params.src.image.extent.width) + "x" + de::toString(testParams.params.src.image.extent.height)
10401 + "_dst" + de::toString(testParams.params.dst.image.extent.width) + "x" + de::toString(testParams.params.dst.image.extent.height);
10411 // Source image format
10414 testParams.params.src.image.format = testParams.compatibleFormats[srcFormatIndex];
10416 if (!isSupportedByFramework(testParams.params.src.image.format) && !isCompressedFormat(testParams.params.src.image.format))
10419 tcu::TestCaseGroup* srcFormatGroup = new tcu::TestCaseGroup(testCtx, getFormatCaseName(testParams.params.src.image.format).c_str());
10421 // Destination image format
10424 testParams.params.dst.image.format = testParams.compatibleFormats[dstFormatIndex];
10426 if (!isSupportedByFramework(testParams.params.dst.image.format) && !isCompressedFormat(testParams.params.dst.image.format))
10432 if (isCompressedFormat(testParams.params.src.image.format) && isCompressedFormat(testParams.params.dst.image.format))
10434 if ((getBlockWidth(testParams.params.src.image.format) != getBlockWidth(testParams.params.dst.image.format))
10435 || (getBlockHeight(testParams.params.src.image.format) != getBlockHeight(testParams.params.dst.image.format)))
10439 tcu::TestCaseGroup* dstFormatGroup = new tcu::TestCaseGroup(testCtx, getFormatCaseName(testParams.params.dst.image.format).c_str());
10441 // Source/destionation image layouts
10444 testParams.params.src.image.operationLayout = copySrcLayouts[srcLayoutNdx];
10448 testParams.params.dst.image.operationLayout = copyDstLayouts[dstLayoutNdx];
10450 const std::string testName = getImageLayoutCaseName(testParams.params.src.image.operationLayout) + "_" + getImageLayoutCaseName(testParams.params.dst.image.operationLayout);
10483 params.src.image.operationLayout = copySrcLayouts[srcLayoutNdx];
10486 params.dst.image.operationLayout = copyDstLayouts[dstLayoutNdx];
10488 const std::string testName = getImageLayoutCaseName(params.src.image.operationLayout) + "_" +
10489 getImageLayoutCaseName(params.dst.image.operationLayout);
10515 params.src.image.imageType = VK_IMAGE_TYPE_1D;
10516 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
10517 params.src.image.extent = default1dExtent;
10518 params.dst.image.extent = default1dExtent;
10519 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
10520 params.dst.image.format = params.src.image.format;
10521 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10522 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10527 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
10528 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
10570 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
10576 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
10591 params.src.image.imageType = VK_IMAGE_TYPE_1D;
10592 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
10593 params.src.image.extent = default1dExtent;
10594 params.dst.image.extent = defaultRootExtent;
10595 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
10596 params.dst.image.format = params.src.image.format;
10597 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10598 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10604 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
10605 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
10647 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
10653 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
10668 params.src.image.imageType = VK_IMAGE_TYPE_1D;
10669 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
10670 params.src.image.extent = default1dExtent;
10671 params.dst.image.extent = default3dSmallExtent;
10672 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
10673 params.dst.image.format = params.src.image.format;
10674 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10675 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10681 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
10682 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
10727 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
10733 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
10748 params.src.image.imageType = VK_IMAGE_TYPE_2D;
10749 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
10750 params.src.image.extent = defaultQuarterExtent;
10751 params.dst.image.extent = default1dQuarterSquaredExtent;
10752 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
10753 params.dst.image.format = params.src.image.format;
10754 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10755 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10761 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
10762 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
10805 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
10811 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
10840 const std::string testName3 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_depth_stencil_aspects";
10856 params.src.image.imageType = VK_IMAGE_TYPE_2D;
10857 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
10858 params.src.image.extent = defaultExtent;
10859 params.dst.image.extent = defaultExtent;
10860 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
10861 params.dst.image.format = params.src.image.format;
10862 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10863 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10868 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
10869 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
10912 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
10918 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
10947 const std::string testName3 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_depth_stencil_aspects";
10963 params.src.image.imageType = VK_IMAGE_TYPE_2D;
10964 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
10965 params.src.image.extent = defaultExtent;
10966 params.dst.image.extent = default3dSmallExtent;
10967 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
10968 params.dst.image.format = params.src.image.format;
10969 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10970 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
10976 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
10977 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
11020 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
11026 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
11055 const std::string testName3 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_depth_stencil_aspects";
11071 params.src.image.imageType = VK_IMAGE_TYPE_3D;
11072 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
11073 params.src.image.extent = default3dSmallExtent;
11074 params.dst.image.extent = default1dExtent;
11075 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
11076 params.dst.image.format = params.src.image.format;
11077 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11078 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11084 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
11085 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
11130 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
11136 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
11151 params.src.image.imageType = VK_IMAGE_TYPE_3D;
11152 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
11153 params.src.image.extent = default3dExtent;
11154 params.dst.image.extent = defaultExtent;
11155 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
11156 params.dst.image.format = params.src.image.format;
11157 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11158 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11164 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
11165 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
11210 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
11216 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
11231 params.src.image.imageType = VK_IMAGE_TYPE_3D;
11232 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
11233 params.src.image.extent = default3dExtent;
11234 params.dst.image.extent = default3dExtent;
11235 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
11236 params.dst.image.format = params.src.image.format;
11237 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11238 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11243 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
11244 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
11286 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
11292 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format) + "_separate_layouts";
11315 params3DTo2D.src.image.imageType = VK_IMAGE_TYPE_3D;
11316 params3DTo2D.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11317 params3DTo2D.src.image.extent = defaultHalfExtent;
11318 params3DTo2D.src.image.extent.depth = slicesLayers;
11319 params3DTo2D.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11320 params3DTo2D.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11321 params3DTo2D.dst.image.imageType = VK_IMAGE_TYPE_2D;
11322 params3DTo2D.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11323 params3DTo2D.dst.image.extent = defaultHalfExtent;
11324 params3DTo2D.dst.image.extent.depth = slicesLayers;
11325 params3DTo2D.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11326 params3DTo2D.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11369 params2DTo3D.src.image.imageType = VK_IMAGE_TYPE_2D;
11370 params2DTo3D.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11371 params2DTo3D.src.image.extent = defaultHalfExtent;
11372 params2DTo3D.src.image.extent.depth = slicesLayers;
11373 params2DTo3D.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11374 params2DTo3D.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11375 params2DTo3D.dst.image.imageType = VK_IMAGE_TYPE_3D;
11376 params2DTo3D.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11377 params2DTo3D.dst.image.extent = defaultHalfExtent;
11378 params2DTo3D.dst.image.extent.depth = slicesLayers;
11379 params2DTo3D.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11380 params2DTo3D.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11424 params3DTo2D.src.image.imageType = VK_IMAGE_TYPE_3D;
11425 params3DTo2D.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11426 params3DTo2D.src.image.extent = defaultHalfExtent;
11427 params3DTo2D.src.image.extent.depth = slicesLayers;
11428 params3DTo2D.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11429 params3DTo2D.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11430 params3DTo2D.dst.image.imageType = VK_IMAGE_TYPE_2D;
11431 params3DTo2D.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11432 params3DTo2D.dst.image.extent = defaultHalfExtent;
11433 params3DTo2D.dst.image.extent.depth = slicesLayers;
11434 params3DTo2D.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11435 params3DTo2D.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11463 params3DTo2D.src.image.extent // VkExtent3D extent;
11477 params2DTo3D.src.image.imageType = VK_IMAGE_TYPE_2D;
11478 params2DTo3D.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11479 params2DTo3D.src.image.extent = defaultHalfExtent;
11480 params2DTo3D.src.image.extent.depth = slicesLayers;
11481 params2DTo3D.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11482 params2DTo3D.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11483 params2DTo3D.dst.image.imageType = VK_IMAGE_TYPE_3D;
11484 params2DTo3D.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11485 params2DTo3D.dst.image.extent = defaultHalfExtent;
11486 params2DTo3D.dst.image.extent.depth = slicesLayers;
11487 params2DTo3D.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11488 params2DTo3D.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11516 params2DTo3D.src.image.extent, // VkExtent3D extent;
11531 params3DTo2D.src.image.imageType = VK_IMAGE_TYPE_3D;
11532 params3DTo2D.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11533 params3DTo2D.src.image.extent = defaultHalfExtent;
11534 params3DTo2D.src.image.extent.depth = slicesLayers;
11535 params3DTo2D.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11536 params3DTo2D.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11537 params3DTo2D.dst.image.imageType = VK_IMAGE_TYPE_2D;
11538 params3DTo2D.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11539 params3DTo2D.dst.image.extent = defaultHalfExtent;
11540 params3DTo2D.dst.image.extent.depth = slicesLayers;
11541 params3DTo2D.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11542 params3DTo2D.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11592 params2DTo3D.src.image.imageType = VK_IMAGE_TYPE_2D;
11593 params2DTo3D.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11594 params2DTo3D.src.image.extent = defaultHalfExtent;
11595 params2DTo3D.src.image.extent.depth = slicesLayers;
11596 params2DTo3D.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11597 params2DTo3D.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11598 params2DTo3D.dst.image.imageType = VK_IMAGE_TYPE_3D;
11599 params2DTo3D.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11600 params2DTo3D.dst.image.extent = defaultHalfExtent;
11601 params2DTo3D.dst.image.extent.depth = slicesLayers;
11602 params2DTo3D.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11603 params2DTo3D.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11659 paramsCubeToArray.src.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11660 paramsCubeToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
11661 paramsCubeToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11662 paramsCubeToArray.src.image.extent = defaultHalfExtent;
11663 paramsCubeToArray.src.image.extent.depth = arrayLayers;
11664 paramsCubeToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11665 paramsCubeToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11666 paramsCubeToArray.dst.image.createFlags = 0;
11667 paramsCubeToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
11668 paramsCubeToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11669 paramsCubeToArray.dst.image.extent = defaultHalfExtent;
11670 paramsCubeToArray.dst.image.extent.depth = arrayLayers;
11671 paramsCubeToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11672 paramsCubeToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11673 paramsCubeToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
11717 paramsCubeToArray.src.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11718 paramsCubeToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
11719 paramsCubeToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11720 paramsCubeToArray.src.image.extent = defaultHalfExtent;
11721 paramsCubeToArray.src.image.extent.depth = arrayLayers;
11722 paramsCubeToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11723 paramsCubeToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11724 paramsCubeToArray.dst.image.createFlags = 0;
11725 paramsCubeToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
11726 paramsCubeToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11727 paramsCubeToArray.dst.image.extent = defaultHalfExtent;
11728 paramsCubeToArray.dst.image.extent.depth = arrayLayers;
11729 paramsCubeToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11730 paramsCubeToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11731 paramsCubeToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
11774 paramsArrayToCube.src.image.createFlags = 0;
11775 paramsArrayToCube.src.image.imageType = VK_IMAGE_TYPE_2D;
11776 paramsArrayToCube.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11777 paramsArrayToCube.src.image.extent = defaultHalfExtent;
11778 paramsArrayToCube.src.image.extent.depth = arrayLayers;
11779 paramsArrayToCube.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11780 paramsArrayToCube.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11781 paramsArrayToCube.dst.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11782 paramsArrayToCube.dst.image.imageType = VK_IMAGE_TYPE_2D;
11783 paramsArrayToCube.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11784 paramsArrayToCube.dst.image.extent = defaultHalfExtent;
11785 paramsArrayToCube.dst.image.extent.depth = arrayLayers;
11786 paramsArrayToCube.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11787 paramsArrayToCube.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11788 paramsArrayToCube.dst.image.fillMode = FILL_MODE_GRADIENT;
11832 paramsArrayToCube.src.image.createFlags = 0;
11833 paramsArrayToCube.src.image.imageType = VK_IMAGE_TYPE_2D;
11834 paramsArrayToCube.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11835 paramsArrayToCube.src.image.extent = defaultHalfExtent;
11836 paramsArrayToCube.src.image.extent.depth = arrayLayers;
11837 paramsArrayToCube.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11838 paramsArrayToCube.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11839 paramsArrayToCube.dst.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11840 paramsArrayToCube.dst.image.imageType = VK_IMAGE_TYPE_2D;
11841 paramsArrayToCube.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11842 paramsArrayToCube.dst.image.extent = defaultHalfExtent;
11843 paramsArrayToCube.dst.image.extent.depth = arrayLayers;
11844 paramsArrayToCube.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11845 paramsArrayToCube.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11846 paramsArrayToCube.dst.image.fillMode = FILL_MODE_GRADIENT;
11889 paramsCubeToArray.src.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11890 paramsCubeToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
11891 paramsCubeToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11892 paramsCubeToArray.src.image.extent = defaultHalfExtent;
11893 paramsCubeToArray.src.image.extent.depth = arrayLayers;
11894 paramsCubeToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11895 paramsCubeToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11896 paramsCubeToArray.dst.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11897 paramsCubeToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
11898 paramsCubeToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11899 paramsCubeToArray.dst.image.extent = defaultHalfExtent;
11900 paramsCubeToArray.dst.image.extent.depth = arrayLayers;
11901 paramsCubeToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11902 paramsCubeToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11903 paramsCubeToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
11947 paramsCubeToCube.src.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11948 paramsCubeToCube.src.image.imageType = VK_IMAGE_TYPE_2D;
11949 paramsCubeToCube.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
11950 paramsCubeToCube.src.image.extent = defaultHalfExtent;
11951 paramsCubeToCube.src.image.extent.depth = arrayLayers;
11952 paramsCubeToCube.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11953 paramsCubeToCube.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
11954 paramsCubeToCube.dst.image.createFlags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
11955 paramsCubeToCube.dst.image.imageType = VK_IMAGE_TYPE_2D;
11956 paramsCubeToCube.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
11957 paramsCubeToCube.dst.image.extent = defaultHalfExtent;
11958 paramsCubeToCube.dst.image.extent.depth = arrayLayers;
11959 paramsCubeToCube.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
11960 paramsCubeToCube.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
11961 paramsCubeToCube.dst.image.fillMode = FILL_MODE_GRADIENT;
12009 paramsArrayToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
12010 paramsArrayToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
12011 paramsArrayToArray.src.image.extent = defaultHalfExtent;
12012 paramsArrayToArray.src.image.extent.depth = arrayLayers;
12013 paramsArrayToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12014 paramsArrayToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12015 paramsArrayToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
12016 paramsArrayToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
12017 paramsArrayToArray.dst.image.extent = defaultHalfExtent;
12018 paramsArrayToArray.dst.image.extent.depth = arrayLayers;
12019 paramsArrayToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12020 paramsArrayToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12021 paramsArrayToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
12065 paramsArrayToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
12066 paramsArrayToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
12067 paramsArrayToArray.src.image.extent = defaultHalfExtent;
12068 paramsArrayToArray.src.image.extent.depth = arrayLayers;
12069 paramsArrayToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12070 paramsArrayToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12071 paramsArrayToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
12072 paramsArrayToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
12073 paramsArrayToArray.dst.image.extent = defaultHalfExtent;
12074 paramsArrayToArray.dst.image.extent.depth = arrayLayers;
12075 paramsArrayToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12076 paramsArrayToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12077 paramsArrayToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
12121 paramsArrayToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
12122 paramsArrayToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
12123 paramsArrayToArray.src.image.extent = defaultHalfExtent;
12124 paramsArrayToArray.src.image.extent.depth = arrayLayers;
12125 paramsArrayToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12126 paramsArrayToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12127 paramsArrayToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
12128 paramsArrayToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
12129 paramsArrayToArray.dst.image.extent = defaultHalfExtent;
12130 paramsArrayToArray.dst.image.extent.depth = arrayLayers;
12131 paramsArrayToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12132 paramsArrayToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12133 paramsArrayToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
12177 paramsArrayToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
12178 paramsArrayToArray.src.image.format = VK_FORMAT_R8G8B8A8_UINT;
12179 paramsArrayToArray.src.image.extent = defaultHalfExtent;
12180 paramsArrayToArray.src.image.extent.depth = arrayLayers;
12181 paramsArrayToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12182 paramsArrayToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12183 paramsArrayToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
12184 paramsArrayToArray.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
12185 paramsArrayToArray.dst.image.extent = defaultHalfExtent;
12186 paramsArrayToArray.dst.image.extent.depth = arrayLayers;
12187 paramsArrayToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12188 paramsArrayToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12189 paramsArrayToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
12233 paramsArrayToArray.src.image.imageType = VK_IMAGE_TYPE_2D;
12234 paramsArrayToArray.src.image.extent = defaultHalfExtent;
12235 paramsArrayToArray.src.image.extent.depth = arrayLayers;
12236 paramsArrayToArray.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12237 paramsArrayToArray.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12238 paramsArrayToArray.dst.image.imageType = VK_IMAGE_TYPE_2D;
12239 paramsArrayToArray.dst.image.extent = defaultHalfExtent;
12240 paramsArrayToArray.dst.image.extent.depth = arrayLayers;
12241 paramsArrayToArray.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12242 paramsArrayToArray.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12243 paramsArrayToArray.dst.image.fillMode = FILL_MODE_GRADIENT;
12293 paramsArrayToArray.src.image.format = imageFormats[imageFormatsNdx];
12294 paramsArrayToArray.dst.image.format = imageFormats[imageFormatsNdx];
12324 params.src.image.imageType = VK_IMAGE_TYPE_1D;
12325 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12326 params.src.image.extent = default1dExtent;
12327 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12328 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12354 params.src.image.imageType = VK_IMAGE_TYPE_1D;
12355 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12356 params.src.image.extent = default1dExtent;
12357 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12358 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12384 params.src.image.imageType = VK_IMAGE_TYPE_1D;
12385 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12386 params.src.image.extent = default1dExtent;
12387 params.src.image.extent.depth = arrayLayers;
12388 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12389 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12395 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.src.image.format));
12426 params.src.image.imageType = VK_IMAGE_TYPE_1D;
12427 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12428 params.src.image.extent = default1dExtent;
12429 params.src.image.extent.depth = arrayLayers;
12430 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12431 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12437 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.src.image.format));
12468 params.src.image.imageType = VK_IMAGE_TYPE_1D;
12469 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12470 params.src.image.extent = default1dExtent;
12471 params.src.image.extent.depth = layerCount;
12472 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12473 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12474 params.src.image.fillMode = FILL_MODE_RED;
12512 params.src.image.imageType = VK_IMAGE_TYPE_1D;
12513 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12514 params.src.image.extent = default1dExtent;
12515 params.src.image.extent.depth = layerCount;
12516 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12517 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12518 params.src.image.fillMode = FILL_MODE_RED;
12559 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12560 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12561 params.src.image.extent = defaultExtent;
12562 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12563 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12588 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12589 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12590 params.src.image.extent = defaultExtent;
12591 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12592 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12618 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12619 params.src.image.format = VK_FORMAT_R8_UNORM;
12620 params.src.image.extent = defaultExtent;
12621 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12622 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12647 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12648 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12649 params.src.image.extent = defaultExtent;
12650 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12651 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12657 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.src.image.format));
12689 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12690 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12691 params.src.image.extent = defaultExtent;
12692 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12693 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12719 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12720 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12721 params.src.image.extent = defaultExtent;
12722 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12723 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12748 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12749 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12750 params.src.image.extent = defaultExtent;
12751 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12752 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
12778 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12779 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12780 params.src.image.extent = defaultHalfExtent;
12781 params.src.image.extent.depth = arrayLayers;
12782 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12783 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12789 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.src.image.format));
12819 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12820 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12821 params.src.image.extent = defaultHalfExtent;
12822 params.src.image.extent.depth = arrayLayers;
12823 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12824 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12830 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.src.image.format));
12859 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12860 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12861 params.src.image.extent = defaultHalfExtent;
12862 params.src.image.extent.depth = arrayLayers;
12863 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12864 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12870 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.src.image.format));
12900 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12901 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12902 params.src.image.extent = defaultHalfExtent;
12903 params.src.image.extent.depth = layerCount;
12904 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12905 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12906 params.src.image.fillMode = FILL_MODE_RED;
12944 params.src.image.imageType = VK_IMAGE_TYPE_2D;
12945 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
12946 params.src.image.extent = defaultHalfExtent;
12947 params.src.image.extent.depth = layerCount;
12948 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
12949 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
12950 params.src.image.fillMode = FILL_MODE_RED;
13009 params.src.image.imageType = VK_IMAGE_TYPE_2D;
13010 params.src.image.extent = extent;
13011 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13012 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
13020 params.src.image.format = *format;
13023 group->addChild(new CopyCompressedImageToBufferTestCase(testCtx, getCaseName(*format, params.src.image.extent, numLayers, "universal"), params));
13025 group->addChild(new CopyCompressedImageToBufferTestCase(testCtx, getCaseName(*format, params.src.image.extent, numLayers, "compute"), params));
13027 group->addChild(new CopyCompressedImageToBufferTestCase(testCtx, getCaseName(*format, params.src.image.extent, numLayers, "transfer"), params));
13145 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13146 params.dst.image.format = config.format;
13147 params.dst.image.extent = defaultExtent;
13148 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13149 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13201 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
13202 params.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
13203 params.dst.image.extent = default1dExtent;
13204 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13205 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13231 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
13232 params.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
13233 params.dst.image.extent = default1dExtent;
13234 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13235 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13261 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
13262 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13263 params.dst.image.extent = default1dExtent;
13264 params.dst.image.extent.depth = arrayLayers;
13265 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13266 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13271 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.dst.image.format));
13304 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
13305 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13306 params.dst.image.extent = default1dExtent;
13307 params.dst.image.extent.depth = layerCount;
13308 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13309 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13310 params.dst.image.fillMode = FILL_MODE_RED;
13348 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
13349 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13350 params.dst.image.extent = default1dExtent;
13351 params.dst.image.extent.depth = layerCount;
13352 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13353 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13354 params.dst.image.fillMode = FILL_MODE_RED;
13391 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
13392 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13393 params.dst.image.extent = default1dExtent;
13394 params.dst.image.extent.depth = arrayLayers;
13395 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13396 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13401 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.dst.image.format));
13436 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13437 params.dst.image.format = VK_FORMAT_R8G8B8A8_UINT;
13438 params.dst.image.extent = defaultExtent;
13439 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13440 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13465 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13466 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13467 params.dst.image.extent = defaultExtent;
13468 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13469 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13497 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13498 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13499 params.dst.image.extent = defaultExtent;
13500 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13501 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13527 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13528 params.dst.image.format = VK_FORMAT_R8_UNORM;
13529 params.dst.image.extent = defaultExtent;
13530 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13531 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13556 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13557 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13558 params.dst.image.extent = defaultExtent;
13559 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13560 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13586 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13587 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13588 params.dst.image.extent = defaultExtent;
13589 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13590 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13615 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13616 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13617 params.dst.image.extent = defaultExtent;
13618 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13619 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13645 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13646 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13647 params.dst.image.extent = defaultHalfExtent;
13648 params.dst.image.extent.depth = arrayLayers;
13649 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13650 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13655 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.dst.image.format));
13686 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13687 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13688 params.dst.image.extent = defaultHalfExtent;
13689 params.dst.image.extent.depth = arrayLayers;
13690 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13691 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13696 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.dst.image.format));
13726 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13727 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13728 params.dst.image.extent = defaultHalfExtent;
13729 params.dst.image.extent.depth = arrayLayers;
13730 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13731 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13736 const int pixelSize = tcu::getPixelSize(mapVkFormat(params.dst.image.format));
13768 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13769 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13770 params.dst.image.extent = defaultHalfExtent;
13771 params.dst.image.extent.depth = layerCount;
13772 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13773 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13774 params.dst.image.fillMode = FILL_MODE_RED;
13812 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
13813 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13814 params.dst.image.extent = defaultHalfExtent;
13815 params.dst.image.extent.depth = layerCount;
13816 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
13817 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
13818 params.dst.image.fillMode = FILL_MODE_RED;
13962 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13965 params.dst.image.format = VK_FORMAT_R32_SFLOAT;
13966 group->addChild(new BlitImageTestCase(testCtx, getFormatCaseName(params.dst.image.format) + "_nearest", params));
13968 params.dst.image.format = VK_FORMAT_B8G8R8A8_UNORM;
13969 group->addChild(new BlitImageTestCase(testCtx, getFormatCaseName(params.dst.image.format) + "_nearest", params));
13976 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13979 params.dst.image.format = VK_FORMAT_R32_SFLOAT;
13980 group->addChild(new BlitImageTestCase(testCtx, getFormatCaseName(params.dst.image.format) + "_linear", params));
13982 params.dst.image.format = VK_FORMAT_B8G8R8A8_UNORM;
13983 group->addChild(new BlitImageTestCase(testCtx, getFormatCaseName(params.dst.image.format) + "_linear", params));
13988 if (params.dst.image.imageType == VK_IMAGE_TYPE_2D)
13992 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
13995 params.dst.image.format = VK_FORMAT_R32_SFLOAT;
13996 group->addChild(new BlitImageTestCase(testCtx, getFormatCaseName(params.dst.image.format) + "_cubic", params));
13998 params.dst.image.format = VK_FORMAT_B8G8R8A8_UNORM;
13999 group->addChild(new BlitImageTestCase(testCtx, getFormatCaseName(params.dst.image.format) + "_cubic", params));
14005 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14006 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14007 params.src.image.extent = defaultExtent;
14008 params.dst.image.extent = defaultExtent;
14009 params.src.image.extent.depth = imageDepth;
14010 params.dst.image.extent.depth = imageDepth;
14038 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14045 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
14046 params.src.image.extent = defaultExtent;
14047 params.dst.image.extent = defaultExtent;
14048 params.src.image.extent.depth = layerCount;
14049 params.dst.image.extent.depth = layerCount;
14050 params.src.image.fillMode = FILL_MODE_RED;
14051 params.dst.image.fillMode = FILL_MODE_RED;
14091 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
14092 params.src.image.extent = defaultExtent;
14093 params.dst.image.extent = defaultExtent;
14094 params.src.image.extent.depth = layerCount;
14095 params.dst.image.extent.depth = layerCount;
14133 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14134 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14135 params.src.image.extent = defaultExtent;
14136 params.dst.image.extent = defaultExtent;
14137 params.src.image.extent.depth = imageDepth;
14138 params.dst.image.extent.depth = imageDepth;
14166 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14167 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14168 params.src.image.extent = defaultExtent;
14169 params.dst.image.extent = defaultExtent;
14170 params.src.image.extent.depth = imageDepth;
14171 params.dst.image.extent.depth = imageDepth;
14199 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14200 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14201 params.src.image.extent = defaultExtent;
14202 params.dst.image.extent = defaultExtent;
14203 params.src.image.extent.depth = imageDepth;
14204 params.dst.image.extent.depth = imageDepth;
14232 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14233 DE_ASSERT(params.src.image.imageType == VK_IMAGE_TYPE_3D);
14234 params.src.image.extent = defaultExtent;
14235 params.dst.image.extent = defaultExtent;
14236 params.src.image.extent.depth = defaultSize;
14237 params.dst.image.extent.depth = defaultSize;
14265 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14266 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14267 params.src.image.extent = defaultExtent;
14268 params.dst.image.extent = defaultExtent;
14269 params.src.image.extent.depth = imageDepth;
14270 params.dst.image.extent.depth = imageDepth;
14364 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14365 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14366 const deInt32 halfImageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultHalfSize : 1;
14367 params.src.image.extent = defaultExtent;
14368 params.dst.image.extent = defaultHalfExtent;
14369 params.src.image.extent.depth = imageDepth;
14370 params.dst.image.extent.depth = halfImageDepth;
14398 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14399 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14400 const deInt32 halfImageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultHalfSize : 1;
14401 params.src.image.extent = defaultHalfExtent;
14402 params.dst.image.extent = defaultExtent;
14403 params.src.image.extent.depth = halfImageDepth;
14404 params.dst.image.extent.depth = imageDepth;
14432 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14433 const deInt32 imageDepth = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultSize : 1;
14434 const deInt32 srcDepthOffset = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultQuarterSize : 0;
14435 const deInt32 srcDepthSize = params.src.image.imageType == VK_IMAGE_TYPE_3D ? defaultQuarterSize * 3 : 1;
14436 params.src.image.extent = defaultExtent;
14437 params.dst.image.extent = defaultExtent;
14438 params.src.image.extent.depth = imageDepth;
14439 params.dst.image.extent.depth = imageDepth;
14467 DE_ASSERT(params.src.image.imageType == params.dst.image.imageType);
14468 const bool is3dBlit = params.src.image.imageType == VK_IMAGE_TYPE_3D;
14469 params.src.image.extent = defaultExtent;
14470 params.dst.image.extent = defaultExtent;
14474 params.src.image.extent.depth = defaultSize;
14475 params.dst.image.extent.depth = defaultSize;
14507 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
14508 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
14509 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
14510 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
14511 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
14514 params.src.image.imageType = VK_IMAGE_TYPE_2D;
14515 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
14527 params.src.image.imageType = VK_IMAGE_TYPE_3D;
14528 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
14580 de::contains(dedicatedAllocationBlittingFormatsToTestSet, testParams.params.dst.image.format) ||
14581 de::contains(dedicatedAllocationBlittingFormatsToTestSet, testParams.params.src.image.format);
14676 testParams.params.src.image.tiling = blitSrcTilings[srcTilingNdx];
14680 testParams.params.src.image.operationLayout = blitSrcLayouts[srcLayoutNdx];
14683 if (testParams.params.src.image.tiling == VK_IMAGE_TILING_LINEAR && testParams.params.src.image.operationLayout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)
14688 testParams.params.dst.image.tiling = blitDstTilings[dstTilingNdx];
14692 testParams.params.dst.image.operationLayout = blitDstLayouts[dstLayoutNdx];
14695 if (testParams.params.dst.image.tiling == VK_IMAGE_TILING_LINEAR && testParams.params.dst.image.operationLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)
14698 if ((testParams.params.dst.image.tiling == VK_IMAGE_TILING_LINEAR && !de::contains(linearOtherImageFormatsToTestSet, testParams.params.src.image.format)) ||
14699 (testParams.params.src.image.tiling == VK_IMAGE_TILING_LINEAR && !de::contains(linearOtherImageFormatsToTestSet, testParams.params.dst.image.format)))
14703 const std::string testName = getBlitImageTilingLayoutCaseName(testParams.params.src.image.tiling, testParams.params.src.image.operationLayout) + "_" +
14704 getBlitImageTilingLayoutCaseName(testParams.params.dst.image.tiling, testParams.params.dst.image.operationLayout);
14719 if ((testParams.params.src.image.imageType == VK_IMAGE_TYPE_3D) && !isCompressedFormat(testParams.params.src.image.format))
14733 otherParams.params.dst.image.fillMode = FILL_MODE_WHITE;
14737 otherParams.params.src.image.fillMode = modeList[i].mode;
14754 VkFormat srcFormat = testParams.params.src.image.format;
14760 testParams.params.dst.image.format = testParams.compatibleFormats[dstFormatIndex];
14761 if (!isSupportedByFramework(testParams.params.dst.image.format))
14767 addTestGroup(group, getFormatCaseName(testParams.params.dst.image.format), addBlittingImageAllFormatsColorSrcFormatDstFormatTests, testParams);
14776 testParams.params.dst.image.format = srcFormat;
14861 // to the top of resulting image copy whole source image but with increasingly smaller sizes
14881 // to the bottom of resulting image copy parts of source image;
14952 params.src.image.imageType = VK_IMAGE_TYPE_2D;
14953 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
14954 params.src.image.extent = defaultExtent;
14955 params.dst.image.extent = defaultExtent;
14956 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
14957 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
14978 params.src.image.format = srcFormat;
14980 const bool onlyNearestAndLinear = de::contains(onlyNearestAndLinearFormatsToTest, params.src.image.format);
14987 // use the fact that first region contains the size of full source image
14990 VkExtent3D& srcImageExtent = params.src.image.extent;
14991 VkExtent3D& dstImageExtent = params.dst.image.extent;
15004 addTestGroup(subGroup.get(), getFormatCaseName(params.src.image.format), addBlittingImageAllFormatsColorSrcFormatTests, testParams);
15016 params.src.image.imageType = VK_IMAGE_TYPE_1D;
15017 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
15018 params.src.image.extent = default1dExtent;
15019 params.dst.image.extent = default1dExtent;
15020 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15021 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15071 params.src.image.format = sourceFormats[srcFormatIndex];
15072 if (!isSupportedByFramework(params.src.image.format))
15085 addTestGroup(subGroup.get(), getFormatCaseName(params.src.image.format), addBlittingImageAllFormatsColorSrcFormatTests, testParams);
15097 params.src.image.imageType = VK_IMAGE_TYPE_3D;
15098 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
15099 params.src.image.extent = default3dExtent;
15100 params.dst.image.extent = default3dExtent;
15101 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15102 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15152 params.src.image.format = sourceFormats[srcFormatIndex];
15153 if (!isSupportedByFramework(params.src.image.format))
15166 addTestGroup(subGroup.get(), getFormatCaseName(params.src.image.format), addBlittingImageAllFormatsColorSrcFormatTests, testParams);
15189 params.src.image.operationLayout = blitSrcLayouts[srcLayoutNdx];
15193 params.dst.image.operationLayout = blitDstLayouts[dstLayoutNdx];
15196 const std::string testName = getImageLayoutCaseName(params.src.image.operationLayout) + "_" +
15197 getImageLayoutCaseName(params.dst.image.operationLayout);
15228 params.src.image.imageType = VK_IMAGE_TYPE_2D;
15229 params.src.image.extent = defaultExtent;
15230 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15231 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
15232 params.dst.image.extent = defaultExtent;
15233 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
15234 params.dst.image.format = params.src.image.format;
15235 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15239 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
15240 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
15322 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
15328 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" +
15329 getFormatCaseName(params.dst.image.format) + "_separate_layouts";
15344 params.src.image.imageType = VK_IMAGE_TYPE_1D;
15345 params.dst.image.imageType = VK_IMAGE_TYPE_1D;
15346 params.src.image.extent = default1dExtent;
15347 params.dst.image.extent = default1dExtent;
15348 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
15349 params.dst.image.format = params.src.image.format;
15350 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15351 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15355 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
15356 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
15438 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
15444 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" +
15445 getFormatCaseName(params.dst.image.format) + "_separate_layouts";
15460 params.src.image.imageType = VK_IMAGE_TYPE_3D;
15461 params.dst.image.imageType = VK_IMAGE_TYPE_3D;
15462 params.src.image.extent = default3dExtent;
15463 params.dst.image.extent = default3dExtent;
15464 params.src.image.format = depthAndStencilFormats[compatibleFormatsIndex];
15465 params.dst.image.format = params.src.image.format;
15466 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15467 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15471 bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
15472 bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
15554 const std::string testName = getFormatCaseName(params.src.image.format) + "_" + getFormatCaseName(params.dst.image.format);
15560 const std::string testName2 = getFormatCaseName(params.src.image.format) + "_" +
15561 getFormatCaseName(params.dst.image.format) + "_separate_layouts";
15587 testParams.params.src.image.operationLayout = blitSrcLayouts[srcLayoutNdx];
15590 testParams.params.dst.image.operationLayout = blitDstLayouts[dstLayoutNdx];
15593 const std::string testName = getImageLayoutCaseName(testParams.params.src.image.operationLayout) + "_" +
15594 getImageLayoutCaseName(testParams.params.dst.image.operationLayout);
15635 params.src.image.imageType = VK_IMAGE_TYPE_2D;
15636 params.src.image.extent = defaultExtent;
15637 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15638 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
15639 params.dst.image.extent = defaultExtent;
15640 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15692 params.src.image.format = compatibleFormats[srcFormatIndex];
15693 params.dst.image.format = compatibleFormats[srcFormatIndex];
15695 if (!isSupportedByFramework(params.src.image.format))
15698 const bool onlyNearestAndLinear = de::contains(onlyNearestAndLinearFormatsToTest, params.src.image.format);
15705 testParams.params.src.image.extent.depth = layerCount;
15706 testParams.params.dst.image.extent.depth = layerCount;
15714 addTestGroup(layerCountGroup.get(), getFormatCaseName(params.src.image.format), addBlittingImageAllFormatsMipmapFormatTests, testParams);
15744 params.src.image.imageType = VK_IMAGE_TYPE_2D;
15745 params.src.image.extent = defaultExtent;
15746 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15747 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
15748 params.dst.image.extent = defaultExtent;
15749 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15804 params.src.image.format = compatibleFormats[srcFormatIndex];
15805 params.dst.image.format = compatibleFormats[srcFormatIndex];
15807 if (!isSupportedByFramework(params.src.image.format))
15810 const bool onlyNearestAndLinear = de::contains(onlyNearestAndLinearFormatsToTest, params.src.image.format);
15817 testParams.params.src.image.extent.depth = layerCount;
15818 testParams.params.dst.image.extent.depth = layerCount;
15826 addTestGroup(layerCountGroup.get(), getFormatCaseName(params.src.image.format), addBlittingImageAllFormatsMipmapFormatTests, testParams);
15841 const std::string barrierGroupDesc = "Use " + de::toString(barrierCount) + " image barriers";
15850 params.src.image.format = compatibleFormatsUInts[srcFormatIndex];
15851 params.dst.image.format = compatibleFormatsUInts[srcFormatIndex];
15853 if (!isSupportedByFramework(params.src.image.format))
15861 testParams.params.src.image.extent.depth = layerCount;
15862 testParams.params.dst.image.extent.depth = layerCount;
15870 addTestGroup(barrierCountGroup.get(), getFormatCaseName(params.src.image.format), addBlittingImageAllFormatsMipmapFormatTests, testParams);
15911 params.src.image.imageType = VK_IMAGE_TYPE_2D;
15912 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
15913 params.src.image.extent = resolveExtent;
15914 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15915 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
15916 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
15917 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
15918 params.dst.image.extent = resolveExtent;
15919 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15920 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
15961 params.src.image.imageType = VK_IMAGE_TYPE_2D;
15962 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
15963 params.src.image.extent = resolveExtent;
15964 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15965 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
15966 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
15967 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
15968 params.dst.image.extent = resolveExtent;
15969 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
15970 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16011 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16012 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16013 params.src.image.extent = resolveExtent;
16014 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16015 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16016 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16017 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16018 params.dst.image.extent = resolveExtent;
16019 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16020 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16061 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16062 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16063 params.src.image.extent = defaultExtent;
16064 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16065 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16066 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16067 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16068 params.dst.image.extent = defaultExtent;
16069 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16070 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16111 de::MovePtr<tcu::TestCaseGroup> computeGroup (new tcu::TestCaseGroup(group->getTestContext(), "whole_copy_before_resolving_compute", "Resolve from image to image using compute queue (whole copy before resolving)"));
16112 de::MovePtr<tcu::TestCaseGroup> transferGroup (new tcu::TestCaseGroup(group->getTestContext(), "whole_copy_before_resolving_transfer", "Resolve from image to image using compute queue (whole copy before resolving)"));
16115 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16116 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16117 params.src.image.extent = defaultExtent;
16118 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16119 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16120 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16121 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16122 params.dst.image.extent = defaultExtent;
16123 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16124 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16165 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16166 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16167 params.src.image.extent = defaultExtent;
16168 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16169 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16170 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16171 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16172 params.dst.image.extent = defaultExtent;
16173 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16174 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16216 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16217 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16218 params.src.image.extent = defaultExtent;
16219 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16220 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16221 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16222 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16223 params.dst.image.extent = defaultExtent;
16224 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16225 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16267 params.src.image.operationLayout = imageLayouts[srcLayoutIndex].layout;
16268 params.dst.image.operationLayout = imageLayouts[dstLayoutIndex].layout;
16269 if (params.src.image.operationLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL ||
16270 params.dst.image.operationLayout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)
16286 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16287 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16288 params.src.image.extent = defaultExtent;
16289 params.src.image.extent.depth = 5u;
16290 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16291 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16292 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16293 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16294 params.dst.image.extent = defaultExtent;
16295 params.dst.image.extent.depth = 5u;
16296 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16297 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16301 for (deUint32 layerNdx=0; layerNdx < params.src.image.extent.depth; ++layerNdx)
16340 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16341 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16342 params.src.image.extent = resolveExtent;
16343 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16344 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16345 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16346 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16347 params.dst.image.extent = resolveExtent;
16348 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16349 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16353 int32_t imageHalfWidth = getExtent3D(params.src.image).width / 2;
16354 int32_t imageHalfHeight = getExtent3D(params.src.image).height / 2;
16420 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16421 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16422 params.src.image.extent = defaultExtent;
16423 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16424 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16425 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16426 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16427 params.dst.image.extent = defaultExtent;
16428 params.dst.image.extent.depth = 5u;
16429 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16430 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16434 for (deUint32 layerNdx=0; layerNdx < params.dst.image.extent.depth; ++layerNdx)
16475 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16476 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16477 params.src.image.extent = defaultExtent;
16478 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16479 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16480 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16481 params.dst.image.extent = defaultExtent;
16482 params.dst.image.extent.depth = layerCount;
16483 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16524 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16525 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16526 params.src.image.extent = defaultExtent;
16527 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16528 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16529 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16530 params.dst.image.extent = defaultExtent;
16531 params.dst.image.extent.depth = layerCount;
16532 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16574 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16575 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16576 params.src.image.extent = defaultExtent;
16577 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16578 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16579 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16580 params.dst.image.extent = defaultExtent;
16581 params.dst.image.extent.depth = layerCount;
16582 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16625 params.src.image.imageType = VK_IMAGE_TYPE_2D;
16626 params.src.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16627 params.src.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16628 params.src.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
16629 params.dst.image.imageType = VK_IMAGE_TYPE_2D;
16630 params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
16631 params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
16632 params.dst.image.operationLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
16667 params.src.image.extent = srcImageSize;
16668 params.dst.image.extent = resolveExtent;
16681 params.src.image.extent = resolveExtent;
16682 params.dst.image.extent = dstImageSize;
16714 // Both image layouts will be tested only with full image copy tests to limit the number of tests.