aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers')
-rw-r--r--meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0001-CMakeLists-add-include-path-so-Xlib.h-is-found-as-ne.patch41
-rw-r--r--meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0002-demos-CMakeLists.txt-install-demos.patch (renamed from meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0002-install-demos.patch)16
-rw-r--r--meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-CMakeLists.txt-use-a-fixed-header-for-spirv_commit.patch71
-rw-r--r--meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-demos-make-shader-location-relative.patch321
-rw-r--r--meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0004-layer_validation_tests-include-math.h.patch28
-rw-r--r--meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0005-demos-cube-use-absolute-location-for-data-files.patch70
6 files changed, 197 insertions, 350 deletions
diff --git a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0001-CMakeLists-add-include-path-so-Xlib.h-is-found-as-ne.patch b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0001-CMakeLists-add-include-path-so-Xlib.h-is-found-as-ne.patch
index df871c68..10337189 100644
--- a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0001-CMakeLists-add-include-path-so-Xlib.h-is-found-as-ne.patch
+++ b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0001-CMakeLists-add-include-path-so-Xlib.h-is-found-as-ne.patch
@@ -1,7 +1,7 @@
-From 31f4c33da2d988f2ac3d3f2cdd97cae4085abe19 Mon Sep 17 00:00:00 2001
+From 49d4dd326b9d4b7b013f4a1d21498568d76443b2 Mon Sep 17 00:00:00 2001
From: Awais Belal <awais_belal@mentor.com>
-Date: Wed, 31 May 2017 13:26:39 +0500
-Subject: [PATCH 1/3] CMakeLists: add include path so Xlib.h is found as needed
+Date: Tue, 4 Sep 2018 14:09:12 +0500
+Subject: [PATCH 1/5] CMakeLists: add include path so Xlib.h is found as needed
All the targets including vk_platform.h or directly including
X11/Xlib.h require to know the directory for the installed
@@ -11,18 +11,18 @@ filled in properly.
Signed-off-by: Awais Belal <awais_belal@mentor.com>
---
CMakeLists.txt | 2 ++
- demos/CMakeLists.txt | 2 +-
+ demos/CMakeLists.txt | 1 +
layers/CMakeLists.txt | 1 +
libs/vkjson/CMakeLists.txt | 1 +
loader/CMakeLists.txt | 1 +
- 5 files changed, 6 insertions(+), 1 deletion(-)
+ 5 files changed, 6 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b53696fb0..2d97f7a0d 100644
+index 5cf85d487..5ce69d216 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -187,6 +187,8 @@ find_path(SPIRV_TOOLS_INCLUDE_DIR spirv-tools/libspirv.h HINTS "${EXTERNAL_SOURC
- "${EXTERNAL_SOURCE_ROOT}/source/spirv-tools/external/include"
+@@ -225,6 +225,8 @@ find_path(SPIRV_TOOLS_INCLUDE_DIR spirv-tools/libspirv.h HINTS "${EXTERNAL_SOURC
+ "${CMAKE_SOURCE_DIR}/../glslang/External/spirv-tools/include"
DOC "Path to spirv-tools/libspirv.h")
+find_path(X11_XLIB_INCLUDE_DIR X11/Xlib.h DOC "Path to X11/Xlib.h")
@@ -31,25 +31,24 @@ index b53696fb0..2d97f7a0d 100644
HINTS ${GLSLANG_SEARCH_PATH} )
diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
-index 917ea8840..472d1528b 100644
+index 487b19910..fb5022bf5 100644
--- a/demos/CMakeLists.txt
+++ b/demos/CMakeLists.txt
-@@ -19,7 +19,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- if (NOT BUILD_WSI_XLIB_SUPPORT)
- message( FATAL_ERROR "Selected XLIB for demos build but not building Xlib support" )
- endif()
-- include_directories(${X11_INCLUDE_DIR})
-+ include_directories(${X11_INCLUDE_DIR} ${X11_XLIB_INCLUDE_DIR})
+@@ -41,6 +41,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ set(DEMO_INCLUDE_DIRS
+ ${X11_INCLUDE_DIR}
+ ${DEMO_INCLUDE_DIRS}
++ ${X11_XLIB_INCLUDE_DIR}
+ )
link_libraries(${X11_LIBRARIES})
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
- elseif(DEMOS_WSI_SELECTION STREQUAL "WAYLAND")
diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
-index 7a35df7ec..5543808e5 100644
+index 08b0e2090..6068d0031 100644
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
-@@ -115,6 +115,7 @@ include_directories(
+@@ -146,6 +146,7 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_PROJECT_BINARY_DIR}
+ ${PROJECT_BINARY_DIR}
${CMAKE_BINARY_DIR}
+ ${X11_XLIB_INCLUDE_DIR}
)
@@ -68,12 +67,12 @@ index 2e79d9109..4b1df5988 100644
add_library(vkjson STATIC vkjson.cc vkjson_instance.cc ../../loader/cJSON.c)
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index d15f09cc9..e7dd6d358 100644
+index 4d1d08fc8..55ae2cb85 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -3,6 +3,7 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_PROJECT_BINARY_DIR}
+ ${PROJECT_BINARY_DIR}
${CMAKE_BINARY_DIR}
+ ${X11_XLIB_INCLUDE_DIR}
)
diff --git a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0002-install-demos.patch b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0002-demos-CMakeLists.txt-install-demos.patch
index 7dbc2c23..1ffc283e 100644
--- a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0002-install-demos.patch
+++ b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0002-demos-CMakeLists.txt-install-demos.patch
@@ -1,7 +1,7 @@
-From 4ed362554e375b0be8d3b03ec8f11cff97677f7f Mon Sep 17 00:00:00 2001
+From 0ee0a0502b96b46190f6e47243b0a008ff04ebbd Mon Sep 17 00:00:00 2001
From: Awais Belal <awais_belal@mentor.com>
-Date: Wed, 31 May 2017 13:42:07 +0500
-Subject: [PATCH 2/3] install demos
+Date: Tue, 4 Sep 2018 14:10:37 +0500
+Subject: [PATCH 2/5] demos/CMakeLists.txt: install demos
Install demos to the target.
@@ -11,20 +11,20 @@ Signed-off-by: Awais Belal <awais_belal@mentor.com>
1 file changed, 2 insertions(+)
diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
-index 472d1528b..e9e0619a0 100644
+index fb5022bf5..5a723805d 100644
--- a/demos/CMakeLists.txt
+++ b/demos/CMakeLists.txt
-@@ -120,6 +120,7 @@ if(NOT WIN32)
+@@ -148,6 +148,7 @@ if(NOT WIN32)
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
- add_executable(cube cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv)
+ add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
target_link_libraries(cube ${LIBRARIES})
+ install(TARGETS cube DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
else()
if (CMAKE_CL_64)
-@@ -136,6 +137,7 @@ if(NOT WIN32)
+@@ -164,6 +165,7 @@ if(NOT WIN32)
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
- add_executable(cubepp cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv)
+ add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
target_link_libraries(cubepp ${LIBRARIES})
+ install(TARGETS cubepp DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
diff --git a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-CMakeLists.txt-use-a-fixed-header-for-spirv_commit.patch b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-CMakeLists.txt-use-a-fixed-header-for-spirv_commit.patch
new file mode 100644
index 00000000..c18441f5
--- /dev/null
+++ b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-CMakeLists.txt-use-a-fixed-header-for-spirv_commit.patch
@@ -0,0 +1,71 @@
+From af1706e021e900f2cfb15e7bc0f9f68cdd1bd04c Mon Sep 17 00:00:00 2001
+From: Awais Belal <awais_belal@mentor.com>
+Date: Tue, 4 Sep 2018 14:58:18 +0500
+Subject: [PATCH 3/5] CMakeLists.txt: use a fixed header for spirv_commit
+
+Signed-off-by: Awais Belal <awais_belal@mentor.com>
+---
+ CMakeLists.txt | 3 ---
+ spirv_tools_commit_id.h | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 29 insertions(+), 3 deletions(-)
+ create mode 100644 spirv_tools_commit_id.h
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5cf85d487..b0ec3cbaf 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -343,7 +343,6 @@ add_custom_target(generate_helper_files DEPENDS
+ vk_dispatch_table_helper.h
+ vk_extension_helper.h
+ vk_typemap_helper.h
+- spirv_tools_commit_id.h
+ )
+ set_target_properties(generate_helper_files PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+
+@@ -358,8 +357,6 @@ run_vk_xml_generate(helper_file_generator.py vk_enum_string_helper.h)
+ run_vk_xml_generate(helper_file_generator.py vk_object_types.h)
+ run_vk_xml_generate(helper_file_generator.py vk_extension_helper.h)
+ run_vk_xml_generate(helper_file_generator.py vk_typemap_helper.h)
+-run_external_revision_generate(${EXTERNAL_SOURCE_ROOT}/glslang/External/spirv-tools SPIRV_TOOLS_COMMIT_ID spirv_tools_commit_id.h)
+-
+
+
+ if(NOT WIN32)
+diff --git a/include/vulkan/spirv_tools_commit_id.h b/include/vulkan/spirv_tools_commit_id.h
+new file mode 100644
+index 000000000..ae588b33f
+--- /dev/null
++++ b/include/vulkan/spirv_tools_commit_id.h
+@@ -0,0 +1,29 @@
++// *** THIS FILE IS GENERATED - DO NOT EDIT ***
++// See external_revision_generator.py for modifications
++
++/***************************************************************************
++ *
++ * Copyright (c) 2015-2017 The Khronos Group Inc.
++ * Copyright (c) 2015-2017 Valve Corporation
++ * Copyright (c) 2015-2017 LunarG, Inc.
++ * Copyright (c) 2015-2017 Google Inc.
++ *
++ * 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.
++ *
++ * Author: Chris Forbes <chrisforbes@google.com>
++ * Author: Cort Stratton <cort@google.com>
++ *
++ ****************************************************************************/
++#pragma once
++
++#define SPIRV_TOOLS_COMMIT_ID "2651ccaec8170b3257642b3c438f50dc4f181fdd"
+--
+2.11.1
+
diff --git a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-demos-make-shader-location-relative.patch b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-demos-make-shader-location-relative.patch
deleted file mode 100644
index c54951c9..00000000
--- a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0003-demos-make-shader-location-relative.patch
+++ /dev/null
@@ -1,321 +0,0 @@
-From 8797907d97a10ce64b03bef80fd67bc9117712b2 Mon Sep 17 00:00:00 2001
-From: Awais Belal <awais_belal@mentor.com>
-Date: Wed, 6 Dec 2017 18:09:55 +0500
-Subject: [PATCH] demos: make shader location relative
-
-The demo binaries expect the shader (frag/vert.spv)
-location to be PWD so a user has to cd to /usr/bin
-if the binaries are installed there in order to
-run them correctly.
-This patch tries to find the location of the binary
-and then assumes that the shaders are located in the
-same location as the binary so a user can install
-everything to a single dir and that will work.
-
-Signed-off-by: Awais Belal <awais_belal@mentor.com>
----
- demos/cube.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++----
- demos/cube.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
- 2 files changed, 129 insertions(+), 10 deletions(-)
-
-diff --git a/demos/cube.c b/demos/cube.c
-index dd7bd906b..c8bc00e04 100644
---- a/demos/cube.c
-+++ b/demos/cube.c
-@@ -33,6 +33,7 @@
- #include <stdbool.h>
- #include <assert.h>
- #include <signal.h>
-+#include <unistd.h>
- #if defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_XCB_KHR)
- #include <X11/Xutil.h>
- #elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
-@@ -453,6 +454,8 @@ struct demo {
-
- uint32_t current_buffer;
- uint32_t queue_family_count;
-+
-+ char bin_path[255];
- };
-
- VKAPI_ATTR VkBool32 VKAPI_CALL dbgFunc(VkFlags msgFlags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, size_t location,
-@@ -1611,18 +1614,27 @@ static void demo_prepare_textures(struct demo *demo) {
- const VkFormat tex_format = VK_FORMAT_R8G8B8A8_UNORM;
- VkFormatProperties props;
- uint32_t i;
-+ char tex_file[255];
-
- vkGetPhysicalDeviceFormatProperties(demo->gpu, tex_format, &props);
-
- for (i = 0; i < DEMO_TEXTURE_COUNT; i++) {
- VkResult U_ASSERT_ONLY err;
-
-+ if (strlen(demo->bin_path) > 0) {
-+ strcpy(tex_file, demo->bin_path);
-+ strcat(tex_file, "/");
-+ strcat(tex_file, tex_files[i]);
-+ }
-+ else
-+ strcpy(tex_file, tex_files[i]);
-+
- if ((props.linearTilingFeatures &
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) &&
- !demo->use_staging_buffer) {
- /* Device can texture using linear textures */
- demo_prepare_texture_image(
-- demo, tex_files[i], &demo->textures[i], VK_IMAGE_TILING_LINEAR,
-+ demo, tex_file, &demo->textures[i], VK_IMAGE_TILING_LINEAR,
- VK_IMAGE_USAGE_SAMPLED_BIT,
- VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
- VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
-@@ -1639,13 +1651,13 @@ static void demo_prepare_textures(struct demo *demo) {
-
- memset(&demo->staging_texture, 0, sizeof(demo->staging_texture));
- demo_prepare_texture_image(
-- demo, tex_files[i], &demo->staging_texture, VK_IMAGE_TILING_LINEAR,
-+ demo, tex_file, &demo->staging_texture, VK_IMAGE_TILING_LINEAR,
- VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
- VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
- VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
-
- demo_prepare_texture_image(
-- demo, tex_files[i], &demo->textures[i], VK_IMAGE_TILING_OPTIMAL,
-+ demo, tex_file, &demo->textures[i], VK_IMAGE_TILING_OPTIMAL,
- (VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT),
- VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
-
-@@ -1986,8 +1998,17 @@ static VkShaderModule demo_prepare_vs(struct demo *demo) {
- #else
- void *vertShaderCode;
- size_t size;
-+ char fname[255];
-
-- vertShaderCode = demo_read_spv("cube-vert.spv", &size);
-+ if (strlen(demo->bin_path) > 0) {
-+ strcpy(fname, demo->bin_path);
-+ strcat(fname, "/");
-+ strcat(fname, "cube-vert.spv");
-+ }
-+ else
-+ strcpy(fname, "cube-vert.spv");
-+
-+ vertShaderCode = demo_read_spv(fname, &size);
- if (!vertShaderCode) {
- ERR_EXIT("Failed to load cube-vert.spv", "Load Shader Failure");
- }
-@@ -2014,8 +2035,17 @@ static VkShaderModule demo_prepare_fs(struct demo *demo) {
- #else
- void *fragShaderCode;
- size_t size;
-+ char fname[255];
-+
-+ if (strlen(demo->bin_path) > 0) {
-+ strcpy(fname, demo->bin_path);
-+ strcat(fname, "/");
-+ strcat(fname, "cube-frag.spv");
-+ }
-+ else
-+ strcpy(fname, "cube-frag.spv");
-
-- fragShaderCode = demo_read_spv("cube-frag.spv", &size);
-+ fragShaderCode = demo_read_spv(fname, &size);
- if (!fragShaderCode) {
- ERR_EXIT("Failed to load cube-frag.spv", "Load Shader Failure");
- }
-@@ -3866,6 +3896,30 @@ static void demo_init_connection(struct demo *demo) {
- #endif
- }
-
-+static void find_bin_path(char *in_arg, char *ret_path) {
-+ char *ptr = getenv("PATH");
-+ char *pch_temp;
-+ char pch[255];
-+
-+ if (access(in_arg, F_OK ) == 0) {
-+ pch_temp = strrchr(in_arg, '/');
-+ strncpy(ret_path, in_arg, strlen(in_arg) - strlen(pch_temp));
-+ } else if (in_arg[0] != '/') {
-+ pch_temp = strtok(ptr, ":");
-+ while (pch_temp != NULL) {
-+ strcpy(pch, pch_temp);
-+ strcat(pch, "/");
-+ strcat(pch, in_arg);
-+ if ((access(pch, F_OK ) == 0)) {
-+ strcpy(ret_path, pch_temp);
-+ break;
-+ }
-+ else
-+ pch_temp = strtok(NULL, ":");
-+ }
-+ }
-+}
-+
- static void demo_init(struct demo *demo, int argc, char **argv) {
- vec3 eye = {0.0f, 3.0f, 5.0f};
- vec3 origin = {0, 0, 0};
-@@ -3960,6 +4014,8 @@ static void demo_init(struct demo *demo, int argc, char **argv) {
- mat4x4_identity(demo->model_matrix);
-
- demo->projection_matrix[1][1]*=-1; //Flip projection matrix from GL to Vulkan orientation.
-+
-+ find_bin_path(argv[0], demo->bin_path);
- }
-
- #if defined(VK_USE_PLATFORM_WIN32_KHR)
-diff --git a/demos/cube.cpp b/demos/cube.cpp
-index 9b6fe5107..f867e30ab 100644
---- a/demos/cube.cpp
-+++ b/demos/cube.cpp
-@@ -30,6 +30,7 @@
- #include <cstring>
- #include <csignal>
- #include <memory>
-+#include <unistd.h>
-
- #if defined(VK_USE_PLATFORM_MIR_KHR)
- #warning "Cubepp does not have code for Mir at this time"
-@@ -219,6 +220,7 @@ struct Demo {
- void draw();
- void draw_build_cmd(vk::CommandBuffer);
- void flush_init_cmd();
-+ void find_bin_path(char *, char *);
- void init(int, char **);
- void init_connection();
- void init_vk();
-@@ -384,6 +386,8 @@ struct Demo {
-
- uint32_t current_buffer;
- uint32_t queue_family_count;
-+
-+ char bin_path[255];
- };
-
- #ifdef _WIN32
-@@ -556,6 +560,7 @@ Demo::Demo()
- memset(projection_matrix, 0, sizeof(projection_matrix));
- memset(view_matrix, 0, sizeof(view_matrix));
- memset(model_matrix, 0, sizeof(model_matrix));
-+ memset(bin_path, '\0', 255);
- }
-
- void Demo::build_image_ownership_cmd(uint32_t const &i) {
-@@ -888,6 +893,30 @@ Demo::Demo()
- cmd = vk::CommandBuffer();
- }
-
-+ void Demo::find_bin_path(char *in_arg, char *ret_path) {
-+ char *ptr = getenv("PATH");
-+ char *pch_temp;
-+ char pch[255];
-+
-+ if (access(in_arg, F_OK ) == 0) {
-+ pch_temp = strrchr(in_arg, '/');
-+ strncpy(ret_path, in_arg, strlen(in_arg) - strlen(pch_temp));
-+ } else if (in_arg[0] != '/') {
-+ pch_temp = strtok(ptr, ":");
-+ while (pch_temp != NULL) {
-+ strcpy(pch, pch_temp);
-+ strcat(pch, "/");
-+ strcat(pch, in_arg);
-+ if ((access(pch, F_OK ) == 0)) {
-+ strcpy(ret_path, pch_temp);
-+ break;
-+ }
-+ else
-+ pch_temp = strtok(NULL, ":");
-+ }
-+ }
-+ }
-+
- void Demo::init(int argc, char **argv) {
- vec3 eye = {0.0f, 3.0f, 5.0f};
- vec3 origin = {0, 0, 0};
-@@ -962,6 +991,8 @@ Demo::Demo()
- mat4x4_identity(model_matrix);
-
- projection_matrix[1][1] *= -1; // Flip projection matrix from GL to Vulkan orientation.
-+
-+ find_bin_path(argv[0], bin_path);
- }
-
- void Demo::init_connection() {
-@@ -1858,7 +1889,18 @@ Demo::Demo()
-
- vk::ShaderModule Demo::prepare_fs() {
- size_t size = 0;
-- void *fragShaderCode = read_spv("cube-frag.spv", &size);
-+ char fname[255];
-+ memset(fname, '\0', 255);
-+
-+ if (strlen(bin_path) > 0) {
-+ strcpy(fname, bin_path);
-+ strcat(fname, "/");
-+ strcat(fname, "cube-frag.spv");
-+ }
-+ else
-+ strcpy(fname, "cube-frag.spv");
-+
-+ void *fragShaderCode = read_spv(fname, &size);
- if (!fragShaderCode) {
- ERR_EXIT("Failed to load cube-frag.spv", "Load Shader Failure");
- }
-@@ -2079,11 +2121,21 @@ Demo::Demo()
- vk::Format const tex_format = vk::Format::eR8G8B8A8Unorm;
- vk::FormatProperties props;
- gpu.getFormatProperties(tex_format, &props);
-+ char tex_file[255];
-+ memset(tex_file, '\0', 255);
-
- for (uint32_t i = 0; i < texture_count; i++) {
-+ if (strlen(bin_path) > 0) {
-+ strcpy(tex_file, bin_path);
-+ strcat(tex_file, "/");
-+ strcat(tex_file, tex_files[i]);
-+ }
-+ else
-+ strcpy(tex_file, tex_files[i]);
-+
- if ((props.linearTilingFeatures & vk::FormatFeatureFlagBits::eSampledImage) && !use_staging_buffer) {
- /* Device can texture using linear textures */
-- prepare_texture_image(tex_files[i], &textures[i], vk::ImageTiling::eLinear, vk::ImageUsageFlagBits::eSampled,
-+ prepare_texture_image(tex_file, &textures[i], vk::ImageTiling::eLinear, vk::ImageUsageFlagBits::eSampled,
- vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent);
- // Nothing in the pipeline needs to be complete to start, and don't allow fragment
- // shader to run until layout transition completes
-@@ -2094,11 +2146,11 @@ Demo::Demo()
- } else if (props.optimalTilingFeatures & vk::FormatFeatureFlagBits::eSampledImage) {
- /* Must use staging buffer to copy linear texture to optimized */
-
-- prepare_texture_image(tex_files[i], &staging_texture, vk::ImageTiling::eLinear,
-+ prepare_texture_image(tex_file, &staging_texture, vk::ImageTiling::eLinear,
- vk::ImageUsageFlagBits::eTransferSrc,
- vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent);
-
-- prepare_texture_image(tex_files[i], &textures[i], vk::ImageTiling::eOptimal,
-+ prepare_texture_image(tex_file, &textures[i], vk::ImageTiling::eOptimal,
- vk::ImageUsageFlagBits::eTransferDst | vk::ImageUsageFlagBits::eSampled,
- vk::MemoryPropertyFlagBits::eDeviceLocal);
-
-@@ -2167,7 +2219,18 @@ Demo::Demo()
-
- vk::ShaderModule Demo::prepare_vs() {
- size_t size = 0;
-- void *vertShaderCode = read_spv("cube-vert.spv", &size);
-+ char fname[255];
-+ memset(fname, '\0', 255);
-+
-+ if (strlen(bin_path) > 0) {
-+ strcpy(fname, bin_path);
-+ strcat(fname, "/");
-+ strcat(fname, "cube-vert.spv");
-+ }
-+ else
-+ strcpy(fname, "cube-vert.spv");
-+
-+ void *vertShaderCode = read_spv(fname, &size);
- if (!vertShaderCode) {
- ERR_EXIT("Failed to load cube-vert.spv", "Load Shader Failure");
- }
---
-2.11.1
-
diff --git a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0004-layer_validation_tests-include-math.h.patch b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0004-layer_validation_tests-include-math.h.patch
new file mode 100644
index 00000000..bd9713ea
--- /dev/null
+++ b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0004-layer_validation_tests-include-math.h.patch
@@ -0,0 +1,28 @@
+From a5beebd78eb232596f2b6b4de1ee417b629ada47 Mon Sep 17 00:00:00 2001
+From: Awais Belal <awais_belal@mentor.com>
+Date: Tue, 4 Sep 2018 15:33:12 +0500
+Subject: [PATCH 4/5] layer_validation_tests: include math.h
+
+Without the inclusion several math functions
+fail as expected.
+
+Signed-off-by: Awais Belal <awais_belal@mentor.com>
+---
+ tests/layer_validation_tests.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
+index 132578f85..26b0671fa 100644
+--- a/tests/layer_validation_tests.cpp
++++ b/tests/layer_validation_tests.cpp
+@@ -45,6 +45,7 @@
+ #include "vk_typemap_helper.h"
+
+ #include <limits.h>
++#include <math.h>
+
+ #include <algorithm>
+ #include <functional>
+--
+2.11.1
+
diff --git a/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0005-demos-cube-use-absolute-location-for-data-files.patch b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0005-demos-cube-use-absolute-location-for-data-files.patch
new file mode 100644
index 00000000..85c15b89
--- /dev/null
+++ b/meta-v1000/recipes-graphics/lunarg-sdk/vulkan-loader-layers/0005-demos-cube-use-absolute-location-for-data-files.patch
@@ -0,0 +1,70 @@
+From f6c2eeaad968b1ad0ebef7fad79eb5f01305a6e3 Mon Sep 17 00:00:00 2001
+From: Awais Belal <awais_belal@mentor.com>
+Date: Wed, 5 Sep 2018 11:43:07 +0500
+Subject: [PATCH 5/5] demos/cube*: use absolute location for data files
+
+If absolute locations are not used here the demo
+looks for texture files in a haphazard way and
+can only be launched from the same directory.
+This allows running the demo from anywhere and
+consolidate any data files that are needed.
+
+Signed-off-by: Awais Belal <awais_belal@mentor.com>
+---
+ demos/cube.c | 7 ++++++-
+ demos/cube.cpp | 7 ++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/demos/cube.c b/demos/cube.c
+index 29a484260..6b5f0b7af 100644
+--- a/demos/cube.c
++++ b/demos/cube.c
+@@ -67,6 +67,8 @@
+ #define APP_SHORT_NAME "cube"
+ #define APP_LONG_NAME "The Vulkan Cube Demo Program"
+
++#define VULKAN_DATA_LOC "/usr/share/vulkan-data/"
++
+ // Allow a maximum of two outstanding presentation operations.
+ #define FRAME_LAG 2
+
+@@ -1484,7 +1486,10 @@ bool loadTexture(const char *filename, uint8_t *rgba_data, VkSubresourceLayout *
+
+ return true;
+ #else
+- FILE *fPtr = fopen(filename, "rb");
++ char abs_filename[256];
++ strcpy(abs_filename, VULKAN_DATA_LOC);
++ strcat(abs_filename, filename);
++ FILE *fPtr = fopen(abs_filename, "rb");
+ char header[256], *cPtr, *tmp;
+
+ if (!fPtr) return false;
+diff --git a/demos/cube.cpp b/demos/cube.cpp
+index fe8cb7c90..3eee7d9c8 100644
+--- a/demos/cube.cpp
++++ b/demos/cube.cpp
+@@ -57,6 +57,8 @@
+ // Allow a maximum of two outstanding presentation operations.
+ #define FRAME_LAG 2
+
++#define VULKAN_DATA_LOC "/usr/share/vulkan-data/"
++
+ #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+
+ #ifdef _WIN32
+@@ -2261,7 +2263,10 @@ void Demo::update_data_buffer() {
+ }
+
+ bool Demo::loadTexture(const char *filename, uint8_t *rgba_data, vk::SubresourceLayout *layout, int32_t *width, int32_t *height) {
+- FILE *fPtr = fopen(filename, "rb");
++ char abs_filename[256];
++ strcpy(abs_filename, VULKAN_DATA_LOC);
++ strcat(abs_filename, filename);
++ FILE *fPtr = fopen(abs_filename, "rb");
+ if (!fPtr) {
+ return false;
+ }
+--
+2.11.1
+