Shader linking i guess
This commit is contained in:
@@ -72,6 +72,9 @@ void CSlangVulkanSpirvShaderCompiler::CompileShaderStage( EShaderStage eStage, c
|
||||
case SHADER_STAGE_CALLABLE:
|
||||
eSlangStage = SLANG_STAGE_CALLABLE;
|
||||
break;
|
||||
case SHADER_STAGE_CALLABLE_SOFTWARE:
|
||||
eSlangStage = SLANG_STAGE_COMPUTE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -88,16 +91,16 @@ void CSlangVulkanSpirvShaderCompiler::CompileShaderStage( EShaderStage eStage, c
|
||||
VariableLayoutReflection *pVar = pProgramLayout->getParameterByIndex(u);
|
||||
input = {};
|
||||
input.uCount = 1;
|
||||
V_printf("%s %i\n", pVar->getName(), pVar->getType()->getKind());
|
||||
//V_printf("%s %i\n", pVar->getName(), pVar->getType()->getKind());
|
||||
TypeReflection *pType = pVar->getType();
|
||||
trygetkind:
|
||||
V_printf("%s %i\n", pType->getName(), pType->getKind());
|
||||
//V_printf("%s %i\n", pType->getName(), pType->getKind());
|
||||
switch(pType->getKind())
|
||||
{
|
||||
case slang::TypeReflection::Kind::ConstantBuffer:
|
||||
input.eDescriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||
break;
|
||||
V_printf("%s: %i\n", pType->getName(), pType->getResourceShape());
|
||||
//V_printf("%s: %i\n", pType->getName(), pType->getResourceShape());
|
||||
switch(pType->getResourceShape())
|
||||
{
|
||||
case SLANG_TEXTURE_2D:
|
||||
@@ -111,7 +114,7 @@ trygetkind:
|
||||
}
|
||||
break;
|
||||
case slang::TypeReflection::Kind::Resource:
|
||||
V_printf("%s: %i\n", pType->getName(), pType->getResourceShape());
|
||||
//V_printf("%s: %i\n", pType->getName(), pType->getResourceShape());
|
||||
switch(pType->getResourceShape())
|
||||
{
|
||||
case SLANG_TEXTURE_2D:
|
||||
@@ -187,13 +190,9 @@ trygetkind:
|
||||
pShaderObject->m_nMetadataLump = pShader->AllocateLump(sizeof(VulkanInputMetaData_t));
|
||||
V_memcpy(pShader->GetLumpPtr(pShaderObject->m_nDataLump), pBinary->getBufferPointer(), pBinary->getBufferSize());
|
||||
V_memcpy(pShader->GetLumpPtr(pShaderObject->m_nMetadataLump), &stMetadata, sizeof(VulkanInputMetaData_t));
|
||||
if (eStage == SHADER_STAGE_CALLABLE)
|
||||
{
|
||||
IFileHandle *ph = filesystem->Open("a.txt", FILEMODE_WRITE);
|
||||
filesystem->Write(ph, pBinary->getBufferPointer(), pBinary->getBufferSize());
|
||||
filesystem->Close(ph);
|
||||
|
||||
}
|
||||
IFileHandle *ph = filesystem->Open(szMain, FILEMODE_WRITE);
|
||||
filesystem->Write(ph, pBinary->getBufferPointer(), pBinary->getBufferSize());
|
||||
filesystem->Close(ph);
|
||||
|
||||
pEntryPoint->release();
|
||||
}
|
||||
@@ -246,10 +245,6 @@ void CSlangVulkanSpirvShaderCompiler::CompileShader( const char *szInput, CCompi
|
||||
szMainName = "psMain";
|
||||
stStageMacroDesc[0] = { "PS_SHADER", "Enabled" };
|
||||
break;
|
||||
case SHADER_STAGE_CALLABLE:
|
||||
szMainName = "brdfMain";
|
||||
stStageMacroDesc[0] = { "BRDF_SHADER", "Enabled" };
|
||||
break;
|
||||
case SHADER_STAGE_RAYGEN:
|
||||
szMainName = "rayMain";
|
||||
stStageMacroDesc[0] = { "RAY_SHADER", "Enabled" };
|
||||
@@ -260,6 +255,16 @@ void CSlangVulkanSpirvShaderCompiler::CompileShader( const char *szInput, CCompi
|
||||
stStageMacroDesc[1] = { "SOFTWARE_RAY_TRACING", "Enabled" };
|
||||
stSessionDesc.preprocessorMacroCount = 2;
|
||||
break;
|
||||
case SHADER_STAGE_CALLABLE:
|
||||
szMainName = "CallableMain";
|
||||
stStageMacroDesc[0] = { "CALLABLE_SHADER", "Enabled" };
|
||||
break;
|
||||
case SHADER_STAGE_CALLABLE_SOFTWARE:
|
||||
szMainName = "CallableMain";
|
||||
stStageMacroDesc[0] = { "CALLABLE_SHADER", "Enabled" };
|
||||
stStageMacroDesc[1] = { "SOFTWARE_RAY_TRACING", "Enabled" };
|
||||
stSessionDesc.preprocessorMacroCount = 2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -267,7 +272,7 @@ void CSlangVulkanSpirvShaderCompiler::CompileShader( const char *szInput, CCompi
|
||||
if ( szMainName == NULL )
|
||||
continue;
|
||||
pSession = NULL;
|
||||
V_printf("Cool\n");
|
||||
//V_printf("Cool\n");
|
||||
s_pGlobalSession->createSession(stSessionDesc, &pSession);
|
||||
|
||||
pModule = pSession->loadModuleFromSource("main", szInput, pShaderSourceBlob, &m_pDiagnostics);
|
||||
|
||||
Reference in New Issue
Block a user