mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-13 19:29:14 +01:00
[dxbc] Added tess level interface variables
This commit is contained in:
parent
5f3bfde727
commit
3501186d38
@ -5001,7 +5001,8 @@ namespace dxvk {
|
||||
m_module.enableCapability(spv::CapabilityClipDistance);
|
||||
m_module.enableCapability(spv::CapabilityCullDistance);
|
||||
|
||||
// TODO implement
|
||||
m_hs.builtinTessLevelOuter = emitBuiltinTessLevelOuter(spv::StorageClassOutput);
|
||||
m_hs.builtinTessLevelInner = emitBuiltinTessLevelInner(spv::StorageClassOutput);
|
||||
}
|
||||
|
||||
|
||||
@ -5010,7 +5011,8 @@ namespace dxvk {
|
||||
m_module.enableCapability(spv::CapabilityClipDistance);
|
||||
m_module.enableCapability(spv::CapabilityCullDistance);
|
||||
|
||||
// TODO implement
|
||||
m_ds.builtinTessLevelOuter = emitBuiltinTessLevelOuter(spv::StorageClassInput);
|
||||
m_ds.builtinTessLevelInner = emitBuiltinTessLevelInner(spv::StorageClassInput);
|
||||
}
|
||||
|
||||
|
||||
@ -5263,6 +5265,32 @@ namespace dxvk {
|
||||
m_entryPointInterfaces.push_back(varId);
|
||||
return varId;
|
||||
}
|
||||
|
||||
|
||||
uint32_t DxbcCompiler::emitBuiltinTessLevelOuter(spv::StorageClass storageClass) {
|
||||
uint32_t id = emitNewBuiltinVariable(
|
||||
DxbcRegisterInfo {
|
||||
{ DxbcScalarType::Float32, 0, 4 },
|
||||
storageClass },
|
||||
spv::BuiltInTessLevelOuter,
|
||||
"bTessLevelOuter");
|
||||
|
||||
m_module.decorate(id, spv::DecorationPatch);
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
uint32_t DxbcCompiler::emitBuiltinTessLevelInner(spv::StorageClass storageClass) {
|
||||
uint32_t id = emitNewBuiltinVariable(
|
||||
DxbcRegisterInfo {
|
||||
{ DxbcScalarType::Float32, 0, 2 },
|
||||
storageClass },
|
||||
spv::BuiltInTessLevelInner,
|
||||
"bTessLevelInner");
|
||||
|
||||
m_module.decorate(id, spv::DecorationPatch);
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
DxbcCfgBlock* DxbcCompiler::cfgFindBlock(
|
||||
|
@ -199,8 +199,11 @@ namespace dxvk {
|
||||
DxbcCompilerHsPhase currPhaseType = DxbcCompilerHsPhase::None;
|
||||
size_t currPhaseId = 0;
|
||||
|
||||
uint32_t vertexCountIn = 0;
|
||||
uint32_t vertexCountOut = 0;
|
||||
uint32_t vertexCountIn = 0;
|
||||
uint32_t vertexCountOut = 0;
|
||||
|
||||
uint32_t builtinTessLevelOuter = 0;
|
||||
uint32_t builtinTessLevelInner = 0;
|
||||
|
||||
DxbcCompilerHsControlPointPhase cpPhase;
|
||||
std::vector<DxbcCompilerHsForkJoinPhase> forkPhases;
|
||||
@ -213,6 +216,9 @@ namespace dxvk {
|
||||
*/
|
||||
struct DxbcCompilerDsPart {
|
||||
uint32_t functionId = 0;
|
||||
|
||||
uint32_t builtinTessLevelOuter = 0;
|
||||
uint32_t builtinTessLevelInner = 0;
|
||||
};
|
||||
|
||||
|
||||
@ -882,6 +888,12 @@ namespace dxvk {
|
||||
spv::BuiltIn builtIn,
|
||||
const char* name);
|
||||
|
||||
uint32_t emitBuiltinTessLevelOuter(
|
||||
spv::StorageClass storageClass);
|
||||
|
||||
uint32_t emitBuiltinTessLevelInner(
|
||||
spv::StorageClass storageClass);
|
||||
|
||||
////////////////
|
||||
// Misc methods
|
||||
DxbcCfgBlock* cfgFindBlock(
|
||||
|
Loading…
x
Reference in New Issue
Block a user