mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +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::CapabilityClipDistance);
|
||||||
m_module.enableCapability(spv::CapabilityCullDistance);
|
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::CapabilityClipDistance);
|
||||||
m_module.enableCapability(spv::CapabilityCullDistance);
|
m_module.enableCapability(spv::CapabilityCullDistance);
|
||||||
|
|
||||||
// TODO implement
|
m_ds.builtinTessLevelOuter = emitBuiltinTessLevelOuter(spv::StorageClassInput);
|
||||||
|
m_ds.builtinTessLevelInner = emitBuiltinTessLevelInner(spv::StorageClassInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -5265,6 +5267,32 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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(
|
DxbcCfgBlock* DxbcCompiler::cfgFindBlock(
|
||||||
const std::initializer_list<DxbcCfgBlockType>& types) {
|
const std::initializer_list<DxbcCfgBlockType>& types) {
|
||||||
for (auto cur = m_controlFlowBlocks.rbegin();
|
for (auto cur = m_controlFlowBlocks.rbegin();
|
||||||
|
@ -202,6 +202,9 @@ namespace dxvk {
|
|||||||
uint32_t vertexCountIn = 0;
|
uint32_t vertexCountIn = 0;
|
||||||
uint32_t vertexCountOut = 0;
|
uint32_t vertexCountOut = 0;
|
||||||
|
|
||||||
|
uint32_t builtinTessLevelOuter = 0;
|
||||||
|
uint32_t builtinTessLevelInner = 0;
|
||||||
|
|
||||||
DxbcCompilerHsControlPointPhase cpPhase;
|
DxbcCompilerHsControlPointPhase cpPhase;
|
||||||
std::vector<DxbcCompilerHsForkJoinPhase> forkPhases;
|
std::vector<DxbcCompilerHsForkJoinPhase> forkPhases;
|
||||||
std::vector<DxbcCompilerHsForkJoinPhase> joinPhases;
|
std::vector<DxbcCompilerHsForkJoinPhase> joinPhases;
|
||||||
@ -213,6 +216,9 @@ namespace dxvk {
|
|||||||
*/
|
*/
|
||||||
struct DxbcCompilerDsPart {
|
struct DxbcCompilerDsPart {
|
||||||
uint32_t functionId = 0;
|
uint32_t functionId = 0;
|
||||||
|
|
||||||
|
uint32_t builtinTessLevelOuter = 0;
|
||||||
|
uint32_t builtinTessLevelInner = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -882,6 +888,12 @@ namespace dxvk {
|
|||||||
spv::BuiltIn builtIn,
|
spv::BuiltIn builtIn,
|
||||||
const char* name);
|
const char* name);
|
||||||
|
|
||||||
|
uint32_t emitBuiltinTessLevelOuter(
|
||||||
|
spv::StorageClass storageClass);
|
||||||
|
|
||||||
|
uint32_t emitBuiltinTessLevelInner(
|
||||||
|
spv::StorageClass storageClass);
|
||||||
|
|
||||||
////////////////
|
////////////////
|
||||||
// Misc methods
|
// Misc methods
|
||||||
DxbcCfgBlock* cfgFindBlock(
|
DxbcCfgBlock* cfgFindBlock(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user