summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlucy96chen <47800040+lucy96chen@users.noreply.github.com>2022-06-01 14:33:21 -0700
committerGitHub <noreply@github.com>2022-06-01 14:33:21 -0700
commitfc84455d0d1cb6b9396ba869a17d6f8d4b65ecc6 (patch)
tree21465f7fb11efc7329a754c5418126dd8c3906e6
parent393ce4f746c6697442a3a61debd12101fbe4e9db (diff)
Vulkan validation error fixes (#2254)
* Fixed Vulkan validation errors for incorrect layer counts and view types in Debug * Removed old (and empty) render-vk files; Ran premake.bat
-rw-r--r--build/visual-studio/gfx/gfx.vcxproj.filters92
-rw-r--r--tools/gfx/vulkan/render-vk.cpp89
-rw-r--r--tools/gfx/vulkan/render-vk.h48
-rw-r--r--tools/gfx/vulkan/vk-device.cpp14
4 files changed, 56 insertions, 187 deletions
diff --git a/build/visual-studio/gfx/gfx.vcxproj.filters b/build/visual-studio/gfx/gfx.vcxproj.filters
index c9544a85f..b663bf704 100644
--- a/build/visual-studio/gfx/gfx.vcxproj.filters
+++ b/build/visual-studio/gfx/gfx.vcxproj.filters
@@ -150,82 +150,82 @@
<ClInclude Include="..\..\..\tools\gfx\vulkan\vk-api.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-descriptor-allocator.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-device-queue.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-base.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-module.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-buffer.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-util.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-command-buffer.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-helper-functions.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-command-encoder.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-base.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-command-queue.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-device.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-descriptor-allocator.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-buffer.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-device-queue.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-query.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-device.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-vertex-layout.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-fence.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-fence.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-framebuffer.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-texture.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-helper-functions.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-sampler.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-module.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-resource-views.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-pipeline-state.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-framebuffer.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-query.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\tools\gfx\vulkan\vk-render-pass.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-pipeline-state.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-resource-views.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-object-layout.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-sampler.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-program.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-object-layout.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-command-encoder.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-object.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-object.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-program.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\tools\gfx\vulkan\vk-shader-table.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-command-buffer.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-swap-chain.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-command-queue.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-texture.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\tools\gfx\vulkan\vk-transient-heap.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-swap-chain.h">
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-util.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\tools\gfx\vulkan\vk-vertex-layout.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
@@ -341,76 +341,76 @@
<ClCompile Include="..\..\..\tools\gfx\vulkan\vk-api.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-descriptor-allocator.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-buffer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-device-queue.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-command-buffer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-module.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-command-encoder.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-util.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-command-queue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-helper-functions.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-descriptor-allocator.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-device.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-device-queue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-buffer.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-device.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-query.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-fence.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-fence.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-framebuffer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-texture.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-helper-functions.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-sampler.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-module.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-resource-views.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-pipeline-state.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-framebuffer.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-query.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\tools\gfx\vulkan\vk-render-pass.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-pipeline-state.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-resource-views.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-object-layout.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-sampler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-program.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-object-layout.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-command-encoder.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-object.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-object.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-program.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\tools\gfx\vulkan\vk-shader-table.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-command-buffer.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-swap-chain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-command-queue.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-texture.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\tools\gfx\vulkan\vk-transient-heap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-swap-chain.cpp">
+ <ClCompile Include="..\..\..\tools\gfx\vulkan\vk-util.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
diff --git a/tools/gfx/vulkan/render-vk.cpp b/tools/gfx/vulkan/render-vk.cpp
deleted file mode 100644
index 83b9e979b..000000000
--- a/tools/gfx/vulkan/render-vk.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-// render-vk.cpp
-#include "render-vk.h"
-#include "core/slang-blob.h"
-#include "vk-util.h"
-
-// Vulkan has a different coordinate system to ogl
-// http://anki3d.org/vulkan-coordinate-system/
-#ifndef ENABLE_VALIDATION_LAYER
-# if _DEBUG
-# define ENABLE_VALIDATION_LAYER 1
-# else
-# define ENABLE_VALIDATION_LAYER 0
-# endif
-#endif
-
-#ifdef _MSC_VER
-# include <stddef.h>
-# pragma warning(disable : 4996)
-# if (_MSC_VER < 1900)
-# define snprintf sprintf_s
-# endif
-#endif
-
-#if SLANG_WINDOWS_FAMILY
-# include <dxgi1_2.h>
-#endif
-
-namespace gfx
-{
-using namespace Slang;
-
-namespace vk
-{
-namespace
-{
-
-} // namespace
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-} // namespace vk
-
-
-
-} // namespace gfx
diff --git a/tools/gfx/vulkan/render-vk.h b/tools/gfx/vulkan/render-vk.h
deleted file mode 100644
index cd4a79b07..000000000
--- a/tools/gfx/vulkan/render-vk.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// render-vk.h
-#pragma once
-
-#include "../command-encoder-com-forward.h"
-#include "../mutable-shader-object.h"
-#include "../renderer-shared.h"
-#include "../transient-resource-heap-base.h"
-#include "core/slang-chunked-list.h"
-#include "vk-api.h"
-#include "vk-descriptor-allocator.h"
-#include "vk-device-queue.h"
-
-namespace gfx
-{
-namespace vk
-{
-using namespace Slang;
-
-enum
-{
-
- kMaxPushConstantSize = 256,
- kMaxDescriptorSets = 8,
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-} // namespace vk
-} // namespace gfx
diff --git a/tools/gfx/vulkan/vk-device.cpp b/tools/gfx/vulkan/vk-device.cpp
index 546f581b4..a5e990232 100644
--- a/tools/gfx/vulkan/vk-device.cpp
+++ b/tools/gfx/vulkan/vk-device.cpp
@@ -1589,7 +1589,7 @@ Result DeviceImpl::createTextureView(
return SLANG_OK;
}
- bool isArray = desc.subresourceRange.layerCount > 1;
+ bool isArray = resourceImpl->getDesc()->arraySize > 1;
VkImageViewCreateInfo createInfo = {};
createInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
createInfo.flags = 0;
@@ -1625,9 +1625,15 @@ Result DeviceImpl::createTextureView(
createInfo.subresourceRange.baseArrayLayer = desc.subresourceRange.baseArrayLayer;
createInfo.subresourceRange.baseMipLevel = desc.subresourceRange.mipLevel;
- createInfo.subresourceRange.layerCount = desc.subresourceRange.layerCount == 0
- ? VK_REMAINING_ARRAY_LAYERS
- : desc.subresourceRange.layerCount;
+ createInfo.subresourceRange.layerCount = desc.subresourceRange.layerCount;
+ if (createInfo.subresourceRange.layerCount == 0)
+ {
+ createInfo.subresourceRange.layerCount = isArray ? VK_REMAINING_ARRAY_LAYERS : 1;
+ if (createInfo.viewType == VK_IMAGE_VIEW_TYPE_CUBE)
+ {
+ createInfo.subresourceRange.layerCount = 6;
+ }
+ }
createInfo.subresourceRange.levelCount = desc.subresourceRange.mipLevelCount == 0
? VK_REMAINING_MIP_LEVELS
: desc.subresourceRange.mipLevelCount;