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