resolve merge conflicts of a9ffcc1 to master
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / modules / vulkan / ubo / vktUniformBlockCase.hpp
index cb883c1..bb7cdef 100644 (file)
@@ -7,28 +7,17 @@
  * Copyright (c) 2015 The Khronos Group Inc.
  * Copyright (c) 2015 Samsung Electronics Co., 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
@@ -245,13 +234,17 @@ private:
 struct BlockLayoutEntry
 {
        BlockLayoutEntry (void)
-               : size(0)
+               : size                                  (0)
+               , blockDeclarationNdx   (-1)
+               , bindingNdx                    (-1)
+               , instanceNdx                   (-1)
        {
        }
 
        std::string                     name;
        int                                     size;
        std::vector<int>        activeUniformIndices;
+       int                                     blockDeclarationNdx;
        int                                     bindingNdx;
        int                                     instanceNdx;
 };
@@ -261,7 +254,7 @@ struct UniformLayoutEntry
        UniformLayoutEntry (void)
                : type                  (glu::TYPE_LAST)
                , size                  (0)
-               , blockNdx              (-1)
+               , blockLayoutNdx(-1)
                , offset                (-1)
                , arrayStride   (-1)
                , matrixStride  (-1)
@@ -273,7 +266,7 @@ struct UniformLayoutEntry
        std::string                     name;
        glu::DataType           type;
        int                                     size;
-       int                                     blockNdx;
+       int                                     blockLayoutNdx;
        int                                     offset;
        int                                     arrayStride;
        int                                     matrixStride;
@@ -287,8 +280,8 @@ public:
        std::vector<BlockLayoutEntry>           blocks;
        std::vector<UniformLayoutEntry>         uniforms;
 
-       int                                                                     getUniformIndex                 (const std::string& name) const;
-       int                                                                     getBlockIndex                   (const std::string& name) const;
+       int                                                                     getUniformLayoutIndex   (int blockDeclarationNdx, const std::string& name) const;
+       int                                                                     getBlockLayoutIndex             (int blockDeclarationNdx, int instanceNdx) const;
 };
 
 class UniformBlockCase : public vkt::TestCase
@@ -305,7 +298,8 @@ public:
                                                                UniformBlockCase                        (tcu::TestContext&      testCtx,
                                                                                                                         const std::string&     name,
                                                                                                                         const std::string&     description,
-                                                                                                                        BufferMode                     bufferMode);
+                                                                                                                        BufferMode                     bufferMode,
+                                                                                                                        MatrixLoadFlags        matrixLoadFlag);
                                                                ~UniformBlockCase                       (void);
 
        virtual void                            initPrograms                            (vk::SourceCollections& programCollection) const;
@@ -316,6 +310,7 @@ protected:
 
        BufferMode                                      m_bufferMode;
        ShaderInterface                         m_interface;
+       MatrixLoadFlags                         m_matrixLoadFlag;
 
 private:
        std::string                                     m_vertShaderSource;