Added SPIRV-Cross as a submodule. Implemented CreateShaderModule and QueueDestroyShaderModule

Caleb Cornett 2022-03-12 01:18:31 -05:00
parent 4a1e4a49a8
commit 0137503ec3
7 changed files with 500 additions and 4 deletions

3
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "Vulkan-Headers"] [submodule "Vulkan-Headers"]
path = Vulkan-Headers path = Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git url = https://github.com/KhronosGroup/Vulkan-Headers.git
[submodule "SPIRV-Cross"]
path = SPIRV-Cross
url = https://github.com/KhronosGroup/SPIRV-Cross

1
SPIRV-Cross Submodule

@ -0,0 +1 @@
Subproject commit d5c3bd8b5e7db9e2d7fe809944b47b8f88e1c732

View File

@ -31,6 +31,7 @@
#define COBJMACROS #define COBJMACROS
#include <d3d11.h> #include <d3d11.h>
#include <dxgi.h> #include <dxgi.h>
#include <d3dcompiler.h>
#include "Refresh_Driver.h" #include "Refresh_Driver.h"
#include "Refresh_Driver_D3D11_cdefines.h" #include "Refresh_Driver_D3D11_cdefines.h"
@ -38,6 +39,8 @@
#include <SDL.h> #include <SDL.h>
#include <SDL_syswm.h> #include <SDL_syswm.h>
#include <spirv_cross_c.h>
/* Defines */ /* Defines */
#define D3D11_DLL "d3d11.dll" #define D3D11_DLL "d3d11.dll"
@ -78,6 +81,22 @@
); \ ); \
} }
/* D3DCompile signature */
typedef HRESULT(WINAPI *PFN_D3DCOMPILE)(
LPCVOID pSrcData,
SIZE_T SrcDataSize,
LPCSTR pSourceName,
const D3D_SHADER_MACRO* pDefines,
ID3DInclude* pInclude,
LPCSTR pEntrypoint,
LPCSTR pTarget,
UINT Flags1,
UINT Flags2,
ID3DBlob **ppCode,
ID3DBlob **ppErrorMsgs
);
/* Conversions */ /* Conversions */
static DXGI_FORMAT RefreshToD3D11_SurfaceFormat[] = static DXGI_FORMAT RefreshToD3D11_SurfaceFormat[] =
@ -302,6 +321,14 @@ typedef struct D3D11CommandBufferPool
uint32_t capacity; uint32_t capacity;
} D3D11CommandBufferPool; } D3D11CommandBufferPool;
typedef struct D3D11ShaderModule
{
spvc_context context;
size_t numEntryPoints;
const spvc_entry_point *entryPoints;
ID3D11DeviceChild **shaders; /* ID3D11VertexShader, ID3D11PixelShader, ID3D11ComputeShader */
} D3D11ShaderModule;
typedef struct D3D11Renderer typedef struct D3D11Renderer
{ {
ID3D11Device *device; ID3D11Device *device;
@ -310,6 +337,7 @@ typedef struct D3D11Renderer
IDXGIAdapter1* adapter; IDXGIAdapter1* adapter;
void *d3d11_dll; void *d3d11_dll;
void *dxgi_dll; void *dxgi_dll;
void *d3dcompiler_dll;
SDL_mutex *contextLock; SDL_mutex *contextLock;
D3D11CommandBufferPool *commandBufferPool; D3D11CommandBufferPool *commandBufferPool;
@ -323,6 +351,8 @@ typedef struct D3D11Renderer
uint8_t debugMode; uint8_t debugMode;
D3D_FEATURE_LEVEL featureLevel; D3D_FEATURE_LEVEL featureLevel;
PFN_D3DCOMPILE D3DCompileFunc;
} D3D11Renderer; } D3D11Renderer;
/* Predeclarations */ /* Predeclarations */
@ -621,6 +651,7 @@ static void D3D11_DestroyDevice(
/* Unload the DLLs */ /* Unload the DLLs */
SDL_UnloadObject(renderer->d3d11_dll); SDL_UnloadObject(renderer->d3d11_dll);
SDL_UnloadObject(renderer->dxgi_dll); SDL_UnloadObject(renderer->dxgi_dll);
SDL_UnloadObject(renderer->d3dcompiler_dll);
/* Free the renderer and Refresh Device */ /* Free the renderer and Refresh Device */
SDL_free(renderer); SDL_free(renderer);
@ -700,10 +731,197 @@ static Refresh_Sampler* D3D11_CreateSampler(
} }
static Refresh_ShaderModule* D3D11_CreateShaderModule( static Refresh_ShaderModule* D3D11_CreateShaderModule(
Refresh_Renderer* driverData, Refresh_Renderer *driverData,
Refresh_ShaderModuleCreateInfo* shaderModuleCreateInfo Refresh_ShaderModuleCreateInfo *shaderModuleCreateInfo
) { ) {
NOT_IMPLEMENTED D3D11Renderer *renderer = (D3D11Renderer*) driverData;
spvc_context context;
spvc_result result;
spvc_parsed_ir parsedIR;
spvc_compiler compiler;
const spvc_entry_point *entryPoints;
size_t numEntryPoints;
spvc_compiler_options compilerOptions;
char *hlslSource;
const char *shaderModel;
ID3DBlob *blob;
ID3DBlob *errorBlob = NULL;
ID3D11DeviceChild **shaders;
D3D11ShaderModule *shaderModule;
uint32_t i;
HRESULT res;
/* Create the context */
result = spvc_context_create(&context);
if (result != SPVC_SUCCESS)
{
Refresh_LogError("Could not create SPIRV Cross context! Error: %X", result);
return NULL;
}
/* Parse the SPIRV input */
result = spvc_context_parse_spirv(
context,
shaderModuleCreateInfo->byteCode,
shaderModuleCreateInfo->codeSize / sizeof(uint32_t), /* word count, not byte length */
&parsedIR
);
if (result != SPVC_SUCCESS)
{
Refresh_LogError("Could not parse SPIRV! Error: %X", result);
spvc_context_destroy(context); /* free all context-related memory */
return NULL;
}
/* Create the cross compiler */
result = spvc_context_create_compiler(
context,
SPVC_BACKEND_HLSL,
parsedIR,
SPVC_CAPTURE_MODE_TAKE_OWNERSHIP,
&compiler
);
if (result != SPVC_SUCCESS)
{
Refresh_LogError("Could not create SPIRV to HLSL cross compiler! Error: %X", result);
spvc_context_destroy(context); /* free all context-related memory */
return NULL;
}
/* Get entry points from the source bytecode */
result = spvc_compiler_get_entry_points(compiler, &entryPoints, &numEntryPoints);
if (result != SPVC_SUCCESS)
{
Refresh_LogError("Could not get SPIRV entry points! Error: %X", result);
spvc_context_destroy(context); /* free all context-related memory */
return NULL;
}
/* Set HLSL cross-compile options (target SM5.0) */
spvc_compiler_create_compiler_options(compiler, &compilerOptions);
spvc_compiler_options_set_uint(
compilerOptions,
SPVC_COMPILER_OPTION_HLSL_SHADER_MODEL,
50 /* shader model 5.0 */
);
spvc_compiler_install_compiler_options(compiler, compilerOptions);
/* Cross compile to HLSL */
result = spvc_compiler_compile(compiler, &hlslSource);
if (result != SPVC_SUCCESS)
{
Refresh_LogError("Could not cross-compile SPIRV to HLSL! Error: %X", result);
spvc_context_destroy(context); /* free all context-related memory */
return NULL;
}
/* Allocate memory for the D3D11 shader list */
shaders = (ID3D11DeviceChild**) SDL_malloc(numEntryPoints * sizeof(ID3D11DeviceChild*));
/* Compile each HLSL entry point into a D3D shader */
for (i = 0; i < numEntryPoints; i += 1)
{
/* Determine the exact shader model to use */
switch (entryPoints[i].execution_model)
{
case SpvExecutionModelVertex:
shaderModel = "vs_5_0";
break;
case SpvExecutionModelFragment:
shaderModel = "ps_5_0";
break;
case SpvExecutionModelGLCompute:
shaderModel = "cs_5_0";
break;
default:
Refresh_LogError(
"Attempting to compile a shader with an unknown execution model: %X",
entryPoints[i].execution_model
);
spvc_context_destroy(context); /* free all context-related memory */
SDL_free(shaders);
return NULL;
}
/* Compile the shader blob */
res = renderer->D3DCompileFunc(
hlslSource,
SDL_strlen(hlslSource),
NULL,
NULL,
NULL,
entryPoints[i].name,
shaderModel,
0,
0,
&blob,
&errorBlob
);
if (FAILED(res))
{
Refresh_LogError(
"D3DCompile failed on HLSL shader with entry point '%s'! Error: %X\nCompiler error message: %s",
entryPoints[i].name,
res,
errorBlob ? (const char*) ID3D10Blob_GetBufferPointer(errorBlob) : "<none>"
);
spvc_context_destroy(context); /* free all context-related memory */
SDL_free(shaders);
return NULL;
}
/* Create the shader from the blob */
switch (entryPoints[i].execution_model)
{
case SpvExecutionModelVertex:
res = ID3D11Device_CreateVertexShader(
renderer->device,
ID3D10Blob_GetBufferPointer(blob),
ID3D10Blob_GetBufferSize(blob),
NULL,
(ID3D11VertexShader**) &shaders[i]
);
break;
case SpvExecutionModelFragment:
res = ID3D11Device_CreatePixelShader(
renderer->device,
ID3D10Blob_GetBufferPointer(blob),
ID3D10Blob_GetBufferSize(blob),
NULL,
(ID3D11PixelShader**) &shaders[i]
);
break;
case SpvExecutionModelGLCompute:
res = ID3D11Device_CreateComputeShader(
renderer->device,
ID3D10Blob_GetBufferPointer(blob),
ID3D10Blob_GetBufferSize(blob),
NULL,
(ID3D11ComputeShader**) &shaders[i]
);
break;
}
if (FAILED(res))
{
Refresh_LogError("D3D11 shader creation failed! Error code: %X", res);
spvc_context_destroy(context); /* free all context-related memory */
SDL_free(shaders);
return NULL;
}
}
/* Create the final shader module object to return */
shaderModule = (D3D11ShaderModule*) SDL_malloc(sizeof(D3D11ShaderModule));
shaderModule->context = context;
shaderModule->entryPoints = entryPoints;
shaderModule->numEntryPoints = numEntryPoints;
shaderModule->shaders = shaders;
return (Refresh_ShaderModule*) shaderModule;
} }
static Refresh_Texture* D3D11_CreateTexture( static Refresh_Texture* D3D11_CreateTexture(
@ -862,7 +1080,20 @@ static void D3D11_QueueDestroyShaderModule(
Refresh_Renderer* driverData, Refresh_Renderer* driverData,
Refresh_ShaderModule* shaderModule Refresh_ShaderModule* shaderModule
) { ) {
NOT_IMPLEMENTED D3D11ShaderModule *d3dShaderModule = (D3D11ShaderModule*) shaderModule;
uint32_t i;
/* Release the D3D11 shader objects and free the array */
for (i = 0; i < d3dShaderModule->numEntryPoints; i += 1)
{
ID3D11DeviceChild_Release(d3dShaderModule->shaders[i]);
}
SDL_free(d3dShaderModule->shaders);
/* Destroy the SPIRV-Cross context.
* This should destroy the entryPoints list as well.
*/
spvc_context_destroy(d3dShaderModule->context);
} }
static void D3D11_QueueDestroyComputePipeline( static void D3D11_QueueDestroyComputePipeline(
@ -1291,6 +1522,25 @@ static Refresh_Device* D3D11_CreateDevice(
renderer = (D3D11Renderer*) SDL_malloc(sizeof(D3D11Renderer)); renderer = (D3D11Renderer*) SDL_malloc(sizeof(D3D11Renderer));
SDL_memset(renderer, 0, sizeof(D3D11Renderer)); SDL_memset(renderer, 0, sizeof(D3D11Renderer));
/* Load the D3DCompiler library */
renderer->d3dcompiler_dll = SDL_LoadObject(D3DCOMPILER_DLL);
if (renderer->d3dcompiler_dll == NULL)
{
Refresh_LogError("Could not find " D3DCOMPILER_DLL);
return NULL;
}
/* Load the D3DCompile function pointer */
renderer->D3DCompileFunc = (PFN_D3DCOMPILE) SDL_LoadFunction(
renderer->d3dcompiler_dll,
"D3DCompile"
);
if (renderer->D3DCompileFunc == NULL)
{
Refresh_LogError("Could not load D3DCompile function!");
return NULL;
}
/* Load the DXGI library */ /* Load the DXGI library */
renderer->dxgi_dll = SDL_LoadObject(DXGI_DLL); renderer->dxgi_dll = SDL_LoadObject(DXGI_DLL);
if (renderer->dxgi_dll == NULL) if (renderer->dxgi_dll == NULL)

View File

@ -5,22 +5,50 @@ VisualStudioVersion = 16.0.30717.126
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Refresh", "Refresh.vcxproj", "{6DB15344-E000-45CB-A48A-1D72F7D6E945}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Refresh", "Refresh.vcxproj", "{6DB15344-E000-45CB-A48A-1D72F7D6E945}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Cross", "SPIRV-Cross\SPIRV-Cross.vcxproj", "{C9462931-41A4-4E61-B145-F2D2CDE43C69}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
MinSizeRel|x64 = MinSizeRel|x64 MinSizeRel|x64 = MinSizeRel|x64
MinSizeRel|x86 = MinSizeRel|x86
Release|x64 = Release|x64 Release|x64 = Release|x64
Release|x86 = Release|x86
RelWithDebInfo|x64 = RelWithDebInfo|x64 RelWithDebInfo|x64 = RelWithDebInfo|x64
RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Debug|x64.ActiveCfg = Debug|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.Debug|x64.ActiveCfg = Debug|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Debug|x64.Build.0 = Debug|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.Debug|x64.Build.0 = Debug|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Debug|x86.ActiveCfg = Debug|Win32
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Debug|x86.Build.0 = Debug|Win32
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Release|x64.ActiveCfg = Release|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.Release|x64.ActiveCfg = Release|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Release|x64.Build.0 = Release|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.Release|x64.Build.0 = Release|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Release|x86.ActiveCfg = Release|Win32
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.Release|x86.Build.0 = Release|Win32
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 {6DB15344-E000-45CB-A48A-1D72F7D6E945}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{6DB15344-E000-45CB-A48A-1D72F7D6E945}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Debug|x64.ActiveCfg = Debug|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Debug|x64.Build.0 = Debug|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Debug|x86.ActiveCfg = Debug|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Debug|x86.Build.0 = Debug|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.MinSizeRel|x64.ActiveCfg = Debug|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.MinSizeRel|x64.Build.0 = Debug|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.MinSizeRel|x86.ActiveCfg = Debug|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.MinSizeRel|x86.Build.0 = Debug|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Release|x64.ActiveCfg = Release|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Release|x64.Build.0 = Release|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Release|x86.ActiveCfg = Release|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.Release|x86.Build.0 = Release|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.RelWithDebInfo|x64.Build.0 = Release|x64
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
{C9462931-41A4-4E61-B145-F2D2CDE43C69}.RelWithDebInfo|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -62,6 +62,7 @@
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>REFRESH_DRIVER_D3D11;REFRESH_DRIVER_VULKAN;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>REFRESH_DRIVER_D3D11;REFRESH_DRIVER_VULKAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\SPIRV-Cross;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation> <GenerateDebugInformation>DebugFull</GenerateDebugInformation>
@ -75,6 +76,7 @@
<PreprocessorDefinitions>REFRESH_DRIVER_D3D11;REFRESH_DRIVER_VULKAN;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>REFRESH_DRIVER_D3D11;REFRESH_DRIVER_VULKAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\SPIRV-Cross;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -95,6 +97,11 @@
<ClInclude Include="..\src\Refresh_Driver_D3D11_cdefines.h" /> <ClInclude Include="..\src\Refresh_Driver_D3D11_cdefines.h" />
<ClInclude Include="..\src\Refresh_Driver_Vulkan_vkfuncs.h" /> <ClInclude Include="..\src\Refresh_Driver_Vulkan_vkfuncs.h" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="SPIRV-Cross\SPIRV-Cross.vcxproj">
<Project>{c9462931-41a4-4e61-b145-f2d2cde43c69}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\SPIRV-Cross\spirv_cfg.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_cross.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_cross_c.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_cross_parsed_ir.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_glsl.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_hlsl.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_parser.cpp" />
<ClCompile Include="..\..\SPIRV-Cross\spirv_reflect.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{c9462931-41a4-4e61-b145-f2d2cde43c69}</ProjectGuid>
<RootNamespace>SPIRVCross</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);SPIRV_CROSS_C_API_HLSL=1;SPIRV_CROSS_C_API_GLSL=1;SPIRV_CROSS_C_API_REFLECT=1</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);SPIRV_CROSS_C_API_HLSL=1;SPIRV_CROSS_C_API_REFLECT=1</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\SPIRV-Cross\spirv_cfg.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_cross.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_cross_c.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_cross_parsed_ir.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_hlsl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_parser.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_reflect.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\SPIRV-Cross\spirv_glsl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>