14b9229de0ea1993c94c91016ba3f955509753fb0scygan/*------------------------------------------------------------------------ 24b9229de0ea1993c94c91016ba3f955509753fb0scygan * Vulkan Conformance Tests 34b9229de0ea1993c94c91016ba3f955509753fb0scygan * ------------------------ 44b9229de0ea1993c94c91016ba3f955509753fb0scygan * 54b9229de0ea1993c94c91016ba3f955509753fb0scygan * Copyright (c) 2015 The Khronos Group Inc. 64b9229de0ea1993c94c91016ba3f955509753fb0scygan * Copyright (c) 2015 Intel Corporation 74b9229de0ea1993c94c91016ba3f955509753fb0scygan * 8978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License"); 9978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * you may not use this file except in compliance with the License. 10978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * You may obtain a copy of the License at 114b9229de0ea1993c94c91016ba3f955509753fb0scygan * 12978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * http://www.apache.org/licenses/LICENSE-2.0 134b9229de0ea1993c94c91016ba3f955509753fb0scygan * 14978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Unless required by applicable law or agreed to in writing, software 15978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS, 16978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * See the License for the specific language governing permissions and 18978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * limitations under the License. 194b9229de0ea1993c94c91016ba3f955509753fb0scygan * 204b9229de0ea1993c94c91016ba3f955509753fb0scygan *//*! 214b9229de0ea1993c94c91016ba3f955509753fb0scygan * \file 224b9229de0ea1993c94c91016ba3f955509753fb0scygan * \brief CreateInfo utilities 234b9229de0ea1993c94c91016ba3f955509753fb0scygan *//*--------------------------------------------------------------------*/ 244b9229de0ea1993c94c91016ba3f955509753fb0scygan 254b9229de0ea1993c94c91016ba3f955509753fb0scygan#include "vktDynamicStateCreateInfoUtil.hpp" 264b9229de0ea1993c94c91016ba3f955509753fb0scygan 274b9229de0ea1993c94c91016ba3f955509753fb0scygan#include "vkImageUtil.hpp" 284b9229de0ea1993c94c91016ba3f955509753fb0scygan 294b9229de0ea1993c94c91016ba3f955509753fb0scygannamespace vkt 304b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 314b9229de0ea1993c94c91016ba3f955509753fb0scygannamespace DynamicState 324b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 334b9229de0ea1993c94c91016ba3f955509753fb0scygan 346a2834ac40395173796b6e8d2a8e6c120d86ee74scyganImageSubresourceRange::ImageSubresourceRange (vk::VkImageAspectFlags _aspectMask, 356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _baseMipLevel, 366a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _levelCount, 376a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _baseArrayLayer, 386a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _layerCount) 394b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 404b9229de0ea1993c94c91016ba3f955509753fb0scygan aspectMask = _aspectMask; 414b9229de0ea1993c94c91016ba3f955509753fb0scygan baseMipLevel = _baseMipLevel; 426a2834ac40395173796b6e8d2a8e6c120d86ee74scygan levelCount = _levelCount; 434b9229de0ea1993c94c91016ba3f955509753fb0scygan baseArrayLayer = _baseArrayLayer; 446a2834ac40395173796b6e8d2a8e6c120d86ee74scygan layerCount = _layerCount; 454b9229de0ea1993c94c91016ba3f955509753fb0scygan} 464b9229de0ea1993c94c91016ba3f955509753fb0scygan 476a2834ac40395173796b6e8d2a8e6c120d86ee74scyganComponentMapping::ComponentMapping (vk::VkComponentSwizzle _r, 48271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim vk::VkComponentSwizzle _g, 49271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim vk::VkComponentSwizzle _b, 50271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim vk::VkComponentSwizzle _a) 514b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 524b9229de0ea1993c94c91016ba3f955509753fb0scygan r = _r; 534b9229de0ea1993c94c91016ba3f955509753fb0scygan g = _g; 544b9229de0ea1993c94c91016ba3f955509753fb0scygan b = _b; 554b9229de0ea1993c94c91016ba3f955509753fb0scygan a = _a; 564b9229de0ea1993c94c91016ba3f955509753fb0scygan} 574b9229de0ea1993c94c91016ba3f955509753fb0scygan 586a2834ac40395173796b6e8d2a8e6c120d86ee74scyganImageViewCreateInfo::ImageViewCreateInfo (vk::VkImage _image, 596a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageViewType _viewType, 606a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkFormat _format, 616a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkImageSubresourceRange& _subresourceRange, 626a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkComponentMapping& _components, 636a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageViewCreateFlags _flags) 644b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 654b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; 664b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 676a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 684b9229de0ea1993c94c91016ba3f955509753fb0scygan image = _image; 694b9229de0ea1993c94c91016ba3f955509753fb0scygan viewType = _viewType; 704b9229de0ea1993c94c91016ba3f955509753fb0scygan format = _format; 716a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.r = _components.r; 726a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.g = _components.g; 736a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.b = _components.b; 746a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.a = _components.a; 754b9229de0ea1993c94c91016ba3f955509753fb0scygan subresourceRange = _subresourceRange; 764b9229de0ea1993c94c91016ba3f955509753fb0scygan flags = _flags; 774b9229de0ea1993c94c91016ba3f955509753fb0scygan} 784b9229de0ea1993c94c91016ba3f955509753fb0scygan 796a2834ac40395173796b6e8d2a8e6c120d86ee74scyganImageViewCreateInfo::ImageViewCreateInfo (vk::VkImage _image, 806a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageViewType _viewType, 816a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkFormat _format, 826a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkComponentMapping& _components, 836a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageViewCreateFlags _flags) 844b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 854b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; 864b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 876a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 886a2834ac40395173796b6e8d2a8e6c120d86ee74scygan image = _image; 896a2834ac40395173796b6e8d2a8e6c120d86ee74scygan viewType = _viewType; 906a2834ac40395173796b6e8d2a8e6c120d86ee74scygan format = _format; 916a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.r = _components.r; 926a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.g = _components.g; 936a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.b = _components.b; 946a2834ac40395173796b6e8d2a8e6c120d86ee74scygan components.a = _components.a; 954b9229de0ea1993c94c91016ba3f955509753fb0scygan 964b9229de0ea1993c94c91016ba3f955509753fb0scygan vk::VkImageAspectFlags aspectFlags; 974b9229de0ea1993c94c91016ba3f955509753fb0scygan const tcu::TextureFormat tcuFormat = vk::mapVkFormat(_format); 984b9229de0ea1993c94c91016ba3f955509753fb0scygan 994b9229de0ea1993c94c91016ba3f955509753fb0scygan switch (tcuFormat.order) 1004b9229de0ea1993c94c91016ba3f955509753fb0scygan { 1014b9229de0ea1993c94c91016ba3f955509753fb0scygan case tcu::TextureFormat::D: 1024b9229de0ea1993c94c91016ba3f955509753fb0scygan aspectFlags = vk::VK_IMAGE_ASPECT_DEPTH_BIT; 1034b9229de0ea1993c94c91016ba3f955509753fb0scygan break; 1044b9229de0ea1993c94c91016ba3f955509753fb0scygan case tcu::TextureFormat::S: 1054b9229de0ea1993c94c91016ba3f955509753fb0scygan aspectFlags = vk::VK_IMAGE_ASPECT_STENCIL_BIT; 1064b9229de0ea1993c94c91016ba3f955509753fb0scygan break; 1074b9229de0ea1993c94c91016ba3f955509753fb0scygan case tcu::TextureFormat::DS: 1084b9229de0ea1993c94c91016ba3f955509753fb0scygan aspectFlags = vk::VK_IMAGE_ASPECT_STENCIL_BIT | vk::VK_IMAGE_ASPECT_DEPTH_BIT; 1094b9229de0ea1993c94c91016ba3f955509753fb0scygan break; 1104b9229de0ea1993c94c91016ba3f955509753fb0scygan default: 1116a2834ac40395173796b6e8d2a8e6c120d86ee74scygan aspectFlags = vk::VK_IMAGE_ASPECT_COLOR_BIT; 1126a2834ac40395173796b6e8d2a8e6c120d86ee74scygan break; 1134b9229de0ea1993c94c91016ba3f955509753fb0scygan } 1144b9229de0ea1993c94c91016ba3f955509753fb0scygan 1154b9229de0ea1993c94c91016ba3f955509753fb0scygan subresourceRange = ImageSubresourceRange(aspectFlags);; 1164b9229de0ea1993c94c91016ba3f955509753fb0scygan flags = _flags; 1174b9229de0ea1993c94c91016ba3f955509753fb0scygan} 1184b9229de0ea1993c94c91016ba3f955509753fb0scygan 119271724cff305eb9f013d5587ef3f213ed7c9e28bDae KimBufferViewCreateInfo::BufferViewCreateInfo (vk::VkBuffer _buffer, 1204b9229de0ea1993c94c91016ba3f955509753fb0scygan vk::VkFormat _format, 121271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim vk::VkDeviceSize _offset, 122271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim vk::VkDeviceSize _range) 1234b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 1244b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO; 1254b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 1264b9229de0ea1993c94c91016ba3f955509753fb0scygan 127271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = 0u; 1284b9229de0ea1993c94c91016ba3f955509753fb0scygan buffer = _buffer; 1294b9229de0ea1993c94c91016ba3f955509753fb0scygan format = _format; 1304b9229de0ea1993c94c91016ba3f955509753fb0scygan offset = _offset; 1314b9229de0ea1993c94c91016ba3f955509753fb0scygan range = _range; 1324b9229de0ea1993c94c91016ba3f955509753fb0scygan} 1334b9229de0ea1993c94c91016ba3f955509753fb0scygan 1346a2834ac40395173796b6e8d2a8e6c120d86ee74scyganBufferCreateInfo::BufferCreateInfo (vk::VkDeviceSize _size, 1356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBufferUsageFlags _usage, 1366a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkSharingMode _sharingMode, 1376a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _queueFamilyIndexCount, 1386a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const deUint32* _pQueueFamilyIndices, 1396a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBufferCreateFlags _flags) 140ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos{ 1414b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; 1424b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 1436a2834ac40395173796b6e8d2a8e6c120d86ee74scygan size = _size; 1446a2834ac40395173796b6e8d2a8e6c120d86ee74scygan usage = _usage; 1456a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = _flags; 1466a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sharingMode = _sharingMode; 1476a2834ac40395173796b6e8d2a8e6c120d86ee74scygan queueFamilyIndexCount = _queueFamilyIndexCount; 1484b9229de0ea1993c94c91016ba3f955509753fb0scygan 1496a2834ac40395173796b6e8d2a8e6c120d86ee74scygan if (_queueFamilyIndexCount) 1504b9229de0ea1993c94c91016ba3f955509753fb0scygan { 1514b9229de0ea1993c94c91016ba3f955509753fb0scygan m_queueFamilyIndices = std::vector<deUint32>( 1526a2834ac40395173796b6e8d2a8e6c120d86ee74scygan _pQueueFamilyIndices, _pQueueFamilyIndices + _queueFamilyIndexCount); 1534b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = &m_queueFamilyIndices[0]; 1546a2834ac40395173796b6e8d2a8e6c120d86ee74scygan } 1556a2834ac40395173796b6e8d2a8e6c120d86ee74scygan else 1566a2834ac40395173796b6e8d2a8e6c120d86ee74scygan { 1574b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = _pQueueFamilyIndices; 158ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos } 1594b9229de0ea1993c94c91016ba3f955509753fb0scygan} 1604b9229de0ea1993c94c91016ba3f955509753fb0scygan 1614b9229de0ea1993c94c91016ba3f955509753fb0scyganBufferCreateInfo::BufferCreateInfo (const BufferCreateInfo &other) 1624b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 1636a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 1646a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pNext = other.pNext; 1656a2834ac40395173796b6e8d2a8e6c120d86ee74scygan size = other.size; 1666a2834ac40395173796b6e8d2a8e6c120d86ee74scygan usage = other.usage; 1676a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = other.flags; 1686a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sharingMode = other.sharingMode; 1696a2834ac40395173796b6e8d2a8e6c120d86ee74scygan queueFamilyIndexCount = other.queueFamilyIndexCount; 1704b9229de0ea1993c94c91016ba3f955509753fb0scygan 1716a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_queueFamilyIndices = other.m_queueFamilyIndices; 1726a2834ac40395173796b6e8d2a8e6c120d86ee74scygan DE_ASSERT(m_queueFamilyIndices.size() == queueFamilyIndexCount); 1734b9229de0ea1993c94c91016ba3f955509753fb0scygan 1744b9229de0ea1993c94c91016ba3f955509753fb0scygan if (m_queueFamilyIndices.size()) 1754b9229de0ea1993c94c91016ba3f955509753fb0scygan { 1764b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = &m_queueFamilyIndices[0]; 1774b9229de0ea1993c94c91016ba3f955509753fb0scygan } 1784b9229de0ea1993c94c91016ba3f955509753fb0scygan else 1794b9229de0ea1993c94c91016ba3f955509753fb0scygan { 1804b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = DE_NULL; 1814b9229de0ea1993c94c91016ba3f955509753fb0scygan } 1824b9229de0ea1993c94c91016ba3f955509753fb0scygan} 1834b9229de0ea1993c94c91016ba3f955509753fb0scygan 1844b9229de0ea1993c94c91016ba3f955509753fb0scyganBufferCreateInfo & BufferCreateInfo::operator= (const BufferCreateInfo &other) 1854b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 1866a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 1876a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pNext = other.pNext; 1886a2834ac40395173796b6e8d2a8e6c120d86ee74scygan size = other.size; 1896a2834ac40395173796b6e8d2a8e6c120d86ee74scygan usage = other.usage; 1906a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = other.flags; 1916a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sharingMode = other.sharingMode; 1926a2834ac40395173796b6e8d2a8e6c120d86ee74scygan queueFamilyIndexCount = other.queueFamilyIndexCount; 1934b9229de0ea1993c94c91016ba3f955509753fb0scygan 1946a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_queueFamilyIndices = other.m_queueFamilyIndices; 1954b9229de0ea1993c94c91016ba3f955509753fb0scygan 1966a2834ac40395173796b6e8d2a8e6c120d86ee74scygan DE_ASSERT(m_queueFamilyIndices.size() == queueFamilyIndexCount); 1974b9229de0ea1993c94c91016ba3f955509753fb0scygan 1984b9229de0ea1993c94c91016ba3f955509753fb0scygan if (m_queueFamilyIndices.size()) 1994b9229de0ea1993c94c91016ba3f955509753fb0scygan { 2004b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = &m_queueFamilyIndices[0]; 2014b9229de0ea1993c94c91016ba3f955509753fb0scygan } 2024b9229de0ea1993c94c91016ba3f955509753fb0scygan else 2034b9229de0ea1993c94c91016ba3f955509753fb0scygan { 2044b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = DE_NULL; 2054b9229de0ea1993c94c91016ba3f955509753fb0scygan } 2064b9229de0ea1993c94c91016ba3f955509753fb0scygan 2074b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 2084b9229de0ea1993c94c91016ba3f955509753fb0scygan} 2094b9229de0ea1993c94c91016ba3f955509753fb0scygan 2106a2834ac40395173796b6e8d2a8e6c120d86ee74scyganImageCreateInfo::ImageCreateInfo (vk::VkImageType _imageType, 2116a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkFormat _format, 2126a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkExtent3D _extent, 2136a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _mipLevels, 2146a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _arrayLayers, 2156a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkSampleCountFlagBits _samples, 2166a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageTiling _tiling, 2176a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageUsageFlags _usage, 2186a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkSharingMode _sharingMode, 2196a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _queueFamilyIndexCount, 220db4efd02b79d71e0d0b1122d01d1a20b37760527scygan const deUint32* _pQueueFamilyIndices, 2216a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageCreateFlags _flags, 2226a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageLayout _initialLayout) 2236a2834ac40395173796b6e8d2a8e6c120d86ee74scygan{ 2246a2834ac40395173796b6e8d2a8e6c120d86ee74scygan if (_queueFamilyIndexCount) 2254b9229de0ea1993c94c91016ba3f955509753fb0scygan { 2266a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_queueFamilyIndices = std::vector<deUint32>(_pQueueFamilyIndices, _pQueueFamilyIndices + _queueFamilyIndexCount); 2274b9229de0ea1993c94c91016ba3f955509753fb0scygan } 2284b9229de0ea1993c94c91016ba3f955509753fb0scygan 2294b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; 2304b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 2316a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = _flags; 2326a2834ac40395173796b6e8d2a8e6c120d86ee74scygan imageType = _imageType; 2336a2834ac40395173796b6e8d2a8e6c120d86ee74scygan format = _format; 2346a2834ac40395173796b6e8d2a8e6c120d86ee74scygan extent = _extent; 2356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan mipLevels = _mipLevels; 2366a2834ac40395173796b6e8d2a8e6c120d86ee74scygan arrayLayers = _arrayLayers; 2376a2834ac40395173796b6e8d2a8e6c120d86ee74scygan samples = _samples; 2386a2834ac40395173796b6e8d2a8e6c120d86ee74scygan tiling = _tiling; 2396a2834ac40395173796b6e8d2a8e6c120d86ee74scygan usage = _usage; 2406a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sharingMode = _sharingMode; 2416a2834ac40395173796b6e8d2a8e6c120d86ee74scygan queueFamilyIndexCount = _queueFamilyIndexCount; 2424b9229de0ea1993c94c91016ba3f955509753fb0scygan 2434b9229de0ea1993c94c91016ba3f955509753fb0scygan if (m_queueFamilyIndices.size()) 2444b9229de0ea1993c94c91016ba3f955509753fb0scygan { 2454b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = &m_queueFamilyIndices[0]; 2464b9229de0ea1993c94c91016ba3f955509753fb0scygan } 2474b9229de0ea1993c94c91016ba3f955509753fb0scygan else 2484b9229de0ea1993c94c91016ba3f955509753fb0scygan { 2494b9229de0ea1993c94c91016ba3f955509753fb0scygan pQueueFamilyIndices = DE_NULL; 2504b9229de0ea1993c94c91016ba3f955509753fb0scygan } 2514b9229de0ea1993c94c91016ba3f955509753fb0scygan initialLayout = _initialLayout; 2524b9229de0ea1993c94c91016ba3f955509753fb0scygan} 2534b9229de0ea1993c94c91016ba3f955509753fb0scygan 2546a2834ac40395173796b6e8d2a8e6c120d86ee74scyganFramebufferCreateInfo::FramebufferCreateInfo (vk::VkRenderPass _renderPass, 255ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos const std::vector<vk::VkImageView>& atachments, 2566a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _width, 2576a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _height, 2586a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _layers) 2594b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 2604b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; 2614b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 2626a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 2634b9229de0ea1993c94c91016ba3f955509753fb0scygan 2644b9229de0ea1993c94c91016ba3f955509753fb0scygan renderPass = _renderPass; 2654b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(atachments.size()); 2664b9229de0ea1993c94c91016ba3f955509753fb0scygan 2674b9229de0ea1993c94c91016ba3f955509753fb0scygan if (attachmentCount) 2684b9229de0ea1993c94c91016ba3f955509753fb0scygan { 2694b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = const_cast<vk::VkImageView *>(&atachments[0]); 2704b9229de0ea1993c94c91016ba3f955509753fb0scygan } 2714b9229de0ea1993c94c91016ba3f955509753fb0scygan 2724b9229de0ea1993c94c91016ba3f955509753fb0scygan width = _width; 2734b9229de0ea1993c94c91016ba3f955509753fb0scygan height = _height; 2744b9229de0ea1993c94c91016ba3f955509753fb0scygan layers = _layers; 2754b9229de0ea1993c94c91016ba3f955509753fb0scygan} 2764b9229de0ea1993c94c91016ba3f955509753fb0scygan 2774b9229de0ea1993c94c91016ba3f955509753fb0scyganRenderPassCreateInfo::RenderPassCreateInfo (const std::vector<vk::VkAttachmentDescription>& attachments, 2784b9229de0ea1993c94c91016ba3f955509753fb0scygan const std::vector<vk::VkSubpassDescription>& subpasses, 2794b9229de0ea1993c94c91016ba3f955509753fb0scygan const std::vector<vk::VkSubpassDependency>& dependiences) 2804b9229de0ea1993c94c91016ba3f955509753fb0scygan 2814b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_attachments (attachments.begin(), attachments.end()) 2824b9229de0ea1993c94c91016ba3f955509753fb0scygan , m_subpasses (subpasses.begin(), subpasses.end()) 2834b9229de0ea1993c94c91016ba3f955509753fb0scygan , m_dependiences (dependiences.begin(), dependiences.end()) 2844b9229de0ea1993c94c91016ba3f955509753fb0scygan , m_attachmentsStructs (m_attachments.begin(), m_attachments.end()) 2854b9229de0ea1993c94c91016ba3f955509753fb0scygan , m_subpassesStructs (m_subpasses.begin(), m_subpasses.end()) 2864b9229de0ea1993c94c91016ba3f955509753fb0scygan , m_dependiencesStructs (m_dependiences.begin(), m_dependiences.end()) 2874b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 2884b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; 2894b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 290ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos flags = 0; 2914b9229de0ea1993c94c91016ba3f955509753fb0scygan 2924b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 2934b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachmentsStructs[0]; 2944b9229de0ea1993c94c91016ba3f955509753fb0scygan subpassCount = static_cast<deUint32>(m_subpasses.size()); 2954b9229de0ea1993c94c91016ba3f955509753fb0scygan pSubpasses = &m_subpassesStructs[0]; 2964b9229de0ea1993c94c91016ba3f955509753fb0scygan dependencyCount = static_cast<deUint32>(m_dependiences.size()); 2974b9229de0ea1993c94c91016ba3f955509753fb0scygan pDependencies = &m_dependiencesStructs[0]; 2984b9229de0ea1993c94c91016ba3f955509753fb0scygan} 2994b9229de0ea1993c94c91016ba3f955509753fb0scygan 3006a2834ac40395173796b6e8d2a8e6c120d86ee74scyganRenderPassCreateInfo::RenderPassCreateInfo (deUint32 _attachmentCount, 3016a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkAttachmentDescription* _pAttachments, 3026a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _subpassCount, 3036a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkSubpassDescription* _pSubpasses, 3046a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _dependencyCount, 3056a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkSubpassDependency* _pDependiences) 3064b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 3074b9229de0ea1993c94c91016ba3f955509753fb0scygan 3084b9229de0ea1993c94c91016ba3f955509753fb0scygan m_attachments = std::vector<AttachmentDescription>(_pAttachments, _pAttachments + _attachmentCount); 3094b9229de0ea1993c94c91016ba3f955509753fb0scygan m_subpasses = std::vector<SubpassDescription>(_pSubpasses, _pSubpasses + _subpassCount); 3104b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dependiences = std::vector<SubpassDependency>(_pDependiences, _pDependiences + _dependencyCount); 3114b9229de0ea1993c94c91016ba3f955509753fb0scygan 3124b9229de0ea1993c94c91016ba3f955509753fb0scygan m_attachmentsStructs = std::vector<vk::VkAttachmentDescription> (m_attachments.begin(), m_attachments.end()); 3134b9229de0ea1993c94c91016ba3f955509753fb0scygan m_subpassesStructs = std::vector<vk::VkSubpassDescription> (m_subpasses.begin(), m_subpasses.end()); 3144b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dependiencesStructs = std::vector<vk::VkSubpassDependency> (m_dependiences.begin(), m_dependiences.end()); 3154b9229de0ea1993c94c91016ba3f955509753fb0scygan 3164b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; 3174b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 3186a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0; 3194b9229de0ea1993c94c91016ba3f955509753fb0scygan 3204b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 3214b9229de0ea1993c94c91016ba3f955509753fb0scygan 3224b9229de0ea1993c94c91016ba3f955509753fb0scygan if (attachmentCount) { 3234b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachmentsStructs[0]; 3244b9229de0ea1993c94c91016ba3f955509753fb0scygan } 3254b9229de0ea1993c94c91016ba3f955509753fb0scygan else 3264b9229de0ea1993c94c91016ba3f955509753fb0scygan { 3274b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = DE_NULL; 3284b9229de0ea1993c94c91016ba3f955509753fb0scygan } 3294b9229de0ea1993c94c91016ba3f955509753fb0scygan 3304b9229de0ea1993c94c91016ba3f955509753fb0scygan subpassCount = static_cast<deUint32>(m_subpasses.size()); 3314b9229de0ea1993c94c91016ba3f955509753fb0scygan 3324b9229de0ea1993c94c91016ba3f955509753fb0scygan if (subpassCount) { 3334b9229de0ea1993c94c91016ba3f955509753fb0scygan pSubpasses = &m_subpassesStructs[0]; 3344b9229de0ea1993c94c91016ba3f955509753fb0scygan } 3354b9229de0ea1993c94c91016ba3f955509753fb0scygan else 3364b9229de0ea1993c94c91016ba3f955509753fb0scygan { 3374b9229de0ea1993c94c91016ba3f955509753fb0scygan pSubpasses = DE_NULL; 3384b9229de0ea1993c94c91016ba3f955509753fb0scygan } 3394b9229de0ea1993c94c91016ba3f955509753fb0scygan 3404b9229de0ea1993c94c91016ba3f955509753fb0scygan dependencyCount = static_cast<deUint32>(m_dependiences.size()); 3414b9229de0ea1993c94c91016ba3f955509753fb0scygan 3424b9229de0ea1993c94c91016ba3f955509753fb0scygan if (dependencyCount) { 3434b9229de0ea1993c94c91016ba3f955509753fb0scygan pDependencies = &m_dependiencesStructs[0]; 3444b9229de0ea1993c94c91016ba3f955509753fb0scygan } 3454b9229de0ea1993c94c91016ba3f955509753fb0scygan else 3464b9229de0ea1993c94c91016ba3f955509753fb0scygan { 3474b9229de0ea1993c94c91016ba3f955509753fb0scygan pDependencies = DE_NULL; 3484b9229de0ea1993c94c91016ba3f955509753fb0scygan } 3494b9229de0ea1993c94c91016ba3f955509753fb0scygan} 3504b9229de0ea1993c94c91016ba3f955509753fb0scygan 3514b9229de0ea1993c94c91016ba3f955509753fb0scyganvoid 3524b9229de0ea1993c94c91016ba3f955509753fb0scyganRenderPassCreateInfo::addAttachment (vk::VkAttachmentDescription attachment) 3534b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 3544b9229de0ea1993c94c91016ba3f955509753fb0scygan 3554b9229de0ea1993c94c91016ba3f955509753fb0scygan m_attachments.push_back(attachment); 3564b9229de0ea1993c94c91016ba3f955509753fb0scygan m_attachmentsStructs = std::vector<vk::VkAttachmentDescription>(m_attachments.begin(), m_attachments.end()); 3574b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 3584b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachmentsStructs[0]; 3594b9229de0ea1993c94c91016ba3f955509753fb0scygan} 3604b9229de0ea1993c94c91016ba3f955509753fb0scygan 3614b9229de0ea1993c94c91016ba3f955509753fb0scyganvoid 3624b9229de0ea1993c94c91016ba3f955509753fb0scyganRenderPassCreateInfo::addSubpass (vk::VkSubpassDescription subpass) 3634b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 3644b9229de0ea1993c94c91016ba3f955509753fb0scygan 3654b9229de0ea1993c94c91016ba3f955509753fb0scygan m_subpasses.push_back(subpass); 3664b9229de0ea1993c94c91016ba3f955509753fb0scygan m_subpassesStructs = std::vector<vk::VkSubpassDescription>(m_subpasses.begin(), m_subpasses.end()); 3674b9229de0ea1993c94c91016ba3f955509753fb0scygan subpassCount = static_cast<deUint32>(m_subpasses.size()); 3684b9229de0ea1993c94c91016ba3f955509753fb0scygan pSubpasses = &m_subpassesStructs[0]; 3694b9229de0ea1993c94c91016ba3f955509753fb0scygan} 3704b9229de0ea1993c94c91016ba3f955509753fb0scygan 3714b9229de0ea1993c94c91016ba3f955509753fb0scyganvoid 3724b9229de0ea1993c94c91016ba3f955509753fb0scyganRenderPassCreateInfo::addDependency (vk::VkSubpassDependency dependency) 3734b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 3744b9229de0ea1993c94c91016ba3f955509753fb0scygan 3754b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dependiences.push_back(dependency); 3764b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dependiencesStructs = std::vector<vk::VkSubpassDependency>(m_dependiences.begin(), m_dependiences.end()); 3774b9229de0ea1993c94c91016ba3f955509753fb0scygan 3784b9229de0ea1993c94c91016ba3f955509753fb0scygan dependencyCount = static_cast<deUint32>(m_dependiences.size()); 3794b9229de0ea1993c94c91016ba3f955509753fb0scygan pDependencies = &m_dependiencesStructs[0]; 3804b9229de0ea1993c94c91016ba3f955509753fb0scygan} 3814b9229de0ea1993c94c91016ba3f955509753fb0scygan 3826a2834ac40395173796b6e8d2a8e6c120d86ee74scyganRenderPassBeginInfo::RenderPassBeginInfo (vk::VkRenderPass _renderPass, 3836a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkFramebuffer _framebuffer, 3846a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkRect2D _renderArea, 385db4efd02b79d71e0d0b1122d01d1a20b37760527scygan const std::vector<vk::VkClearValue>& _clearValues) 3864b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 3874b9229de0ea1993c94c91016ba3f955509753fb0scygan 3884b9229de0ea1993c94c91016ba3f955509753fb0scygan m_clearValues = _clearValues; 3894b9229de0ea1993c94c91016ba3f955509753fb0scygan 3904b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; 3914b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 3924b9229de0ea1993c94c91016ba3f955509753fb0scygan renderPass = _renderPass; 3934b9229de0ea1993c94c91016ba3f955509753fb0scygan framebuffer = _framebuffer; 3944b9229de0ea1993c94c91016ba3f955509753fb0scygan renderArea = _renderArea; 3954b9229de0ea1993c94c91016ba3f955509753fb0scygan clearValueCount = static_cast<deUint32>(m_clearValues.size()); 3964b9229de0ea1993c94c91016ba3f955509753fb0scygan pClearValues = m_clearValues.size() ? &m_clearValues[0] : DE_NULL; 3974b9229de0ea1993c94c91016ba3f955509753fb0scygan} 3984b9229de0ea1993c94c91016ba3f955509753fb0scygan 3994b9229de0ea1993c94c91016ba3f955509753fb0scyganCmdPoolCreateInfo::CmdPoolCreateInfo (deUint32 _queueFamilyIndex, unsigned int _flags) 4004b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 4016a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = vk::VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; 4024b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 4034b9229de0ea1993c94c91016ba3f955509753fb0scygan 4044b9229de0ea1993c94c91016ba3f955509753fb0scygan queueFamilyIndex = _queueFamilyIndex; 4056a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = _flags; 4064b9229de0ea1993c94c91016ba3f955509753fb0scygan} 4074b9229de0ea1993c94c91016ba3f955509753fb0scygan 4086a2834ac40395173796b6e8d2a8e6c120d86ee74scyganAttachmentDescription::AttachmentDescription (vk::VkFormat _format, 4096a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkSampleCountFlagBits _samples, 4106a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAttachmentLoadOp _loadOp, 4116a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAttachmentStoreOp _storeOp, 4126a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAttachmentLoadOp _stencilLoadOp, 4136a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAttachmentStoreOp _stencilStoreOp, 4146a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageLayout _initialLayout, 4156a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkImageLayout _finalLayout) 4164b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 4176a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0; 4184b9229de0ea1993c94c91016ba3f955509753fb0scygan format = _format; 4194b9229de0ea1993c94c91016ba3f955509753fb0scygan samples = _samples; 4204b9229de0ea1993c94c91016ba3f955509753fb0scygan loadOp = _loadOp; 4214b9229de0ea1993c94c91016ba3f955509753fb0scygan storeOp = _storeOp; 4224b9229de0ea1993c94c91016ba3f955509753fb0scygan stencilLoadOp = _stencilLoadOp; 4234b9229de0ea1993c94c91016ba3f955509753fb0scygan stencilStoreOp = _stencilStoreOp; 4244b9229de0ea1993c94c91016ba3f955509753fb0scygan initialLayout = _initialLayout; 4254b9229de0ea1993c94c91016ba3f955509753fb0scygan finalLayout = _finalLayout; 4264b9229de0ea1993c94c91016ba3f955509753fb0scygan} 4274b9229de0ea1993c94c91016ba3f955509753fb0scygan 428db4efd02b79d71e0d0b1122d01d1a20b37760527scyganAttachmentDescription::AttachmentDescription (const vk::VkAttachmentDescription& rhs) 4294b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 4306a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = rhs.flags; 4314b9229de0ea1993c94c91016ba3f955509753fb0scygan format = rhs.format; 4324b9229de0ea1993c94c91016ba3f955509753fb0scygan samples = rhs.samples; 4334b9229de0ea1993c94c91016ba3f955509753fb0scygan loadOp = rhs.loadOp; 4344b9229de0ea1993c94c91016ba3f955509753fb0scygan storeOp = rhs.storeOp; 4354b9229de0ea1993c94c91016ba3f955509753fb0scygan stencilLoadOp = rhs.stencilLoadOp; 4364b9229de0ea1993c94c91016ba3f955509753fb0scygan stencilStoreOp = rhs.stencilStoreOp; 4374b9229de0ea1993c94c91016ba3f955509753fb0scygan initialLayout = rhs.initialLayout; 4384b9229de0ea1993c94c91016ba3f955509753fb0scygan finalLayout = rhs.finalLayout; 4394b9229de0ea1993c94c91016ba3f955509753fb0scygan} 4404b9229de0ea1993c94c91016ba3f955509753fb0scygan 4414b9229de0ea1993c94c91016ba3f955509753fb0scyganAttachmentReference::AttachmentReference (deUint32 _attachment, vk::VkImageLayout _layout) 4424b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 4434b9229de0ea1993c94c91016ba3f955509753fb0scygan attachment = _attachment; 4444b9229de0ea1993c94c91016ba3f955509753fb0scygan layout = _layout; 4454b9229de0ea1993c94c91016ba3f955509753fb0scygan} 4464b9229de0ea1993c94c91016ba3f955509753fb0scygan 4474b9229de0ea1993c94c91016ba3f955509753fb0scyganAttachmentReference::AttachmentReference (void) 4484b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 4494b9229de0ea1993c94c91016ba3f955509753fb0scygan attachment = vk::VK_ATTACHMENT_UNUSED; 4504b9229de0ea1993c94c91016ba3f955509753fb0scygan layout = vk::VK_IMAGE_LAYOUT_UNDEFINED; 4514b9229de0ea1993c94c91016ba3f955509753fb0scygan} 4524b9229de0ea1993c94c91016ba3f955509753fb0scygan 4536a2834ac40395173796b6e8d2a8e6c120d86ee74scyganSubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBindPoint, 4546a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkSubpassDescriptionFlags _flags, 4556a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _inputAttachmentCount, 4566a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkAttachmentReference* _inputAttachments, 4576a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _colorAttachmentCount, 4586a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkAttachmentReference* _colorAttachments, 4596a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkAttachmentReference* _resolveAttachments, 4606a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAttachmentReference depthStencilAttachment, 4616a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _preserveAttachmentCount, 462689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos const deUint32* _preserveAttachments) 4634b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 4646a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_inputAttachments = std::vector<vk::VkAttachmentReference>(_inputAttachments, _inputAttachments + _inputAttachmentCount); 4656a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_colorAttachments = std::vector<vk::VkAttachmentReference>(_colorAttachments, _colorAttachments + _colorAttachmentCount); 4664b9229de0ea1993c94c91016ba3f955509753fb0scygan 4674b9229de0ea1993c94c91016ba3f955509753fb0scygan if (_resolveAttachments) 4686a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_resolveAttachments = std::vector<vk::VkAttachmentReference>(_resolveAttachments, _resolveAttachments + _colorAttachmentCount); 4694b9229de0ea1993c94c91016ba3f955509753fb0scygan 470689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos m_preserveAttachments = std::vector<deUint32>(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); 4714b9229de0ea1993c94c91016ba3f955509753fb0scygan 4726a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_depthStencilAttachment = depthStencilAttachment; 4736a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 474689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos flags = _flags; 4754b9229de0ea1993c94c91016ba3f955509753fb0scygan pipelineBindPoint = _pipelineBindPoint; 4766a2834ac40395173796b6e8d2a8e6c120d86ee74scygan inputAttachmentCount = _inputAttachmentCount; 4774b9229de0ea1993c94c91016ba3f955509753fb0scygan pInputAttachments = DE_NULL; 4786a2834ac40395173796b6e8d2a8e6c120d86ee74scygan colorAttachmentCount = _colorAttachmentCount; 4794b9229de0ea1993c94c91016ba3f955509753fb0scygan pColorAttachments = DE_NULL; 4804b9229de0ea1993c94c91016ba3f955509753fb0scygan pResolveAttachments = DE_NULL; 4816a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pDepthStencilAttachment = &m_depthStencilAttachment; 4824b9229de0ea1993c94c91016ba3f955509753fb0scygan pPreserveAttachments = DE_NULL; 4836a2834ac40395173796b6e8d2a8e6c120d86ee74scygan preserveAttachmentCount = _preserveAttachmentCount; 4844b9229de0ea1993c94c91016ba3f955509753fb0scygan 485689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_inputAttachments.empty()) 4866a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pInputAttachments = &m_inputAttachments[0]; 4874b9229de0ea1993c94c91016ba3f955509753fb0scygan 488689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_colorAttachments.empty()) 4896a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pColorAttachments = &m_colorAttachments[0]; 4904b9229de0ea1993c94c91016ba3f955509753fb0scygan 491689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_resolveAttachments.empty()) 4926a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pResolveAttachments = &m_resolveAttachments[0]; 4934b9229de0ea1993c94c91016ba3f955509753fb0scygan 494689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_preserveAttachments.empty()) 4956a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pPreserveAttachments = &m_preserveAttachments[0]; 4964b9229de0ea1993c94c91016ba3f955509753fb0scygan} 4974b9229de0ea1993c94c91016ba3f955509753fb0scygan 4986a2834ac40395173796b6e8d2a8e6c120d86ee74scyganSubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) 4994b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 5004b9229de0ea1993c94c91016ba3f955509753fb0scygan *static_cast<vk::VkSubpassDescription*>(this) = rhs; 5014b9229de0ea1993c94c91016ba3f955509753fb0scygan 5026a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_inputAttachments = std::vector<vk::VkAttachmentReference>( 5036a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rhs.pInputAttachments, rhs.pInputAttachments + rhs.inputAttachmentCount); 5044b9229de0ea1993c94c91016ba3f955509753fb0scygan 5056a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_colorAttachments = std::vector<vk::VkAttachmentReference>( 5066a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rhs.pColorAttachments, rhs.pColorAttachments + rhs.colorAttachmentCount); 5074b9229de0ea1993c94c91016ba3f955509753fb0scygan 508689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (rhs.pResolveAttachments) 5096a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_resolveAttachments = std::vector<vk::VkAttachmentReference>( 5106a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rhs.pResolveAttachments, rhs.pResolveAttachments + rhs.colorAttachmentCount); 511689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos 512689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos m_preserveAttachments = std::vector<deUint32>( 5136a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rhs.pPreserveAttachments, rhs.pPreserveAttachments + rhs.preserveAttachmentCount); 5146a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 5156a2834ac40395173796b6e8d2a8e6c120d86ee74scygan if (rhs.pDepthStencilAttachment) 5166a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_depthStencilAttachment = *rhs.pDepthStencilAttachment; 5174b9229de0ea1993c94c91016ba3f955509753fb0scygan 518689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_inputAttachments.empty()) 5196a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pInputAttachments = &m_inputAttachments[0]; 520689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos 521689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_colorAttachments.empty()) 5226a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pColorAttachments = &m_colorAttachments[0]; 5234b9229de0ea1993c94c91016ba3f955509753fb0scygan 524689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_resolveAttachments.empty()) 5256a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pResolveAttachments = &m_resolveAttachments[0]; 5264b9229de0ea1993c94c91016ba3f955509753fb0scygan 5276a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pDepthStencilAttachment = &m_depthStencilAttachment; 5286a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 529689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_preserveAttachments.empty()) 5306a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pPreserveAttachments = &m_preserveAttachments[0]; 5314b9229de0ea1993c94c91016ba3f955509753fb0scygan} 5324b9229de0ea1993c94c91016ba3f955509753fb0scygan 5336a2834ac40395173796b6e8d2a8e6c120d86ee74scyganSubpassDescription::SubpassDescription (const SubpassDescription& rhs) { 5344b9229de0ea1993c94c91016ba3f955509753fb0scygan *this = rhs; 5354b9229de0ea1993c94c91016ba3f955509753fb0scygan} 5364b9229de0ea1993c94c91016ba3f955509753fb0scygan 5376a2834ac40395173796b6e8d2a8e6c120d86ee74scyganSubpassDescription& SubpassDescription::operator= (const SubpassDescription& rhs) 5384b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 5394b9229de0ea1993c94c91016ba3f955509753fb0scygan *static_cast<vk::VkSubpassDescription*>(this) = rhs; 5404b9229de0ea1993c94c91016ba3f955509753fb0scygan 5416a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_inputAttachments = rhs.m_inputAttachments; 5426a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_colorAttachments = rhs.m_colorAttachments; 5436a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_resolveAttachments = rhs.m_resolveAttachments; 5446a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_preserveAttachments = rhs.m_preserveAttachments; 5456a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_depthStencilAttachment = rhs.m_depthStencilAttachment; 5464b9229de0ea1993c94c91016ba3f955509753fb0scygan 547689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_inputAttachments.empty()) 5486a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pInputAttachments = &m_inputAttachments[0]; 549689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos 550689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_colorAttachments.empty()) 5516a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pColorAttachments = &m_colorAttachments[0]; 5524b9229de0ea1993c94c91016ba3f955509753fb0scygan 553689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_resolveAttachments.empty()) 5546a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pResolveAttachments = &m_resolveAttachments[0]; 5554b9229de0ea1993c94c91016ba3f955509753fb0scygan 5566a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pDepthStencilAttachment = &m_depthStencilAttachment; 5576a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 558689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos if (!m_preserveAttachments.empty()) 5596a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pPreserveAttachments = &m_preserveAttachments[0]; 5604b9229de0ea1993c94c91016ba3f955509753fb0scygan 5614b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 5624b9229de0ea1993c94c91016ba3f955509753fb0scygan} 5634b9229de0ea1993c94c91016ba3f955509753fb0scygan 5646a2834ac40395173796b6e8d2a8e6c120d86ee74scyganSubpassDependency::SubpassDependency (deUint32 _srcSubpass, 5656a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _dstSubpass, 5666a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkPipelineStageFlags _srcStageMask, 5676a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkPipelineStageFlags _dstStageMask, 5686a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAccessFlags _srcAccessMask, 5696a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkAccessFlags _dstAccessMask, 5706a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkDependencyFlags _dependencyFlags) 5714b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 5724b9229de0ea1993c94c91016ba3f955509753fb0scygan srcSubpass = _srcSubpass; 5736a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstSubpass = _dstSubpass; 5744b9229de0ea1993c94c91016ba3f955509753fb0scygan srcStageMask = _srcStageMask; 5756a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstStageMask = _dstStageMask; 5766a2834ac40395173796b6e8d2a8e6c120d86ee74scygan srcAccessMask = _srcAccessMask; 5776a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstAccessMask = _dstAccessMask; 5786a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dependencyFlags = _dependencyFlags; 5794b9229de0ea1993c94c91016ba3f955509753fb0scygan} 5804b9229de0ea1993c94c91016ba3f955509753fb0scygan 581db4efd02b79d71e0d0b1122d01d1a20b37760527scyganSubpassDependency::SubpassDependency (const vk::VkSubpassDependency& rhs) 5824b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 5834b9229de0ea1993c94c91016ba3f955509753fb0scygan srcSubpass = rhs.srcSubpass; 5846a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstSubpass = rhs.dstSubpass; 5854b9229de0ea1993c94c91016ba3f955509753fb0scygan srcStageMask = rhs.srcStageMask; 5866a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstStageMask = rhs.dstStageMask; 5876a2834ac40395173796b6e8d2a8e6c120d86ee74scygan srcAccessMask = rhs.srcAccessMask; 5886a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstAccessMask = rhs.dstAccessMask; 5896a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dependencyFlags = rhs.dependencyFlags; 5904b9229de0ea1993c94c91016ba3f955509753fb0scygan} 5914b9229de0ea1993c94c91016ba3f955509753fb0scygan 5926a2834ac40395173796b6e8d2a8e6c120d86ee74scyganCmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags _flags) 5934b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 594689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; 595689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos pNext = DE_NULL; 596689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos flags = _flags; 597689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos pInheritanceInfo = DE_NULL; 5984b9229de0ea1993c94c91016ba3f955509753fb0scygan} 5994b9229de0ea1993c94c91016ba3f955509753fb0scygan 6006a2834ac40395173796b6e8d2a8e6c120d86ee74scyganDescriptorPoolCreateInfo::DescriptorPoolCreateInfo (const std::vector<vk::VkDescriptorPoolSize>& poolSizeCounts, 6016a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkDescriptorPoolCreateFlags _flags, 6026a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _maxSets) 6036a2834ac40395173796b6e8d2a8e6c120d86ee74scygan : m_poolSizeCounts(poolSizeCounts) 6044b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 6054b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; 6064b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 6076a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = _flags; 6086a2834ac40395173796b6e8d2a8e6c120d86ee74scygan maxSets = _maxSets; 6096a2834ac40395173796b6e8d2a8e6c120d86ee74scygan poolSizeCount = static_cast<deUint32>(m_poolSizeCounts.size()); 6106a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pPoolSizes = &m_poolSizeCounts[0]; 6114b9229de0ea1993c94c91016ba3f955509753fb0scygan} 6124b9229de0ea1993c94c91016ba3f955509753fb0scygan 6134b9229de0ea1993c94c91016ba3f955509753fb0scyganDescriptorPoolCreateInfo& DescriptorPoolCreateInfo::addDescriptors (vk::VkDescriptorType type, deUint32 count) 6144b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 6156a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkDescriptorPoolSize descriptorTypeCount = { type, count }; 6166a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_poolSizeCounts.push_back(descriptorTypeCount); 6174b9229de0ea1993c94c91016ba3f955509753fb0scygan 6186a2834ac40395173796b6e8d2a8e6c120d86ee74scygan poolSizeCount = static_cast<deUint32>(m_poolSizeCounts.size()); 6196a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pPoolSizes = &m_poolSizeCounts[0]; 6204b9229de0ea1993c94c91016ba3f955509753fb0scygan 6214b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 6224b9229de0ea1993c94c91016ba3f955509753fb0scygan} 6234b9229de0ea1993c94c91016ba3f955509753fb0scygan 6246a2834ac40395173796b6e8d2a8e6c120d86ee74scyganDescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo (deUint32 _bindingCount, const vk::VkDescriptorSetLayoutBinding* _pBindings) 6254b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 6264b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; 6274b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 6286a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0; 6296a2834ac40395173796b6e8d2a8e6c120d86ee74scygan bindingCount = _bindingCount; 630689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos pBindings = _pBindings; 6314b9229de0ea1993c94c91016ba3f955509753fb0scygan} 6324b9229de0ea1993c94c91016ba3f955509753fb0scygan 6334b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineLayoutCreateInfo::PipelineLayoutCreateInfo (deUint32 _descriptorSetCount, 6346a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkDescriptorSetLayout* _pSetLayouts, 6356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _pushConstantRangeCount, 6366a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkPushConstantRange* _pPushConstantRanges) 6374b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_pushConstantRanges(_pPushConstantRanges, _pPushConstantRanges + _pushConstantRangeCount) 6384b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 6394b9229de0ea1993c94c91016ba3f955509753fb0scygan for (unsigned int i = 0; i < _descriptorSetCount; i++) 6404b9229de0ea1993c94c91016ba3f955509753fb0scygan { 6414b9229de0ea1993c94c91016ba3f955509753fb0scygan m_setLayouts.push_back(_pSetLayouts[i]); 6424b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6434b9229de0ea1993c94c91016ba3f955509753fb0scygan 6444b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; 6454b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 6466a2834ac40395173796b6e8d2a8e6c120d86ee74scygan setLayoutCount = static_cast<deUint32>(m_setLayouts.size()); 6476a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pSetLayouts = setLayoutCount > 0 ? &m_setLayouts[0] : DE_NULL; 6484b9229de0ea1993c94c91016ba3f955509753fb0scygan pushConstantRangeCount = static_cast<deUint32>(m_pushConstantRanges.size()); 6494b9229de0ea1993c94c91016ba3f955509753fb0scygan 6504b9229de0ea1993c94c91016ba3f955509753fb0scygan if (m_pushConstantRanges.size()) { 6514b9229de0ea1993c94c91016ba3f955509753fb0scygan pPushConstantRanges = &m_pushConstantRanges[0]; 6524b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6534b9229de0ea1993c94c91016ba3f955509753fb0scygan else 6544b9229de0ea1993c94c91016ba3f955509753fb0scygan { 6554b9229de0ea1993c94c91016ba3f955509753fb0scygan pPushConstantRanges = DE_NULL; 6564b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6574b9229de0ea1993c94c91016ba3f955509753fb0scygan} 6584b9229de0ea1993c94c91016ba3f955509753fb0scygan 6596a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineLayoutCreateInfo::PipelineLayoutCreateInfo (const std::vector<vk::VkDescriptorSetLayout>& setLayouts, 6606a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _pushConstantRangeCount, 6616a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkPushConstantRange* _pPushConstantRanges) 6624b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_setLayouts (setLayouts) 6634b9229de0ea1993c94c91016ba3f955509753fb0scygan , m_pushConstantRanges (_pPushConstantRanges, _pPushConstantRanges + _pushConstantRangeCount) 6644b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 6654b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; 6664b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 6674b9229de0ea1993c94c91016ba3f955509753fb0scygan 668271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = 0u; 669271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim setLayoutCount = static_cast<deUint32>(m_setLayouts.size()); 6704b9229de0ea1993c94c91016ba3f955509753fb0scygan 6716a2834ac40395173796b6e8d2a8e6c120d86ee74scygan if (setLayoutCount) 6724b9229de0ea1993c94c91016ba3f955509753fb0scygan { 6734b9229de0ea1993c94c91016ba3f955509753fb0scygan pSetLayouts = &m_setLayouts[0]; 6744b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6754b9229de0ea1993c94c91016ba3f955509753fb0scygan else 6764b9229de0ea1993c94c91016ba3f955509753fb0scygan { 6774b9229de0ea1993c94c91016ba3f955509753fb0scygan pSetLayouts = DE_NULL; 6784b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6794b9229de0ea1993c94c91016ba3f955509753fb0scygan 6804b9229de0ea1993c94c91016ba3f955509753fb0scygan pushConstantRangeCount = static_cast<deUint32>(m_pushConstantRanges.size()); 6814b9229de0ea1993c94c91016ba3f955509753fb0scygan if (pushConstantRangeCount) { 6824b9229de0ea1993c94c91016ba3f955509753fb0scygan pPushConstantRanges = &m_pushConstantRanges[0]; 6834b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6844b9229de0ea1993c94c91016ba3f955509753fb0scygan else 6854b9229de0ea1993c94c91016ba3f955509753fb0scygan { 6864b9229de0ea1993c94c91016ba3f955509753fb0scygan pPushConstantRanges = DE_NULL; 6874b9229de0ea1993c94c91016ba3f955509753fb0scygan } 6884b9229de0ea1993c94c91016ba3f955509753fb0scygan} 6894b9229de0ea1993c94c91016ba3f955509753fb0scygan 6906a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::PipelineShaderStage::PipelineShaderStage (vk::VkShaderModule _module, const char* _pName, vk::VkShaderStageFlagBits _stage) 6914b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 6924b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; 6934b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 6946a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 6954b9229de0ea1993c94c91016ba3f955509753fb0scygan stage = _stage; 6966a2834ac40395173796b6e8d2a8e6c120d86ee74scygan module = _module; 6976a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pName = _pName; 6984b9229de0ea1993c94c91016ba3f955509753fb0scygan pSpecializationInfo = DE_NULL; 6994b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7004b9229de0ea1993c94c91016ba3f955509753fb0scygan 7016a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::VertexInputState::VertexInputState (deUint32 _vertexBindingDescriptionCount, 7026a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkVertexInputBindingDescription* _pVertexBindingDescriptions, 7036a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _vertexAttributeDescriptionCount, 7046a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const vk::VkVertexInputAttributeDescription* _pVertexAttributeDescriptions) 7054b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 7064b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; 7074b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 7086a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 7096a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vertexBindingDescriptionCount = _vertexBindingDescriptionCount; 7104b9229de0ea1993c94c91016ba3f955509753fb0scygan pVertexBindingDescriptions = _pVertexBindingDescriptions; 7116a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vertexAttributeDescriptionCount = _vertexAttributeDescriptionCount; 7124b9229de0ea1993c94c91016ba3f955509753fb0scygan pVertexAttributeDescriptions = _pVertexAttributeDescriptions; 7134b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7144b9229de0ea1993c94c91016ba3f955509753fb0scygan 7156a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::InputAssemblerState::InputAssemblerState (vk::VkPrimitiveTopology _topology, 7166a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _primitiveRestartEnable) 7174b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 7184b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; 7194b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 7206a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 7214b9229de0ea1993c94c91016ba3f955509753fb0scygan topology = _topology; 7224b9229de0ea1993c94c91016ba3f955509753fb0scygan primitiveRestartEnable = _primitiveRestartEnable; 7234b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7244b9229de0ea1993c94c91016ba3f955509753fb0scygan 725689c095f881a410da6a315795452a8e00ad95a9dPyry HaulosPipelineCreateInfo::TessellationState::TessellationState (deUint32 _patchControlPoints) 7264b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 7274b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO; 7284b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 729271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = 0u; 730271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim patchControlPoints = _patchControlPoints; 7314b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7324b9229de0ea1993c94c91016ba3f955509753fb0scygan 7336a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::ViewportState::ViewportState (deUint32 _viewportCount, 7346a2834ac40395173796b6e8d2a8e6c120d86ee74scygan std::vector<vk::VkViewport> _viewports, 7356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan std::vector<vk::VkRect2D> _scissors) 7364b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 7374b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; 7384b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 7396a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 7406a2834ac40395173796b6e8d2a8e6c120d86ee74scygan viewportCount = _viewportCount; 7416a2834ac40395173796b6e8d2a8e6c120d86ee74scygan scissorCount = _viewportCount; 742ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos 7436a2834ac40395173796b6e8d2a8e6c120d86ee74scygan if (!_viewports.size()) 7446a2834ac40395173796b6e8d2a8e6c120d86ee74scygan { 7456a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_viewports.resize(viewportCount); 7466a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deMemset(&m_viewports[0], 0, sizeof(m_viewports[0]) * m_viewports.size()); 7476a2834ac40395173796b6e8d2a8e6c120d86ee74scygan } 7486a2834ac40395173796b6e8d2a8e6c120d86ee74scygan else 7496a2834ac40395173796b6e8d2a8e6c120d86ee74scygan { 7506a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_viewports = _viewports; 7516a2834ac40395173796b6e8d2a8e6c120d86ee74scygan } 7526a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 7536a2834ac40395173796b6e8d2a8e6c120d86ee74scygan if (!_scissors.size()) 7546a2834ac40395173796b6e8d2a8e6c120d86ee74scygan { 7556a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_scissors.resize(scissorCount); 7566a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deMemset(&m_scissors[0], 0, sizeof(m_scissors[0]) * m_scissors.size()); 7576a2834ac40395173796b6e8d2a8e6c120d86ee74scygan } 7586a2834ac40395173796b6e8d2a8e6c120d86ee74scygan else 7596a2834ac40395173796b6e8d2a8e6c120d86ee74scygan { 7606a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_scissors = _scissors; 7616a2834ac40395173796b6e8d2a8e6c120d86ee74scygan } 7626a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 7636a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pViewports = &m_viewports[0]; 7644b9229de0ea1993c94c91016ba3f955509753fb0scygan pScissors = &m_scissors[0]; 7654b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7664b9229de0ea1993c94c91016ba3f955509753fb0scygan 767db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::ViewportState::ViewportState (const ViewportState& other) 7684b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 7696a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 7704b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = other.pNext; 771271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = other.flags; 7726a2834ac40395173796b6e8d2a8e6c120d86ee74scygan viewportCount = other.viewportCount; 7734b9229de0ea1993c94c91016ba3f955509753fb0scygan scissorCount = other.scissorCount; 7744b9229de0ea1993c94c91016ba3f955509753fb0scygan 7754b9229de0ea1993c94c91016ba3f955509753fb0scygan m_viewports = std::vector<vk::VkViewport>(other.pViewports, other.pViewports + viewportCount); 7764b9229de0ea1993c94c91016ba3f955509753fb0scygan m_scissors = std::vector<vk::VkRect2D>(other.pScissors, other.pScissors + scissorCount); 7774b9229de0ea1993c94c91016ba3f955509753fb0scygan 7786a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pViewports = &m_viewports[0]; 7794b9229de0ea1993c94c91016ba3f955509753fb0scygan pScissors = &m_scissors[0]; 7804b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7814b9229de0ea1993c94c91016ba3f955509753fb0scygan 782db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::ViewportState& PipelineCreateInfo::ViewportState::operator= (const ViewportState& other) 7834b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 7846a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 7854b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = other.pNext; 786271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = other.flags; 7876a2834ac40395173796b6e8d2a8e6c120d86ee74scygan viewportCount = other.viewportCount; 7884b9229de0ea1993c94c91016ba3f955509753fb0scygan scissorCount = other.scissorCount; 7894b9229de0ea1993c94c91016ba3f955509753fb0scygan 7904b9229de0ea1993c94c91016ba3f955509753fb0scygan m_viewports = std::vector<vk::VkViewport>(other.pViewports, other.pViewports + scissorCount); 7914b9229de0ea1993c94c91016ba3f955509753fb0scygan m_scissors = std::vector<vk::VkRect2D>(other.pScissors, other.pScissors + scissorCount); 7924b9229de0ea1993c94c91016ba3f955509753fb0scygan 7936a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pViewports = &m_viewports[0]; 7944b9229de0ea1993c94c91016ba3f955509753fb0scygan pScissors = &m_scissors[0]; 7954b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 7964b9229de0ea1993c94c91016ba3f955509753fb0scygan} 7974b9229de0ea1993c94c91016ba3f955509753fb0scygan 7986a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::RasterizerState::RasterizerState (vk::VkBool32 _depthClampEnable, 7996a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _rasterizerDiscardEnable, 8006a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkPolygonMode _polygonMode, 8016a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkCullModeFlags _cullMode, 8026a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkFrontFace _frontFace, 8036a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _depthBiasEnable, 8046a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _depthBiasConstantFactor, 8056a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _depthBiasClamp, 8066a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _depthBiasSlopeFactor, 8076a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _lineWidth) 8084b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 8096a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; 8104b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 8116a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 8126a2834ac40395173796b6e8d2a8e6c120d86ee74scygan depthClampEnable = _depthClampEnable; 8134b9229de0ea1993c94c91016ba3f955509753fb0scygan rasterizerDiscardEnable = _rasterizerDiscardEnable; 8146a2834ac40395173796b6e8d2a8e6c120d86ee74scygan polygonMode = _polygonMode; 8154b9229de0ea1993c94c91016ba3f955509753fb0scygan cullMode = _cullMode; 8164b9229de0ea1993c94c91016ba3f955509753fb0scygan frontFace = _frontFace; 8174b9229de0ea1993c94c91016ba3f955509753fb0scygan 8186a2834ac40395173796b6e8d2a8e6c120d86ee74scygan depthBiasEnable = _depthBiasEnable; 8196a2834ac40395173796b6e8d2a8e6c120d86ee74scygan depthBiasConstantFactor = _depthBiasConstantFactor; 8204b9229de0ea1993c94c91016ba3f955509753fb0scygan depthBiasClamp = _depthBiasClamp; 8216a2834ac40395173796b6e8d2a8e6c120d86ee74scygan depthBiasSlopeFactor = _depthBiasSlopeFactor; 8224b9229de0ea1993c94c91016ba3f955509753fb0scygan lineWidth = _lineWidth; 8234b9229de0ea1993c94c91016ba3f955509753fb0scygan} 8244b9229de0ea1993c94c91016ba3f955509753fb0scygan 8256a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::MultiSampleState::MultiSampleState (vk::VkSampleCountFlagBits _rasterizationSamples, 8266a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _sampleShadingEnable, 8276a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _minSampleShading, 8286a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const std::vector<vk::VkSampleMask>& _sampleMask, 829ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos bool _alphaToCoverageEnable, 8306a2834ac40395173796b6e8d2a8e6c120d86ee74scygan bool _alphaToOneEnable) 8314b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_sampleMask(_sampleMask) 8324b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 8334b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; 8344b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 8356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 8366a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rasterizationSamples = _rasterizationSamples; 8376a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sampleShadingEnable = _sampleShadingEnable; 8386a2834ac40395173796b6e8d2a8e6c120d86ee74scygan minSampleShading = _minSampleShading; 8396a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pSampleMask = &m_sampleMask[0]; 8406a2834ac40395173796b6e8d2a8e6c120d86ee74scygan alphaToCoverageEnable = _alphaToCoverageEnable; 8416a2834ac40395173796b6e8d2a8e6c120d86ee74scygan alphaToOneEnable = _alphaToOneEnable; 8424b9229de0ea1993c94c91016ba3f955509753fb0scygan} 8434b9229de0ea1993c94c91016ba3f955509753fb0scygan 844db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::MultiSampleState::MultiSampleState (const MultiSampleState& other) 8454b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 8466a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 8476a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pNext = other.pNext; 848271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = other.flags; 8496a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rasterizationSamples = other.rasterizationSamples; 8506a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sampleShadingEnable = other.sampleShadingEnable; 8516a2834ac40395173796b6e8d2a8e6c120d86ee74scygan minSampleShading = other.minSampleShading; 852ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos 8536a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const size_t sampleMaskArrayLen = (sizeof(vk::VkSampleMask) * 8 + other.rasterizationSamples) / (sizeof(vk::VkSampleMask) * 8); 8544b9229de0ea1993c94c91016ba3f955509753fb0scygan 8556a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_sampleMask = std::vector<vk::VkSampleMask>(other.pSampleMask, other.pSampleMask + sampleMaskArrayLen); 8564b9229de0ea1993c94c91016ba3f955509753fb0scygan pSampleMask = &m_sampleMask[0]; 8574b9229de0ea1993c94c91016ba3f955509753fb0scygan} 8584b9229de0ea1993c94c91016ba3f955509753fb0scygan 859db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::MultiSampleState& PipelineCreateInfo::MultiSampleState::operator= (const MultiSampleState& other) 8604b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 8616a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 8626a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pNext = other.pNext; 863271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = other.flags; 8646a2834ac40395173796b6e8d2a8e6c120d86ee74scygan rasterizationSamples = other.rasterizationSamples; 8656a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sampleShadingEnable = other.sampleShadingEnable; 8666a2834ac40395173796b6e8d2a8e6c120d86ee74scygan minSampleShading = other.minSampleShading; 8674b9229de0ea1993c94c91016ba3f955509753fb0scygan 8686a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const size_t sampleMaskArrayLen = (sizeof(vk::VkSampleMask) * 8 + other.rasterizationSamples) / (sizeof(vk::VkSampleMask) * 8); 8696a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 8706a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_sampleMask = std::vector<vk::VkSampleMask>(other.pSampleMask, other.pSampleMask + sampleMaskArrayLen); 8714b9229de0ea1993c94c91016ba3f955509753fb0scygan pSampleMask = &m_sampleMask[0]; 8724b9229de0ea1993c94c91016ba3f955509753fb0scygan 8734b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 8744b9229de0ea1993c94c91016ba3f955509753fb0scygan} 8754b9229de0ea1993c94c91016ba3f955509753fb0scygan 8766a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::ColorBlendState::ColorBlendState (const std::vector<vk::VkPipelineColorBlendAttachmentState>& _attachments, 8776a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _logicOpEnable, 8786a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkLogicOp _logicOp) 8794b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_attachments(_attachments) 8804b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 8814b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; 882ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos pNext = DE_NULL; 8836a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 8844b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOpEnable = _logicOpEnable; 8854b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOp = _logicOp; 8864b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 8874b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachments[0]; 8884b9229de0ea1993c94c91016ba3f955509753fb0scygan} 8894b9229de0ea1993c94c91016ba3f955509753fb0scygan 8906a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::ColorBlendState::ColorBlendState (deUint32 _attachmentCount, 891db4efd02b79d71e0d0b1122d01d1a20b37760527scygan const vk::VkPipelineColorBlendAttachmentState* _attachments, 8926a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _logicOpEnable, 8936a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkLogicOp _logicOp) 8944b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_attachments(_attachments, _attachments + _attachmentCount) 8954b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 8964b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; 897ae21c307c29a6efa73f3d4f2b25f0dd2c0b0e023Pyry Haulos pNext = DE_NULL; 898271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = 0u; 8994b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOpEnable = _logicOpEnable; 9004b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOp = _logicOp; 9014b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 9024b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachments[0]; 9034b9229de0ea1993c94c91016ba3f955509753fb0scygan} 9044b9229de0ea1993c94c91016ba3f955509753fb0scygan 905db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::ColorBlendState::ColorBlendState (const vk::VkPipelineColorBlendStateCreateInfo& createInfo) 9064b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_attachments (createInfo.pAttachments, createInfo.pAttachments + createInfo.attachmentCount) 9074b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 9084b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = createInfo.sType; 9094b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = createInfo.pNext; 910271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = createInfo.flags; 9114b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOpEnable = createInfo.logicOpEnable; 9124b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOp = createInfo.logicOp; 9134b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 9144b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachments[0]; 9154b9229de0ea1993c94c91016ba3f955509753fb0scygan} 9164b9229de0ea1993c94c91016ba3f955509753fb0scygan 917db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::ColorBlendState::ColorBlendState (const ColorBlendState& createInfo, std::vector<float> _blendConstants) 9184b9229de0ea1993c94c91016ba3f955509753fb0scygan : m_attachments (createInfo.pAttachments, createInfo.pAttachments + createInfo.attachmentCount) 9194b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 9204b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = createInfo.sType; 9214b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = createInfo.pNext; 922271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = createInfo.flags; 9234b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOpEnable = createInfo.logicOpEnable; 9244b9229de0ea1993c94c91016ba3f955509753fb0scygan logicOp = createInfo.logicOp; 9254b9229de0ea1993c94c91016ba3f955509753fb0scygan attachmentCount = static_cast<deUint32>(m_attachments.size()); 9264b9229de0ea1993c94c91016ba3f955509753fb0scygan pAttachments = &m_attachments[0]; 9276a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deMemcpy(blendConstants, &_blendConstants[0], 4 * sizeof(float)); 9284b9229de0ea1993c94c91016ba3f955509753fb0scygan} 9294b9229de0ea1993c94c91016ba3f955509753fb0scygan 9306a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::ColorBlendState::Attachment::Attachment (vk::VkBool32 _blendEnable, 9316a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBlendFactor _srcColorBlendFactor, 9326a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBlendFactor _dstColorBlendFactor, 9336a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBlendOp _colorBlendOp, 9346a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBlendFactor _srcAlphaBlendFactor, 9356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBlendFactor _dstAlphaBlendFactor, 9366a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBlendOp _alphaBlendOp, 9376a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint8 _colorWriteMask) 9384b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 9394b9229de0ea1993c94c91016ba3f955509753fb0scygan blendEnable = _blendEnable; 9406a2834ac40395173796b6e8d2a8e6c120d86ee74scygan srcColorBlendFactor = _srcColorBlendFactor; 9416a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstColorBlendFactor = _dstColorBlendFactor; 9426a2834ac40395173796b6e8d2a8e6c120d86ee74scygan colorBlendOp = _colorBlendOp; 9436a2834ac40395173796b6e8d2a8e6c120d86ee74scygan srcAlphaBlendFactor = _srcAlphaBlendFactor; 9446a2834ac40395173796b6e8d2a8e6c120d86ee74scygan dstAlphaBlendFactor = _dstAlphaBlendFactor; 9456a2834ac40395173796b6e8d2a8e6c120d86ee74scygan alphaBlendOp = _alphaBlendOp; 9466a2834ac40395173796b6e8d2a8e6c120d86ee74scygan colorWriteMask = _colorWriteMask; 9476a2834ac40395173796b6e8d2a8e6c120d86ee74scygan} 9486a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 9496a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::DepthStencilState::StencilOpState::StencilOpState (vk::VkStencilOp _failOp, 9506a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkStencilOp _passOp, 9516a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkStencilOp _depthFailOp, 9526a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkCompareOp _compareOp, 9536a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _compareMask, 9546a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _writeMask, 9556a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deUint32 _reference) 9566a2834ac40395173796b6e8d2a8e6c120d86ee74scygan{ 9576a2834ac40395173796b6e8d2a8e6c120d86ee74scygan failOp = _failOp; 9586a2834ac40395173796b6e8d2a8e6c120d86ee74scygan passOp = _passOp; 9596a2834ac40395173796b6e8d2a8e6c120d86ee74scygan depthFailOp = _depthFailOp; 9606a2834ac40395173796b6e8d2a8e6c120d86ee74scygan compareOp = _compareOp; 9616a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 9626a2834ac40395173796b6e8d2a8e6c120d86ee74scygan compareMask = _compareMask; 9636a2834ac40395173796b6e8d2a8e6c120d86ee74scygan writeMask = _writeMask; 9646a2834ac40395173796b6e8d2a8e6c120d86ee74scygan reference = _reference; 9656a2834ac40395173796b6e8d2a8e6c120d86ee74scygan} 9666a2834ac40395173796b6e8d2a8e6c120d86ee74scygan 9676a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo::DepthStencilState::DepthStencilState (vk::VkBool32 _depthTestEnable, 9686a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _depthWriteEnable, 9696a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkCompareOp _depthCompareOp, 9706a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _depthBoundsTestEnable, 9716a2834ac40395173796b6e8d2a8e6c120d86ee74scygan vk::VkBool32 _stencilTestEnable, 9726a2834ac40395173796b6e8d2a8e6c120d86ee74scygan StencilOpState _front, 9736a2834ac40395173796b6e8d2a8e6c120d86ee74scygan StencilOpState _back, 9746a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _minDepthBounds, 9756a2834ac40395173796b6e8d2a8e6c120d86ee74scygan float _maxDepthBounds) 9764b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 9774b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; 9784b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 9796a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 9804b9229de0ea1993c94c91016ba3f955509753fb0scygan depthTestEnable = _depthTestEnable; 9814b9229de0ea1993c94c91016ba3f955509753fb0scygan depthWriteEnable = _depthWriteEnable; 9824b9229de0ea1993c94c91016ba3f955509753fb0scygan depthCompareOp = _depthCompareOp; 9834b9229de0ea1993c94c91016ba3f955509753fb0scygan depthBoundsTestEnable = _depthBoundsTestEnable; 9844b9229de0ea1993c94c91016ba3f955509753fb0scygan stencilTestEnable = _stencilTestEnable; 9854b9229de0ea1993c94c91016ba3f955509753fb0scygan front = _front; 9864b9229de0ea1993c94c91016ba3f955509753fb0scygan back = _back; 9874b9229de0ea1993c94c91016ba3f955509753fb0scygan 9884b9229de0ea1993c94c91016ba3f955509753fb0scygan minDepthBounds = _minDepthBounds; 9894b9229de0ea1993c94c91016ba3f955509753fb0scygan maxDepthBounds = _maxDepthBounds; 9904b9229de0ea1993c94c91016ba3f955509753fb0scygan} 9914b9229de0ea1993c94c91016ba3f955509753fb0scygan 9924b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo::DynamicState::DynamicState (const std::vector<vk::VkDynamicState>& _dynamicStates) 9934b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 9944b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; 9954b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 996271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = 0u; 9974b9229de0ea1993c94c91016ba3f955509753fb0scygan 9984b9229de0ea1993c94c91016ba3f955509753fb0scygan if (!_dynamicStates.size()) 9994b9229de0ea1993c94c91016ba3f955509753fb0scygan { 10004b9229de0ea1993c94c91016ba3f955509753fb0scygan for (size_t i = 0; i < vk::VK_DYNAMIC_STATE_LAST; ++i) 10014b9229de0ea1993c94c91016ba3f955509753fb0scygan { 10024b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dynamicStates.push_back(static_cast<vk::VkDynamicState>(i)); 10034b9229de0ea1993c94c91016ba3f955509753fb0scygan } 10044b9229de0ea1993c94c91016ba3f955509753fb0scygan } 10054b9229de0ea1993c94c91016ba3f955509753fb0scygan else 10064b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dynamicStates = _dynamicStates; 10074b9229de0ea1993c94c91016ba3f955509753fb0scygan 10084b9229de0ea1993c94c91016ba3f955509753fb0scygan dynamicStateCount = static_cast<deUint32>(m_dynamicStates.size()); 10094b9229de0ea1993c94c91016ba3f955509753fb0scygan pDynamicStates = &m_dynamicStates[0]; 10104b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10114b9229de0ea1993c94c91016ba3f955509753fb0scygan 10124b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo::DynamicState::DynamicState (const DynamicState &other) 10134b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10146a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 10154b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = other.pNext; 1016271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = other.flags; 10174b9229de0ea1993c94c91016ba3f955509753fb0scygan 10184b9229de0ea1993c94c91016ba3f955509753fb0scygan dynamicStateCount = other.dynamicStateCount; 10194b9229de0ea1993c94c91016ba3f955509753fb0scygan 10204b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dynamicStates = std::vector<vk::VkDynamicState>(other.pDynamicStates, other.pDynamicStates + dynamicStateCount); 10214b9229de0ea1993c94c91016ba3f955509753fb0scygan pDynamicStates = &m_dynamicStates[0]; 10224b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10234b9229de0ea1993c94c91016ba3f955509753fb0scygan 1024db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo::DynamicState& PipelineCreateInfo::DynamicState::operator= (const DynamicState& other) 10254b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10266a2834ac40395173796b6e8d2a8e6c120d86ee74scygan sType = other.sType; 10274b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = other.pNext; 1028271724cff305eb9f013d5587ef3f213ed7c9e28bDae Kim flags = other.flags; 10294b9229de0ea1993c94c91016ba3f955509753fb0scygan 10304b9229de0ea1993c94c91016ba3f955509753fb0scygan dynamicStateCount = other.dynamicStateCount; 10314b9229de0ea1993c94c91016ba3f955509753fb0scygan 10324b9229de0ea1993c94c91016ba3f955509753fb0scygan m_dynamicStates = std::vector<vk::VkDynamicState>(other.pDynamicStates, other.pDynamicStates + dynamicStateCount); 10334b9229de0ea1993c94c91016ba3f955509753fb0scygan pDynamicStates = &m_dynamicStates[0]; 10344b9229de0ea1993c94c91016ba3f955509753fb0scygan 10354b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 10364b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10374b9229de0ea1993c94c91016ba3f955509753fb0scygan 10384b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo::PipelineCreateInfo (vk::VkPipelineLayout _layout, 10394b9229de0ea1993c94c91016ba3f955509753fb0scygan vk::VkRenderPass _renderPass, 10404b9229de0ea1993c94c91016ba3f955509753fb0scygan int _subpass, 10414b9229de0ea1993c94c91016ba3f955509753fb0scygan vk::VkPipelineCreateFlags _flags) 10424b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10436a2834ac40395173796b6e8d2a8e6c120d86ee74scygan deMemset(static_cast<vk::VkGraphicsPipelineCreateInfo *>(this), 0, 10444b9229de0ea1993c94c91016ba3f955509753fb0scygan sizeof(vk::VkGraphicsPipelineCreateInfo)); 10454b9229de0ea1993c94c91016ba3f955509753fb0scygan 10464b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; 10474b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 10486a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = _flags; 10494b9229de0ea1993c94c91016ba3f955509753fb0scygan renderPass = _renderPass; 10504b9229de0ea1993c94c91016ba3f955509753fb0scygan subpass = _subpass; 10514b9229de0ea1993c94c91016ba3f955509753fb0scygan layout = _layout; 10524b9229de0ea1993c94c91016ba3f955509753fb0scygan basePipelineHandle = DE_NULL; 10534b9229de0ea1993c94c91016ba3f955509753fb0scygan basePipelineIndex = 0; 10544b9229de0ea1993c94c91016ba3f955509753fb0scygan pDynamicState = DE_NULL; 10554b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10564b9229de0ea1993c94c91016ba3f955509753fb0scygan 1057db4efd02b79d71e0d0b1122d01d1a20b37760527scyganPipelineCreateInfo& PipelineCreateInfo::addShader (const vk::VkPipelineShaderStageCreateInfo& shader) 10584b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10594b9229de0ea1993c94c91016ba3f955509753fb0scygan m_shaders.push_back(shader); 10604b9229de0ea1993c94c91016ba3f955509753fb0scygan 10614b9229de0ea1993c94c91016ba3f955509753fb0scygan stageCount = static_cast<deUint32>(m_shaders.size()); 10624b9229de0ea1993c94c91016ba3f955509753fb0scygan pStages = &m_shaders[0]; 10634b9229de0ea1993c94c91016ba3f955509753fb0scygan 10644b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 10654b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10664b9229de0ea1993c94c91016ba3f955509753fb0scygan 10674b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineVertexInputStateCreateInfo& state) 10684b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10696a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_vertexInputState = state; 10706a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pVertexInputState = &m_vertexInputState; 10714b9229de0ea1993c94c91016ba3f955509753fb0scygan 10724b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 10734b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10744b9229de0ea1993c94c91016ba3f955509753fb0scygan 10754b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineInputAssemblyStateCreateInfo& state) 10764b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10776a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_inputAssemblyState = state; 10786a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pInputAssemblyState = &m_inputAssemblyState; 10794b9229de0ea1993c94c91016ba3f955509753fb0scygan 10804b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 10814b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10824b9229de0ea1993c94c91016ba3f955509753fb0scygan 10834b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineColorBlendStateCreateInfo& state) 10844b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10856a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_colorBlendStateAttachments = std::vector<vk::VkPipelineColorBlendAttachmentState>(state.pAttachments, state.pAttachments + state.attachmentCount); 10866a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_colorBlendState = state; 10876a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_colorBlendState.pAttachments = &m_colorBlendStateAttachments[0]; 10886a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pColorBlendState = &m_colorBlendState; 10894b9229de0ea1993c94c91016ba3f955509753fb0scygan 10904b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 10914b9229de0ea1993c94c91016ba3f955509753fb0scygan} 10924b9229de0ea1993c94c91016ba3f955509753fb0scygan 10934b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineViewportStateCreateInfo& state) 10944b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 10956a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_viewports = std::vector<vk::VkViewport>(state.pViewports, state.pViewports + state.viewportCount); 10966a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_scissors = std::vector<vk::VkRect2D>(state.pScissors, state.pScissors + state.scissorCount); 10976a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_viewportState = state; 10986a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_viewportState.pViewports = &m_viewports[0]; 10996a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_viewportState.pScissors = &m_scissors[0]; 11006a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pViewportState = &m_viewportState; 11014b9229de0ea1993c94c91016ba3f955509753fb0scygan 11024b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 11034b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11044b9229de0ea1993c94c91016ba3f955509753fb0scygan 11054b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineDepthStencilStateCreateInfo& state) 11064b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 11076a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_dynamicDepthStencilState = state; 11086a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pDepthStencilState = &m_dynamicDepthStencilState; 11094b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 11104b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11114b9229de0ea1993c94c91016ba3f955509753fb0scygan 11124b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineTessellationStateCreateInfo& state) 11134b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 11146a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_tessState = state; 11156a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pTessellationState = &m_tessState; 11164b9229de0ea1993c94c91016ba3f955509753fb0scygan 11174b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 11184b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11194b9229de0ea1993c94c91016ba3f955509753fb0scygan 11206a2834ac40395173796b6e8d2a8e6c120d86ee74scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineRasterizationStateCreateInfo& state) 11214b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 11226a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_rasterState = state; 11236a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pRasterizationState = &m_rasterState; 11244b9229de0ea1993c94c91016ba3f955509753fb0scygan 11254b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 11264b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11274b9229de0ea1993c94c91016ba3f955509753fb0scygan 11284b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineMultisampleStateCreateInfo& state) 11294b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 11304b9229de0ea1993c94c91016ba3f955509753fb0scygan 11316a2834ac40395173796b6e8d2a8e6c120d86ee74scygan const size_t sampleMaskArrayLen = (sizeof(vk::VkSampleMask) * 8 + state.rasterizationSamples) / ( sizeof(vk::VkSampleMask) * 8 ); 11324b9229de0ea1993c94c91016ba3f955509753fb0scygan m_multisampleStateSampleMask = std::vector<vk::VkSampleMask>(state.pSampleMask, state.pSampleMask + sampleMaskArrayLen); 11336a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_multisampleState = state; 11346a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_multisampleState.pSampleMask = &m_multisampleStateSampleMask[0]; 11356a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pMultisampleState = &m_multisampleState; 11364b9229de0ea1993c94c91016ba3f955509753fb0scygan 11374b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 11384b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11394b9229de0ea1993c94c91016ba3f955509753fb0scyganPipelineCreateInfo& PipelineCreateInfo::addState (const vk::VkPipelineDynamicStateCreateInfo& state) 11404b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 11416a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_dynamicStates = std::vector<vk::VkDynamicState>(state.pDynamicStates, state.pDynamicStates + state.dynamicStateCount); 11426a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_dynamicState = state; 11436a2834ac40395173796b6e8d2a8e6c120d86ee74scygan m_dynamicState.pDynamicStates = &m_dynamicStates[0]; 11446a2834ac40395173796b6e8d2a8e6c120d86ee74scygan pDynamicState = &m_dynamicState; 11454b9229de0ea1993c94c91016ba3f955509753fb0scygan 11464b9229de0ea1993c94c91016ba3f955509753fb0scygan return *this; 11474b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11484b9229de0ea1993c94c91016ba3f955509753fb0scygan 11496a2834ac40395173796b6e8d2a8e6c120d86ee74scyganSamplerCreateInfo::SamplerCreateInfo (vk::VkFilter _magFilter, 1150db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkFilter _minFilter, 1151db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkSamplerMipmapMode _mipmapMode, 1152db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkSamplerAddressMode _addressModeU, 1153db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkSamplerAddressMode _addressModeV, 1154db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkSamplerAddressMode _addressModeW, 1155db4efd02b79d71e0d0b1122d01d1a20b37760527scygan float _mipLodBias, 1156689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos vk::VkBool32 _anisotropyEnable, 1157db4efd02b79d71e0d0b1122d01d1a20b37760527scygan float _maxAnisotropy, 1158db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkBool32 _compareEnable, 1159db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkCompareOp _compareOp, 1160db4efd02b79d71e0d0b1122d01d1a20b37760527scygan float _minLod, 1161db4efd02b79d71e0d0b1122d01d1a20b37760527scygan float _maxLod, 1162db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkBorderColor _borderColor, 1163db4efd02b79d71e0d0b1122d01d1a20b37760527scygan vk::VkBool32 _unnormalizedCoordinates) 11644b9229de0ea1993c94c91016ba3f955509753fb0scygan{ 11654b9229de0ea1993c94c91016ba3f955509753fb0scygan sType = vk::VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; 11664b9229de0ea1993c94c91016ba3f955509753fb0scygan pNext = DE_NULL; 11676a2834ac40395173796b6e8d2a8e6c120d86ee74scygan flags = 0u; 11684b9229de0ea1993c94c91016ba3f955509753fb0scygan magFilter = _magFilter; 11694b9229de0ea1993c94c91016ba3f955509753fb0scygan minFilter = _minFilter; 11706a2834ac40395173796b6e8d2a8e6c120d86ee74scygan mipmapMode = _mipmapMode; 11714b9229de0ea1993c94c91016ba3f955509753fb0scygan addressModeU = _addressModeU; 11724b9229de0ea1993c94c91016ba3f955509753fb0scygan addressModeV = _addressModeV; 11734b9229de0ea1993c94c91016ba3f955509753fb0scygan addressModeW = _addressModeW; 11744b9229de0ea1993c94c91016ba3f955509753fb0scygan mipLodBias = _mipLodBias; 1175689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos anisotropyEnable = _anisotropyEnable; 11764b9229de0ea1993c94c91016ba3f955509753fb0scygan maxAnisotropy = _maxAnisotropy; 11774b9229de0ea1993c94c91016ba3f955509753fb0scygan compareEnable = _compareEnable; 11784b9229de0ea1993c94c91016ba3f955509753fb0scygan compareOp = _compareOp; 11794b9229de0ea1993c94c91016ba3f955509753fb0scygan minLod = _minLod; 11804b9229de0ea1993c94c91016ba3f955509753fb0scygan maxLod = _maxLod; 11814b9229de0ea1993c94c91016ba3f955509753fb0scygan borderColor = _borderColor; 11824b9229de0ea1993c94c91016ba3f955509753fb0scygan unnormalizedCoordinates = _unnormalizedCoordinates; 11834b9229de0ea1993c94c91016ba3f955509753fb0scygan} 11844b9229de0ea1993c94c91016ba3f955509753fb0scygan} // DynamicState 11854b9229de0ea1993c94c91016ba3f955509753fb0scygan} // vkt 1186