Linux build fix

On linux, clang is unable to find the Cast() function used in the
templated destroy() function unless it has already been defined
before the template function. This forces us to make sure all
Cast() functions are available, but simply adding the vulkan objects'
header files in VkMemory.h would cause a circular dependency, which,
while it would be properly guarded by the preprocessor directives,
wouldn't guarantee any include order, due to the nature of circular
dependencies. So, to fix the issue, a new header file, called
VkDestroy.h was added, which can depend on all vulkan objects' header
files without creating a circular dependency.

Also fixed some warnings.

Change-Id: I1f343a8c476d6308d4555009848a234b0695661e
Reviewed-on: https://swiftshader-review.googlesource.com/c/21668
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Reactor/Reactor.vcxproj b/src/Reactor/Reactor.vcxproj
index 8b54ce5..b26b32f 100644
--- a/src/Reactor/Reactor.vcxproj
+++ b/src/Reactor/Reactor.vcxproj
@@ -124,6 +124,7 @@
       <ExceptionHandling>false</ExceptionHandling>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <ProjectReference>

       <LinkLibraryDependencies>false</LinkLibraryDependencies>

@@ -150,6 +151,7 @@
       <TreatWarningAsError>true</TreatWarningAsError>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <ProjectReference>

       <LinkLibraryDependencies>false</LinkLibraryDependencies>

@@ -180,6 +182,7 @@
       <TreatWarningAsError>true</TreatWarningAsError>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <ProjectReference>

       <LinkLibraryDependencies>false</LinkLibraryDependencies>

@@ -208,6 +211,7 @@
       <FloatingPointExceptions>false</FloatingPointExceptions>

       <TreatWarningAsError>true</TreatWarningAsError>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <ProjectReference>

       <LinkLibraryDependencies>false</LinkLibraryDependencies>

@@ -240,6 +244,7 @@
       <TreatWarningAsError>true</TreatWarningAsError>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <ProjectReference>

       <LinkLibraryDependencies>false</LinkLibraryDependencies>

@@ -271,6 +276,7 @@
       <FloatingPointExceptions>false</FloatingPointExceptions>

       <TreatWarningAsError>true</TreatWarningAsError>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <ProjectReference>

       <LinkLibraryDependencies>false</LinkLibraryDependencies>

diff --git a/src/Reactor/ReactorUnitTests.vcxproj b/src/Reactor/ReactorUnitTests.vcxproj
index 0471ba6..3a89929 100644
--- a/src/Reactor/ReactorUnitTests.vcxproj
+++ b/src/Reactor/ReactorUnitTests.vcxproj
@@ -104,6 +104,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)third_party\googletest\googletest\include\;$(SolutionDir)third_party\googletest\googletest\;$(SolutionDir)third_party\subzero\src\;$(SolutionDir)third_party\subzero\unittest\;$(SolutionDir)third_party\llvm-subzero\include\;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;SubmoduleCheck;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -121,6 +122,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)third_party\googletest\googletest\include\;$(SolutionDir)third_party\googletest\googletest\;$(SolutionDir)third_party\subzero\src\;$(SolutionDir)third_party\subzero\unittest\;$(SolutionDir)third_party\llvm-subzero\include\;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;SubmoduleCheck;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -140,6 +142,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)third_party\googletest\googletest\include\;$(SolutionDir)third_party\googletest\googletest\;$(SolutionDir)third_party\subzero\src\;$(SolutionDir)third_party\subzero\unittest\;$(SolutionDir)third_party\llvm-subzero\include\;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;SubmoduleCheck;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -161,6 +164,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)third_party\googletest\googletest\include\;$(SolutionDir)third_party\googletest\googletest\;$(SolutionDir)third_party\subzero\src\;$(SolutionDir)third_party\subzero\unittest\;$(SolutionDir)third_party\llvm-subzero\include\;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;SubmoduleCheck;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

diff --git a/src/Reactor/Subzero.vcxproj b/src/Reactor/Subzero.vcxproj
index 1ea0eab..29233b2 100644
--- a/src/Reactor/Subzero.vcxproj
+++ b/src/Reactor/Subzero.vcxproj
@@ -100,6 +100,7 @@
       <ForcedIncludeFiles>src/IceTypes.h</ForcedIncludeFiles>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -119,6 +120,7 @@
       <ForcedIncludeFiles>src/IceTypes.h</ForcedIncludeFiles>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -140,6 +142,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -167,6 +170,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

diff --git a/src/Reactor/SubzeroLLVMDependencies.vcxproj b/src/Reactor/SubzeroLLVMDependencies.vcxproj
index 96f16ec..8b951e3 100644
--- a/src/Reactor/SubzeroLLVMDependencies.vcxproj
+++ b/src/Reactor/SubzeroLLVMDependencies.vcxproj
@@ -94,6 +94,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

@@ -106,6 +107,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

@@ -120,6 +122,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <EnableCOMDATFolding>true</EnableCOMDATFolding>

@@ -138,6 +141,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

       <MultiProcessorCompilation>true</MultiProcessorCompilation>

       <TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>

+      <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>

     </ClCompile>

     <Link>

       <EnableCOMDATFolding>true</EnableCOMDATFolding>