123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // DxilOutputColorBecomesConstant.cpp //
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- // This file is distributed under the University of Illinois Open Source //
- // License. See LICENSE.TXT for details. //
- // //
- // Provides a pass to turn on the early-z flag //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- #include "dxc/DXIL/DxilModule.h"
- #include "dxc/DxilPIXPasses/DxilPIXPasses.h"
- #include "dxc/HLSL/DxilGenerationPass.h"
- #include "llvm/IR/Module.h"
- using namespace llvm;
- using namespace hlsl;
- class DxilForceEarlyZ : public ModulePass {
- public:
- static char ID; // Pass identification, replacement for typeid
- explicit DxilForceEarlyZ() : ModulePass(ID) {}
- const char *getPassName() const override { return "DXIL Force Early Z"; }
- bool runOnModule(Module &M) override;
- };
- bool DxilForceEarlyZ::runOnModule(Module &M) {
- // This pass adds the force-early-z flag
- DxilModule &DM = M.GetOrCreateDxilModule();
- DM.m_ShaderFlags.SetForceEarlyDepthStencil(true);
- DM.ReEmitDxilResources();
- return true;
- }
- char DxilForceEarlyZ::ID = 0;
- ModulePass *llvm::createDxilForceEarlyZPass() { return new DxilForceEarlyZ(); }
- INITIALIZE_PASS(
- DxilForceEarlyZ, "hlsl-dxil-force-early-z",
- "HLSL DXIL Force the early Z global flag, if shader has no discard calls",
- false, false)
|