1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-15 07:29:17 +01:00

[dxbc] Implemnted some HS/DS stubs

This commit is contained in:
Philip Rebohle 2018-03-01 07:00:54 +01:00
parent bdfbd3e81c
commit d0db88ee62
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 34 additions and 2 deletions

View File

@ -162,10 +162,11 @@ namespace dxvk {
// and write back the output registers. // and write back the output registers.
switch (m_version.type()) { switch (m_version.type()) {
case DxbcProgramType::VertexShader: this->emitVsFinalize(); break; case DxbcProgramType::VertexShader: this->emitVsFinalize(); break;
case DxbcProgramType::HullShader: this->emitHsFinalize(); break;
case DxbcProgramType::DomainShader: this->emitDsFinalize(); break;
case DxbcProgramType::GeometryShader: this->emitGsFinalize(); break; case DxbcProgramType::GeometryShader: this->emitGsFinalize(); break;
case DxbcProgramType::PixelShader: this->emitPsFinalize(); break; case DxbcProgramType::PixelShader: this->emitPsFinalize(); break;
case DxbcProgramType::ComputeShader: this->emitCsFinalize(); break; case DxbcProgramType::ComputeShader: this->emitCsFinalize(); break;
default: throw DxvkError("DxbcCompiler: Unsupported program type");
} }
// End main function // End main function
@ -4769,10 +4770,11 @@ namespace dxvk {
// etc. Each shader type has its own peculiarities. // etc. Each shader type has its own peculiarities.
switch (m_version.type()) { switch (m_version.type()) {
case DxbcProgramType::VertexShader: emitVsInit(); break; case DxbcProgramType::VertexShader: emitVsInit(); break;
case DxbcProgramType::HullShader: emitHsInit(); break;
case DxbcProgramType::DomainShader: emitDsInit(); break;
case DxbcProgramType::GeometryShader: emitGsInit(); break; case DxbcProgramType::GeometryShader: emitGsInit(); break;
case DxbcProgramType::PixelShader: emitPsInit(); break; case DxbcProgramType::PixelShader: emitPsInit(); break;
case DxbcProgramType::ComputeShader: emitCsInit(); break; case DxbcProgramType::ComputeShader: emitCsInit(); break;
default: throw DxvkError("DxbcCompiler: Unsupported program type");
} }
} }
@ -4812,6 +4814,24 @@ namespace dxvk {
} }
void DxbcCompiler::emitHsInit() {
m_module.enableCapability(spv::CapabilityTessellation);
m_module.enableCapability(spv::CapabilityClipDistance);
m_module.enableCapability(spv::CapabilityCullDistance);
// TODO implement
}
void DxbcCompiler::emitDsInit() {
m_module.enableCapability(spv::CapabilityTessellation);
m_module.enableCapability(spv::CapabilityClipDistance);
m_module.enableCapability(spv::CapabilityCullDistance);
// TODO implement
}
void DxbcCompiler::emitGsInit() { void DxbcCompiler::emitGsInit() {
m_module.enableCapability(spv::CapabilityGeometry); m_module.enableCapability(spv::CapabilityGeometry);
m_module.enableCapability(spv::CapabilityClipDistance); m_module.enableCapability(spv::CapabilityClipDistance);
@ -4915,6 +4935,16 @@ namespace dxvk {
} }
void DxbcCompiler::emitHsFinalize() {
// TODO implement
}
void DxbcCompiler::emitDsFinalize() {
// TODO implement
}
void DxbcCompiler::emitGsFinalize() { void DxbcCompiler::emitGsFinalize() {
this->emitInputSetup( this->emitInputSetup(
primitiveVertexCount(m_gs.inputPrimitive)); primitiveVertexCount(m_gs.inputPrimitive));

View File

@ -810,6 +810,7 @@ namespace dxvk {
void emitVsInit(); void emitVsInit();
void emitHsInit(); void emitHsInit();
void emitDsInit();
void emitGsInit(); void emitGsInit();
void emitPsInit(); void emitPsInit();
void emitCsInit(); void emitCsInit();
@ -818,6 +819,7 @@ namespace dxvk {
// Shader finalization methods // Shader finalization methods
void emitVsFinalize(); void emitVsFinalize();
void emitHsFinalize(); void emitHsFinalize();
void emitDsFinalize();
void emitGsFinalize(); void emitGsFinalize();
void emitPsFinalize(); void emitPsFinalize();
void emitCsFinalize(); void emitCsFinalize();