Module: Mesa Branch: master Commit: 14b5cac0be15b2a1f6624431ae1b694f3a4487dd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=14b5cac0be15b2a1f6624431ae1b694f3a4487dd
Author: Alok Hota <alok.h...@intel.com> Date: Fri May 25 10:19:45 2018 -0500 swr/rast: Use metadata to communicate between passes Reviewed-by: Bruce Cherniak <bruce.chern...@intel.com> --- .../drivers/swr/rasterizer/jitter/builder.h | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.h b/src/gallium/drivers/swr/rasterizer/jitter/builder.h index 6ca128d38f..08a3a6e473 100644 --- a/src/gallium/drivers/swr/rasterizer/jitter/builder.h +++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.h @@ -124,6 +124,34 @@ namespace SwrJit bool SetTexelMaskEvaluate(Instruction* inst); bool IsTexelMaskEvaluate(Instruction* inst); Type* GetVectorType(Type* pType); + void SetMetadata(StringRef s, uint32_t val) + { + llvm::NamedMDNode *metaData = mpJitMgr->mpCurrentModule->getOrInsertNamedMetadata(s); + Constant* cval = mpIRBuilder->getInt32(val); + llvm::MDNode *mdNode = llvm::MDNode::get(mpJitMgr->mpCurrentModule->getContext(), llvm::ConstantAsMetadata::get(cval)); + if (metaData->getNumOperands()) + { + metaData->setOperand(0, mdNode); + } + else + { + metaData->addOperand(mdNode); + } + } + uint32_t GetMetadata(StringRef s) + { + NamedMDNode* metaData = mpJitMgr->mpCurrentModule->getNamedMetadata(s); + if (metaData) + { + MDNode* mdNode = metaData->getOperand(0); + Metadata* val = mdNode->getOperand(0); + return mdconst::dyn_extract<ConstantInt>(val)->getZExtValue(); + } + else + { + return 0; + } + } #include "gen_builder.hpp" #include "gen_builder_meta.hpp" _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit