summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-07-21 03:49:39 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-07-21 03:49:39 +0000
commit562e84c20aaf8277c76042a40ce9837e86c78d60 (patch)
treea734a50fe15014761a85bb78f8b3585e9dc74750 /Graphics/GraphicsEngineVulkan
parentAdded CREATE_SHADER_SOURCE_INPUT_STREAM_FLAGS enum and IShaderSourceInputStre... (diff)
downloadDiligentCore-562e84c20aaf8277c76042a40ce9837e86c78d60.tar.gz
DiligentCore-562e84c20aaf8277c76042a40ce9837e86c78d60.zip
Added DILIGENT_NO_HLSL CMake option to disable HLSL support in Vulkan and OpenGL backends
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/CMakeLists.txt14
-rw-r--r--Graphics/GraphicsEngineVulkan/src/GenerateMipsVkHelper.cpp8
-rw-r--r--Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp9
-rw-r--r--Graphics/GraphicsEngineVulkan/src/ShaderVkImpl.cpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/src/TextureVkImpl.cpp2
-rw-r--r--Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanInstance.cpp6
6 files changed, 30 insertions, 13 deletions
diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt
index 61c80fbb..bb1809f0 100644
--- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt
+++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt
@@ -173,9 +173,14 @@ set(PRIVATE_DEPENDENCIES
Diligent-TargetPlatform
Diligent-GraphicsEngineNextGenBase
Diligent-GLSLTools
- SPIRV-Tools-opt
)
+if (${DILIGENT_NO_HLSL})
+ message("HLSL support is disabled. Vulkan backend may not be able to consume SPIRV bytecode generated from HLSL.")
+else()
+ list(APPEND PRIVATE_DEPENDENCIES SPIRV-Tools-opt)
+endif()
+
if(PLATFORM_WIN32)
if(${ARCH} EQUAL 64)
set(VULKAN_LIB_FOLDER x64)
@@ -272,7 +277,12 @@ if (${DILIGENT_NO_GLSLANG})
message("GLSLang is not being built. Vulkan backend will only be able to consume SPIRV byte code.")
endif()
-target_compile_definitions(Diligent-GraphicsEngineVk-static PRIVATE ${PRIVATE_COMPILE_DEFINITIONS} NO_GLSLANG=$<BOOL:${DILIGENT_NO_GLSLANG}>)
+target_compile_definitions(Diligent-GraphicsEngineVk-static
+PRIVATE
+ ${PRIVATE_COMPILE_DEFINITIONS}
+ DILIGENT_NO_GLSLANG=$<BOOL:${DILIGENT_NO_GLSLANG}>
+ DILIGENT_NO_HLSL=$<BOOL:${DILIGENT_NO_HLSL}>
+)
target_compile_definitions(Diligent-GraphicsEngineVk-shared PRIVATE ${PRIVATE_COMPILE_DEFINITIONS} ENGINE_DLL=1)
if(PLATFORM_WIN32)
diff --git a/Graphics/GraphicsEngineVulkan/src/GenerateMipsVkHelper.cpp b/Graphics/GraphicsEngineVulkan/src/GenerateMipsVkHelper.cpp
index 92d920df..7742cd63 100644
--- a/Graphics/GraphicsEngineVulkan/src/GenerateMipsVkHelper.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/GenerateMipsVkHelper.cpp
@@ -114,7 +114,7 @@ std::array<RefCntAutoPtr<IPipelineState>, 4> GenerateMipsVkHelper::CreatePSOs(TE
{
std::array<RefCntAutoPtr<IPipelineState>, 4> PSOs;
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
ShaderCreateInfo CSCreateInfo;
CSCreateInfo.Source = g_GenerateMipsCSSource;
@@ -181,7 +181,7 @@ std::array<RefCntAutoPtr<IPipelineState>, 4> GenerateMipsVkHelper::CreatePSOs(TE
GenerateMipsVkHelper::GenerateMipsVkHelper(RenderDeviceVkImpl& DeviceVkImpl) :
m_DeviceVkImpl(DeviceVkImpl)
{
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
BufferDesc ConstantsCBDesc;
ConstantsCBDesc.Name = "Constants CB buffer";
ConstantsCBDesc.BindFlags = BIND_UNIFORM_BUFFER;
@@ -197,7 +197,7 @@ GenerateMipsVkHelper::GenerateMipsVkHelper(RenderDeviceVkImpl& DeviceVkImpl) :
void GenerateMipsVkHelper::CreateSRB(IShaderResourceBinding** ppSRB)
{
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
// All PSOs are compatible
auto& PSO = FindPSOs(TEX_FORMAT_RGBA8_UNORM);
PSO[0]->CreateShaderResourceBinding(ppSRB, true);
@@ -260,7 +260,7 @@ void GenerateMipsVkHelper::GenerateMips(TextureViewVkImpl& TexView, DeviceContex
SubresRange.levelCount = 1;
VkImageLayout AffectedMipLevelLayout;
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
if (TexView.HasMipLevelViews())
{
VERIFY_EXPR(pSRB != nullptr);
diff --git a/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
index 31888d8c..99b27d2c 100644
--- a/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
@@ -35,7 +35,10 @@
#include "ShaderResourceBindingVkImpl.hpp"
#include "EngineMemory.h"
#include "StringTools.hpp"
-#include "spirv-tools/optimizer.hpp"
+
+#if !DILIGENT_NO_HLSL
+# include "spirv-tools/optimizer.hpp"
+#endif
namespace Diligent
{
@@ -135,6 +138,9 @@ VkRenderPassCreateInfo PipelineStateVkImpl::GetRenderPassCreateInfo(
static std::vector<uint32_t> StripReflection(const std::vector<uint32_t>& OriginalSPIRV)
{
+#if DILIGENT_NO_HLSL
+ return OriginalSPIRV;
+#else
std::vector<uint32_t> StrippedSPIRV;
spvtools::Optimizer SpirvOptimizer(SPV_ENV_VULKAN_1_0);
// Decorations defined in SPV_GOOGLE_hlsl_functionality1 are the only instructions
@@ -147,6 +153,7 @@ static std::vector<uint32_t> StripReflection(const std::vector<uint32_t>& Origin
StrippedSPIRV.clear();
}
return StrippedSPIRV;
+#endif
}
PipelineStateVkImpl::PipelineStateVkImpl(IReferenceCounters* pRefCounters,
diff --git a/Graphics/GraphicsEngineVulkan/src/ShaderVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/ShaderVkImpl.cpp
index 8b3cf728..a2f6ddc6 100644
--- a/Graphics/GraphicsEngineVulkan/src/ShaderVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/ShaderVkImpl.cpp
@@ -34,7 +34,7 @@
#include "DataBlobImpl.hpp"
#include "GLSLSourceBuilder.hpp"
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
# include "SPIRVUtils.hpp"
#endif
@@ -55,7 +55,7 @@ ShaderVkImpl::ShaderVkImpl(IReferenceCounters* pRefCounters,
{
if (CreationAttribs.Source != nullptr || CreationAttribs.FilePath != nullptr)
{
-#if NO_GLSLANG
+#if DILIGENT_NO_GLSLANG
LOG_ERROR_AND_THROW("Diligent engine was not linked with glslang and can only consume compiled SPIRV bytecode.");
#else
DEV_CHECK_ERR(CreationAttribs.ByteCode == nullptr, "'ByteCode' must be null when shader is created from source code or a file");
diff --git a/Graphics/GraphicsEngineVulkan/src/TextureVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/TextureVkImpl.cpp
index fc8c8b04..2a634162 100644
--- a/Graphics/GraphicsEngineVulkan/src/TextureVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/TextureVkImpl.cpp
@@ -754,7 +754,7 @@ VulkanUtilities::ImageViewWrapper TextureVkImpl::CreateImageView(TextureViewDesc
bool TextureVkImpl::CheckCSBasedMipGenerationSupport(VkFormat vkFmt) const
{
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
VERIFY_EXPR(m_Desc.MiscFlags & MISC_TEXTURE_FLAG_GENERATE_MIPS);
if (m_Desc.Type == RESOURCE_DIM_TEX_2D || m_Desc.Type == RESOURCE_DIM_TEX_2D_ARRAY)
{
diff --git a/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanInstance.cpp b/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanInstance.cpp
index 0ba9dfc4..224b2f38 100644
--- a/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanInstance.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanInstance.cpp
@@ -39,7 +39,7 @@
#include "VulkanUtilities/VulkanInstance.hpp"
#include "VulkanUtilities/VulkanDebug.hpp"
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
# include "SPIRVUtils.hpp"
#endif
@@ -244,7 +244,7 @@ VulkanInstance::VulkanInstance(bool EnableValidation,
CHECK_VK_ERROR(err, "Failed to enumerate physical devices");
VERIFY_EXPR(m_PhysicalDevices.size() == PhysicalDeviceCount);
}
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
Diligent::InitializeGlslang();
#endif
}
@@ -257,7 +257,7 @@ VulkanInstance::~VulkanInstance()
}
vkDestroyInstance(m_VkInstance, m_pVkAllocator);
-#if !NO_GLSLANG
+#if !DILIGENT_NO_GLSLANG
Diligent::FinalizeGlslang();
#endif
}