1c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#ifndef _VKTPIPELINEIMAGEUTIL_HPP 2c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#define _VKTPIPELINEIMAGEUTIL_HPP 3c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim/*------------------------------------------------------------------------ 4c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * Vulkan Conformance Tests 5c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * ------------------------ 6c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * 7c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * Copyright (c) 2015 The Khronos Group Inc. 8c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * Copyright (c) 2015 Imagination Technologies Ltd. 9c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * 10978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License"); 11978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * you may not use this file except in compliance with the License. 12978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * You may obtain a copy of the License at 13c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * 14978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * http://www.apache.org/licenses/LICENSE-2.0 15c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * 16978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Unless required by applicable law or agreed to in writing, software 17978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS, 18978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * See the License for the specific language governing permissions and 20978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * limitations under the License. 21c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * 22c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim *//*! 23c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * \file 24c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * \brief Utilities for images. 25c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim *//*--------------------------------------------------------------------*/ 26c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim 27c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "tcuDefs.hpp" 28c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "vkDefs.hpp" 29c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "vkDefs.hpp" 30c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "vkPlatform.hpp" 31c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "vkMemUtil.hpp" 32c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "vkRef.hpp" 33c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#include "tcuTexture.hpp" 3483a6066224454de177655eb414dd3453c2059536Dae Kim#include "tcuCompressedTexture.hpp" 35c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim 36c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kimnamespace vkt 37c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim{ 38c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kimnamespace pipeline 39c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim{ 40c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim 4183a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture; 4283a6066224454de177655eb414dd3453c2059536Dae Kim 4383a6066224454de177655eb414dd3453c2059536Dae Kimenum BorderColor 4483a6066224454de177655eb414dd3453c2059536Dae Kim{ 4583a6066224454de177655eb414dd3453c2059536Dae Kim BORDER_COLOR_OPAQUE_BLACK, 4683a6066224454de177655eb414dd3453c2059536Dae Kim BORDER_COLOR_OPAQUE_WHITE, 4783a6066224454de177655eb414dd3453c2059536Dae Kim BORDER_COLOR_TRANSPARENT_BLACK, 4883a6066224454de177655eb414dd3453c2059536Dae Kim 4983a6066224454de177655eb414dd3453c2059536Dae Kim BORDER_COLOR_COUNT 5083a6066224454de177655eb414dd3453c2059536Dae Kim}; 5183a6066224454de177655eb414dd3453c2059536Dae Kim 52549732add51d3906362b924a946a015eef134df5Pyry Haulosbool isSupportedSamplableFormat (const vk::InstanceInterface& instanceInterface, 53549732add51d3906362b924a946a015eef134df5Pyry Haulos vk::VkPhysicalDevice device, 54549732add51d3906362b924a946a015eef134df5Pyry Haulos vk::VkFormat format); 55549732add51d3906362b924a946a015eef134df5Pyry Haulosbool isLinearFilteringSupported (const vk::InstanceInterface& instanceInterface, 56549732add51d3906362b924a946a015eef134df5Pyry Haulos vk::VkPhysicalDevice device, 57549732add51d3906362b924a946a015eef134df5Pyry Haulos vk::VkFormat format, 58549732add51d3906362b924a946a015eef134df5Pyry Haulos vk::VkImageTiling tiling); 5983a6066224454de177655eb414dd3453c2059536Dae Kim 6083a6066224454de177655eb414dd3453c2059536Dae Kimvk::VkBorderColor getFormatBorderColor (BorderColor color, vk::VkFormat format); 6183a6066224454de177655eb414dd3453c2059536Dae Kim 62387999c58e55306e26ea6a8abd371174d35ee640Pyry Haulosvoid getLookupScaleBias (vk::VkFormat format, 63387999c58e55306e26ea6a8abd371174d35ee640Pyry Haulos tcu::Vec4& lookupScale, 64387999c58e55306e26ea6a8abd371174d35ee640Pyry Haulos tcu::Vec4& lookupBias); 65387999c58e55306e26ea6a8abd371174d35ee640Pyry Haulos 66c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim/*--------------------------------------------------------------------*//*! 67c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * Gets a tcu::TextureLevel initialized with data from a VK color 68c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * attachment. 69c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * 70c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * The VkImage must be non-multisampled and able to be used as a source 71c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim * operand for transfer operations. 72c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim *//*--------------------------------------------------------------------*/ 7383a6066224454de177655eb414dd3453c2059536Dae Kimde::MovePtr<tcu::TextureLevel> readColorAttachment (const vk::DeviceInterface& vk, 7483a6066224454de177655eb414dd3453c2059536Dae Kim vk::VkDevice device, 7583a6066224454de177655eb414dd3453c2059536Dae Kim vk::VkQueue queue, 7683a6066224454de177655eb414dd3453c2059536Dae Kim deUint32 queueFamilyIndex, 7783a6066224454de177655eb414dd3453c2059536Dae Kim vk::Allocator& allocator, 7883a6066224454de177655eb414dd3453c2059536Dae Kim vk::VkImage image, 7983a6066224454de177655eb414dd3453c2059536Dae Kim vk::VkFormat format, 80689c095f881a410da6a315795452a8e00ad95a9dPyry Haulos const tcu::UVec2& renderSize); 8183a6066224454de177655eb414dd3453c2059536Dae Kim 8283a6066224454de177655eb414dd3453c2059536Dae Kim/*--------------------------------------------------------------------*//*! 8383a6066224454de177655eb414dd3453c2059536Dae Kim * Uploads data from a test texture to a destination VK image. 8483a6066224454de177655eb414dd3453c2059536Dae Kim * 8583a6066224454de177655eb414dd3453c2059536Dae Kim * The VkImage must be non-multisampled and able to be used as a 8683a6066224454de177655eb414dd3453c2059536Dae Kim * destination operand for transfer operations. 8783a6066224454de177655eb414dd3453c2059536Dae Kim *//*--------------------------------------------------------------------*/ 8894128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulosvoid uploadTestTexture (const vk::DeviceInterface& vk, 8994128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos vk::VkDevice device, 9094128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos vk::VkQueue queue, 9194128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos deUint32 queueFamilyIndex, 9294128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos vk::Allocator& allocator, 9394128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos const TestTexture& testTexture, 9494128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos vk::VkImage destImage); 9583a6066224454de177655eb414dd3453c2059536Dae Kim 9683a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture 9783a6066224454de177655eb414dd3453c2059536Dae Kim{ 9883a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 9983a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture (const tcu::TextureFormat& format, int width, int height, int depth); 10083a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture (const tcu::CompressedTexFormat& format, int width, int height, int depth); 10183a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTexture (void); 10283a6066224454de177655eb414dd3453c2059536Dae Kim 10383a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const = 0; 10483a6066224454de177655eb414dd3453c2059536Dae Kim virtual deUint32 getSize (void) const; 10583a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getArraySize (void) const { return 1; } 10683a6066224454de177655eb414dd3453c2059536Dae Kim 10783a6066224454de177655eb414dd3453c2059536Dae Kim virtual bool isCompressed (void) const { return !m_compressedLevels.empty(); } 10883a6066224454de177655eb414dd3453c2059536Dae Kim virtual deUint32 getCompressedSize (void) const; 10983a6066224454de177655eb414dd3453c2059536Dae Kim 11083a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer) = 0; 11183a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const = 0; 11283a6066224454de177655eb414dd3453c2059536Dae Kim 11383a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::CompressedTexture& getCompressedLevel (int level, int layer); 11483a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::CompressedTexture& getCompressedLevel (int level, int layer) const; 11583a6066224454de177655eb414dd3453c2059536Dae Kim 11683a6066224454de177655eb414dd3453c2059536Dae Kim virtual std::vector<vk::VkBufferImageCopy> getBufferCopyRegions (void) const; 11783a6066224454de177655eb414dd3453c2059536Dae Kim virtual void write (deUint8* destPtr) const; 118d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const = 0; 11994128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos 12041702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const = 0; 12141702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const = 0; 12241702fa78437820bc601e604de6a490eb09513ddPeter Siket 12383a6066224454de177655eb414dd3453c2059536Dae Kimprotected: 12483a6066224454de177655eb414dd3453c2059536Dae Kim void populateLevels (const std::vector<tcu::PixelBufferAccess>& levels); 1253a40c1645672ac36c31e4275b9b00ec3effa02c8Pyry Haulos void populateCompressedLevels (tcu::CompressedTexFormat format, const std::vector<tcu::PixelBufferAccess>& decompressedLevels); 12683a6066224454de177655eb414dd3453c2059536Dae Kim 12783a6066224454de177655eb414dd3453c2059536Dae Kim static void fillWithGradient (const tcu::PixelBufferAccess& levelAccess); 12894128dffb454628346f09bb736e0f4ace9df0b9ePyry Haulos 129d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan void copyToTexture (TestTexture&) const; 130d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 13183a6066224454de177655eb414dd3453c2059536Dae Kimprotected: 13283a6066224454de177655eb414dd3453c2059536Dae Kim std::vector<tcu::CompressedTexture*> m_compressedLevels; 13383a6066224454de177655eb414dd3453c2059536Dae Kim}; 13483a6066224454de177655eb414dd3453c2059536Dae Kim 13583a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture1D : public TestTexture 13683a6066224454de177655eb414dd3453c2059536Dae Kim{ 13783a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 13883a6066224454de177655eb414dd3453c2059536Dae Kim tcu::Texture1D m_texture; 13983a6066224454de177655eb414dd3453c2059536Dae Kim 14083a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 14141702fa78437820bc601e604de6a490eb09513ddPeter Siket TestTexture1D (const tcu::TextureFormat& format, int width); 14241702fa78437820bc601e604de6a490eb09513ddPeter Siket TestTexture1D (const tcu::CompressedTexFormat& format, int width); 14341702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual ~TestTexture1D (void); 14483a6066224454de177655eb414dd3453c2059536Dae Kim 14583a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 14641702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::PixelBufferAccess getLevel (int level, int layer); 14741702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 14841702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::Texture1D& getTexture (void) const; 14941702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::Texture1D& getTexture (void); 15041702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 15141702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getWidth(), 1, 1); } 152d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 153d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 15483a6066224454de177655eb414dd3453c2059536Dae Kim}; 15583a6066224454de177655eb414dd3453c2059536Dae Kim 15683a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture1DArray : public TestTexture 15783a6066224454de177655eb414dd3453c2059536Dae Kim{ 15883a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 15983a6066224454de177655eb414dd3453c2059536Dae Kim tcu::Texture1DArray m_texture; 16083a6066224454de177655eb414dd3453c2059536Dae Kim 16183a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 16283a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture1DArray (const tcu::TextureFormat& format, int width, int arraySize); 16383a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture1DArray (const tcu::CompressedTexFormat& format, int width, int arraySize); 16483a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTexture1DArray (void); 16583a6066224454de177655eb414dd3453c2059536Dae Kim 16683a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 16783a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer); 16883a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 16983a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::Texture1DArray& getTexture (void) const; 17041702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::Texture1DArray& getTexture (void); 17183a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getArraySize (void) const; 17241702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 17341702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getWidth(), 1, 1); } 174d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 175d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 17683a6066224454de177655eb414dd3453c2059536Dae Kim}; 17783a6066224454de177655eb414dd3453c2059536Dae Kim 17883a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture2D : public TestTexture 17983a6066224454de177655eb414dd3453c2059536Dae Kim{ 18083a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 18183a6066224454de177655eb414dd3453c2059536Dae Kim tcu::Texture2D m_texture; 18283a6066224454de177655eb414dd3453c2059536Dae Kim 18383a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 18483a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture2D (const tcu::TextureFormat& format, int width, int height); 18583a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture2D (const tcu::CompressedTexFormat& format, int width, int height); 18683a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTexture2D (void); 18783a6066224454de177655eb414dd3453c2059536Dae Kim 18883a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 18983a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer); 19083a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 19183a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::Texture2D& getTexture (void) const; 19241702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::Texture2D& getTexture (void); 19341702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 19441702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getWidth(), m_texture.getHeight(), 1); } 195d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 196d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 19783a6066224454de177655eb414dd3453c2059536Dae Kim}; 19883a6066224454de177655eb414dd3453c2059536Dae Kim 19983a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture2DArray : public TestTexture 20083a6066224454de177655eb414dd3453c2059536Dae Kim{ 20183a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 20283a6066224454de177655eb414dd3453c2059536Dae Kim tcu::Texture2DArray m_texture; 20383a6066224454de177655eb414dd3453c2059536Dae Kim 20483a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 20583a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture2DArray (const tcu::TextureFormat& format, int width, int height, int arraySize); 20683a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture2DArray (const tcu::CompressedTexFormat& format, int width, int height, int arraySize); 20783a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTexture2DArray (void); 20883a6066224454de177655eb414dd3453c2059536Dae Kim 20983a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 21083a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer); 21183a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 21283a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::Texture2DArray& getTexture (void) const; 21341702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::Texture2DArray& getTexture (void); 21483a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getArraySize (void) const; 21541702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 21641702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getWidth(), m_texture.getHeight(), 1); } 217d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 218d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 21983a6066224454de177655eb414dd3453c2059536Dae Kim}; 22083a6066224454de177655eb414dd3453c2059536Dae Kim 22183a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTexture3D : public TestTexture 22283a6066224454de177655eb414dd3453c2059536Dae Kim{ 22383a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 22483a6066224454de177655eb414dd3453c2059536Dae Kim tcu::Texture3D m_texture; 22583a6066224454de177655eb414dd3453c2059536Dae Kim 22683a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 22783a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture3D (const tcu::TextureFormat& format, int width, int height, int depth); 22883a6066224454de177655eb414dd3453c2059536Dae Kim TestTexture3D (const tcu::CompressedTexFormat& format, int width, int height, int depth); 22983a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTexture3D (void); 23083a6066224454de177655eb414dd3453c2059536Dae Kim 23183a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 23283a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer); 23383a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 23483a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::Texture3D& getTexture (void) const; 23541702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::Texture3D& getTexture (void); 23641702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 23741702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getWidth(), m_texture.getHeight(), m_texture.getDepth()); } 238d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 239d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 24083a6066224454de177655eb414dd3453c2059536Dae Kim}; 24183a6066224454de177655eb414dd3453c2059536Dae Kim 24283a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTextureCube : public TestTexture 24383a6066224454de177655eb414dd3453c2059536Dae Kim{ 24483a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 24583a6066224454de177655eb414dd3453c2059536Dae Kim tcu::TextureCube m_texture; 24683a6066224454de177655eb414dd3453c2059536Dae Kim 24783a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 24883a6066224454de177655eb414dd3453c2059536Dae Kim TestTextureCube (const tcu::TextureFormat& format, int size); 24983a6066224454de177655eb414dd3453c2059536Dae Kim TestTextureCube (const tcu::CompressedTexFormat& format, int size); 25083a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTextureCube (void); 25183a6066224454de177655eb414dd3453c2059536Dae Kim 25283a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 25383a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer); 25483a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 25583a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getArraySize (void) const; 25683a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::TextureCube& getTexture (void) const; 25741702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::TextureCube& getTexture (void); 25841702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 25941702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getSize(), m_texture.getSize(), 1); } 260d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 261d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 26283a6066224454de177655eb414dd3453c2059536Dae Kim}; 26383a6066224454de177655eb414dd3453c2059536Dae Kim 26483a6066224454de177655eb414dd3453c2059536Dae Kimclass TestTextureCubeArray: public TestTexture 26583a6066224454de177655eb414dd3453c2059536Dae Kim{ 26683a6066224454de177655eb414dd3453c2059536Dae Kimprivate: 26783a6066224454de177655eb414dd3453c2059536Dae Kim tcu::TextureCubeArray m_texture; 26883a6066224454de177655eb414dd3453c2059536Dae Kim 26983a6066224454de177655eb414dd3453c2059536Dae Kimpublic: 27083a6066224454de177655eb414dd3453c2059536Dae Kim TestTextureCubeArray (const tcu::TextureFormat& format, int size, int arraySize); 27183a6066224454de177655eb414dd3453c2059536Dae Kim TestTextureCubeArray (const tcu::CompressedTexFormat& format, int size, int arraySize); 27283a6066224454de177655eb414dd3453c2059536Dae Kim virtual ~TestTextureCubeArray (void); 27383a6066224454de177655eb414dd3453c2059536Dae Kim 27483a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getNumLevels (void) const; 27583a6066224454de177655eb414dd3453c2059536Dae Kim virtual tcu::PixelBufferAccess getLevel (int level, int layer); 27683a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; 27783a6066224454de177655eb414dd3453c2059536Dae Kim virtual int getArraySize (void) const; 27883a6066224454de177655eb414dd3453c2059536Dae Kim virtual const tcu::TextureCubeArray& getTexture (void) const; 27941702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::TextureCubeArray& getTexture (void); 28041702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); } 28141702fa78437820bc601e604de6a490eb09513ddPeter Siket virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getSize(), m_texture.getSize(), 1); } 282d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan 283d766ec7288478fd296695e6be1dc02b29b2de3aeSzilard Ledan virtual de::MovePtr<TestTexture> copy (const tcu::TextureFormat) const; 28483a6066224454de177655eb414dd3453c2059536Dae Kim}; 285c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim 286c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim} // pipeline 287c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim} // vkt 288c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim 289c6e8b5a8389a64972259b357407b5e0f4edd5716Dae Kim#endif // _VKTPIPELINEIMAGEUTIL_HPP 290