141702fa78437820bc601e604de6a490eb09513ddPeter Siket#ifndef _VKTTEXTURETESTUTIL_HPP 241702fa78437820bc601e604de6a490eb09513ddPeter Siket#define _VKTTEXTURETESTUTIL_HPP 341702fa78437820bc601e604de6a490eb09513ddPeter Siket/*------------------------------------------------------------------------ 441702fa78437820bc601e604de6a490eb09513ddPeter Siket * Vulkan Conformance Tests 541702fa78437820bc601e604de6a490eb09513ddPeter Siket * ------------------------ 641702fa78437820bc601e604de6a490eb09513ddPeter Siket * 741702fa78437820bc601e604de6a490eb09513ddPeter Siket * Copyright (c) 2016 The Khronos Group Inc. 841702fa78437820bc601e604de6a490eb09513ddPeter Siket * Copyright (c) 2016 Samsung Electronics Co., Ltd. 941702fa78437820bc601e604de6a490eb09513ddPeter Siket * Copyright (c) 2014 The Android Open Source Project 1041702fa78437820bc601e604de6a490eb09513ddPeter Siket * 1141702fa78437820bc601e604de6a490eb09513ddPeter Siket * Licensed under the Apache License, Version 2.0 (the "License"); 1241702fa78437820bc601e604de6a490eb09513ddPeter Siket * you may not use this file except in compliance with the License. 1341702fa78437820bc601e604de6a490eb09513ddPeter Siket * You may obtain a copy of the License at 1441702fa78437820bc601e604de6a490eb09513ddPeter Siket * 1541702fa78437820bc601e604de6a490eb09513ddPeter Siket * http://www.apache.org/licenses/LICENSE-2.0 1641702fa78437820bc601e604de6a490eb09513ddPeter Siket * 1741702fa78437820bc601e604de6a490eb09513ddPeter Siket * Unless required by applicable law or agreed to in writing, software 1841702fa78437820bc601e604de6a490eb09513ddPeter Siket * distributed under the License is distributed on an "AS IS" BASIS, 1941702fa78437820bc601e604de6a490eb09513ddPeter Siket * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2041702fa78437820bc601e604de6a490eb09513ddPeter Siket * See the License for the specific language governing permissions and 2141702fa78437820bc601e604de6a490eb09513ddPeter Siket * limitations under the License. 2241702fa78437820bc601e604de6a490eb09513ddPeter Siket * 2341702fa78437820bc601e604de6a490eb09513ddPeter Siket *//*! 2441702fa78437820bc601e604de6a490eb09513ddPeter Siket * \file 2541702fa78437820bc601e604de6a490eb09513ddPeter Siket * \brief Texture test utilities. 2641702fa78437820bc601e604de6a490eb09513ddPeter Siket * 2741702fa78437820bc601e604de6a490eb09513ddPeter Siket * About coordinates: 2841702fa78437820bc601e604de6a490eb09513ddPeter Siket * + Quads consist of 2 triangles, rendered using explicit indices. 2941702fa78437820bc601e604de6a490eb09513ddPeter Siket * + All TextureTestUtil functions and classes expect texture coordinates 3041702fa78437820bc601e604de6a490eb09513ddPeter Siket * for quads to be specified in order (-1, -1), (-1, 1), (1, -1), (1, 1). 3141702fa78437820bc601e604de6a490eb09513ddPeter Siket *//*--------------------------------------------------------------------*/ 3241702fa78437820bc601e604de6a490eb09513ddPeter Siket 3341702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "tcuDefs.hpp" 3441702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "tcuSurface.hpp" 3541702fa78437820bc601e604de6a490eb09513ddPeter Siket 3641702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "vkDefs.hpp" 3741702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "vktTestCase.hpp" 3841702fa78437820bc601e604de6a490eb09513ddPeter Siket 3941702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "gluShaderProgram.hpp" 4041702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "gluTextureTestUtil.hpp" 4141702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "deSharedPtr.hpp" 4241702fa78437820bc601e604de6a490eb09513ddPeter Siket 4341702fa78437820bc601e604de6a490eb09513ddPeter Siket#include "../pipeline/vktPipelineImageUtil.hpp" 4441702fa78437820bc601e604de6a490eb09513ddPeter Siket 4541702fa78437820bc601e604de6a490eb09513ddPeter Siketnamespace vkt 4641702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 4741702fa78437820bc601e604de6a490eb09513ddPeter Siket 4841702fa78437820bc601e604de6a490eb09513ddPeter Siketnamespace texture 4941702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 5041702fa78437820bc601e604de6a490eb09513ddPeter Siket 5141702fa78437820bc601e604de6a490eb09513ddPeter Siketnamespace util 5241702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 5341702fa78437820bc601e604de6a490eb09513ddPeter Siket 5441702fa78437820bc601e604de6a490eb09513ddPeter Siketenum Program 5541702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 5641702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_FLOAT = 0, 5741702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_INT, 5841702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_UINT, 5941702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_SHADOW, 6041702fa78437820bc601e604de6a490eb09513ddPeter Siket 6141702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_FLOAT_BIAS, 6241702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_INT_BIAS, 6341702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_UINT_BIAS, 6441702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_SHADOW_BIAS, 6541702fa78437820bc601e604de6a490eb09513ddPeter Siket 6641702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_FLOAT, 6741702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_INT, 6841702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_UINT, 6941702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_SHADOW, 7041702fa78437820bc601e604de6a490eb09513ddPeter Siket 7141702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_FLOAT_BIAS, 7241702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_INT_BIAS, 7341702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_UINT_BIAS, 7441702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_SHADOW_BIAS, 7541702fa78437820bc601e604de6a490eb09513ddPeter Siket 7641702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_FLOAT, 7741702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_INT, 7841702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_UINT, 7941702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_SHADOW, 8041702fa78437820bc601e604de6a490eb09513ddPeter Siket 8141702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_FLOAT_BIAS, 8241702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_INT_BIAS, 8341702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_UINT_BIAS, 8441702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_SHADOW_BIAS, 8541702fa78437820bc601e604de6a490eb09513ddPeter Siket 8641702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_ARRAY_FLOAT, 8741702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_ARRAY_INT, 8841702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_ARRAY_UINT, 8941702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_1D_ARRAY_SHADOW, 9041702fa78437820bc601e604de6a490eb09513ddPeter Siket 9141702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_ARRAY_FLOAT, 9241702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_ARRAY_INT, 9341702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_ARRAY_UINT, 9441702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_2D_ARRAY_SHADOW, 9541702fa78437820bc601e604de6a490eb09513ddPeter Siket 9641702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_3D_FLOAT, 9741702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_3D_INT, 9841702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_3D_UINT, 9941702fa78437820bc601e604de6a490eb09513ddPeter Siket 10041702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_3D_FLOAT_BIAS, 10141702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_3D_INT_BIAS, 10241702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_3D_UINT_BIAS, 10341702fa78437820bc601e604de6a490eb09513ddPeter Siket 10441702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_ARRAY_FLOAT, 10541702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_ARRAY_INT, 10641702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_ARRAY_UINT, 10741702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_CUBE_ARRAY_SHADOW, 10841702fa78437820bc601e604de6a490eb09513ddPeter Siket 10941702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_BUFFER_FLOAT, 11041702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_BUFFER_INT, 11141702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_BUFFER_UINT, 11241702fa78437820bc601e604de6a490eb09513ddPeter Siket 11341702fa78437820bc601e604de6a490eb09513ddPeter Siket PROGRAM_LAST 11441702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 11541702fa78437820bc601e604de6a490eb09513ddPeter Siket 11641702fa78437820bc601e604de6a490eb09513ddPeter Siketvoid initializePrograms(vk::SourceCollections& programCollection, glu::Precision texCoordPrecision, const std::vector<Program>& programs); 11741702fa78437820bc601e604de6a490eb09513ddPeter Siket 11841702fa78437820bc601e604de6a490eb09513ddPeter Sikettypedef de::SharedPtr<pipeline::TestTexture> TestTextureSp; 11941702fa78437820bc601e604de6a490eb09513ddPeter Sikettypedef de::SharedPtr<pipeline::TestTexture2D> TestTexture2DSp; 12041702fa78437820bc601e604de6a490eb09513ddPeter Sikettypedef de::SharedPtr<pipeline::TestTextureCube> TestTextureCubeSp; 12141702fa78437820bc601e604de6a490eb09513ddPeter Sikettypedef de::SharedPtr<pipeline::TestTexture2DArray> TestTexture2DArraySp; 12241702fa78437820bc601e604de6a490eb09513ddPeter Sikettypedef de::SharedPtr<pipeline::TestTexture3D> TestTexture3DSp; 12341702fa78437820bc601e604de6a490eb09513ddPeter Siket 12441702fa78437820bc601e604de6a490eb09513ddPeter Siketclass TextureBinding { 12541702fa78437820bc601e604de6a490eb09513ddPeter Siketpublic: 12641702fa78437820bc601e604de6a490eb09513ddPeter Siket enum Type 12741702fa78437820bc601e604de6a490eb09513ddPeter Siket { 12841702fa78437820bc601e604de6a490eb09513ddPeter Siket TYPE_NONE = 0, 12941702fa78437820bc601e604de6a490eb09513ddPeter Siket TYPE_2D, 13041702fa78437820bc601e604de6a490eb09513ddPeter Siket TYPE_CUBE_MAP, 13141702fa78437820bc601e604de6a490eb09513ddPeter Siket TYPE_2D_ARRAY, 13241702fa78437820bc601e604de6a490eb09513ddPeter Siket TYPE_3D, 13341702fa78437820bc601e604de6a490eb09513ddPeter Siket 13441702fa78437820bc601e604de6a490eb09513ddPeter Siket TYPE_LAST 13541702fa78437820bc601e604de6a490eb09513ddPeter Siket }; 13641702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureBinding (Context& context); 13741702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureBinding (Context& context, const TestTextureSp& textureData, const Type type); 13841702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::VkImage getImage (void) { return *m_textureImage; } 13941702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::VkImageView getImageView (void) { return *m_textureImageView; } 14041702fa78437820bc601e604de6a490eb09513ddPeter Siket Type getType (void) { return m_type; } 14141702fa78437820bc601e604de6a490eb09513ddPeter Siket const pipeline::TestTexture& getTestTexture (void) { return *m_textureData; } 14241702fa78437820bc601e604de6a490eb09513ddPeter Siket void updateTextureViewMipLevels (deUint32 baseLevel, deUint32 maxLevel); 14341702fa78437820bc601e604de6a490eb09513ddPeter Siket 14441702fa78437820bc601e604de6a490eb09513ddPeter Siketprivate: 14541702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureBinding (const TextureBinding&); // not allowed! 14641702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureBinding& operator= (const TextureBinding&); // not allowed! 14741702fa78437820bc601e604de6a490eb09513ddPeter Siket 14841702fa78437820bc601e604de6a490eb09513ddPeter Siket void updateTextureData (const TestTextureSp& textureData, const Type type); 14941702fa78437820bc601e604de6a490eb09513ddPeter Siket 15041702fa78437820bc601e604de6a490eb09513ddPeter Siket Context& m_context; 15141702fa78437820bc601e604de6a490eb09513ddPeter Siket Type m_type; 15241702fa78437820bc601e604de6a490eb09513ddPeter Siket TestTextureSp m_textureData; 15341702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkImage> m_textureImage; 15441702fa78437820bc601e604de6a490eb09513ddPeter Siket de::MovePtr<vk::Allocation> m_textureImageMemory; 15541702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkImageView> m_textureImageView; 15641702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 15741702fa78437820bc601e604de6a490eb09513ddPeter Siket 15841702fa78437820bc601e604de6a490eb09513ddPeter Sikettypedef de::SharedPtr<TextureBinding> TextureBindingSp; 15941702fa78437820bc601e604de6a490eb09513ddPeter Siket 16041702fa78437820bc601e604de6a490eb09513ddPeter Siketclass TextureRenderer 16141702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 16241702fa78437820bc601e604de6a490eb09513ddPeter Siketpublic: 16341702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureRenderer (Context& context, vk::VkSampleCountFlagBits sampleCount, deUint32 renderWidth, deUint32 renderHeight); 16441702fa78437820bc601e604de6a490eb09513ddPeter Siket ~TextureRenderer (void); 16541702fa78437820bc601e604de6a490eb09513ddPeter Siket 16641702fa78437820bc601e604de6a490eb09513ddPeter Siket void renderQuad (tcu::Surface& result, int texUnit, const float* texCoord, glu::TextureTestUtil::TextureType texType); 16741702fa78437820bc601e604de6a490eb09513ddPeter Siket void renderQuad (tcu::Surface& result, int texUnit, const float* texCoord, const glu::TextureTestUtil::ReferenceParams& params); 168b53c2e6f85be0ce0c789ad557cfe9d0732162204Arkadiusz Sarwa void renderQuad (tcu::Surface& result, 169b53c2e6f85be0ce0c789ad557cfe9d0732162204Arkadiusz Sarwa const float* positions, 170b53c2e6f85be0ce0c789ad557cfe9d0732162204Arkadiusz Sarwa const int texUnit, 171b53c2e6f85be0ce0c789ad557cfe9d0732162204Arkadiusz Sarwa const float* texCoord, 172b53c2e6f85be0ce0c789ad557cfe9d0732162204Arkadiusz Sarwa const glu::TextureTestUtil::ReferenceParams& params, 173b53c2e6f85be0ce0c789ad557cfe9d0732162204Arkadiusz Sarwa const float maxAnisotropy); 17441702fa78437820bc601e604de6a490eb09513ddPeter Siket 17541702fa78437820bc601e604de6a490eb09513ddPeter Siket void clearImage (vk::VkImage image); 17641702fa78437820bc601e604de6a490eb09513ddPeter Siket void add2DTexture (const TestTexture2DSp& texture); 17741702fa78437820bc601e604de6a490eb09513ddPeter Siket const pipeline::TestTexture2D& get2DTexture (int textureIndex) const; 17841702fa78437820bc601e604de6a490eb09513ddPeter Siket 17941702fa78437820bc601e604de6a490eb09513ddPeter Siket void addCubeTexture (const TestTextureCubeSp& texture); 18041702fa78437820bc601e604de6a490eb09513ddPeter Siket const pipeline::TestTextureCube& getCubeTexture (int textureIndex) const; 18141702fa78437820bc601e604de6a490eb09513ddPeter Siket 18241702fa78437820bc601e604de6a490eb09513ddPeter Siket void add2DArrayTexture (const TestTexture2DArraySp& texture); 18341702fa78437820bc601e604de6a490eb09513ddPeter Siket const pipeline::TestTexture2DArray& get2DArrayTexture (int textureIndex) const; 18441702fa78437820bc601e604de6a490eb09513ddPeter Siket 18541702fa78437820bc601e604de6a490eb09513ddPeter Siket void add3DTexture (const TestTexture3DSp& texture); 18641702fa78437820bc601e604de6a490eb09513ddPeter Siket const pipeline::TestTexture3D& get3DTexture (int textureIndex) const; 18741702fa78437820bc601e604de6a490eb09513ddPeter Siket 18841702fa78437820bc601e604de6a490eb09513ddPeter Siket void setViewport (float viewportX, float viewportY, float viewportW, float viewportH); 18941702fa78437820bc601e604de6a490eb09513ddPeter Siket 19041702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureBinding* getTextureBinding (int textureIndex) const; 19141702fa78437820bc601e604de6a490eb09513ddPeter Siket 19241702fa78437820bc601e604de6a490eb09513ddPeter Siket deUint32 getRenderWidth (void) const; 19341702fa78437820bc601e604de6a490eb09513ddPeter Siket deUint32 getRenderHeight (void) const; 19441702fa78437820bc601e604de6a490eb09513ddPeter Siket 19541702fa78437820bc601e604de6a490eb09513ddPeter Siketprotected: 19641702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureRenderer (const TextureRenderer& other); 19741702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureRenderer& operator= (const TextureRenderer& other); 19841702fa78437820bc601e604de6a490eb09513ddPeter Siket 19941702fa78437820bc601e604de6a490eb09513ddPeter Siket Context& m_context; 20041702fa78437820bc601e604de6a490eb09513ddPeter Siket tcu::TestLog& m_log; 20141702fa78437820bc601e604de6a490eb09513ddPeter Siket 20241702fa78437820bc601e604de6a490eb09513ddPeter Siket const deUint32 m_renderWidth; 20341702fa78437820bc601e604de6a490eb09513ddPeter Siket const deUint32 m_renderHeight; 20441702fa78437820bc601e604de6a490eb09513ddPeter Siket const vk::VkSampleCountFlagBits m_sampleCount; 20541702fa78437820bc601e604de6a490eb09513ddPeter Siket const deBool m_multisampling; 20641702fa78437820bc601e604de6a490eb09513ddPeter Siket 20741702fa78437820bc601e604de6a490eb09513ddPeter Siket const vk::VkFormat m_imageFormat; 20841702fa78437820bc601e604de6a490eb09513ddPeter Siket const tcu::TextureFormat m_textureFormat; 20941702fa78437820bc601e604de6a490eb09513ddPeter Siket 21041702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkImage> m_image; 21141702fa78437820bc601e604de6a490eb09513ddPeter Siket de::MovePtr<vk::Allocation> m_imageMemory; 21241702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkImageView> m_imageView; 21341702fa78437820bc601e604de6a490eb09513ddPeter Siket 21441702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkImage> m_resolvedImage; 21541702fa78437820bc601e604de6a490eb09513ddPeter Siket de::MovePtr<vk::Allocation> m_resolvedImageMemory; 21641702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkImageView> m_resolvedImageView; 21741702fa78437820bc601e604de6a490eb09513ddPeter Siket 21841702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkCommandPool> m_commandPool; 21941702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkRenderPass> m_renderPass; 22041702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkFramebuffer> m_frameBuffer; 22141702fa78437820bc601e604de6a490eb09513ddPeter Siket 22241702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkDescriptorPool> m_descriptorPool; 22341702fa78437820bc601e604de6a490eb09513ddPeter Siket 22441702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkBuffer> m_uniformBuffer; 22541702fa78437820bc601e604de6a490eb09513ddPeter Siket de::MovePtr<vk::Allocation> m_uniformBufferMemory; 22641702fa78437820bc601e604de6a490eb09513ddPeter Siket const vk::VkDeviceSize m_uniformBufferSize; 22741702fa78437820bc601e604de6a490eb09513ddPeter Siket 22841702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkBuffer> m_vertexIndexBuffer; 22941702fa78437820bc601e604de6a490eb09513ddPeter Siket de::MovePtr<vk::Allocation> m_vertexIndexBufferMemory; 23041702fa78437820bc601e604de6a490eb09513ddPeter Siket static const vk::VkDeviceSize s_vertexIndexBufferSize; 23141702fa78437820bc601e604de6a490eb09513ddPeter Siket static const deUint16 s_vertexIndices[6]; 23241702fa78437820bc601e604de6a490eb09513ddPeter Siket 23341702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkFence> m_fence; 23441702fa78437820bc601e604de6a490eb09513ddPeter Siket 23541702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkBuffer> m_resultBuffer; 23641702fa78437820bc601e604de6a490eb09513ddPeter Siket de::MovePtr<vk::Allocation> m_resultBufferMemory; 23741702fa78437820bc601e604de6a490eb09513ddPeter Siket const vk::VkDeviceSize m_resultBufferSize; 23841702fa78437820bc601e604de6a490eb09513ddPeter Siket 23941702fa78437820bc601e604de6a490eb09513ddPeter Siket std::vector<TextureBindingSp> m_textureBindings; 24041702fa78437820bc601e604de6a490eb09513ddPeter Siket 24141702fa78437820bc601e604de6a490eb09513ddPeter Siket float m_viewportOffsetX; 24241702fa78437820bc601e604de6a490eb09513ddPeter Siket float m_viewportOffsetY; 24341702fa78437820bc601e604de6a490eb09513ddPeter Siket float m_viewportWidth; 24441702fa78437820bc601e604de6a490eb09513ddPeter Siket float m_viewportHeight; 24541702fa78437820bc601e604de6a490eb09513ddPeter Siket 24641702fa78437820bc601e604de6a490eb09513ddPeter Siketprivate: 24741702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::Move<vk::VkDescriptorSet> makeDescriptorSet (const vk::VkDescriptorPool descriptorPool, const vk::VkDescriptorSetLayout setLayout) const; 24841702fa78437820bc601e604de6a490eb09513ddPeter Siket void addImageTransitionBarrier (vk::VkCommandBuffer commandBuffer, vk::VkImage image, vk::VkPipelineStageFlags srcStageMask, vk::VkPipelineStageFlags dstStageMask, vk::VkAccessFlags srcAccessMask, vk::VkAccessFlags dstAccessMask, vk::VkImageLayout oldLayout, vk::VkImageLayout newLayout) const; 24941702fa78437820bc601e604de6a490eb09513ddPeter Siket 25041702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 25141702fa78437820bc601e604de6a490eb09513ddPeter Siket 25241702fa78437820bc601e604de6a490eb09513ddPeter Sikettcu::Sampler createSampler (tcu::Sampler::WrapMode wrapU, tcu::Sampler::WrapMode wrapV, tcu::Sampler::WrapMode wrapW, tcu::Sampler::FilterMode minFilterMode, tcu::Sampler::FilterMode magFilterMode); 25341702fa78437820bc601e604de6a490eb09513ddPeter Sikettcu::Sampler createSampler (tcu::Sampler::WrapMode wrapU, tcu::Sampler::WrapMode wrapV, tcu::Sampler::FilterMode minFilterMode, tcu::Sampler::FilterMode magFilterMode); 25441702fa78437820bc601e604de6a490eb09513ddPeter Sikettcu::Sampler createSampler (tcu::Sampler::WrapMode wrapU, tcu::Sampler::FilterMode minFilterMode, tcu::Sampler::FilterMode magFilterMode); 25541702fa78437820bc601e604de6a490eb09513ddPeter Siket 25641702fa78437820bc601e604de6a490eb09513ddPeter SiketTestTexture2DSp loadTexture2D (const tcu::Archive& archive, const std::vector<std::string>& filenames); 25741702fa78437820bc601e604de6a490eb09513ddPeter SiketTestTextureCubeSp loadTextureCube (const tcu::Archive& archive, const std::vector<std::string>& filenames); 25841702fa78437820bc601e604de6a490eb09513ddPeter Siket 25941702fa78437820bc601e604de6a490eb09513ddPeter Sikettemplate <typename INSTANCE_TYPE> 26041702fa78437820bc601e604de6a490eb09513ddPeter Siketclass TextureTestCase : public TestCase 26141702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 26241702fa78437820bc601e604de6a490eb09513ddPeter Siketpublic: 26341702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureTestCase (tcu::TestContext& context, const std::string& name, const std::string& description, const typename INSTANCE_TYPE::ParameterType& testParameters) 26441702fa78437820bc601e604de6a490eb09513ddPeter Siket : TestCase (context, name, description) 26541702fa78437820bc601e604de6a490eb09513ddPeter Siket , m_testsParameters (testParameters) 26641702fa78437820bc601e604de6a490eb09513ddPeter Siket {} 26741702fa78437820bc601e604de6a490eb09513ddPeter Siket 26841702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual TestInstance* createInstance (Context& context) const 26941702fa78437820bc601e604de6a490eb09513ddPeter Siket { 27041702fa78437820bc601e604de6a490eb09513ddPeter Siket return new INSTANCE_TYPE(context, m_testsParameters); 27141702fa78437820bc601e604de6a490eb09513ddPeter Siket } 27241702fa78437820bc601e604de6a490eb09513ddPeter Siket 27341702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual void initPrograms (vk::SourceCollections& programCollection) const 27441702fa78437820bc601e604de6a490eb09513ddPeter Siket { 27541702fa78437820bc601e604de6a490eb09513ddPeter Siket initializePrograms(programCollection, m_testsParameters.texCoordPrecision, m_testsParameters.programs); 27641702fa78437820bc601e604de6a490eb09513ddPeter Siket } 27741702fa78437820bc601e604de6a490eb09513ddPeter Siket 27841702fa78437820bc601e604de6a490eb09513ddPeter Siketprotected: 27941702fa78437820bc601e604de6a490eb09513ddPeter Siket const typename INSTANCE_TYPE::ParameterType m_testsParameters; 28041702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 28141702fa78437820bc601e604de6a490eb09513ddPeter Siket 28241702fa78437820bc601e604de6a490eb09513ddPeter Siketstruct TextureCommonTestCaseParameters 28341702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 28441702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureCommonTestCaseParameters (void); 28541702fa78437820bc601e604de6a490eb09513ddPeter Siket 28641702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::VkSampleCountFlagBits sampleCount; 28741702fa78437820bc601e604de6a490eb09513ddPeter Siket glu::Precision texCoordPrecision; 28841702fa78437820bc601e604de6a490eb09513ddPeter Siket 28941702fa78437820bc601e604de6a490eb09513ddPeter Siket tcu::Sampler::FilterMode minFilter; 29041702fa78437820bc601e604de6a490eb09513ddPeter Siket tcu::Sampler::FilterMode magFilter; 29141702fa78437820bc601e604de6a490eb09513ddPeter Siket tcu::Sampler::WrapMode wrapS; 29241702fa78437820bc601e604de6a490eb09513ddPeter Siket tcu::Sampler::WrapMode wrapT; 29341702fa78437820bc601e604de6a490eb09513ddPeter Siket 29441702fa78437820bc601e604de6a490eb09513ddPeter Siket vk::VkFormat format; 29541702fa78437820bc601e604de6a490eb09513ddPeter Siket 29641702fa78437820bc601e604de6a490eb09513ddPeter Siket std::vector<util::Program> programs; 29741702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 29841702fa78437820bc601e604de6a490eb09513ddPeter Siket 29941702fa78437820bc601e604de6a490eb09513ddPeter Siketstruct Texture2DTestCaseParameters : public TextureCommonTestCaseParameters 30041702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 30141702fa78437820bc601e604de6a490eb09513ddPeter Siket Texture2DTestCaseParameters (void); 30241702fa78437820bc601e604de6a490eb09513ddPeter Siket int width; 30341702fa78437820bc601e604de6a490eb09513ddPeter Siket int height; 30441702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 30541702fa78437820bc601e604de6a490eb09513ddPeter Siket 30641702fa78437820bc601e604de6a490eb09513ddPeter Siketstruct TextureCubeTestCaseParameters : public TextureCommonTestCaseParameters 30741702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 30841702fa78437820bc601e604de6a490eb09513ddPeter Siket TextureCubeTestCaseParameters (void); 30941702fa78437820bc601e604de6a490eb09513ddPeter Siket int size; 31041702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 31141702fa78437820bc601e604de6a490eb09513ddPeter Siket 31241702fa78437820bc601e604de6a490eb09513ddPeter Siketstruct Texture2DArrayTestCaseParameters : public Texture2DTestCaseParameters 31341702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 31441702fa78437820bc601e604de6a490eb09513ddPeter Siket Texture2DArrayTestCaseParameters(void); 31541702fa78437820bc601e604de6a490eb09513ddPeter Siket int numLayers; 31641702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 31741702fa78437820bc601e604de6a490eb09513ddPeter Siket 31841702fa78437820bc601e604de6a490eb09513ddPeter Siketstruct Texture3DTestCaseParameters : public Texture2DTestCaseParameters 31941702fa78437820bc601e604de6a490eb09513ddPeter Siket{ 32041702fa78437820bc601e604de6a490eb09513ddPeter Siket Texture3DTestCaseParameters (void); 32141702fa78437820bc601e604de6a490eb09513ddPeter Siket tcu::Sampler::WrapMode wrapR; 32241702fa78437820bc601e604de6a490eb09513ddPeter Siket int depth; 32341702fa78437820bc601e604de6a490eb09513ddPeter Siket}; 32441702fa78437820bc601e604de6a490eb09513ddPeter Siket 32541702fa78437820bc601e604de6a490eb09513ddPeter Siket} // util 32641702fa78437820bc601e604de6a490eb09513ddPeter Siket} // texture 32741702fa78437820bc601e604de6a490eb09513ddPeter Siket} // vkt 32841702fa78437820bc601e604de6a490eb09513ddPeter Siket 32941702fa78437820bc601e604de6a490eb09513ddPeter Siket#endif // _VKTTEXTURETESTUTIL_HPP 330