• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _VKTSPARSERESOURCESSHADERINTRINSICSSTORAGE_HPP
2 #define _VKTSPARSERESOURCESSHADERINTRINSICSSTORAGE_HPP
3 /*------------------------------------------------------------------------
4  * Vulkan Conformance Tests
5  * ------------------------
6  *
7  * Copyright (c) 2016 The Khronos Group Inc.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  *//*!
22  * \file  vktSparseResourcesShaderIntrinsicsStorage.hpp
23  * \brief Sparse Resources Shader Intrinsics for storage images
24  *//*--------------------------------------------------------------------*/
25 
26 #include "vktSparseResourcesShaderIntrinsicsBase.hpp"
27 
28 namespace vkt
29 {
30 namespace sparse
31 {
32 
33 class SparseShaderIntrinsicsCaseStorage : public SparseShaderIntrinsicsCaseBase
34 {
35 public:
SparseShaderIntrinsicsCaseStorage(tcu::TestContext & testCtx,const std::string & name,const SpirVFunction function,const ImageType imageType,const tcu::UVec3 & imageSize,const vk::VkFormat format)36 	SparseShaderIntrinsicsCaseStorage						(tcu::TestContext&		testCtx,
37 															 const std::string&		name,
38 															 const SpirVFunction	function,
39 															 const ImageType		imageType,
40 															 const tcu::UVec3&		imageSize,
41 															 const vk::VkFormat		format)
42 		: SparseShaderIntrinsicsCaseBase(testCtx, name, function, imageType, imageSize, format) {}
43 
44 	void				initPrograms						(vk::SourceCollections&	programCollection) const;
45 
46 	virtual std::string	getSparseImageTypeName				(void) const = 0;
47 	virtual std::string	getUniformConstSparseImageTypeName	(void) const = 0;
48 
49 	virtual std::string	sparseImageOpString					(const std::string&		resultVariable,
50 															 const std::string&		resultType,
51 															 const std::string&		image,
52 															 const std::string&		coord,
53 															 const std::string&		mipLevel) const = 0;
54 };
55 
56 class SparseCaseOpImageSparseFetch : public SparseShaderIntrinsicsCaseStorage
57 {
58 public:
SparseCaseOpImageSparseFetch(tcu::TestContext & testCtx,const std::string & name,const SpirVFunction function,const ImageType imageType,const tcu::UVec3 & imageSize,const vk::VkFormat format)59 	SparseCaseOpImageSparseFetch						(tcu::TestContext&		testCtx,
60 														 const std::string&		name,
61 														 const SpirVFunction	function,
62 														 const ImageType		imageType,
63 														 const tcu::UVec3&		imageSize,
64 														 const vk::VkFormat		format)
65 		: SparseShaderIntrinsicsCaseStorage (testCtx, name, function, imageType, imageSize, format) {}
66 
67 	TestInstance*	createInstance						(Context&				context) const;
68 
69 	std::string		getSparseImageTypeName				(void) const;
70 	std::string		getUniformConstSparseImageTypeName	(void) const;
71 
72 	std::string		sparseImageOpString					(const std::string&		resultVariable,
73 														 const std::string&		resultType,
74 														 const std::string&		image,
75 														 const std::string&		coord,
76 														 const std::string&		mipLevel) const;
77 };
78 
79 class SparseCaseOpImageSparseRead : public SparseShaderIntrinsicsCaseStorage
80 {
81 public:
SparseCaseOpImageSparseRead(tcu::TestContext & testCtx,const std::string & name,const SpirVFunction function,const ImageType imageType,const tcu::UVec3 & imageSize,const vk::VkFormat format)82 	SparseCaseOpImageSparseRead							(tcu::TestContext&		testCtx,
83 														 const std::string&		name,
84 														 const SpirVFunction	function,
85 														 const ImageType		imageType,
86 														 const tcu::UVec3&		imageSize,
87 														 const vk::VkFormat		format)
88 		: SparseShaderIntrinsicsCaseStorage (testCtx, name, function, imageType, imageSize, format) {}
89 
90 	TestInstance*	createInstance						(Context&				context) const;
91 
92 	std::string		getSparseImageTypeName				(void) const;
93 	std::string		getUniformConstSparseImageTypeName	(void) const;
94 
95 	std::string		sparseImageOpString					(const std::string&		resultVariable,
96 														 const std::string&		resultType,
97 														 const std::string&		image,
98 														 const std::string&		coord,
99 														 const std::string&		mipLevel) const;
100 };
101 
102 } // sparse
103 } // vkt
104 
105 #endif // _VKTSPARSERESOURCESSHADERINTRINSICSSTORAGE_HPP
106