Home | History | Annotate | Download | only in pipeline
      1 #ifndef _VKTPIPELINEVERTEXUTIL_HPP
      2 #define _VKTPIPELINEVERTEXUTIL_HPP
      3 /*------------------------------------------------------------------------
      4  * Vulkan Conformance Tests
      5  * ------------------------
      6  *
      7  * Copyright (c) 2015 The Khronos Group Inc.
      8  * Copyright (c) 2015 Imagination Technologies Ltd.
      9  *
     10  * Licensed under the Apache License, Version 2.0 (the "License");
     11  * you may not use this file except in compliance with the License.
     12  * You may obtain a copy of the License at
     13  *
     14  *      http://www.apache.org/licenses/LICENSE-2.0
     15  *
     16  * Unless required by applicable law or agreed to in writing, software
     17  * distributed under the License is distributed on an "AS IS" BASIS,
     18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     19  * See the License for the specific language governing permissions and
     20  * limitations under the License.
     21  *
     22  *//*!
     23  * \file
     24  * \brief Utilities for vertex buffers.
     25  *//*--------------------------------------------------------------------*/
     26 
     27 #include "vkDefs.hpp"
     28 #include "tcuDefs.hpp"
     29 #include "tcuVectorUtil.hpp"
     30 
     31 #include <vector>
     32 
     33 namespace vkt
     34 {
     35 namespace pipeline
     36 {
     37 
     38 struct Vertex4RGBA
     39 {
     40 	tcu::Vec4 position;
     41 	tcu::Vec4 color;
     42 };
     43 
     44 struct Vertex4Tex4
     45 {
     46 	tcu::Vec4 position;
     47 	tcu::Vec4 texCoord;
     48 };
     49 
     50 deUint32					getVertexFormatSize				(vk::VkFormat format);
     51 deUint32					getVertexFormatComponentCount	(vk::VkFormat format);
     52 deUint32					getVertexFormatComponentSize	(vk::VkFormat format);
     53 bool						isVertexFormatComponentOrderBGR	(vk::VkFormat format);
     54 bool						isVertexFormatSint				(vk::VkFormat format);
     55 bool						isVertexFormatUint				(vk::VkFormat format);
     56 bool						isVertexFormatSfloat			(vk::VkFormat format);
     57 bool						isVertexFormatUfloat			(vk::VkFormat format);
     58 bool						isVertexFormatUnorm				(vk::VkFormat format);
     59 bool						isVertexFormatSnorm				(vk::VkFormat format);
     60 bool						isVertexFormatSRGB				(vk::VkFormat format);
     61 bool						isVertexFormatSscaled			(vk::VkFormat format);
     62 bool						isVertexFormatUscaled			(vk::VkFormat format);
     63 bool						isVertexFormatDouble			(vk::VkFormat format);
     64 
     65 /*! \brief Creates a pattern of 4 overlapping quads.
     66  *
     67  *  The quads are alined along the plane Z = 0, with X,Y taking values between -1 and 1.
     68  *  Each quad covers one of the quadrants of the scene and partially extends to the other 3 quadrants.
     69  *  The triangles of each quad have different winding orders (CW/CCW).
     70  */
     71 std::vector<Vertex4RGBA>	createOverlappingQuads		(void);
     72 
     73 std::vector<Vertex4Tex4>	createFullscreenQuad		(void);
     74 std::vector<Vertex4Tex4>	createQuadMosaic			(int rows, int columns);
     75 std::vector<Vertex4Tex4>	createQuadMosaicCube		(void);
     76 std::vector<Vertex4Tex4>	createQuadMosaicCubeArray	(int faceArrayIndices[6]);
     77 
     78 std::vector<Vertex4Tex4>	createTestQuadMosaic		(vk::VkImageViewType viewType);
     79 
     80 } // pipeline
     81 } // vkt
     82 
     83 #endif // _VKTPIPELINEVERTEXUTIL_HPP
     84