1 #ifndef _VKTSYNCHRONIZATIONOPERATIONTESTDATA_HPP
2 #define _VKTSYNCHRONIZATIONOPERATIONTESTDATA_HPP
3 /*------------------------------------------------------------------------
4 * Vulkan Conformance Tests
5 * ------------------------
7 * Copyright (c) 2016 The Khronos Group Inc.
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 * \brief Synchronization operation static data
24 *//*--------------------------------------------------------------------*/
26 #include "tcuDefs.hpp"
28 #include "tcuVector.hpp"
29 #include "vktSynchronizationOperation.hpp"
33 namespace synchronization
36 static const ResourceDescription s_resources[] =
38 { RESOURCE_TYPE_BUFFER, tcu::IVec4( 0x4000, 0, 0, 0), vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0 }, // 16 KiB (min max UBO range)
39 { RESOURCE_TYPE_BUFFER, tcu::IVec4(0x40000, 0, 0, 0), vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0 }, // 256 KiB
41 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 0, 0, 0), vk::VK_IMAGE_TYPE_1D, vk::VK_FORMAT_R32_UINT, vk::VK_IMAGE_ASPECT_COLOR_BIT },
43 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8_UNORM, vk::VK_IMAGE_ASPECT_COLOR_BIT },
44 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R16_UINT, vk::VK_IMAGE_ASPECT_COLOR_BIT },
45 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, vk::VK_IMAGE_ASPECT_COLOR_BIT },
46 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R16G16B16A16_UINT, vk::VK_IMAGE_ASPECT_COLOR_BIT },
47 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R32G32B32A32_SFLOAT, vk::VK_IMAGE_ASPECT_COLOR_BIT },
49 { RESOURCE_TYPE_IMAGE, tcu::IVec4(64, 64, 8, 0), vk::VK_IMAGE_TYPE_3D, vk::VK_FORMAT_R32_SFLOAT, vk::VK_IMAGE_ASPECT_COLOR_BIT },
51 // \note Mixed depth/stencil formats add complexity in image<->buffer transfers (packing), so we just avoid them here
52 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_D16_UNORM, vk::VK_IMAGE_ASPECT_DEPTH_BIT },
53 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_D32_SFLOAT, vk::VK_IMAGE_ASPECT_DEPTH_BIT },
54 { RESOURCE_TYPE_IMAGE, tcu::IVec4(128, 128, 0, 0), vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_S8_UINT, vk::VK_IMAGE_ASPECT_STENCIL_BIT },
56 // \note Special resources, when test case isn't strictly a copy and comparison of some data
57 { RESOURCE_TYPE_INDIRECT_BUFFER_DRAW, tcu::IVec4(sizeof(vk::VkDrawIndirectCommand), 0, 0, 0), vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0 },
58 { RESOURCE_TYPE_INDIRECT_BUFFER_DRAW_INDEXED, tcu::IVec4(sizeof(vk::VkDrawIndexedIndirectCommand), 0, 0, 0), vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0 },
59 { RESOURCE_TYPE_INDIRECT_BUFFER_DISPATCH, tcu::IVec4(sizeof(vk::VkDispatchIndirectCommand), 0, 0, 0), vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0 },
62 static const OperationName s_writeOps[] =
64 OPERATION_NAME_WRITE_FILL_BUFFER,
65 OPERATION_NAME_WRITE_UPDATE_BUFFER,
66 OPERATION_NAME_WRITE_COPY_BUFFER,
67 OPERATION_NAME_WRITE_COPY_BUFFER_TO_IMAGE,
68 OPERATION_NAME_WRITE_COPY_IMAGE_TO_BUFFER,
69 OPERATION_NAME_WRITE_COPY_IMAGE,
70 OPERATION_NAME_WRITE_BLIT_IMAGE,
71 OPERATION_NAME_WRITE_SSBO_VERTEX,
72 OPERATION_NAME_WRITE_SSBO_TESSELLATION_CONTROL,
73 OPERATION_NAME_WRITE_SSBO_TESSELLATION_EVALUATION,
74 OPERATION_NAME_WRITE_SSBO_GEOMETRY,
75 OPERATION_NAME_WRITE_SSBO_FRAGMENT,
76 OPERATION_NAME_WRITE_SSBO_COMPUTE,
77 OPERATION_NAME_WRITE_SSBO_COMPUTE_INDIRECT,
78 OPERATION_NAME_WRITE_IMAGE_VERTEX,
79 OPERATION_NAME_WRITE_IMAGE_TESSELLATION_CONTROL,
80 OPERATION_NAME_WRITE_IMAGE_TESSELLATION_EVALUATION,
81 OPERATION_NAME_WRITE_IMAGE_GEOMETRY,
82 OPERATION_NAME_WRITE_IMAGE_FRAGMENT,
83 OPERATION_NAME_WRITE_IMAGE_COMPUTE,
84 OPERATION_NAME_WRITE_IMAGE_COMPUTE_INDIRECT,
85 OPERATION_NAME_WRITE_CLEAR_COLOR_IMAGE,
86 OPERATION_NAME_WRITE_CLEAR_DEPTH_STENCIL_IMAGE,
87 OPERATION_NAME_WRITE_DRAW,
88 OPERATION_NAME_WRITE_DRAW_INDEXED,
89 OPERATION_NAME_WRITE_DRAW_INDIRECT,
90 OPERATION_NAME_WRITE_DRAW_INDEXED_INDIRECT,
91 OPERATION_NAME_WRITE_CLEAR_ATTACHMENTS,
92 OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW,
93 OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW_INDEXED,
94 OPERATION_NAME_WRITE_INDIRECT_BUFFER_DISPATCH,
97 static const OperationName s_readOps[] =
99 OPERATION_NAME_READ_COPY_BUFFER,
100 OPERATION_NAME_READ_COPY_BUFFER_TO_IMAGE,
101 OPERATION_NAME_READ_COPY_IMAGE_TO_BUFFER,
102 OPERATION_NAME_READ_COPY_IMAGE,
103 OPERATION_NAME_READ_BLIT_IMAGE,
104 OPERATION_NAME_READ_UBO_VERTEX,
105 OPERATION_NAME_READ_UBO_TESSELLATION_CONTROL,
106 OPERATION_NAME_READ_UBO_TESSELLATION_EVALUATION,
107 OPERATION_NAME_READ_UBO_GEOMETRY,
108 OPERATION_NAME_READ_UBO_FRAGMENT,
109 OPERATION_NAME_READ_UBO_COMPUTE,
110 OPERATION_NAME_READ_UBO_COMPUTE_INDIRECT,
111 OPERATION_NAME_READ_SSBO_VERTEX,
112 OPERATION_NAME_READ_SSBO_TESSELLATION_CONTROL,
113 OPERATION_NAME_READ_SSBO_TESSELLATION_EVALUATION,
114 OPERATION_NAME_READ_SSBO_GEOMETRY,
115 OPERATION_NAME_READ_SSBO_FRAGMENT,
116 OPERATION_NAME_READ_SSBO_COMPUTE,
117 OPERATION_NAME_READ_SSBO_COMPUTE_INDIRECT,
118 OPERATION_NAME_READ_IMAGE_VERTEX,
119 OPERATION_NAME_READ_IMAGE_TESSELLATION_CONTROL,
120 OPERATION_NAME_READ_IMAGE_TESSELLATION_EVALUATION,
121 OPERATION_NAME_READ_IMAGE_GEOMETRY,
122 OPERATION_NAME_READ_IMAGE_FRAGMENT,
123 OPERATION_NAME_READ_IMAGE_COMPUTE,
124 OPERATION_NAME_READ_IMAGE_COMPUTE_INDIRECT,
125 OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW,
126 OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW_INDEXED,
127 OPERATION_NAME_READ_INDIRECT_BUFFER_DISPATCH,
128 OPERATION_NAME_READ_VERTEX_INPUT,
134 #endif // _VKTSYNCHRONIZATIONOPERATIONTESTDATA_HPP