Coder Social home page Coder Social logo

vulkansamples's Introduction

Vulkan Samples

  • This repository is a collection of Vulkan C++ sample applications.
  • These samples were developed in the early days of Vulkan and are no longer enhanced or maintained. Refer to the KhronosGroup/Vulkan-Samples repository for newer samples that are enhanced and maintained.
  • Run the following script to obtain a short description of all or a specific sample: $ API-Samples/get-short-descripts.sh
  • Run the following script to obtain a more detailed description of all samples with a long description set: $ API-Samples/get-descripts.sh

CI Build Status

Platform Build Status
Linux/Android Build Status
Windows Build status

Structure

Vulkan Samples

  • The Vulkan Samples repo is a set of source and data files in a specific directory hierarchy:
    • API-Samples - Samples that demonstrate the use of various aspects of the Vulkan API
    • Vulkan Tutorial - Steps you through the process of creating a simple Vulkan application, learning the basics along the way. This Vulkan Tutorial link allows you to view the Vulkan Tutorial on LunarXchange as well.
    • Sample-Programs - Samples that are more functional and go deeper than simple API use.

Sample progression

  • In general, the samples are not interrelated, but there is a progression among some of the samples that lead to drawing a cube. Start with the instance sample, then enumerate-adv, device, initcommandbuffer, initswapchain, initdepthbuffer, inituniformbuffer, descriptor_pipeline_layouts, initrenderpass, initshaders, initframebuffers, vertexbuffer, allocdescriptorsets, initpipeline, and they culminate in the drawcube sample. Each sample uses utility routines from the code from previous samples to get to the point to show something new. The drawtexturedcube sample takes all of the drawcube code and adds texturing.

Contributing

Refer to the README.contrib file for specific info regarding contributing to the Vulkan samples creation effort.

Contact Information

Information for Developing or Contributing:

Please see the CONTRIBUTING.md file in this repository for more details.

How to Build and Run

BUILD.md Includes directions for building all components as well as running validation tests and demo applications.

Version Tagging Scheme

Updates to the LunarG-VulkanSamples repository which correspond to a new Vulkan specification release are tagged using the following format: v<version> (e.g., v1.1.96).

Note: Marked version releases have undergone thorough testing but do not imply the same quality level as SDK tags. SDK tags follow the sdk-<version>.<patch> format (e.g., sdk-1.1.92.0).

This scheme was adopted following the 1.1.96 Vulkan specification release.

License

This work is released as open source under a Apache-style license. See LICENSE.txt for full license.

See COPYRIGHT.txt for a full list of licenses used in this repository.

Acknowledgements

While this project has been developed primarily by LunarG, Inc., there are many other companies and individuals making this possible: Valve Corporation, funding project development; Google providing significant contributions to the samples.

vulkansamples's People

Contributors

chrisforbes avatar cnorthrop avatar courtney-g avatar courtney-lunarg avatar daveh-lunarg avatar davidlunarg avatar dustin-lunarg avatar ggfan avatar greg-lunarg avatar ianatlunarg avatar ianelliottus avatar jeremy-lunarg avatar johnzupin avatar jon-lunarg avatar jzulauf-lunarg avatar karl-lunarg avatar krooze avatar lenny-lunarg avatar lisa-lunarg avatar mark-lunarg avatar markmlunarg avatar marky-lunarg avatar mikes-lunarg avatar null77 avatar olvaffe avatar pdaniell-nv avatar renelindsay avatar stroyan avatar tobine avatar tonybarbour avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vulkansamples's Issues

minor bugs with vk0.9-texelbuffer

Couple of things I saw while running renderdoc. The descriptor set write is to binding idx 1 when there's only 1 total binding in the layout:

VkDescriptorSetLayoutCreateInfo descriptor_layout = {};
descriptor_layout.count = 1;

// ...

VkWriteDescriptorSet writes[1];
writes[0].destBinding = 1;

So I think that should be 0.

Also texelDesc.bufferView, texelBuf and texelMem aren't destroyed.

Fails to build

When building, I get the following error:

[67/204] Building CXX object layers/CMakeFiles...ayer_core_validation.dir/core_validation.cpp.o
FAILED: layers/CMakeFiles/VkLayer_core_validation.dir/core_validation.cpp.o 
/usr/bin/c++   -DDATADIR=\"share\" -DSYSCONFDIR=\"etc\" -DVK_USE_PLATFORM_XCB_KHR -DVK_USE_PLATFORM_XLIB_KHR -DVkLayer_core_validation_EXPORTS -I../include -I../layers -I../layers/../loader -I../layers/../include/vulkan -Ilayers -I../external/glslang -std=c++11 -Wpointer-arith -fPIC -MMD -MT layers/CMakeFiles/VkLayer_core_validation.dir/core_validation.cpp.o -MF layers/CMakeFiles/VkLayer_core_validation.dir/core_validation.cpp.o.d -o layers/CMakeFiles/VkLayer_core_validation.dir/core_validation.cpp.o -c ../layers/core_validation.cpp
../layers/core_validation.cpp: In function โ€˜VkResult core_validation::CreateShaderModule(VkDevice, const VkShaderModuleCreateInfo*, const VkAllocationCallbacks*, VkShaderModule_T**)โ€™:
../layers/core_validation.cpp:8520:40: error: โ€˜SPV_ENV_VULKAN_1_0โ€™ was not declared in this scope
     spv_context ctx = spvContextCreate(SPV_ENV_VULKAN_1_0);
                                        ^~~~~~~~~~~~~~~~~~
