dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r32g32b32a32_uint
dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r32g32b32a32_sint
dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r32g32b32a32_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r32g32b32a32_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r32g32b32a32_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r32g32b32a32_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r32g32b32a32_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r32g32b32a32_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_uint_r64g64b64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_uint_r64g64b64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_uint_r64g64b64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sint_r64g64b64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sint_r64g64b64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sint_r64g64b64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sfloat_r64g64b64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sfloat_r64g64b64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sfloat_r64g64b64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_uint_r64g64b64a64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_uint_r64g64b64a64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_uint_r64g64b64a64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sint_r64g64b64a64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sint_r64g64b64a64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sint_r64g64b64a64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sfloat_r64g64b64a64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sfloat_r64g64b64a64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sfloat_r64g64b64a64_sfloat
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d16_unorm_d16_unorm
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_x8_d24_unorm_pack32_x8_d24_unorm_pack32
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d32_sfloat_d32_sfloat
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_s8_uint_s8_uint
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d16_unorm_s8_uint_d16_unorm_s8_uint
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d24_unorm_s8_uint_d24_unorm_s8_uint
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d32_sfloat_s8_uint_d32_sfloat_s8_uint
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_by_slices
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_by_layers
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_regions
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_regions
dEQP-VK.api.copy_and_blit.image_to_buffer.whole
dEQP-VK.api.copy_and_blit.image_to_buffer.buffer_offset
dEQP-VK.api.copy_and_blit.image_to_buffer.regions
const tcu::TextureFormat srcTcuFormat = mapVkFormat(m_params.src.image.format);
const tcu::TextureFormat dstTcuFormat = mapVkFormat(m_params.dst.image.format);
m_sourceTextureLevel = de::MovePtr<tcu::TextureLevel>(new tcu::TextureLevel(srcTcuFormat,
- m_params.src.image.extent.width,
- m_params.src.image.extent.height,
- m_params.src.image.extent.depth));
+ (int)m_params.src.image.extent.width,
+ (int)m_params.src.image.extent.height,
+ (int)m_params.src.image.extent.depth));
- generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, FILL_MODE_WHITE);
+ generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, FILL_MODE_RED);
m_destinationTextureLevel = de::MovePtr<tcu::TextureLevel>(new tcu::TextureLevel(dstTcuFormat,
- (int)m_params.dst.image.extent.width,
- (int)m_params.dst.image.extent.height,
- (int)m_params.dst.image.extent.depth));
+ (int)m_params.dst.image.extent.width,
+ (int)m_params.dst.image.extent.height,
+ (int)m_params.dst.image.extent.depth));
generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, FILL_MODE_GRADIENT);
generateExpectedResult();
return checkTestResult(resultTextureLevel->getAccess());
}
+ tcu::TestStatus CopyImageToImage::checkTestResult (tcu::ConstPixelBufferAccess result)
+ {
+ const tcu::Vec4 fThreshold (0.0f);
+ const tcu::UVec4 uThreshold (0u);
+
+ if (tcu::isCombinedDepthStencilType(result.getFormat().type))
+ {
+ if (tcu::hasDepthComponent(result.getFormat().order))
+ {
+ const tcu::Sampler::DepthStencilMode mode = tcu::Sampler::MODE_DEPTH;
+ const tcu::ConstPixelBufferAccess depthResult = tcu::getEffectiveDepthStencilAccess(result, mode);
+ const tcu::ConstPixelBufferAccess expectedResult = tcu::getEffectiveDepthStencilAccess(m_expectedTextureLevel->getAccess(), mode);
+
+ if (isFloatFormat(result.getFormat()))
+ {
+ if (!tcu::floatThresholdCompare(m_context.getTestContext().getLog(), "Compare", "Result comparsion", expectedResult, depthResult, fThreshold, tcu::COMPARE_LOG_RESULT))
+ return tcu::TestStatus::fail("CopiesAndBlitting test");
+ }
+ else
+ {
+ if (!tcu::intThresholdCompare(m_context.getTestContext().getLog(), "Compare", "Result comparsion", expectedResult, depthResult, uThreshold, tcu::COMPARE_LOG_RESULT))
+ return tcu::TestStatus::fail("CopiesAndBlitting test");
+ }
+ }
+
+ if (tcu::hasStencilComponent(result.getFormat().order))
+ {
+ const tcu::Sampler::DepthStencilMode mode = tcu::Sampler::MODE_STENCIL;
+ const tcu::ConstPixelBufferAccess stencilResult = tcu::getEffectiveDepthStencilAccess(result, mode);
+ const tcu::ConstPixelBufferAccess expectedResult = tcu::getEffectiveDepthStencilAccess(m_expectedTextureLevel->getAccess(), mode);
+
+ if (isFloatFormat(result.getFormat()))
+ {
+ if (!tcu::floatThresholdCompare(m_context.getTestContext().getLog(), "Compare", "Result comparsion", expectedResult, stencilResult, fThreshold, tcu::COMPARE_LOG_RESULT))
+ return tcu::TestStatus::fail("CopiesAndBlitting test");
+ }
+ else
+ {
+ if (!tcu::intThresholdCompare(m_context.getTestContext().getLog(), "Compare", "Result comparsion", expectedResult, stencilResult, uThreshold, tcu::COMPARE_LOG_RESULT))
+ return tcu::TestStatus::fail("CopiesAndBlitting test");
+ }
+ }
+ }
+ else
+ {
+ if (isFloatFormat(result.getFormat()))
+ {
+ if (!tcu::floatThresholdCompare(m_context.getTestContext().getLog(), "Compare", "Result comparsion", m_expectedTextureLevel->getAccess(), result, fThreshold, tcu::COMPARE_LOG_RESULT))
+ return tcu::TestStatus::fail("CopiesAndBlitting test");
+ }
+ else
+ {
+ if (!tcu::intThresholdCompare(m_context.getTestContext().getLog(), "Compare", "Result comparsion", m_expectedTextureLevel->getAccess(), result, uThreshold, tcu::COMPARE_LOG_RESULT))
+ return tcu::TestStatus::fail("CopiesAndBlitting test");
+ }
+ }
+
+ return tcu::TestStatus::pass("CopiesAndBlitting test");
+ }
+
void CopyImageToImage::copyRegionToTextureLevel (tcu::ConstPixelBufferAccess src, tcu::PixelBufferAccess dst, CopyRegion region)
{
- VkOffset3D srcOffset = region.imageCopy.srcOffset;
- VkOffset3D dstOffset = region.imageCopy.dstOffset;
- VkExtent3D extent = region.imageCopy.extent;
- const VkOffset3D srcOffset = region.imageCopy.srcOffset;
- const VkOffset3D dstOffset = region.imageCopy.dstOffset;
- const VkExtent3D extent = region.imageCopy.extent;
++ VkOffset3D srcOffset = region.imageCopy.srcOffset;
++ VkOffset3D dstOffset = region.imageCopy.dstOffset;
++ VkExtent3D extent = region.imageCopy.extent;
+
+ if (m_params.src.image.imageType == VK_IMAGE_TYPE_3D && m_params.dst.image.imageType == VK_IMAGE_TYPE_2D)
+ dstOffset.z = srcOffset.z;
+ if (m_params.src.image.imageType == VK_IMAGE_TYPE_2D && m_params.dst.image.imageType == VK_IMAGE_TYPE_3D)
+ {
+ srcOffset.z = dstOffset.z;
+ extent.depth = std::max(region.imageCopy.extent.depth, region.imageCopy.srcSubresource.layerCount);
+ }
+
if (tcu::isCombinedDepthStencilType(src.getFormat().type))
{
vk.cmdBlitImage(*m_cmdBuffer, m_source.get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_destination.get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)m_params.regions.size(), ®ions[0], m_params.filter);
vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &dstImageBarrier);
VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
-
- submitCommandsAndWait (vk, vkDevice, queue, *m_cmdBuffer);
+ submitCommandsAndWait(vk, vkDevice, queue, *m_cmdBuffer);
- de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(vk, vkDevice, queue, memAlloc, *m_destination, m_params.dst.image);
+ de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image);
return checkTestResult(resultTextureLevel->getAccess());
}
vk.cmdResolveImage(*m_cmdBuffer, m_multisampledImage.get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_destination.get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)m_params.regions.size(), imageResolves.data());
vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier);
VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
+ submitCommandsAndWait(vk, vkDevice, queue, *m_cmdBuffer);
- de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(vk, vkDevice, queue, memAlloc, *m_destination, m_params.dst.image);
- submitCommandsAndWait (vk, vkDevice, queue, *m_cmdBuffer);
-
- // check the result of resolving image
- {
- de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image);
++ de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image);
- if (QP_TEST_RESULT_PASS != checkTestResult(resultTextureLevel->getAccess()).getCode())
- return tcu::TestStatus::fail("CopiesAndBlitting test");
- }
- return tcu::TestStatus::pass("CopiesAndBlitting test");
+ return checkTestResult(resultTextureLevel->getAccess());
}
tcu::TestStatus ResolveImageToImage::checkTestResult (tcu::ConstPixelBufferAccess result)
dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r32g32b32a32_uint
dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r32g32b32a32_sint
dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r32g32b32a32_sfloat_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r32g32b32a32_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r32g32b32a32_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_uint_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r32g32b32a32_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r32g32b32a32_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sint_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r32g32b32a32_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r32g32b32a32_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r32g32b32a32_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r64g64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r64g64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64_sfloat_r64g64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_uint_r64g64b64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_uint_r64g64b64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_uint_r64g64b64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sint_r64g64b64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sint_r64g64b64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sint_r64g64b64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sfloat_r64g64b64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sfloat_r64g64b64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64_sfloat_r64g64b64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_uint_r64g64b64a64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_uint_r64g64b64a64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_uint_r64g64b64a64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sint_r64g64b64a64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sint_r64g64b64a64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sint_r64g64b64a64_sfloat
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sfloat_r64g64b64a64_uint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sfloat_r64g64b64a64_sint
- dEQP-VK.api.copy_and_blit.image_to_image.all_formats.r64g64b64a64_sfloat_r64g64b64a64_sfloat
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d16_unorm_d16_unorm
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_x8_d24_unorm_pack32_x8_d24_unorm_pack32
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d32_sfloat_d32_sfloat
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_s8_uint_s8_uint
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d16_unorm_s8_uint_d16_unorm_s8_uint
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d24_unorm_s8_uint_d24_unorm_s8_uint
+ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d32_sfloat_s8_uint_d32_sfloat_s8_uint
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_by_slices
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_by_layers
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_regions
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_regions
dEQP-VK.api.copy_and_blit.image_to_buffer.whole
dEQP-VK.api.copy_and_blit.image_to_buffer.buffer_offset
dEQP-VK.api.copy_and_blit.image_to_buffer.regions