• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _VKTAPICOMPUTEINSTANCERESULTBUFFER_HPP
2 #define _VKTAPICOMPUTEINSTANCERESULTBUFFER_HPP
3 /*-------------------------------------------------------------------------
4  * Vulkan Conformance Tests
5  * ------------------------
6  *
7  * Copyright (c) 2015 The Khronos Group Inc.
8  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
9  * Copyright (c) 2015 Google Inc.
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  *
23  *//*--------------------------------------------------------------------*/
24 
25 #include "tcuDefs.hpp"
26 #include "tcuTestLog.hpp"
27 #include "deUniquePtr.hpp"
28 #include "vkRef.hpp"
29 #include "vkMemUtil.hpp"
30 #include "vkQueryUtil.hpp"
31 
32 namespace vkt
33 {
34 
35 namespace api
36 {
37 
38 class ComputeInstanceResultBuffer
39 {
40 public:
41 	enum
42 	{
43 		DATA_SIZE = sizeof(tcu::Vec4[4])
44 	};
45 
46 											ComputeInstanceResultBuffer (const vk::DeviceInterface &vki,
47 																				vk::VkDevice device,
48 																				vk::Allocator &allocator);
49 
50 	void									readResultContentsTo(tcu::Vec4 (* results)[4]) const;
51 
getBuffer(void) const52 	inline vk::VkBuffer						getBuffer(void) const { return *m_buffer; }
53 
getResultReadBarrier(void) const54 	inline const vk::VkBufferMemoryBarrier*	getResultReadBarrier(void) const { return &m_bufferBarrier; }
55 
56 private:
57 	static vk::Move<vk::VkBuffer>			createResultBuffer(const vk::DeviceInterface &vki,
58 														vk::VkDevice device,
59 														vk::Allocator &allocator,
60 														de::MovePtr<vk::Allocation>* outAllocation);
61 
62 	static vk::VkBufferMemoryBarrier		createResultBufferBarrier(vk::VkBuffer buffer);
63 
64 	const vk::DeviceInterface &				m_vki;
65 	const vk::VkDevice						m_device;
66 
67 	de::MovePtr<vk::Allocation>				m_bufferMem;
68 	const vk::Unique<vk::VkBuffer>			m_buffer;
69 	const vk::VkBufferMemoryBarrier			m_bufferBarrier;
70 };
71 
72 } // api
73 } // vkt
74 
75 #endif // _VKTAPICOMPUTEINSTANCERESULTBUFFER_HPP
76