Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
authorAlexander Galazin <alexander.galazin@arm.com>
Mon, 1 Jun 2020 15:11:42 +0000 (17:11 +0200)
committerAlexander Galazin <alexander.galazin@arm.com>
Mon, 1 Jun 2020 15:11:42 +0000 (17:11 +0200)
Change-Id: I01f6039531fa5655110e271f30104569a04805d4

1  2 
external/vulkancts/modules/vulkan/geometry/vktGeometryLayeredRenderingTests.cpp

@@@ -1303,11 -1263,14 +1303,14 @@@ tcu::TestStatus testLayeredReadBack (Co
  
        const VkFormat                                          colorFormat                     = VK_FORMAT_R8G8B8A8_UNORM;
        const deUint32                                          colorImagePixelSize     = static_cast<deUint32>(tcu::getPixelSize(mapVkFormat(colorFormat)));
 -      const VkDeviceSize                                      colorBufferSize         = params.image.size.width * params.image.size.height * params.image.size.depth * params.image.numLayers * colorImagePixelSize;
 +      const VkDeviceSize                                      colorBufferSize         = static_cast<VkDeviceSize>( deAlignSize(params.image.size.width * params.image.size.height * colorImagePixelSize, static_cast<std::size_t>(alignmentSize)) * params.image.size.depth * params.image.numLayers );
        const VkImageUsageFlags                         colorImageUsage         = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
  
 -      const bool                                                      dsUsed                          = (VK_IMAGE_VIEW_TYPE_3D != params.image.viewType);
 +      const bool                                                      dsUsed                          = true;
        const VkFormat                                          dsFormat                        = VK_FORMAT_D24_UNORM_S8_UINT;
+       const VkImageType                                       dsImageType                     = (imageType == VK_IMAGE_TYPE_3D ? VK_IMAGE_TYPE_2D : imageType); // depth/stencil 2D_ARRAY attachments cannot be taken from 3D image, use 2D_ARRAY image instead.
+       const VkExtent3D                                        dsImageSize                     = makeExtent3D(params.image.size.width, params.image.size.height, 1u);
+       const VkImageCreateFlags                        dsImageCreateFlags      = (isCubeImageViewType(params.image.viewType) ? VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : (VkImageCreateFlagBits)0);
        const deUint32                                          dsImagePixelSize        = static_cast<deUint32>(tcu::getPixelSize(mapVkFormat(dsFormat)));
        const VkImageUsageFlags                         dsImageUsage            = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const VkImageAspectFlags                        dsAspectFlags           = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
  
                        // Clear color image with initial value
                        {
+                               const deUint32                                  layer                                   = (VK_IMAGE_VIEW_TYPE_3D == params.image.viewType) ? 0u : layerNdx;
+                               const deUint32                                  imageDepth                              = (VK_IMAGE_VIEW_TYPE_3D == params.image.viewType) ? layerNdx : 0u;
+                               const VkOffset3D                                imageOffset                             = makeOffset3D(0u, 0u, imageDepth);
                                const tcu::Vec4                                 clearColor                              = scaleColor(s_colors[layerNdx % DE_LENGTH_OF_ARRAY(s_colors)], 0.25f);
 -                              const deUint32                                  bufferSliceSize                 = params.image.size.width * params.image.size.height * colorImagePixelSize;
 +                              const deUint32                                  bufferSliceSize                 = deAlign32( params.image.size.width * params.image.size.height * colorImagePixelSize, static_cast<deInt32>(alignmentSize));
                                const VkDeviceSize                              bufferOffset                    = layerNdx * bufferSliceSize;
                                const VkImageSubresourceLayers  imageSubresource                = makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, layer, 1u);
                                const VkBufferImageCopy                 bufferImageCopyRegion   = makeBufferImageCopy(bufferOffset, imageSubresource, imageOffset, imageExtent);
                        if (dsUsed)
                        {
                                const float                                             depthValue                              = 1.0f;
 -                              const deUint32                                  bufferSliceSize                 = params.image.size.width * params.image.size.height * dsImagePixelSize;
 +                              const deUint32                                  bufferSliceSize                 = deAlign32( params.image.size.width * params.image.size.height * dsImagePixelSize, static_cast<deInt32>(alignmentSize));
                                const VkDeviceSize                              bufferOffset                    = layerNdx * bufferSliceSize;
-                               const VkImageSubresourceLayers  imageSubresource                = makeImageSubresourceLayers(VK_IMAGE_ASPECT_DEPTH_BIT, 0u, layer, 1u);
-                               const VkBufferImageCopy                 bufferImageCopyRegion   = makeBufferImageCopy(bufferOffset, imageSubresource, imageOffset, imageExtent);
+                               const VkImageSubresourceLayers  imageSubresource                = makeImageSubresourceLayers(VK_IMAGE_ASPECT_DEPTH_BIT, 0u, layerNdx, 1u);
+                               const VkBufferImageCopy                 bufferImageCopyRegion   = makeBufferImageCopy(bufferOffset, imageSubresource, makeOffset3D(0u, 0u, 0u), imageExtent);
  
                                fillBuffer(vk, device, *depthBufferAlloc, bufferOffset, bufferSliceSize, dsFormat, depthValue);
                                vk.cmdCopyBufferToImage(*cmdBuffer, *depthBuffer, *dsImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, &bufferImageCopyRegion);
                        if (dsUsed)
                        {
                                const deUint8                                   stencilValue                    = 0;
 -                              const deUint32                                  bufferSliceSize                 = params.image.size.width * params.image.size.height * stencilPixelSize;
 +                              const deUint32                                  bufferSliceSize                 = deAlign32( params.image.size.width * params.image.size.height * stencilPixelSize, static_cast<deInt32>(alignmentSize));
                                const VkDeviceSize                              bufferOffset                    = layerNdx * bufferSliceSize;
-                               const VkImageSubresourceLayers  imageSubresource                = makeImageSubresourceLayers(VK_IMAGE_ASPECT_STENCIL_BIT, 0u, layer, 1u);
-                               const VkBufferImageCopy                 bufferImageCopyRegion   = makeBufferImageCopy(bufferOffset, imageSubresource, imageOffset, imageExtent);
+                               const VkImageSubresourceLayers  imageSubresource                = makeImageSubresourceLayers(VK_IMAGE_ASPECT_STENCIL_BIT, 0u, layerNdx, 1u);
+                               const VkBufferImageCopy                 bufferImageCopyRegion   = makeBufferImageCopy(bufferOffset, imageSubresource, makeOffset3D(0u, 0u, 0u), imageExtent);
                                deUint8*                                                bufferStart                             = static_cast<deUint8*>((*stencilBufferAlloc).getHostPtr());
                                deUint8*                                                bufferLayerStart                = &bufferStart[bufferOffset];