../layers/core_validation.cpp:8524:45: error: invalid conversion from โ€˜spv_diagnostic_t**โ€™ to โ€˜uint32_t {aka unsigned int}โ€™ [-fpermissive]
     auto result = spvValidate(ctx, &binary, &diag);
                                             ^~~~~
../layers/core_validation.cpp:8524:50: error: too few arguments to function โ€˜spv_result_t spvValidate(spv_const_context, spv_const_binary, uint32_t, spv_diagnostic_t**)โ€™
     auto result = spvValidate(ctx, &binary, &diag);
                                                  ^
In file included from ../layers/core_validation.cpp:62:0:
/usr/include/spirv-tools/libspirv.h:393:14: note: declared here
 spv_result_t spvValidate(const spv_const_context context,
              ^~~~~~~~~~~
[72/204] Building CXX object tests/CMakeFiles/...der_validation_tests.dir/vktestframework.cpp.o
ninja: build stopped: subcommand failed.

This is on 64-bit Arch Linux with GCC 6.1.1, CMake 3.5.2 and Ninja 1.7.1.

Cube demo does not allocate depth buffer in device local heap

I forked this repo to make an OpenVR version of the cube demo and discovered a bug that was causing perf issues with the cube demo. In cube.cpp the call to choose the heap in prepare_depth() is as follows:

    auto const pass =
        memory_type_from_properties(mem_reqs.memoryTypeBits, vk::MemoryPropertyFlagBits(0), &depth.mem_alloc.memoryTypeIndex);

It should ask for the device local heap:

    auto const pass =
        memory_type_from_properties(mem_reqs.memoryTypeBits, vk::MemoryPropertyFlagBits::eDeviceLocal, &depth.mem_alloc.memoryTypeIndex);

cube.c has the same issue. When I went up to 8x MSAA in VR this was causing the depth clear to take 20+ms.

The hologram demo should subtract a base time to avoid floating point round-off error.

This probably also applies to Linux but is particularly bad on Windows. Significant precision is lost when a large QueryPerformanceCounter result is cast to a float, and all animation stutters as a consequence. Something like the following code fixes the problem (until you let the demo run for an extended period of time):

class ShellWin32 : public Shell {
    UINT64 perf_counter_freq_;
    UINT64 perf_counter_base_;
...
ShellWin32::ShellWin32(Game &game) : Shell(game), hwnd_(nullptr)
{
    QueryPerformanceFrequency(reinterpret_cast<LARGE_INTEGER *>(&perf_counter_freq_));
    QueryPerformanceCounter(reinterpret_cast<LARGE_INTEGER *>(&perf_counter_base_));
...
float ShellWin32::get_time()
{
    UINT64 count;
    QueryPerformanceCounter(reinterpret_cast<LARGE_INTEGER *>(&count));

    return (float) ( count - perf_counter_base_ ) / perf_counter_freq_;
}

However, even with this fixed, the object motion is still not smooth, even when rendering just 100 objects, so there are other problems.

Johannes van Waveren @vanwaveren about 21 hours ago
I also noticed that the hologram demo uses a lot of CPU time to animated and render 10000 objects. It uses more than 20% CPU on my quad core Intel Core i7-4960HQ. For comparison, the atw_vulkan demo (in the oculus-atw branch) consumes < 3% CPU to animate and render 13824 cubes per eye.

Developer Chia-I Wu @olvaffe1 about 7 hours ago
I put out two commits on hologram branch, attempting to fix the slowness issue. Can you give them a try?
I also did a quick profiling and about 90% of CPU cycles were spent in GLM library for matrix manipulations. I intentionally put a lot of computations on CPU so it seemed that worked?
I will look at the precision issue tomorrow and revisit CPU usage later this week.

FENCE_TIMEOUT is too low

In a few of the samples there is a vkWaitForFences(info.device, 1, &drawFence, VK_TRUE, FENCE_TIMEOUT); to wait for the command buffers to finish executing, but FENCE_TIMEOUT is currently 1000000ns = 1ms, which at least for my system seems too low - res is VK_TIMEOUT instead of VK_SUCCESS.

Better description of how to build.

I wanted to make a small patch against vulkaninfo.c but I was looking at the one from the latest sdk (1.0.13.0) from the lunarg website. So I decided to check out this repository and make the patch here. However, I was unable to build the code in this repository.
This is my CMake output.
cmake_output.txt

I tried various things and wasted more time than I care to admit, but nothing seemed like it was the "intended" way to build the code in this repository. What is the usual workflow that people use for building? It would be nice to document that.
What other repos do I have to check out? Where do I have to check them out? What do I have to build before building this? Etc.

vk0.2-enumerate*.cpp - file name is too generic

the name of this sample file does not provide much of an indication of what sample/capability is in the file. enumerate is pretty generic. how about enum-phys-dev or something like that.

DestroySurface removed

I don't understand commit 818e06f. It says there is no DestroySurface routine, but it still exists in both the header and the spec? What was the reason for removing the call?

cube.c transitions swapchain image layouts without acquiring the images first

At https://github.com/LunarG/VulkanSamples/blob/master/demos/cube.c#L912 it sets the layout of the swapchain images to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, and as far as I can see it doesn't acquire the image first.

https://www.khronos.org/registry/vulkan/specs/1.0-wsi_extensions/xhtml/vkspec.html#_wsi_swapchain says

Use of a presentable image must occur only after the image is returned by vkAcquireNextImageKHR, and before it is presented by vkQueuePresentKHR. This includes transitioning the image layout and rendering commands.

Linux build failure due to outdated broken glslang revision dependency.

As first reported here; KhronosGroup/glslang#344

The specific glslang revision pulled in by https://github.com/LunarG/VulkanSamples/blob/master/glslang_revision (4678ca9dacfec7a084dbc69bbe568bdad6889f1b at time of writing) fails to build on Linux. The issue is fixed in the current https://github.com/KhronosGroup/glslang HEAD, and probably earlier.

https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers has the exact same issue, and this bug report is a duplication of my bug report there; KhronosGroup/Vulkan-LoaderAndValidationLayers#681

Can not find vk_dispatch_table_helper.h

Hi,
I am trying to build these samples according to the directions in the wiki.
I am using the SDK V. 1.0.39.1 and it looks like the file vk_dispatch_table_helper.h is not included or something.

I can not build the samples because I get the error:
Error C1083 Cannot open include file: 'vk_dispatch_table_helper.h': No such file or directory VKLayer_overlay C:\VulkanSDK\1.0.39.1\Samples\Layer-Samples\Overlay\overlay.cpp 30

And when I try to run build_windows_samples.sh from the CMD I get:

C:\VulkanSDK\1.0.39.1\Source\layers\vk_layer_table.cpp(22): fatal error C1083: Cannot open include file: 'vk_dispatch_t able_helper.h': No such file or directory [C:\VulkanSDK\1.0.39.1\Samples\build\Layer-Samples\Overlay\VKLayer_overlay.vc xproj]

Is there some way for me to fix this?

memory flushing & invalidation inconsistency

According to the specification, a memory allocated without VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set must be flushed/invalidated with vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges.

By studying all the samples, one can only conclude they don't respect the specs in that regard. No sample use vkInvalidateMappedMemoryRanges and only one (copyblitimage) uses vkFlushMappedMemoryRanges before unmapping memory. But many of them create memory objects without VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set.

So what's the deal there? Do these samples simply assume that the memory type they obtained has this bit set? Looks quite dangerous to me.

presentable image transition must happen only after acquire

according to the WSI swapchain spec it's not allowed to do the transition before the first acquire of the image:

The presentable images of a swapchain are owned by the presentation engine. An application can acquire use of a presentable image from the presentation engine. Use of a presentable image must occur only after the image is returned by vkAcquireNextImageKHR, and before it is presented by vkQueuePresentKHR. This includes transitioning the image layout and rendering commands.

This means that you need to keep a flag per image to see if it's been used already or always use VK_IMAGE_LAYOUT_UNDEFINED as the source.

Samples may try to use a queue family that the device was not created with.

In init_device() a VkDevice is created with a single VkDeviceQueueCreateInfo for a queue family that supports VK_QUEUE_GRAPHICS_BIT. Note that this queue may not support presentation.

Later, in init_swapchain_extension() a VkSurfaceKHR is created, and an attempt is made to select a queue family that supports both VK_QUEUE_GRAPHICS_BIT and presentation on the VkSurfaceKHR. This may be a different queue family than the one the device was created with, in which case vkGetDeviceQueue with this queue family will fail.

In order to render to a window on Windows or Linux, Vulkan pretty much forces the following order of operation:

  1. create platform window (HWND, xcb_window_t, etc.)
  2. create VkSurfaceKHR for the window
  3. create VkDevice with one or more queue families that support the required VK_QUEUE_?_BITs and presentation on the VkSurfaceKHR
  4. create VkSwapchainKHR for the VkSurfaceKHR with imageSharingMode set to VK_SHARING_MODE_CONCURRENT in case there is a separate queue family for presentation

Also note that the init_swapchain_extension() code will select a separate queue family for presentation if there is no queue family that supports both VK_QUEUE_GRAPHICS_BIT and presentation. However, the code never uses the presentation queue family if it is different, and the code also does not error if there is no queue family that supports both VK_QUEUE_GRAPHICS_BIT and presentation.

Also note that init_texture() uses vkCmdCopyImage which requires a queue family that supports VK_QUEUE_TRANSFER_BIT.

Overlay layer sample confusing data map usage.

The Layer-Samples/Overlay/overlay.cpp probably works correctly but don't the following lines use different keys and therefore produce different objects?

layer_data *my_data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map);
layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map);

drawsubpasses sample crash: pipeline.pColorBlendState can NOT be set to VkPipelineColorBlendStateCreateInfo when there is only stencil attachment

VkPipelineColorBlendStateCreateInfo (cb) โ€“ state setup with attachment count 1 (depth/stencil only attachment) and when creating the graphics pipeline object (VkGraphicsPipelineCreateInfo), color blend state was set to cb โ€“ which as per spec does *_not *_look right.

Spec: pColorBlendState is a pointer to an instance of the VkPipelineColorBlendStateCreateInfo structure, or** NULL** if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use any color attachments.

So the code below needs to be changed:
VkGraphicsPipelineCreateInfo pipeline;
pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
pipeline.pNext = NULL;
pipeline.layout = info.pipeline_layout;
pipeline.basePipelineHandle = VK_NULL_HANDLE;
pipeline.basePipelineIndex = 0;
pipeline.flags = 0;
pipeline.pVertexInputState = &vi;
pipeline.pInputAssemblyState = &ia;
pipeline.pRasterizationState = &rs;
pipeline.pColorBlendState = &cb; This should be changed to pipeline.pColorBlendState = NULL;
.....
.......

and in the subpass2 (of renderpass 1), we can then set the state to &cb

/* this pipeline will run in the second subpass */
pipeline.subpass = 1;
pipeline.pColorBlendState = &cb; --> set here to &cb (as this will have color attachment).

This will fix the crash and renders the cubes (one left and one right in half full screen as expected)

2/5 missing presentation frames (very weird)

Hi,

This is an issue I have on my Debian system. I'm quite experienced in game engine programming, but I've never seen that before.

It's simple to describe: the presentation works 3 times out of 5. Period. Whatever I do. But let me develop a bit: when calling vkQueuePresent(), here is what happens for each frame:

  • frame 1 is presented
  • frame 2 is NOT presented (still see frame 1)
  • frame 3 is NOT presented (still see frame 1)
  • frame 4 is presented
  • frame 5 is presented
  • frame 6 is presented
  • frame 7 is NOT presented (still see frame 6)
  • frame 8 is NOT presented (still see frame 6)
  • frame 9 is presented
  • frame 10 is presented
  • frame 11 is presented
  • frame 12 is NOT presented (still see frame 11)
    ... (and so on indefinitely)

What is weird about it is that it's not the program fault at all. Proof? Well, I did this patch on demo.c sample to make sure:

From 9685bafb791968502f45e243a91dbef1f906c503 Mon Sep 17 00:00:00 2001
From: Alexandre BACQUART
Date: Fri, 13 May 2016 23:37:02 +0200
Subject: [PATCH] test driver (maybe) issue

---
 demos/cube.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/demos/cube.c b/demos/cube.c
index bc39141..2226137 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -30,6 +30,7 @@
 #include <signal.h>
 #ifdef __linux__
 #include <X11/Xutil.h>
+#include <unistd.h>
 #endif

 #ifdef _WIN32
@@ -779,6 +780,10 @@ static void demo_draw(struct demo *demo) {
         assert(!err);
     }

+    static unsigned frameCount = 0;
+    printf("frame %u\n", ++frameCount);
+    usleep(500000);
+
     err = vkQueueWaitIdle(demo->queue);
     assert(err == VK_SUCCESS);

@@ -2982,7 +2987,7 @@ static void demo_init(struct demo *demo, int argc, char **argv) {
     demo->width = 500;
     demo->height = 500;

-    demo->spin_angle = 0.01f;
+    demo->spin_angle = 2.f;
     demo->spin_increment = 0.01f;
     demo->pause = false;

-- 
2.8.0.rc3

This simple patch idea is to make the issue obvious (at least to me, because TBH, I would be surprised that this behavior happens for everyone, even considering only GNU/Linux. If it does the same for you, please let me know). The patch does 3 things:

  • Add a sleep period of 500ms after each call to vkQueuePresent(), this way I can clearly see every frame (note that changing this value DOES NOT change the behavior described above).
  • Add a frame counter output to stdout to follow it more closely (launcher terminal on a side, the cube sample window on the other side).
  • Set the initial spin angle to 2 to exacerbate the difference between frames.

And the result is exactly what I described. Of course, without the introduced delay, this issue is not noticeable in IMMEDIATE presentation mode, and barely noticeable in FIFO presentation mode (though it's not as smooth as it should be, it's hard to guess what is happening).

Also note that validation layers are completely silent. Nothing seems to be wrong from the Vulkan implementation POV. Another note: my OpenGL based engine does not have this issue, all frames are presented and everything is perfectly smooth.

My system is Debian (sid). Installed drivers are the proprietary NVidia 364.19 (GPU is GeForce GTX 660). CPU is a quite old dual-core AMD Athlon 64, though I highly doubt it is relevant anyway.

Now, I highly suspect a driver issue, but I'm not 100% certain. Maybe it's not the right place to talk about that. So don't hesitate to close this issue, but please tell me what you think about it (and maybe where I could discuss about it).

Thanks.

No sample using input attachment?

I'm trying to use the input attachment feature of Vulkan but subpassLoad() calls always return 0.
I wanted to look at a working sample to see what I'm not doing correctly but it looks like there is none available.

Is it planned to include such sample in a future release?

Error: SPIRV_TOOLS_LIB-NOTFOUND.obj

Hi,
I am trying to build these samples, that come with the 1.0.42.2 Vulkan SDK and I can't build them. I have Windows 10 and am trying to build from Visual Studio.

I have successfully built glslang and, when building spirv-tools, I get:

========== Rebuild All: 10 succeeded, 0 failed, 5 skipped ==========

However, when trying to build the samples in Visual Studio I get:

Severity Code Description Project File Line Suppression State Error LNK1181 cannot open input file 'SPIRV_TOOLS_LIB-NOTFOUND.obj' occlusion_query C:\VulkanSDK\1.0.42.2\Samples\build\API-Samples\LINK 1

In many of the samples projects (only 5 build, and that error is the only one repeated for all the other files).

Do you have any suggestions for me to build these? Thanks

VK_PRESENT_MODE_FIFO_KHR should be the preferred swap mode

In API-Samples/05-init_swapchain/05-init_swapchain.cpp, VK_PRESENT_MODE_MAILBOX_KHR is used if it's available. VK_PRESENT_MODE_FIFO_KHR is more appropriate for the majority of applications as they should only render frames that will be presented to the display (the GPU shouldn't waste resources rendering images that won't be seen).

GLSL shader "convention" for Vulkan.

Some samples use the following vertex shader code:

    "   // GL->VK conventions\n"
    "   gl_Position.y = -gl_Position.y;\n"
    "   gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0;\n"

This feels like a hack to me. Imho, the right thing to do would be to setup an appropriate projection matrix that converts to the correct clip space for Vulkan (Z=[0,1], +Y=down), as opposed to OpenGL (Z=[-1,1], +Y=up). GLSL is a shader language that isn't in any way tied to the OpenGL clip space. It is the projection matrix that specifies the conversion to clip space.

'Cannot find or open the PDB file' while compiling in vs2015

I have enabled source server support and Microsoft Symbol Servers,error still reported
'15-draw_cube.exe' (Win32): Loaded 'D:\VulkanSamples-master\VulkanSamples-master\build\API-Samples\Debug\15-draw_cube.exe'. Symbols loaded.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\vulkan-1.dll'. Module was built without symbols.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\shlwapi.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\lpk.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\usp10.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\msvcr120.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\msvcp140d.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140d.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\api-ms-win-core-timezone-l1-1-0.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\api-ms-win-core-file-l2-1-0.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\api-ms-win-core-localization-l1-2-0.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\api-ms-win-core-synch-l1-2-0.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\api-ms-win-core-processthreads-l1-1-1.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\api-ms-win-core-file-l1-2-0.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\msctf.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\nvinitx.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\version.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Program Files\NVIDIA Corporation\coprocmanager_etoured.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Program Files\NVIDIA Corporation\coprocmanager\nvd3d9wrapx.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\setupapi.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\cfgmgr32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ole32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\devobj.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Program Files\NVIDIA Corporation\coprocmanager\nvdxgiwrapx.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\nvoglv64.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\shell32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\wtsapi32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\dbghelp.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\wintrust.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\crypt32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\msasn1.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ntmarta.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\Wldap32.dll'. Cannot find or open the PDB file.
The thread 0x2868 has exited with code 0 (0x0).
The thread 0x2a08 has exited with code 0 (0x0).
The thread 0x71c has exited with code 0 (0x0).
The thread 0x2c18 has exited with code 0 (0x0).
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\uxtheme.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'D:\install\kwifi\kwassist64.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\comctl32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a\GdiPlus.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\dwmapi.dll'. Cannot find or open the PDB file.
The thread 0x2338 has exited with code 0 (0x0).
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\cryptbase.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\opengl32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\glu32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ddraw.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\dciman32.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ig75icd64.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\igdusc64.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\powrprof.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\powrprof.dll'
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\winsta.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\igd10iumd64.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\bcrypt.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Loaded 'C:\Windows\System32\ncrypt.dll'. Cannot find or open the PDB file.
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\igd10iumd64.dll'
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\ncrypt.dll'
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\bcrypt.dll'
The thread 0x1390 has exited with code 0 (0x0).
The thread 0x1ac4 has exited with code 0 (0x0).
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\nvoglv64.dll'
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\dbghelp.dll'
'15-draw_cube.exe' (Win32): Unloaded 'C:\Windows\System32\wtsapi32.dll'
The thread 0x2764 has exited with code 0 (0x0).
The thread 0x263c has exited with code 0 (0x0).
The thread 0x6cc has exited with code 0 (0x0).
The thread 0x2f18 has exited with code 0 (0x0).
The program '[8140] 15-draw_cube.exe' has exited with code 0 (0x0).

CMAKE missing link directive

The build script throws following error:

CmakeErrorLog:
...
File .../CheckSymbolExists.c:

/* */
#include <pthread.h>

int main(int argc, char** argv)
{
  (void)argv;
#ifndef pthread_create
  return ((int*)(&pthread_create))[argc];
#else
  (void)argc;
  return 0;
#endif
}

...

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /mnt/hdd/home/yousry/Dokumente/source/vulkan/VulkanSamples/build/CMakeFiles/CMakeTmp

...

Makefile:126: die Regel fรผr Ziel โ€žcmTC_b7b8b/fastโ€œ scheiterte
make: *** [cmTC_b7b8b/fast] Fehler 2

...

Certainly building this test isn't a problem if all necessary libraries are linked:

$CC CheckSymbolExists.c -lpthread

BTW I got the same result with gcc 5.3.

Vulkan sample test "copyblitimage" crashes on "N' based device

assert(
(formatProps.linearTilingFeatures & VK_IMAGE_USAGE_TRANSFER_SRC_BIT) &&
"Format cannot be used as transfer source");

I don't see why this assert is needed and in fact what the app is doing is getting the physical device format properties using: vkGetPhysicalDeviceFormatProperties() and then checking/asserting if the format can be used as a transfer source (by checking for the bit: VK_IMAGE_USAGE_TRANSFER_SRC_BIT).
vkGetPhysicalDeviceFormatProperties() only returns one of the vkFormatProperties, so, the result should NOT be used to check if the image can be used as a source of a transfer command. I think the assert is wrong.

Removing the assert eliminates the crash and app runs fine.

Per spec: VK_IMAGE_USAGE_TRANSFER_SRC_BIT indicates that the image can be used as the source of a transfer command.

incorrect/incomplete order for "cube progression" in README.md

README.md says

Start with the instance sample, then device, initcommandbuffer, ...
Each sample uses utility routines from the code from previous samples to get to the point to show something new.

but initcommandbuffer does

    init_global_layer_properties(info);
    init_instance_extension_names(info);
    init_device_extension_names(info);
    init_instance(info, sample_title);
    init_enumerate_device(info);
    init_window_size(info, 500, 500);
    init_connection(info);
    init_window(info);
    init_swapchain_extension(info);
    init_device(info);

which looks like a bit more than instance and device. Some are in the list but after commandbuffer, while others aren't listed at all.

The API-Samples/utils.cpp::GLSLtoSPV contains memory leak.

The program and shader variables in the GLSLtoSPV function are not freed.

I think this code was copied from glslang/StandAlone/StandAlone.cpp::CompileAndLinkShaderUnits

That function ends with these few lines, but the cleanup logic wasn't copied into the GLSLtoSPV function.

// Free everything up, program has to go before the shaders
// because it might have merged stuff from the shaders, and
// the stuff from the shaders has to have its destructors called
// before the pools holding the memory in the shaders is freed.
delete &program;
while (shaders.size() > 0) {
    delete shaders.back();
    shaders.pop_back();
}

device extension sample

the samples include an instance extension example, but none of our layers have instance extensions, so it is not very interesting. we should include a device extension sample, since a few of our layers actually use the DEBUG_REPORT device extension.

keyboard input not working

I am running the examples and noticed that keyboard input doesn't work.

Moving the mouse to rotate the view and using the right mouse button to zoom in and out is working.
The graphics themselves display and appear to be running fine.

The system is Linux Debian stretch/sid with kernel 4.6.2 on an AMD FX 8350 with an Nvidia GTX 960.
Xfce 4.12.13, Xorg 1.18.3, libxcp 1.11.1, libXau 1.0.8, libXdmcp 1.1.2, libvulkan 1.0.8.0, libassimp 3.2

Also, thank you for the examples.

Android Build issue

Tried to follow the instruction for android, hit error of:

File /usr/local/google/home/gfan/proj/VulkanSamples/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <pthread.h>

int main(int argc, char** argv)
{
  (void)argv;
#ifndef pthread_create
  return ((int*)(&pthread_create))[argc];
#else
  (void)argc;
  return 0;
#endif
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /usr/local/google/home/gfan/proj/VulkanSamples/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_3c024/fast"
/usr/bin/make -f CMakeFiles/cmTC_3c024.dir/build.make CMakeFiles/cmTC_3c024.dir/build
make[1]: Entering directory `/usr/local/google/home/gfan/proj/VulkanSamples/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_3c024.dir/CheckFunctionExists.c.o
/usr/lib/ccache/cc   -std=c99 -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fno-strict-aliasing -fno-builtin-memcmp -fvisibility=hidden -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_3c024.dir/CheckFunctionExists.c.o   -c /usr/local/google/opt/cmake/share/cmake-3.7/Modules/CheckFunctionExists.c
Linking C executable cmTC_3c024
/usr/local/google/opt/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3c024.dir/link.txt --verbose=1
/usr/lib/ccache/cc  -std=c99 -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fno-strict-aliasing -fno-builtin-memcmp -fvisibility=hidden -DCHECK_FUNCTION_EXISTS=pthread_create    -rdynamic CMakeFiles/cmTC_3c024.dir/CheckFunctionExists.c.o  -o cmTC_3c024 -lpthreads 
/usr/bin/ld: cannot find -lpthreads
collect2: error: ld returned 1 exit status
make[1]: *** [cmTC_3c024] Error 1
make[1]: Leaving directory `/usr/local/google/home/gfan/proj/VulkanSamples/CMakeFiles/CMakeTmp'
make: *** [cmTC_3c024/fast] Error 2

It was able to build last time I tried ( very long time ago ). The command used:

 cd VulkanSamples/
 ./update_external_sources.sh 
 which cmake 
 cmake -DANDROID=ON

thank you for help!

CMake fails on Ubuntu 14.04

Running CMake as shown in the README fails on my ubuntu 14.04 setup. I installed the SDK via the linux Download link on the LunarG site.

CMake output is as follows:

-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.4.3", minimum required is "3") 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") 
-- Found xcb: /usr/include  
-- Found PythonInterp: /usr/bin/python3 (found version "3.4.3") 
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.4.3", minimum required is "3") 
-- Shader dir: /home/tom/Code/vulkan/VulkanSamples/Layer-Samples/data
-- Cxxflags:  -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fno-strict-aliasing -fno-builtin-memcmp -std=c++11 -fvisibility=hidden -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fno-strict-aliasing -fno-builtin-memcmp -std=c++11 -fvisibility=hidden
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GLSLANG_LIB
    linked by target "vk_layer_validation_tests" in directory /home/tom/Code/vulkan/VulkanSamples/tests
    linked by target "allocdescriptorsets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "copyblitimage" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dbgcreatemsgcallback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "depthbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "descriptor_pipeline_layouts" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "device" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawsubpasses" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawtexturedcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dynamicuniform" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enable_validation_with_callback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate-adv" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "immutable_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initcommandbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initframebuffers" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initpipeline" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initrenderpass" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initshaders" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initswapchain" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "inittexture" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multiple_sets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multithreadcmdbuf" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "occlusion_query" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_cache" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_derivative" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "push_constants" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "secondarycmd" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "separate_image_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_assembly" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_specialization" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "template" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "texelbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "uniformbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "vertexbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
GLSLANG_SPIRV_INCLUDE_DIR
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/tests
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/tests
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/tests/gtest-1.7.0
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/tests/gtest-1.7.0
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/layers
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples/utils
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples/utils
OGLCompiler_LIB
    linked by target "vk_layer_validation_tests" in directory /home/tom/Code/vulkan/VulkanSamples/tests
    linked by target "allocdescriptorsets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "copyblitimage" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dbgcreatemsgcallback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "depthbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "descriptor_pipeline_layouts" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "device" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawsubpasses" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawtexturedcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dynamicuniform" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enable_validation_with_callback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate-adv" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "immutable_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initcommandbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initframebuffers" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initpipeline" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initrenderpass" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initshaders" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initswapchain" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "inittexture" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multiple_sets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multithreadcmdbuf" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "occlusion_query" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_cache" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_derivative" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "push_constants" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "secondarycmd" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "separate_image_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_assembly" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_specialization" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "template" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "texelbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "uniformbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "vertexbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
OSDependent_LIB
    linked by target "vk_layer_validation_tests" in directory /home/tom/Code/vulkan/VulkanSamples/tests
    linked by target "allocdescriptorsets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "copyblitimage" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dbgcreatemsgcallback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "depthbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "descriptor_pipeline_layouts" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "device" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawsubpasses" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawtexturedcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dynamicuniform" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enable_validation_with_callback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate-adv" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "immutable_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initcommandbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initframebuffers" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initpipeline" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initrenderpass" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initshaders" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initswapchain" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "inittexture" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multiple_sets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multithreadcmdbuf" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "occlusion_query" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_cache" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_derivative" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "push_constants" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "secondarycmd" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "separate_image_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_assembly" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_specialization" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "template" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "texelbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "uniformbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "vertexbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
SPIRV_LIB
    linked by target "vk_layer_validation_tests" in directory /home/tom/Code/vulkan/VulkanSamples/tests
    linked by target "allocdescriptorsets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "copyblitimage" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dbgcreatemsgcallback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "depthbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "descriptor_pipeline_layouts" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "device" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawsubpasses" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawtexturedcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dynamicuniform" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enable_validation_with_callback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate-adv" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "immutable_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initcommandbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initframebuffers" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initpipeline" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initrenderpass" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initshaders" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initswapchain" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "inittexture" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multiple_sets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multithreadcmdbuf" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "occlusion_query" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_cache" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_derivative" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "push_constants" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "secondarycmd" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "separate_image_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_assembly" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_specialization" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "template" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "texelbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "uniformbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "vertexbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
SPIRV_TOOLS_INCLUDE_DIR
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
   used as include directory in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples/utils
SPIRV_TOOLS_LIB
    linked by target "allocdescriptorsets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "copyblitimage" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dbgcreatemsgcallback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "depthbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "descriptor_pipeline_layouts" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "device" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawsubpasses" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "drawtexturedcube" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "dynamicuniform" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enable_validation_with_callback" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "enumerate-adv" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "immutable_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initcommandbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initframebuffers" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initpipeline" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initrenderpass" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initshaders" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "initswapchain" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "inittexture" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_extension_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "instance_layer_properties" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multiple_sets" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "multithreadcmdbuf" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "occlusion_query" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_cache" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "pipeline_derivative" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "push_constants" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "secondarycmd" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "separate_image_sampler" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_assembly" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "spirv_specialization" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "template" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "texelbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "uniformbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples
    linked by target "vertexbuffer" in directory /home/tom/Code/vulkan/VulkanSamples/API-Samples

-- Configuring incomplete, errors occurred!
See also "/home/tom/Code/vulkan/VulkanSamples/build/CMakeFiles/CMakeOutput.log".
See also "/home/tom/Code/vulkan/VulkanSamples/build/CMakeFiles/CMakeError.log".

some samples crash because of missing "init" utility functions?

The following samples are crashing because these apps are not invoking the app "init" utility functions that are needed to be invoked before doing anything, leading to the app crash.

"instance",
"instance_layer_properties",
"instance_extension_properties"
"instance_layer_extension_properties"
"enumerate" and
"enumerate-adv"

So, adding these below "init" functions in the sample_main() fixes the crash and apps run fine.
int sample_main() {
struct sample_info info = {};
init_global_layer_properties(info);
init_instance_extension_names(info);
init_device_extension_names(info);
init_instance(info, "sample");
...
}

Can we fix the apps?

Missing minimum CMake version in Hologram demo

The CMakeLists.txt in the hologram demo is not specifiying a minimum cmake version (the other examples do), resulting in the following warning :

CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.1)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

destroy_window before destroy_device

Not a big deal and doesn't cause any bugs, but in the API-samples all destroy_* functions are typically called in the reverse order of the init_* functions. The exception is destroy_device which is called after destroy_window.

Bad check in vk0.10-texelbuffer

This check is in vk0.10-texelbuffer.cpp:

    if (info.gpu_props.limits.maxTexelBufferElements > 0) {
        std::cout << "maxTexelBufferSize too small\n";
        exit(-1);
    }

The check seems to be the wrong way around, it should be seeing if the maximum is less than what's required - but the spec says the minimum value this can be is 65536 anyway which is more than enough for the sample. If the check should stay for illustrative/educational purposes, I think it should check if(... < 4) or similar.

The hologram demo calls vkBeginCommandBuffer() on an active command buffer.

Or at least, using latest master of the validation layers, the mem tracker validation layer complains: "Calling vkBeginCommandBuffer() on active CB 0000005EA54E3A98 before it has completed. You must check CB flag before this call."

Chia-I Wu @olvaffe1 about 7 hours ago
I did not see the error, but it is likely that the bug was not triggered on my machine. I did notice an issue with the code. I will fix it tomorrow.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.