2 # Split into two libraries - one that depends on spirv/glslang libraries
3 # which have long build times, and one that can build in parallel with those.
5 include(CheckIncludeFileCXX)
6 check_include_file_cxx(
7 ${CMAKE_SOURCE_DIR}/external/renderdoc/src/renderdoc_app.h
9 if(HAVE_RENDERDOC_APP_H)
10 set(VKRENDERDOC_SRC vkRenderDocUtil.cpp)
12 set(VKRENDERDOC_SRC vkNoRenderDocUtil.cpp)
13 endif(HAVE_RENDERDOC_APP_H)
17 set(DEQP_VULKAN_INL_GEN_INPUT ${PROJECT_SOURCE_DIR}/external/vulkan-docs/src/xml/vk.xml)
18 set(DEQP_VULKAN_INL_GEN_OUTPUTS_DIR ${PROJECT_SOURCE_DIR}/external/vulkancts/framework/vulkan)
19 set(DEQP_VULKAN_INL_GEN_OUTPUTS
20 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkApiExtensionDependencyInfo.inl
21 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkBasicTypes.inl
22 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkConcreteDeviceInterface.inl
23 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkConcreteInstanceInterface.inl
24 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkConcretePlatformInterface.inl
25 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkCoreFunctionalities.inl
26 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceDriverImpl.inl
27 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceExtensions.inl
28 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceFeatures.inl
29 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceFeatures2.inl
30 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceFeaturesForContextDecl.inl
31 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceFeaturesForContextDefs.inl
32 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceFeaturesForDefaultDeviceDefs.inl
33 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceFunctionPointers.inl
34 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDeviceProperties.inl
35 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDevicePropertiesForContextDecl.inl
36 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDevicePropertiesForContextDefs.inl
37 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkDevicePropertiesForDefaultDeviceDefs.inl
38 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkExtensionFunctions.inl
39 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkFunctionPointerTypes.inl
40 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkGetStructureTypeImpl.inl
41 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkHandleType.inl
42 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkInitDeviceFunctionPointers.inl
43 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkInitInstanceFunctionPointers.inl
44 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkInitPlatformFunctionPointers.inl
45 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkInstanceDriverImpl.inl
46 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkInstanceExtensions.inl
47 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkInstanceFunctionPointers.inl
48 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkKnownDriverIds.inl
49 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkMandatoryFeatures.inl
50 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkNullDriverImpl.inl
51 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkObjTypeImpl.inl
52 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkPlatformDriverImpl.inl
53 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkPlatformFunctionPointers.inl
54 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkRefUtil.inl
55 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkRefUtilImpl.inl
56 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkStrUtil.inl
57 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkStrUtilImpl.inl
58 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkStructTypes.inl
59 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkSupportedExtensions.inl
60 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkTypeUtil.inl
61 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkVirtualDeviceInterface.inl
62 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkVirtualInstanceInterface.inl
63 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkVirtualPlatformInterface.inl
64 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkEntryPointValidation.inl
65 # NOTE: when new file is generated by gen_framework it should be added to this list.
66 ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkVulkan_c.inl)
68 # If .inl files are generated to build directory add custom command that will build them.
69 if (DEQP_VULKAN_INL_GEN_OUTPUTS_DIR MATCHES ^${PROJECT_BINARY_DIR})
71 # Remove all outputs to help detect missing outputs.
72 COMMAND cmake -E remove ${DEQP_VULKAN_INL_GEN_OUTPUTS}
74 # Generate all inl files.
75 COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_framework.py -o ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
76 COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_framework_c.py -o ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
78 # Check all outputs exist, as CMake does not do this.
79 COMMAND cmake -E md5sum ${DEQP_VULKAN_INL_GEN_OUTPUTS}
81 DEPENDS ${DEQP_VULKAN_INL_GEN_INPUT}
82 OUTPUT ${DEQP_VULKAN_INL_GEN_OUTPUTS})
86 DEPENDS ${DEQP_VULKAN_INL_GEN_OUTPUTS})
88 add_custom_target(deqp-vk-inl)
91 set(VKUTILNOSHADER_SRCS
126 vkAllocationCallbackUtil.cpp
127 vkAllocationCallbackUtil.hpp
132 vkDebugReportUtil.cpp
133 vkDebugReportUtil.hpp
134 vkBufferWithMemory.cpp
135 vkBufferWithMemory.hpp
136 vkImageWithMemory.cpp
137 vkImageWithMemory.hpp
138 vkImageWithMemory.cpp
139 vkImageWithMemory.hpp
142 vkValidatorOptions.hpp
143 vkYCbCrImageWithMemory.cpp
144 vkYCbCrImageWithMemory.hpp
151 vkDeviceProperties.hpp
152 vkDeviceProperties.cpp
155 vkPipelineConstructionUtil.hpp
156 vkPipelineConstructionUtil.cpp
157 vkSafetyCriticalUtil.hpp
158 vkSafetyCriticalUtil.cpp
159 vkResourceInterface.hpp
160 vkResourceInterface.cpp
163 set(VKUTILNOSHADER_INLS
164 generated/vulkan/vkDeviceFeatures.inl
165 generated/vulkan/vkDeviceFeatureTest.inl
166 generated/vulkan/vkDeviceProperties.inl
169 set(VKSCUTILNOSHADER_INLS
170 generated/vulkansc/vkDeviceFeatures.inl
171 generated/vulkansc/vkDeviceFeatureTest.inl
172 generated/vulkansc/vkDeviceProperties.inl
173 generated/vulkansc/vulkan_json_data.hpp
174 generated/vulkansc/vulkan_json_parser.hpp
175 generated/vulkansc/tlsWrapper.hpp
189 set(VKUTILNOSHADER_LIBS
200 include_directories(${GLSLANG_INCLUDE_PATH})
201 include_directories(${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR})
203 # \note Code interfacing with glslang needs to include third-party headers
204 # that cause all sorts of warnings to appear.
205 if (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG)
206 set_source_files_properties(
207 FILES vkShaderToSpirV.cpp
208 PROPERTIES COMPILE_FLAGS "${DE_3RD_PARTY_CXX_FLAGS}")
212 # \note Code interfacing with spirv-opt needs to include third-party headers
213 # that cause all sorts of warnings to appear.
214 if (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG)
215 set_source_files_properties(
217 PROPERTIES COMPILE_FLAGS "${DE_3RD_PARTY_CXX_FLAGS}")
220 if(DEQP_HAVE_RENDERDOC_HEADER)
221 add_definitions(-DDEQP_HAVE_RENDERDOC_HEADER=1)
224 add_definitions(-DDISABLE_SHADERCACHE_IPC)
226 PCH(VKUTILNOSHADER_SRCS ../../modules/vulkan/pch.cpp)
227 PCH(VKUTIL_SRCS ../../modules/vulkan/pch.cpp)
228 PCH(VKUTILNOSHADER_INLS ../../modules/vulkan/pch.cpp)
229 PCH(VKSCUTILNOSHADER_INLS ../../modules/vulkan/pch.cpp)
231 add_library(vkutilnoshader STATIC ${VKUTILNOSHADER_SRCS} ${VKUTILNOSHADER_INLS})
234 target_compile_definitions(vkutilnoshader PUBLIC CTS_USES_VULKAN)
235 target_link_libraries(vkutilnoshader PUBLIC ${VKUTILNOSHADER_LIBS})
236 add_dependencies(vkutilnoshader deqp-vk-inl)
238 add_library(vkscutilnoshader STATIC ${VKUTILNOSHADER_SRCS} ${VKSCUTILNOSHADER_INLS})
239 target_include_directories(vkscutilnoshader BEFORE PUBLIC generated/vulkansc)
240 target_include_directories(vkscutilnoshader BEFORE PUBLIC ${CMAKE_SOURCE_DIR}/external/vulkancts/vkscserver)
241 target_compile_definitions(vkscutilnoshader PUBLIC CTS_USES_VULKANSC)
242 target_link_libraries(vkscutilnoshader PUBLIC ${VKUTILNOSHADER_LIBS} jsoncpp_static vksc-server-util)
245 find_package(X11 REQUIRED)
247 target_compile_definitions(vkutilnoshader PUBLIC DEQP_SUPPORT_X11=1)
248 target_link_libraries(vkutilnoshader PUBLIC ${X11_LIBRARIES})
250 target_compile_definitions(vkscutilnoshader PUBLIC DEQP_SUPPORT_X11=1)
251 target_link_libraries(vkscutilnoshader PUBLIC ${X11_LIBRARIES})
254 find_package(XCB REQUIRED)
256 target_compile_definitions(vkutilnoshader PUBLIC DEQP_SUPPORT_XCB=1)
257 target_link_libraries(vkutilnoshader PUBLIC ${XCB_LIBRARIES})
259 target_compile_definitions(vkscutilnoshader PUBLIC DEQP_SUPPORT_XCB=1)
260 target_link_libraries(vkscutilnoshader PUBLIC ${XCB_LIBRARIES})
265 add_library(vkutil STATIC ${VKUTIL_SRCS})
266 target_include_directories(vkutil PUBLIC ${GLSLANG_INCLUDE_PATH} ${spirv-tools_SOURCE_DIR}/include ${spirv-tools_SOURCE_DIR}/external/include )
267 target_link_libraries(vkutil PUBLIC vkutilnoshader ${GLSLANG_LIBRARIES} SPIRV-Tools SPIRV-Tools-opt)
269 add_library(vkscutil STATIC ${VKUTIL_SRCS})
270 target_include_directories(vkscutil BEFORE PUBLIC generated/vulkansc)
271 target_include_directories(vkscutil PUBLIC ${GLSLANG_INCLUDE_PATH} ${spirv-tools_SOURCE_DIR}/include ${spirv-tools_SOURCE_DIR}/external/include )
272 target_link_libraries(vkscutil PUBLIC vkscutilnoshader ${GLSLANG_LIBRARIES} SPIRV-Tools SPIRV-Tools-opt)