diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | include/amber/amber_vulkan.h | 6 | ||||
-rw-r--r-- | include/amber/vulkan_header.h | 27 | ||||
-rw-r--r-- | src/vulkan/buffer.h | 2 | ||||
-rw-r--r-- | src/vulkan/buffer_descriptor.h | 2 | ||||
-rw-r--r-- | src/vulkan/command.h | 2 | ||||
-rw-r--r-- | src/vulkan/compute_pipeline.h | 2 | ||||
-rw-r--r-- | src/vulkan/descriptor.h | 2 | ||||
-rw-r--r-- | src/vulkan/device.h | 2 | ||||
-rw-r--r-- | src/vulkan/engine_vulkan.h | 2 | ||||
-rw-r--r-- | src/vulkan/find_vulkan.cmake | 26 | ||||
-rw-r--r-- | src/vulkan/format_data.h | 2 | ||||
-rw-r--r-- | src/vulkan/graphics_pipeline.h | 2 | ||||
-rw-r--r-- | src/vulkan/image.h | 2 | ||||
-rw-r--r-- | src/vulkan/pipeline.h | 2 | ||||
-rw-r--r-- | src/vulkan/push_constant.h | 2 | ||||
-rw-r--r-- | src/vulkan/resource.h | 2 | ||||
-rw-r--r-- | src/vulkan/vertex_buffer.h | 2 |
18 files changed, 66 insertions, 22 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f0bdb54..c66352e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,6 +82,7 @@ if (NOT ANDROID) include(src/vulkan/find_vulkan.cmake) endif() +add_definitions(-DAMBER_CTS_VULKAN_HEADER=$<BOOL:${VULKAN_CTS_HEADER}>) add_definitions(-DAMBER_ENGINE_VULKAN=$<BOOL:${Vulkan_FOUND}>) add_definitions(-DAMBER_ENGINE_DAWN=$<BOOL:${Dawn_FOUND}>) add_definitions(-DAMBER_ENABLE_SPIRV_TOOLS=$<BOOL:${AMBER_ENABLE_SPIRV_TOOLS}>) diff --git a/include/amber/amber_vulkan.h b/include/amber/amber_vulkan.h index 435b2ba..4e14c59 100644 --- a/include/amber/amber_vulkan.h +++ b/include/amber/amber_vulkan.h @@ -20,11 +20,7 @@ #include <vector> #include "amber/amber.h" - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" -#include "vulkan/vulkan.h" -#pragma clang diagnostic pop +#include "amber/vulkan_header.h" namespace amber { diff --git a/include/amber/vulkan_header.h b/include/amber/vulkan_header.h new file mode 100644 index 0000000..64c3194 --- /dev/null +++ b/include/amber/vulkan_header.h @@ -0,0 +1,27 @@ +// Copyright 2019 The Amber Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef AMBER_VULKAN_HEADER_H_ +#define AMBER_VULKAN_HEADER_H_ + +#if AMBER_CTS_VULKAN_HEADER +#include "vkDefs.h" +#else // DAMBER_CTS_VULKAN_HEADER +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" +#include "vulkan/vulkan.h" +#pragma clang diagnostic pop +#endif // AMBER_CTS_VULKAN_HEADER + +#endif // AMBER_VULKAN_HEADER_H_ diff --git a/src/vulkan/buffer.h b/src/vulkan/buffer.h index d3429db..fd2a806 100644 --- a/src/vulkan/buffer.h +++ b/src/vulkan/buffer.h @@ -16,8 +16,8 @@ #define SRC_VULKAN_BUFFER_H_ #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/vulkan/resource.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/buffer_descriptor.h b/src/vulkan/buffer_descriptor.h index 71e81f6..467e0ed 100644 --- a/src/vulkan/buffer_descriptor.h +++ b/src/vulkan/buffer_descriptor.h @@ -19,12 +19,12 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/datum_type.h" #include "src/engine.h" #include "src/value.h" #include "src/vulkan/buffer.h" #include "src/vulkan/descriptor.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/command.h b/src/vulkan/command.h index c912f32..4e264d8 100644 --- a/src/vulkan/command.h +++ b/src/vulkan/command.h @@ -16,7 +16,7 @@ #define SRC_VULKAN_COMMAND_H_ #include "amber/result.h" -#include "vulkan/vulkan.h" +#include "amber/vulkan_header.h" namespace amber { diff --git a/src/vulkan/compute_pipeline.h b/src/vulkan/compute_pipeline.h index 09841cd..4afef8a 100644 --- a/src/vulkan/compute_pipeline.h +++ b/src/vulkan/compute_pipeline.h @@ -18,8 +18,8 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/vulkan/pipeline.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/descriptor.h b/src/vulkan/descriptor.h index 2ae86e0..dcf0e17 100644 --- a/src/vulkan/descriptor.h +++ b/src/vulkan/descriptor.h @@ -19,10 +19,10 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/datum_type.h" #include "src/engine.h" #include "src/vulkan/resource.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/device.h b/src/vulkan/device.h index 2d8bb77..2bf4bc0 100644 --- a/src/vulkan/device.h +++ b/src/vulkan/device.h @@ -20,8 +20,8 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/feature.h" -#include "vulkan/vulkan.h" namespace amber { diff --git a/src/vulkan/engine_vulkan.h b/src/vulkan/engine_vulkan.h index 1a6985d..3eb034d 100644 --- a/src/vulkan/engine_vulkan.h +++ b/src/vulkan/engine_vulkan.h @@ -20,13 +20,13 @@ #include <unordered_map> #include <vector> +#include "amber/vulkan_header.h" #include "src/cast_hash.h" #include "src/engine.h" #include "src/vulkan/command.h" #include "src/vulkan/device.h" #include "src/vulkan/pipeline.h" #include "src/vulkan/vertex_buffer.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/find_vulkan.cmake b/src/vulkan/find_vulkan.cmake index 630346a..32e567f 100644 --- a/src/vulkan/find_vulkan.cmake +++ b/src/vulkan/find_vulkan.cmake @@ -12,15 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. - # Include this file to find Vulkan and and set up compilation and linking. - # Export these settings to the includer. set(Vulkan_FOUND FALSE) +set(VULKAN_CTS_HEADER FALSE) set(VULKAN_LIB "") - # Our first choice is to pick up the Vulkan headers from an enclosing project. # And if that's the case, then use Vulkan libraries as specified by # Vulkan_LIBRARIES, with a default library of "vulkan". @@ -28,6 +26,7 @@ set(X "${Vulkan-Headers_SOURCE_DIR}/include") if (IS_DIRECTORY "${X}") message(STATUS "Amber: Using Vulkan header dir ${X}") list(APPEND CMAKE_REQUIRED_INCLUDES "${X}") + # Add the directory to the list of include paths, before any others. include_directories(BEFORE "${X}") CHECK_INCLUDE_FILE(vulkan/vulkan.h HAVE_VULKAN_HEADER) @@ -40,6 +39,7 @@ if (IS_DIRECTORY "${X}") message(STATUS "Amber: Using specified Vulkan libraries: ${Vulkan_LIBRARIES}") set(VULKAN_LIB "${Vulkan_LIBRARIES}") endif() + # For now assume we have Vulkan. We have its header, but we haven't checked # for the library. # TODO(dneto): Actually check for the libraries. @@ -48,6 +48,26 @@ if (IS_DIRECTORY "${X}") endif() unset(X) +# Check if we're in the CTS +if (NOT ${Vulkan_FOUND}) + message(STATUS "Amber: Checking for CTS Vulkan header") + set(X "${Vulkan-Headers_SOURCE_DIR}") + if (IS_DIRECTORY "${X}") + message(STATUS "Amber: Using Vulkan header dir ${X}") + list(APPEND CMAKE_REQUIRED_INCLUDES "${X}") + + # Add the directory to the list of include paths, before any others. + include_directories(BEFORE "${X}") + + if (EXISTS "${X}/vkDefs.h") + set(VULKAN_CTS_HEADER TRUE) + set(Vulkan_FOUND TRUE) + set(VULKAN_LIB vulkan) + endif() + endif() + unset(X) +endif() + if (NOT ${Vulkan_FOUND}) # If we aren't already building a Vulkan library, then use CMake to find it. if(NOT ${CMAKE_VERSION} VERSION_LESS "3.7") diff --git a/src/vulkan/format_data.h b/src/vulkan/format_data.h index c9dc44a..fa2d842 100644 --- a/src/vulkan/format_data.h +++ b/src/vulkan/format_data.h @@ -15,8 +15,8 @@ #ifndef SRC_VULKAN_FORMAT_DATA_H_ #define SRC_VULKAN_FORMAT_DATA_H_ +#include "amber/vulkan_header.h" #include "src/format_data.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/graphics_pipeline.h b/src/vulkan/graphics_pipeline.h index a676f95..ca401ac 100644 --- a/src/vulkan/graphics_pipeline.h +++ b/src/vulkan/graphics_pipeline.h @@ -19,13 +19,13 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/buffer_data.h" #include "src/format.h" #include "src/value.h" #include "src/vulkan/frame_buffer.h" #include "src/vulkan/pipeline.h" #include "src/vulkan/vertex_buffer.h" -#include "vulkan/vulkan.h" namespace amber { diff --git a/src/vulkan/image.h b/src/vulkan/image.h index 4668f71..6c5329a 100644 --- a/src/vulkan/image.h +++ b/src/vulkan/image.h @@ -16,8 +16,8 @@ #define SRC_VULKAN_IMAGE_H_ #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/vulkan/resource.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/pipeline.h b/src/vulkan/pipeline.h index c3b2995..26ea568 100644 --- a/src/vulkan/pipeline.h +++ b/src/vulkan/pipeline.h @@ -21,12 +21,12 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/cast_hash.h" #include "src/engine.h" #include "src/vulkan/command.h" #include "src/vulkan/descriptor.h" #include "src/vulkan/push_constant.h" -#include "vulkan/vulkan.h" namespace amber { diff --git a/src/vulkan/push_constant.h b/src/vulkan/push_constant.h index d1ca68d..7829b01 100644 --- a/src/vulkan/push_constant.h +++ b/src/vulkan/push_constant.h @@ -19,9 +19,9 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/command.h" #include "src/vulkan/resource.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/resource.h b/src/vulkan/resource.h index 9f44eaa..e8df27a 100644 --- a/src/vulkan/resource.h +++ b/src/vulkan/resource.h @@ -19,9 +19,9 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/datum_type.h" #include "src/value.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { diff --git a/src/vulkan/vertex_buffer.h b/src/vulkan/vertex_buffer.h index acf2aa8..c6f24c0 100644 --- a/src/vulkan/vertex_buffer.h +++ b/src/vulkan/vertex_buffer.h @@ -19,10 +19,10 @@ #include <vector> #include "amber/result.h" +#include "amber/vulkan_header.h" #include "src/format.h" #include "src/value.h" #include "src/vulkan/buffer.h" -#include "vulkan/vulkan.h" namespace amber { namespace vulkan { |