mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxbc] Handle shaders without refactoringAllowed flag
This commit is contained in:
parent
38649372bf
commit
cf4ff820be
@ -360,6 +360,9 @@ namespace dxvk {
|
|||||||
void DxbcCompiler::emitDclGlobalFlags(const DxbcShaderInstruction& ins) {
|
void DxbcCompiler::emitDclGlobalFlags(const DxbcShaderInstruction& ins) {
|
||||||
const DxbcGlobalFlags flags = ins.controls.globalFlags();
|
const DxbcGlobalFlags flags = ins.controls.globalFlags();
|
||||||
|
|
||||||
|
if (flags.test(DxbcGlobalFlag::RefactoringAllowed))
|
||||||
|
m_precise = false;
|
||||||
|
|
||||||
if (flags.test(DxbcGlobalFlag::EarlyFragmentTests))
|
if (flags.test(DxbcGlobalFlag::EarlyFragmentTests))
|
||||||
m_module.setExecutionMode(m_entryPointId, spv::ExecutionModeEarlyFragmentTests);
|
m_module.setExecutionMode(m_entryPointId, spv::ExecutionModeEarlyFragmentTests);
|
||||||
}
|
}
|
||||||
@ -1768,7 +1771,7 @@ namespace dxvk {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ins.controls.precise())
|
if (ins.controls.precise() || m_precise)
|
||||||
m_module.decorate(dst.id, spv::DecorationNoContraction);
|
m_module.decorate(dst.id, spv::DecorationNoContraction);
|
||||||
|
|
||||||
// Store computed value
|
// Store computed value
|
||||||
@ -2020,7 +2023,7 @@ namespace dxvk {
|
|||||||
src.at(0).id,
|
src.at(0).id,
|
||||||
src.at(1).id);
|
src.at(1).id);
|
||||||
|
|
||||||
if (ins.controls.precise())
|
if (ins.controls.precise() || m_precise)
|
||||||
m_module.decorate(dst.id, spv::DecorationNoContraction);
|
m_module.decorate(dst.id, spv::DecorationNoContraction);
|
||||||
|
|
||||||
dst = emitDstOperandModifiers(dst, ins.modifiers);
|
dst = emitDstOperandModifiers(dst, ins.modifiers);
|
||||||
|
@ -539,6 +539,10 @@ namespace dxvk {
|
|||||||
// Enabled SPIR-V extensions
|
// Enabled SPIR-V extensions
|
||||||
DxbcSpirvExtensions m_extensions;
|
DxbcSpirvExtensions m_extensions;
|
||||||
|
|
||||||
|
//////////////////////
|
||||||
|
// Global state stuff
|
||||||
|
bool m_precise = true;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
// Shader interface and metadata declaration methods
|
// Shader interface and metadata declaration methods
|
||||||
void emitDcl(
|
void emitDcl(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user