summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/CompilerFlags.cmake19
-rw-r--r--source/compiler-core/slang-glslang-compiler.cpp2
-rw-r--r--source/core/slang-castable.h5
-rw-r--r--source/core/slang-io.cpp6
-rw-r--r--source/core/slang-stream.cpp3
-rw-r--r--source/slang/slang-compiler.h6
-rw-r--r--source/slang/slang-parser.cpp2
-rw-r--r--tools/gfx/d3d11/d3d11-shader-object.h6
-rw-r--r--tools/gfx/open-gl/render-gl.cpp14
-rw-r--r--tools/gfx/vulkan/vk-shader-object.h4
10 files changed, 39 insertions, 28 deletions
diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake
index ad9a69185..32d43d360 100644
--- a/cmake/CompilerFlags.cmake
+++ b/cmake/CompilerFlags.cmake
@@ -152,14 +152,17 @@ function(set_default_compile_options target)
add_supported_cxx_flags(${target} PRIVATE ${warning_flags})
- add_supported_cxx_linker_flags(
- ${target}
- PRIVATE
- # Don't assume that symbols will be resolved at runtime
- "-Wl,--no-undefined"
- # No reason not to do this? Useful when using split debug info
- "-Wl,--build-id"
- )
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ # valid linker options only for GNU/Clang
+ add_supported_cxx_linker_flags(
+ ${target}
+ PRIVATE
+ # Don't assume that symbols will be resolved at runtime
+ "-Wl,--no-undefined"
+ # No reason not to do this? Useful when using split debug info
+ "-Wl,--build-id"
+ )
+ endif()
set_target_properties(
${target}
diff --git a/source/compiler-core/slang-glslang-compiler.cpp b/source/compiler-core/slang-glslang-compiler.cpp
index 27a24512d..4fbeff716 100644
--- a/source/compiler-core/slang-glslang-compiler.cpp
+++ b/source/compiler-core/slang-glslang-compiler.cpp
@@ -53,7 +53,7 @@ public:
const uint32_t* contents,
int contentsSize,
String& outString) SLANG_OVERRIDE;
- int link(
+ virtual SLANG_NO_THROW int SLANG_MCALL link(
const uint32_t** modules,
const uint32_t* moduleSizes,
const uint32_t moduleCount,
diff --git a/source/core/slang-castable.h b/source/core/slang-castable.h
index 50b41766a..e3591577d 100644
--- a/source/core/slang-castable.h
+++ b/source/core/slang-castable.h
@@ -77,7 +77,10 @@ public:
// IBoxValue
virtual SLANG_NO_THROW void* SLANG_MCALL getValuePtr() SLANG_OVERRIDE { return &m_value; }
- virtual SlangUUID SLANG_MCALL getValueTypeGuid() SLANG_OVERRIDE { return T::getTypeGuid(); }
+ virtual SLANG_NO_THROW SlangUUID SLANG_MCALL getValueTypeGuid() SLANG_OVERRIDE
+ {
+ return T::getTypeGuid();
+ }
BoxValue() {}
diff --git a/source/core/slang-io.cpp b/source/core/slang-io.cpp
index 3c0c9a11e..5490294ca 100644
--- a/source/core/slang-io.cpp
+++ b/source/core/slang-io.cpp
@@ -1331,7 +1331,7 @@ SlangResult LockFile::tryLock(LockType lockType)
SlangResult result = SLANG_OK;
#if SLANG_WINDOWS_FAMILY
- OVERLAPPED overlapped = {0};
+ OVERLAPPED overlapped = {};
DWORD flags = lockType == LockType::Shared
? LOCKFILE_FAIL_IMMEDIATELY
: (LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY);
@@ -1356,7 +1356,7 @@ SlangResult LockFile::lock(LockType lockType)
SlangResult result = SLANG_OK;
#if SLANG_WINDOWS_FAMILY
- OVERLAPPED overlapped = {0};
+ OVERLAPPED overlapped = {};
overlapped.hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
DWORD flags = lockType == LockType::Shared ? 0 : LOCKFILE_EXCLUSIVE_LOCK;
if (::LockFileEx(m_fileHandle, flags, DWORD(0), ~DWORD(0), ~DWORD(0), &overlapped) == 0)
@@ -1392,7 +1392,7 @@ SlangResult LockFile::unlock()
return SLANG_E_CANNOT_OPEN;
#if SLANG_WINDOWS_FAMILY
- OVERLAPPED overlapped = {0};
+ OVERLAPPED overlapped = {};
if (::UnlockFileEx(m_fileHandle, DWORD(0), ~DWORD(0), ~DWORD(0), &overlapped) == 0)
{
return SLANG_E_INTERNAL_FAIL;
diff --git a/source/core/slang-stream.cpp b/source/core/slang-stream.cpp
index 1b8468c04..07c7e858c 100644
--- a/source/core/slang-stream.cpp
+++ b/source/core/slang-stream.cpp
@@ -163,8 +163,7 @@ SlangResult FileStream::_init(
return SLANG_FAIL;
}
if (share == FileShare::None)
-#pragma warning(suppress : 4996)
- m_handle = _wfopen(fileName.toWString(), wideMode);
+ _wfopen_s(&m_handle, fileName.toWString(), wideMode);
else
m_handle = _wfsopen(fileName.toWString(), wideMode, shFlag);
#else
diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h
index 8a9b8985a..26a4bb43b 100644
--- a/source/slang/slang-compiler.h
+++ b/source/slang/slang-compiler.h
@@ -1520,12 +1520,12 @@ public:
return SLANG_OK;
}
- virtual SlangInt32 SLANG_MCALL getDefinedEntryPointCount() override
+ virtual SLANG_NO_THROW SlangInt32 SLANG_MCALL getDefinedEntryPointCount() override
{
return (SlangInt32)m_entryPoints.getCount();
}
- virtual SlangResult SLANG_MCALL
+ virtual SLANG_NO_THROW SlangResult SLANG_MCALL
getDefinedEntryPoint(SlangInt32 index, slang::IEntryPoint** outEntryPoint) override
{
if (index < 0 || index >= m_entryPoints.getCount())
@@ -1625,7 +1625,7 @@ public:
virtual void buildHash(DigestBuilder<SHA1>& builder) SLANG_OVERRIDE;
- virtual slang::DeclReflection* SLANG_MCALL getModuleReflection() SLANG_OVERRIDE;
+ virtual SLANG_NO_THROW slang::DeclReflection* SLANG_MCALL getModuleReflection() SLANG_OVERRIDE;
void setDigest(SHA1::Digest const& digest) { m_digest = digest; }
SHA1::Digest computeDigest();
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp
index b7828999a..00f15cbb3 100644
--- a/source/slang/slang-parser.cpp
+++ b/source/slang/slang-parser.cpp
@@ -8098,7 +8098,7 @@ static std::optional<SPIRVAsmInst> parseSPIRVAsmInst(Parser* parser)
}
if (ret.opcode.flavor == SPIRVAsmOperand::Flavor::NamedValue &&
- ret.opcode.knownValue == SpvOp(0xffffffff))
+ ret.opcode.knownValue == (SpvWord)(SpvOp(0xffffffff)))
{
if (ret.opcode.token.type == TokenType::IntegerLiteral)
{
diff --git a/tools/gfx/d3d11/d3d11-shader-object.h b/tools/gfx/d3d11/d3d11-shader-object.h
index 62fb4cf62..ece90d480 100644
--- a/tools/gfx/d3d11/d3d11-shader-object.h
+++ b/tools/gfx/d3d11/d3d11-shader-object.h
@@ -173,12 +173,12 @@ public:
return static_cast<RootShaderObjectLayoutImpl*>(m_layout.Ptr());
}
- GfxCount SLANG_MCALL getEntryPointCount() SLANG_OVERRIDE
+ SLANG_NO_THROW GfxCount SLANG_MCALL getEntryPointCount() SLANG_OVERRIDE
{
return (GfxCount)m_entryPoints.getCount();
}
- SlangResult SLANG_MCALL getEntryPoint(GfxIndex index, IShaderObject** outEntryPoint)
- SLANG_OVERRIDE
+ SLANG_NO_THROW SlangResult SLANG_MCALL
+ getEntryPoint(GfxIndex index, IShaderObject** outEntryPoint) SLANG_OVERRIDE
{
returnComPtr(outEntryPoint, m_entryPoints[index]);
return SLANG_OK;
diff --git a/tools/gfx/open-gl/render-gl.cpp b/tools/gfx/open-gl/render-gl.cpp
index 5bbee254d..2a0114998 100644
--- a/tools/gfx/open-gl/render-gl.cpp
+++ b/tools/gfx/open-gl/render-gl.cpp
@@ -1519,12 +1519,12 @@ protected:
return static_cast<RootShaderObjectLayoutImpl*>(m_layout.Ptr());
}
- GfxCount SLANG_MCALL getEntryPointCount() SLANG_OVERRIDE
+ SLANG_NO_THROW GfxCount SLANG_MCALL getEntryPointCount() SLANG_OVERRIDE
{
return (GfxCount)m_entryPoints.getCount();
}
- SlangResult SLANG_MCALL getEntryPoint(GfxIndex index, IShaderObject** outEntryPoint)
- SLANG_OVERRIDE
+ SLANG_NO_THROW SlangResult SLANG_MCALL
+ getEntryPoint(GfxIndex index, IShaderObject** outEntryPoint) SLANG_OVERRIDE
{
*outEntryPoint = m_entryPoints[index];
m_entryPoints[index]->addRef();
@@ -2510,6 +2510,12 @@ SLANG_NO_THROW Result SLANG_MCALL GLDevice::createTextureResource(
{
for (int j = 0; j < srcDesc.numMipLevels; j++)
{
+ const void* dataPtr = nullptr;
+ if (initData)
+ {
+ dataPtr = initData[slice].data;
+ ++slice;
+ }
glTexImage3D(
target,
j,
@@ -2520,7 +2526,7 @@ SLANG_NO_THROW Result SLANG_MCALL GLDevice::createTextureResource(
0,
format,
formatType,
- initData ? initData[slice++].data : nullptr);
+ dataPtr);
}
}
}
diff --git a/tools/gfx/vulkan/vk-shader-object.h b/tools/gfx/vulkan/vk-shader-object.h
index fafeb67f1..3dc1d79d4 100644
--- a/tools/gfx/vulkan/vk-shader-object.h
+++ b/tools/gfx/vulkan/vk-shader-object.h
@@ -250,8 +250,8 @@ public:
List<RefPtr<EntryPointShaderObject>> const& getEntryPoints() const;
- virtual GfxCount SLANG_MCALL getEntryPointCount() override;
- virtual Result SLANG_MCALL
+ virtual SLANG_NO_THROW GfxCount SLANG_MCALL getEntryPointCount() override;
+ virtual SLANG_NO_THROW Result SLANG_MCALL
getEntryPoint(GfxIndex index, IShaderObject** outEntryPoint) override;
virtual SLANG_NO_THROW Result SLANG_MCALL