aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--include/amber/amber_vulkan.h6
-rw-r--r--include/amber/vulkan_header.h27
-rw-r--r--src/vulkan/buffer.h2
-rw-r--r--src/vulkan/buffer_descriptor.h2
-rw-r--r--src/vulkan/command.h2
-rw-r--r--src/vulkan/compute_pipeline.h2
-rw-r--r--src/vulkan/descriptor.h2
-rw-r--r--src/vulkan/device.h2
-rw-r--r--src/vulkan/engine_vulkan.h2
-rw-r--r--src/vulkan/find_vulkan.cmake26
-rw-r--r--src/vulkan/format_data.h2
-rw-r--r--src/vulkan/graphics_pipeline.h2
-rw-r--r--src/vulkan/image.h2
-rw-r--r--src/vulkan/pipeline.h2
-rw-r--r--src/vulkan/push_constant.h2
-rw-r--r--src/vulkan/resource.h2
-rw-r--r--src/vulkan/vertex_buffer.h2
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 {