Fix issues in pipeline.timestamp.transfer_tests
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / modules / vulkan / pipeline / vktPipelineBlendTests.cpp
index 96a34de..93ca41b 100644 (file)
@@ -5,28 +5,17 @@
  * Copyright (c) 2015 The Khronos Group Inc.
  * Copyright (c) 2015 Imagination Technologies Ltd.
  *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and/or associated documentation files (the
- * "Materials"), to deal in the Materials without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Materials, and to
- * permit persons to whom the Materials are furnished to do so, subject to
- * the following conditions:
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * The above copyright notice(s) and this permission notice shall be included
- * in all copies or substantial portions of the Materials.
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * The Materials are Confidential Information as defined by the
- * Khronos Membership Agreement until designated non-confidential by Khronos,
- * at which point this condition clause shall be removed.
- *
- * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  *
  *//*!
  * \file
@@ -360,7 +349,7 @@ BlendTestInstance::BlendTestInstance (Context&                                                                      context,
                        *m_colorImage,                                                                          // VkImage                                      image;
                        VK_IMAGE_VIEW_TYPE_2D,                                                          // VkImageViewType                      viewType;
                        m_colorFormat,                                                                          // VkFormat                                     format;
-                       getFormatComponentMapping(m_colorFormat),                       // VkComponentMapping           components;
+                       {VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY},
                        { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u }           // VkImageSubresourceRange      subresourceRange;
                };
 
@@ -605,8 +594,8 @@ BlendTestInstance::BlendTestInstance (Context&                                                                      context,
                                0u,                                             // deUint32             writeMask;
                                0u                                              // deUint32             reference;
                        },
-                       -1.0f,                                                                                                          // float                        minDepthBounds;
-                       +1.0f                                                                                                           // float                        maxDepthBounds;
+                       0.0f,                                                                                                           // float                        minDepthBounds;
+                       1.0f                                                                                                            // float                        maxDepthBounds;
                };
 
                // The color blend attachment will be set up before creating the graphics pipeline.
@@ -627,15 +616,6 @@ BlendTestInstance::BlendTestInstance (Context&                                                                     context,
                        }
                };
 
-               const VkPipelineDynamicStateCreateInfo dynamicStateParams =
-               {
-                       VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,           // VkStructureType                                              sType;
-                       DE_NULL,                                                                                                        // const void*                                                  pNext;
-                       0u,                                                                                                                     // VkPipelineDynamicStateCreateFlags    flags;
-                       0u,                                                                                                                     // deUint32                                                             dynamicStateCount;
-                       DE_NULL                                                                                                         // const VkDynamicState*                                pDynamicStates;
-               };
-
                const VkGraphicsPipelineCreateInfo graphicsPipelineParams =
                {
                        VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,        // VkStructureType                                                                      sType;
@@ -651,7 +631,7 @@ BlendTestInstance::BlendTestInstance (Context&                                                                      context,
                        &multisampleStateParams,                                                        // const VkPipelineMultisampleStateCreateInfo*          pMultisampleState;
                        &depthStencilStateParams,                                                       // const VkPipelineDepthStencilStateCreateInfo*         pDepthStencilState;
                        &colorBlendStateParams,                                                         // const VkPipelineColorBlendStateCreateInfo*           pColorBlendState;
-                       &dynamicStateParams,                                                            // const VkPipelineDynamicStateCreateInfo*                      pDynamicState;
+                       (const VkPipelineDynamicStateCreateInfo*)DE_NULL,       // const VkPipelineDynamicStateCreateInfo*                      pDynamicState;
                        *m_pipelineLayout,                                                                      // VkPipelineLayout                                                                     layout;
                        *m_renderPass,                                                                          // VkRenderPass                                                                         renderPass;
                        0u,                                                                                                     // deUint32                                                                                     subpass;
@@ -755,9 +735,28 @@ BlendTestInstance::BlendTestInstance (Context&                                                                     context,
                        &attachmentClearValue                                                                   // const VkClearValue*  pClearValues;
                };
 
+               // Color image layout transition
+               const VkImageMemoryBarrier imageLayoutBarrier =
+               {
+                       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,                                                                 // VkStructureType            sType;
+                       DE_NULL,                                                                                                                                // const void*                pNext;
+                       (VkAccessFlags)0,                                                                                                               // VkAccessFlags              srcAccessMask;
+                       VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                                                                   // VkAccessFlags              dstAccessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                                                                                              // VkImageLayout              oldLayout;
+                       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                                                               // VkImageLayout              newLayout;
+                       VK_QUEUE_FAMILY_IGNORED,                                                                                                // uint32_t                   srcQueueFamilyIndex;
+                       VK_QUEUE_FAMILY_IGNORED,                                                                                                // uint32_t                   dstQueueFamilyIndex;
+                       *m_colorImage,                                                                                                                  // VkImage                    image;
+                       { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u }                                                   // VkImageSubresourceRange    subresourceRange;
+               };
+
                m_cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferAllocateInfo);
 
                VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo));
+
+               vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, (VkDependencyFlags)0,
+                       0u, DE_NULL, 0u, DE_NULL, 1u, &imageLayoutBarrier);
+
                vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE);
 
                const VkDeviceSize quadOffset = (m_vertices.size() / BlendTest::QUAD_COUNT) * sizeof(Vertex4RGBA);