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 33namespace vkt 34{ 35namespace pipeline 36{ 37 38struct Vertex4RGBA 39{ 40 tcu::Vec4 position; 41 tcu::Vec4 color; 42}; 43 44struct Vertex4Tex4 45{ 46 tcu::Vec4 position; 47 tcu::Vec4 texCoord; 48}; 49 50deUint32 getVertexFormatSize (vk::VkFormat format); 51deUint32 getVertexFormatComponentCount (vk::VkFormat format); 52deUint32 getVertexFormatComponentSize (vk::VkFormat format); 53bool isVertexFormatComponentOrderBGR (vk::VkFormat format); 54bool isVertexFormatSint (vk::VkFormat format); 55bool isVertexFormatUint (vk::VkFormat format); 56bool isVertexFormatSfloat (vk::VkFormat format); 57bool isVertexFormatUfloat (vk::VkFormat format); 58bool isVertexFormatUnorm (vk::VkFormat format); 59bool isVertexFormatSnorm (vk::VkFormat format); 60bool isVertexFormatSRGB (vk::VkFormat format); 61bool isVertexFormatSscaled (vk::VkFormat format); 62bool isVertexFormatUscaled (vk::VkFormat format); 63bool 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 */ 71std::vector<Vertex4RGBA> createOverlappingQuads (void); 72 73std::vector<Vertex4Tex4> createFullscreenQuad (void); 74std::vector<Vertex4Tex4> createQuadMosaic (int rows, int columns); 75std::vector<Vertex4Tex4> createQuadMosaicCube (void); 76std::vector<Vertex4Tex4> createQuadMosaicCubeArray (int faceArrayIndices[6]); 77 78std::vector<Vertex4Tex4> createTestQuadMosaic (vk::VkImageViewType viewType); 79 80} // pipeline 81} // vkt 82 83#endif // _VKTPIPELINEVERTEXUTIL_HPP 84