From ec5572aa69d5749cba3ad0a5e1b76109851634b7 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 26 May 2018 17:08:08 +0200 Subject: [PATCH] [dxbc] Scan for discard and derivative instructions --- src/dxbc/dxbc_analysis.cpp | 12 +++++++++++- src/dxbc/dxbc_analysis.h | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dxbc/dxbc_analysis.cpp b/src/dxbc/dxbc_analysis.cpp index c9c98017..a230da97 100644 --- a/src/dxbc/dxbc_analysis.cpp +++ b/src/dxbc/dxbc_analysis.cpp @@ -34,7 +34,17 @@ namespace dxvk { m_analysis->uavInfos[registerId].accessAtomicOp = true; } } break; - + + case DxbcInstClass::TextureSample: + case DxbcInstClass::VectorDeriv: { + m_analysis->usesDerivatives = true; + } break; + + case DxbcInstClass::ControlFlow: { + if (ins.op == DxbcOpcode::Discard) + m_analysis->usesKill = true; + } break; + case DxbcInstClass::TypedUavLoad: { const uint32_t registerId = ins.src[1].idx[0].offset; m_analysis->uavInfos[registerId].accessTypedLoad = true; diff --git a/src/dxbc/dxbc_analysis.h b/src/dxbc/dxbc_analysis.h index d51ede59..5059ae84 100644 --- a/src/dxbc/dxbc_analysis.h +++ b/src/dxbc/dxbc_analysis.h @@ -37,6 +37,9 @@ namespace dxvk { DxbcClipCullInfo clipCullIn; DxbcClipCullInfo clipCullOut; + + bool usesDerivatives = false; + bool usesKill = false; }; /**