forked from MoonsideGames/Refresh
Added SPIRV-Cross as a submodule. Implemented CreateShaderModule and QueueDestroyShaderModule
parent
4c7fbec7ab
commit
f66d0149f7
|
@ -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
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit d5c3bd8b5e7db9e2d7fe809944b47b8f88e1c732
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
Loading…
Reference in New Issue