• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _VKTSPVASMCOMPUTESHADERCASE_HPP
2 #define _VKTSPVASMCOMPUTESHADERCASE_HPP
3 /*-------------------------------------------------------------------------
4  * Vulkan Conformance Tests
5  * ------------------------
6  *
7  * Copyright (c) 2015 Google 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
23  * \brief Test Case Skeleton Based on Compute Shaders
24  *//*--------------------------------------------------------------------*/
25 
26 #include "vkPrograms.hpp"
27 #include "vktTestCase.hpp"
28 
29 #include "vktSpvAsmComputeShaderTestUtil.hpp"
30 
31 namespace vkt
32 {
33 namespace SpirVAssembly
34 {
35 /*--------------------------------------------------------------------*//*!
36  * \brief Test instance for compute pipeline
37  *
38  * The compute shader is specified in the format of SPIR-V assembly, which
39  * is allowed to access MAX_NUM_INPUT_BUFFERS input storage buffers and
40  * MAX_NUM_OUTPUT_BUFFERS output storage buffers maximally. The shader
41  * source and input/output data are given in a ComputeShaderSpec object.
42  *
43  * This instance runs the given compute shader by feeding the data from input
44  * buffers and compares the data in the output buffers with the expected.
45  *//*--------------------------------------------------------------------*/
46 class SpvAsmComputeShaderInstance : public TestInstance
47 {
48 public:
49 										SpvAsmComputeShaderInstance	(Context& ctx, const ComputeShaderSpec& spec);
50 	tcu::TestStatus						iterate						(void);
51 
52 private:
53 	const ComputeShaderSpec&			m_shaderSpec;
54 };
55 
56 class SpvAsmComputeShaderCase : public TestCase
57 {
58 public:
59 						SpvAsmComputeShaderCase	(tcu::TestContext& testCtx, const char* name, const char* description, const ComputeShaderSpec& spec);
60 	void				checkSupport			(Context& context) const;
61 	void				initPrograms			(vk::SourceCollections& programCollection) const;
62 	TestInstance*		createInstance			(Context& ctx) const;
63 
64 private:
65 	ComputeShaderSpec	m_shaderSpec;
66 };
67 
68 } // SpirVAssembly
69 } // vkt
70 
71 #endif // _VKTSPVASMCOMPUTESHADERCASE_HPP
72