#ifndef _VKTSPARSERESOURCESSHADERINTRINSICSSAMPLED_HPP #define _VKTSPARSERESOURCESSHADERINTRINSICSSAMPLED_HPP /*------------------------------------------------------------------------ * Vulkan Conformance Tests * ------------------------ * * Copyright (c) 2016 The Khronos Group Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *//*! * \file vktSparseResourcesShaderIntrinsicsSampled.hpp * \brief Sparse Resources Shader Intrinsics for sampled images *//*--------------------------------------------------------------------*/ #include "vktSparseResourcesShaderIntrinsicsBase.hpp" namespace vkt { namespace sparse { class SparseShaderIntrinsicsCaseSampledBase : public SparseShaderIntrinsicsCaseBase { public: SparseShaderIntrinsicsCaseSampledBase (tcu::TestContext& testCtx, const std::string& name, const SpirVFunction function, const ImageType imageType, const tcu::UVec3& imageSize, const vk::VkFormat format) : SparseShaderIntrinsicsCaseBase (testCtx, name, function, imageType, imageSize, format) {} void initPrograms (vk::SourceCollections& programCollection) const; virtual std::string sparseImageOpString (const std::string& resultVariable, const std::string& resultType, const std::string& image, const std::string& coord, const std::string& miplevel) const = 0; }; class SparseShaderIntrinsicsCaseSampledExplicit : public SparseShaderIntrinsicsCaseSampledBase { public: SparseShaderIntrinsicsCaseSampledExplicit (tcu::TestContext& testCtx, const std::string& name, const SpirVFunction function, const ImageType imageType, const tcu::UVec3& imageSize, const vk::VkFormat format) : SparseShaderIntrinsicsCaseSampledBase (testCtx, name, function, imageType, imageSize, format) {} TestInstance* createInstance (Context& context) const; }; class SparseCaseOpImageSparseSampleExplicitLod : public SparseShaderIntrinsicsCaseSampledExplicit { public: SparseCaseOpImageSparseSampleExplicitLod (tcu::TestContext& testCtx, const std::string& name, const SpirVFunction function, const ImageType imageType, const tcu::UVec3& imageSize, const vk::VkFormat format) : SparseShaderIntrinsicsCaseSampledExplicit (testCtx, name, function, imageType, imageSize, format) {} std::string sparseImageOpString (const std::string& resultVariable, const std::string& resultType, const std::string& image, const std::string& coord, const std::string& miplevel) const; }; class SparseShaderIntrinsicsCaseSampledImplicit : public SparseShaderIntrinsicsCaseSampledBase { public: SparseShaderIntrinsicsCaseSampledImplicit (tcu::TestContext& testCtx, const std::string& name, const SpirVFunction function, const ImageType imageType, const tcu::UVec3& imageSize, const vk::VkFormat format) : SparseShaderIntrinsicsCaseSampledBase (testCtx, name, function, imageType, imageSize, format) {} TestInstance* createInstance (Context& context) const; }; class SparseCaseOpImageSparseSampleImplicitLod : public SparseShaderIntrinsicsCaseSampledImplicit { public: SparseCaseOpImageSparseSampleImplicitLod (tcu::TestContext& testCtx, const std::string& name, const SpirVFunction function, const ImageType imageType, const tcu::UVec3& imageSize, const vk::VkFormat format) : SparseShaderIntrinsicsCaseSampledImplicit (testCtx, name, function, imageType, imageSize, format) {} std::string sparseImageOpString (const std::string& resultVariable, const std::string& resultType, const std::string& image, const std::string& coord, const std::string& miplevel) const; }; class SparseCaseOpImageSparseGather : public SparseShaderIntrinsicsCaseSampledImplicit { public: SparseCaseOpImageSparseGather (tcu::TestContext& testCtx, const std::string& name, const SpirVFunction function, const ImageType imageType, const tcu::UVec3& imageSize, const vk::VkFormat format) : SparseShaderIntrinsicsCaseSampledImplicit (testCtx, name, function, imageType, imageSize, format) {} std::string sparseImageOpString (const std::string& resultVariable, const std::string& resultType, const std::string& image, const std::string& coord, const std::string& miplevel) const; }; } // sparse } // vkt #endif // _VKTSPARSERESOURCESSHADERINTRINSICSSAMPLED_HPP